Millä kielellä helpoiten ja miten saadaan ohjelma joka lähettäisi usb:llä itse kirjoittamiani ykkösiä ja nollia?
USB-sarjaporttisovittimen avulla ja kaikilla kielillä on erittäin helppoa.
Antaisiko joku tarkemmat ohjeet c++:lla.
1. Osta ja kytke koneeseen sarjaporttisovitin.
2. Avaa binaarimuodossa tiedosto /dev/ttyUSB0 tai vastaava.
3. Kirjoita. Tavussa on kahdeksan bittiä.
Grez kirjoitti:
kaikilla kielillä on erittäin helppoa
Haluaisin toki tietää :)
Petja kirjoitti:
Haluaisin toki tietää :)
Siis mitä, miten kaikilla kielillä kirjoitetaan sarjaporttiin?
No, jos nyt pilkkua viilataan, niin ehkä se ei ole brainfuckilla helppoa. Tarkoitin kuitenkin, että millä tahansa kielellä, joka ylipäätään soveltuu sarjaportin kanssa jutusteluun, se yleensä on erittäin helppoa.
Tarkoitus on saada tietokone kommunikoimaan arduinon kanssa.(homma arduinon rajoitteiden takia) Arduino lähettäisi antureiden antamaa tietoa suoraan tietokoneelle Serial.printn metodilla ja tietokone lähettäisi ohjeita sarjaportin avulla arduinon pinnille. Arduino ohjelmoidaan tunnistamaan pulssit ehtojen avulla käskyiksi ja niin edelleen. Ongelma on siinä että miten teksti saadaan ohjelmaan tietokoneessa? Sulautetut-kirjassa opetetaan kuinka flash saadaan lukemaan tietoa sarjaportilta koodilla:
import flash.net.Socket; import flash.events.ProgressEvent; funktion printSerial(event:ProgressEvent):void { trace(socket.readMultiByte(socet.bytesAvailable,"utf-8")); } var socket = new flash.net.Socket("localhost", 5335); socket.addEventListener(ProgressEvent.SOCKET_DATA,printSerial);
Ohjelma tulostaa tekstiä sarjaportilta serproxyn tulkkaamana, mutta miten sama tehtäisiin c++:lla muuttujaan?
Arduino sisältää siis valmiiksi tuon mainitun sarjaporttiadapterin, joten sitä käsitellään koneella sarjaporttina eikä USB-laitteena, joten voit lukea kyseisestä sarjaportista aivan kuten muistakin tiedostoista.
Panisiko joku koodia?
Miksi ihmeessä yrität ohjelmoida mikrokontrollerilla, jos edes yksinkertainen tiedostosta lukeminen ei vielä onnistu? >_>
#include <fstream> void lue(const char* portti) { std::ifstream tiedosto(portti); std::string rivi; while (std::getline(tiedosto, rivi)) { std::cout << rivi << std::endl; } } int main() { lue("/dev/ttyUSB0"); }
Tarkista portin nimi tai kokeile. Windowsissa hyvä arvaus on vaikka "COM1". Kirjoittaminen tapahtuu aivan vastaavalla tavalla.
Kiitos.
Metabolix kirjoitti:
Miksi ihmeessä yrität ohjelmoida mikrokontrollerilla, jos edes yksinkertainen tiedostosta lukeminen ei vielä onnistu? >_>
Vastaus:
Tero Karvinen & Kimmo Karvinen Sulautetut kirjoitti:
Miten luet tätä kirjaa
Tämän teoksen lähtökohta on antaa tietoa helposti opittavassa muodossa.
Joo, en viitsinyt etsiä kohtaa jossa kerrotaan että aikaisempia kokemuksi ohjelmoinnista ei tarvita vaikka sellainen kohta on. "o o"
TVdata kirjoitti:
Tämän teoksen lähtökohta on antaa tietoa helposti opittavassa muodossa.
Voi hyvänen aika. Samalla logiikalla voisit ruveta lukemaan jotain hiukkasfysiikan perusteita opettelematta ensin yhteenlaskua ala-asteella.
On ihan järkevää pitää riittävä kunnainhimo omissa projekteissa, näin oppii parhaiten ja motivaatio säilyy. Kuitenkin yleensä jos projekti ei ole itselleen liian vaikea niin siitä pitäisi selvitä pääosin itsenäisesti opiskelemalla ilman, että täytyy jatkuvasti kysyä apua esim täältä putkasta.
Esimerkkinä hiukan rohkeasta, mutta hyvästä projektista oma projektini, jossa lähdin tekemään hiukan Facebookin kaltaista sosiaalista mediaa. Eihän sivusto tietenkään tule koskaan valmiiksi saatikka julkaisukuntoon, mutta ainakin tuli opiskeltua PHP:n ja tietokantojen perusteet huolella, vaikken aluksi edes osannut tehdä sivujen taittoa. Tässäkin tosin pitää muistaa, että kun on lähtenyt opiskelemaan tätä reittiä niin pitää kuitenkin jälkikäteen käydä läpi asiat tarkemmin, koska koodi tuskin on tasoltaan mitenkään kovin "ammattimaista".
Mikrokontrollereiden ohjelmointi voi olla hyvinkin helppoa puuhaa.
Jos mikrokontrollereiden ohjelmointi olisi automaattisesti hirveän vaikeaa, voisin olla Metabolixin kanssa samaa mieltä.
Grez kirjoitti:
Mikrokontrollereiden ohjelmointi voi olla hyvinkin helppoa puuhaa.
Selvästikään se ei silti ollut tarpeeksi helppoa, kun piti tulla alkeita tänne kysymään. Jotain olisi siis syytä osata jo etukäteen. Toki vertaukseni oli aika kärjistetty.
Eikös tässä kyselty nimenomaan asioiden tekemisestä PC:n puolella eikä mikrokontrollerin puolella?
Mitä ihmeen tiuskimista tämä nyt on? Ei näihin postauksiin kenenkään tarvitse vastailla jos kokee vastenmieliseksi.
Ei sellaista kysymystä olekkaan, jonka vastaus ei olisi jollekkin äärettömän yksinkertainen ja täten voisi aina joku vastata että opettele asiat itse äläkä kysy noin yksinkertaisia asioita. Tuo vastaus voisi tulla automaattisesti, eikä kysymyksen edes tarvitse tallentua.
groovyb kirjoitti:
Mitä ihmeen tiuskimista tämä nyt on? Ei näihin postauksiin kenenkään tarvitse vastailla jos kokee vastenmieliseksi.
Ei sellaista kysymystä olekkaan, jonka vastaus ei olisi jollekkin äärettömän yksinkertainen ja täten voisi aina joku vastata että opettele asiat itse äläkä kysy noin yksinkertaisia asioita. Tuo vastaus voisi tulla automaattisesti, eikä kysymyksen edes tarvitse tallentua.
Opettele ensin itse, tuu sitten vasta kyselemään! (vitsi)
groovyb kirjoitti:
Ei sellaista kysymystä olekkaan, jonka vastaus ei olisi jollekkin äärettömän yksinkertainen...
Totta, vastaus on tosiaan erittäin helppo. 42
Metabolix kirjoitti:
Tarkista portin nimi tai kokeile. Windowsissa hyvä arvaus on vaikka "COM1".
No jos aivan tarkkoja ollaan, laitetiedostot ovat Windowsissa "\Device\" -alkuisia. Toki (joitakin) laitteita voi ohjata niiden nimillä, mutta ainakin kun katselin oman koneen järjestelmätietoja (msinfo32.exe), huomasin laitteiden olevan "\Device\" -alkuisia.
Aihe on jo aika vanha, joten et voi enää vastata siihen.