Mitähän ohjelmia pitäisi hankkia, win-2000 pro ympäristöön sarja-, rinnakkais-, peli- yms:n porttien ohjaukseen/käyttöön, sekä mikrokontrollerien ohjaukseen/ohjelmointii. Käyttäsin ainakin ensialkuun itse rakenneltuja elektroonisia laitteita.
Aikoinaan opettelin kylläkin C64:n BASIC-ohjelman käytön, mutta siitä ei taida olla apua näissä ko. asioissa PC:n kanssa.
CD-rompuilta löytyy myöskin laaja Visual Basic, jota en ole vielä ottanut käyttöön, sen vaatiman isohkon muistikapasiteetin vuoksi. Käyttöön ottaminen muutenkin Visual Basicin suhteen on vielä pikkusen opetteluvaiheessa.
Aikoinaan opettelin kylläkin C64:n BASIC-ohjelman käytön, mutta siitä ei taida olla apua näissä ko. asioissa PC:n kanssa.
CD-rompuilta löytyy myöskin laaja Visual Basic, jota en ole vielä ottanut käyttöön, sen vaatiman isohkon muistikapasiteetin vuoksi. Käyttöön ottaminen muutenkin Visual Basicin suhteen on vielä pikkusen opetteluvaiheessa.
Vastaukset 19
Vanhimmat
Sulautetuissa järjestelmissä taitaa nykyään olla melkein joka paikassa käytössä C-kieli. Siis tuo tavallinen ANSI C. Ja useimmiten ohjelmointi tehdään PC:ssä. Kuitenkin mikrokontrollereita varten tarvitaan prosessorikohtainen kääntäjä, joka kääntää C-kielisen koodin prosessorin binäärikoodiksi.
Useimmilla mikrokontrrolerien valmistajilla on valmiit kehitysympäristöt PC:ssä tapahtuvaa ohjelmointia varten. Ovat vaan usein melko hintavia harrastelijan käyttöön.
Kannattaa kontrolleria valitessa katsoa löytyisikö sille jostain ilmainen kehitysympäristö joko valmistajalta tai ihan Open source markkinoilta.
PC:n sarja-, rinnakkais- ja peliporttien ohjelmointiin on saatavissa paljonkin erilaisia ilmaisia kääntäjiä ja kehitysympäristöjä eli IDE:jä. Vaikeus on kielen valinta. Joku C tai Pascal-kääntäjä olisi tavallisin valinta. Visual Basicia harvoin käytetään porttien ohjelmointiin. Valmiita ohjelmiakin löytyy netistä kaikille kielille source koodeineen pilvin pimein.
win-2000 pro on NT ympäristö, joten siinä joutuu porttien ohjelmoinnin tekeen käyttöjärjestelmän kutsujen kautta. Aikaisemmat DOS:n interruptien kautta toimivat sarjaporttiohjelmat eivät toimi enää NT:ssä. Joten joudut opettelemaan windowsin API-ohjelmointia. Eli siis tutustuman windowsin käyttöjärjestelmäkutsuihin.
.NET:n kautta pääsee käsiksi tosi näppärästi sarjaporttiin ja ympäristö on semmonen, että alottelijakin saa jotain aikaan ilman pahempaa säätämistä. Homman voi tehdä koodissa tai sitten ihan graafisella editorilla raahata sarjaporttikomponentin lomakkeelle, asettaa sen asetukset käsin ja sitten kirjottaa koodiin helpoimmillaan Com.Open() ja se on suunnilleen siinä.
Lukua sitten vaan, ja kirjotusta.
Toi C kyllä ite sulautetun koodaukseen. Pitäs melkeen tietää mikä sulautettu se on, että vois sanoa mitään.
No tuo sarjaportti on melko helppo ohjelmoitava myös API kautta. Siihen löytyy paljon valmiita ohjelmia netistä. Ainakin jos sitä käyttää sarjamuotoiseen kommunikointiin.
Ongelmahan on, jos aikoo käyttää PC:n portteja johonkin muuhun tarkoitukseen kuin kommunikointiin. Useinhan varsinkin rinnakkaisporttia käytetään pelkkänä IO-porttina jonkin elektroniikkakortin ohjaukseen. Siis osa rinnakkaisportin pinneistä toimii Inputteina ja osa Outputteina. Ja niitä luetaan ja kirjoitetaan ohjelmallisesti. Siis toiminnalla ei ole mitään tekemistä printerin kanssa. Samoin sarjaporttia voi käyttää signaaligeneraattorin tapaan outputina tai esim. pulssilaskurina inputina.
Vielä Win98:n aikoina homma toimi käyttämällä C:n input ja output käskyjä ja mahdollisesti DOS:n keskeytyksiä. Nykyään NT-teknologialla käyttäjä ei kirjoittaa ollenkaan portteihin.
Jos aikoo käyttää portteja, pitää se tehdä joko API-kutsujen kautta tai sitten kirjoittaa oma laiteohjain portteihin kirjoitusta ja lukua varten. Sen laiteohjaimen pitää toimia ns. KERNEL MODE driverina, jolla on oikeus kirjoittaa IO-avaruuteen. Yleensähän kaikki käyttjän ohjelmat toimivat USER MODE:ssa eivätkä voi kirjoittaa IO-avaruuteen. Kääntäjissä on yleensä optio tämän ohjelmatyypin määrittelemistä varten.
Asiaa selitetty rinnakkaisportin osalta seuraavassa linkissä:
http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html
Tuo Inpout32.dll on jokin valmis kirjasto, jota tossa linkissä kaupataan. Sillä tehdään nuo kernel mode driver operaatiot. Muitakin kirjastoja löytyy. Eräistä saa myös source koodit.
Mulla on vähän sellainen käsitys, että jos aikoo päästa käsiksi esim. rinnakkaisportin yksittäisiin pinneihin ja käyttää niitä joko inputtina tai outputtina, jokin .NET:n vakiokomponentti ei siinä toimi. Se on tehty printteriä varten ja pinneillä on printterin ohjauksessa tarvittavat tehtävät.
Tuo juttu saattais kiinnostaa sua:
http://www.instructables.com/id/Ghetto-Programming:-Getting-started-with-AVR-micro/
Siellä on Windowsista myös jotain.
No joo, ei tuolla ehkä ammattilaistason juttuja tehdä, mutta varmaan jonkunlaiseen alkuun pääsee.
Sillä onnistuu noiden käyttö ja Basiccikin on syntaksiltaan jossain määrin lähellä tota opettelemaasi neban basiccia, joten siitä osaamisesta voi olla ihan oikeasti apua VB:n kanssa jos et ole ikinä mitään muuta tehnyt. Gotoa tossa ei kyllä enää ole. heeh..
Mikrokontrollerien ohjelmointiin sitten ehkä jotain muuta. Ohjata voi tolla.
Olettaen tosiaan, että se on VB.NET eikä vaikka VB6...
miten toi .NET toi ohjelmointi eroaa tavallisesta esim VBstä? Toimii jossain .net frameworkissa. Mitä se sitten meinaa käytännössä? Toimii myös eri käyttiksillä jos löytyy siitä .net framework?
Frameworkki on vähän kuin toi Javan virtuaalikone. Noita tulee mukana Vistassa ja XP:ssä ne laitetaan ite sinne jos niitä ei koneessa jo ole.
Ihan hyvin toimii siellä missä Frameworkkiä on asennettuna. Käytännössä kyseessä on alusta joka tarjoaa helpomman tavan tehdä softaa nopeasti ja tehokkaasti.
Jos kone on joku Winukka niin ei ongelmaa. Jos taas joku Linukka, niin voit tehä homman vaikka Monolla joka on ikäänkuin .NET:n kopio.
Tai sitten teet Javalla, C:llä tai pyyttonilla. Tai jollain muulla. Erot ovat paljolti siinä millä on helppoa tehä.
Kaivoin esiin, tällaisen vanhan kyselyn.
Olin aikoinaan opettajana. Jos nyt olisin opettaja ja minulle annettaisiin vapaat kädet järjestää "mikrokontrolleriohjelmointia sulautettuihin järjestelmiin" peruskurssi, niin valitsisin laitteistoksi, mikrokontrolleriksi Parallax Inc:n Propeller-ohjaimen. Tärkein syy on se, että peruskoulutuksen on aina suuntauduttava teknologian tulevaisuuteen, eikä menneisyyteen, kuten usein käy, valitettavasti.
Tulevaisuus on rinnakkaisohjelmoinnissa ja multicore-mikrokontrollereissa. On parempi, että jo heti alussa omaksutaan rinnakkaisajattelutapa. Totuin itse siihen VHDL-ohjelmoinnin parissa kun tulin Nokialle 15v sitten.
Parallaxin Propeller on kahdeksanytiminen mikro-ohjain. Se aika tehokkaasti pakottaa rinnakkaisajatteluun ja sen ohjelmointi tuo jotenkin VHDL:n mieleen. Toteutus on oikeastaan pakko jakaa kahdeksan ytimen kesken, jos se nyt ei ole aivan triviaali. Tämä pakko johtuu oikeastaan Propellerin arkkitehtuurisita ratkaisuista. Siinä ei ole perinteisiä keskytyksiä!!! Kuullostaa pahalta, mutta kahdeksan rinnakkaista taskia aika hyvin korvaa puutteen.
Piiri on kaikesta huolimatta sopiva vain melko pieniin sovelluksiin ja hypoteettinen kurssihan on vain peruskurssi. Keskeytyksiin ja oikeisiin reaaliaikakäyttiksiin tutustutaan vasta seuraavalla kurssilla.
Kurssin aloittaisin Parallaxin omalla, tulkattavalla, kaukaisesti Pythonia muistuttavan Spin-kielen käytöllä. Se olisi ihan sopiva vasta-alkajille. Vasta kun spin on tuttu, ottaisin C:n käyttöön, joka siis sekin on piirille luonnollisesti saatavana.
Tutustuin piiriin, koska harrasteprojektina ryhdyin puuhastelemaan pientä robottia, joka liittyy välillä esiin ottaani Lojban-kielen soveltamiseen. Tarkoitus ohjelmoida käsiteelliseen (lojbanin rakenteisiin perustuvaan) ajatteluun kykenevä robotti. Ajattelu ei tietenkään tapahdu Propeller-raudassa, vaan siihen liitettävässä ARM-Linux-kortissa. Tein itselleni projektisuunnitelman, joka on ihan julkisesti avoin kommenteille:
Se löytyy tuolta UpLoad- osan alalaidasta pdf-tiedostona.
https://sites.google.com/site/lojbankehitys/upload
Propelleristä on lisää tietoa:
http://propeller.wikispaces.com/Hardware
Vähän erikoiselta kuulostaa ja totta kai tekniikkalähtöiseltä. Tekniikka sinänsä ok, mutta mutta.. Tolla ideologiallako te Nokiallakin koodaatte systeemejä? Terveisiä Fruit Companylle.
https://sites.google.com/site/lojbankehitys/upload
Uran tässä vaiheessa, siis eläkeiän häämöttäessä, harrasteprojektit ova henkisesti tärkeämpiä kuin leipätyön puurtaminen symppariohjelmoinnin parissa, josta en netissä keskustele. Ajatusta lojbanista en ole (vielä) saanut myytyä kovin pitkälle eteenpäin Nokialla:) Multicore-ohjelmoinnin tärkeys tiedostetaan Nokialla erittäin hyvin.
Ymmärrän hyvin, ettet keskustele Symbianilla ohjelmoinnista netissä. Suurin osa sillä koodanneista ei meinaa kehdata tunnustaa koodanneensa sillä. Melkoinen miinus työmarkinoilla kun Symbainille kävi kuten kävi.
"Melkoinen miinus työmarkinoilla kun Symbainille kävi kuten kävi. "
Kerro lisää, miten kävi, en ole kuullutkaan.
Here is the full official 2012 forecast from Gartner, based on sales of 525 million smartphones: Symbian, 196.5 million sold, 37.4% share; Android, 94.5 million sold, 18% share; BlackBerry, 73 million sold, 13.9%; iPhone, 71.5 million sold; 13.6% share; Windows Mobile, 47.7 million sold, 9% share; Maemo, 23.5 million sold, 4.5% share; Linux (generally), 11 million, 2.1% share; WebOS (from Palm Inc.) 7.6 million sold, 1.4% share.
Noilla luvuilla on aika vähän merkitystä. Symbian on marginaalialusta kun katsotaan sitä paljonko softaa myydään. Kallista tehdä, Qt on toistaiseksi vain lupaus ja softaa myydään järkyttävän vähän. Qt:n piti parantaa tilannetta jo pari vuotta sitten ja oikeastaan on aika turhaa ajatella Symbian- ja Qt-koodarilla olevan jotain tekemistä keskenään.
Mikä prosentti luurin ostajista ostaa puhelimeensa jotakin softaa? Lataa ehkä jotakin ilmaista, mutta todella ostaa jotakin?
Jos ostat 500€ luurin, niin ostatko siihen edes 50€:lla softaa. Aika harva.
Totta, aika pieni prosentti luurien ostajista ostaa softaa puhelimeensa. Mutta kun katsotaan iLuurin käyttäjäkuntaa, on softaa lähes kaikilla ja suurella osalla ostettunakin. Aika moni firma tekee tuolla alustalla useamman kymmenen miljoonan liikevaihtoa, kuluttajamarkkinoilla. Aika pahuksen moni ompun käyttäjä ostaa sen viiden kympin softat vuodessa, joskus jopa useammankin viiskymppisen. Paljon on niitäkin jotka eivät softasta suostu maksamaan, tosi paljon. Tärkeämpää on se, että tosi moni maksaa ja kohtuullisen tasaisena virtana noita ostajia onkin.
Symbianilla sellaisia firmoja ei taida olla yhtään. Mahtaako olla kuluttajapuolelle myyvissä edes miljoonan vuosittaisen liikevaihdon ylittäjiä, Symbianilla. Ei siis Javalla, vaan sillä Symbianilla.
Siksi ei ole kovin kummallinen juttu jos vanha Symbian-osaaminen on nykyisin aika arvotonta kourallista erikoisjuttuja lukuunottamatta. Jos niille tekee, liksakin on kohdillaan. Mutta ei sillä puolella ole tulevaisuutta. Qt on jotain aivan muuta ja siellä entinen Symbian-koodaaja on melkeinpä samalla viivalla muiden ohjelmoinnin osaajien kanssa. Jos Qt:stä ei ole kokemusta.
"vanha Symbian-osaaminen on nykyisin aika arvotonta"
??? Höpö-höpö. Ihan yhtä arvokasta kuin ennenkin, jopa arvokkampaa.
Minulle symbianohjelmointi on aina ollut ennen kaikkea systeemiohjelmointia, vähemmän kuin sovellusohjelmointia. Itse käyttöjärjestelmä on valtava järkäle, uskomaton määrä koodia, joka koko ajan uusiutuu. Töitä on paljon.
Symbian-käyttöjärjestelmällä on minun käsitykseni mukaan edelleen paljon tulevaisuutta, vaikka Linux- ja BSD-pohjaiset käyttikset leikkaavatkin älypuhelimissa yhä isomman osuuden. Se on ihan terve suunta. Olen linux-ystävä, kirjoita tätä Mandrivalla. Silti juuri luurien kehityksessä symbian-osaajia tarvitaan kutakuinkin yhtä paljon kuin ennenkin (vaikka Qt ulottuu sinnekin). On jopa pulaa... hyvistä. Johtuen koventuneesta kilpailusta. Joka taas on loppukäyttäjien etu.
Eräs mielenkiintoinen projekti tulee saataville tänä kesänä.
Nimittäen sulautettujen puolella (jossa on FreePascal ympäristössä tuettuna ARM )
tarjolle tullee myös uudellainen AVR ratkaisu:
http://www.blaisepascal.eu/index.php?actie=./lazarus_dutch_event
http://vogelaar-electronics.com/
http://lists.lazarus.freepascal.org/pipermail/lazarus/2010-April/050862.html
Näin ollen Lazarus/Freepascal ympäristö alkaa tarjoaamaan lähes kaikkea.
( http://www.lazarus.freepascal.org/ )
- Lazarus/ FreePascal ympäristössä on mahdollisuus edetä ja tehdä
sellaisia asioita mitä tuskin koskaan
suljetulla puolella pääsee tekemään. Esim. voi tutustua konepellin
alle eli käytettävään kääntäjäteknologiaan.
Hommaahan pääsee käsiksi vasta-alkajasta aivan huippuun asti ehtinytkin.
Siis haastavuus ei lopu kesken.
Voit valita käyttöjärjestelmän vapaasti (esim linux, windows...)
Voit valita käyttöliittymäkirjaston muuttamatta koodia esim win api , QT,
GTK2 ...
Projektin suurin heikkoutena voidaan pitää Symbian osaamisen puutetta.