PDA

View Full Version : ARDUINO, impostare una comunicazione seriale c++


norih43
03-06-2011, 16:37
Dato che tutto è un file sotto linux ho provato a leggere i dati inviati da ARDUINO tramite la porta /dev/ttyACM0 come se fosse un normale file attraverso questo codice da me scritto (che è ridicolo :) )

#include <fstream>
#include <iostream>
using namespace std;

int main(){
fstream fd;
string s;
int i=1;
fd.open("/dev/ttyACM0",ios::in|ios::out);
while (i<1e3){
fd>>s;
cout<<s<<"xx"<<s.length()<<"\n";
i++;
}
fd.close();
return 0;
}

solo che ogni tanto funziona e a volte no :D . Dato che comunque il codice non è il massimo, volevo capire se c'èun modo semplice in c++ (e non in C che non conosco :( ) per gestire la seriale come si faceva con istruzioni tipo QBASIC per esempio:
OPEN “COM1:2400,N,8,1” FOR OUTPUT AS #1

a distanza di trent'anni non dovrebbe essere più semplice?? :doh:

misterx
04-06-2011, 17:53
la domanda ora è: linux o windows ?

norih43
04-06-2011, 18:34
linux ovviamente ( /dev/ttyACM0)

pabloski
04-06-2011, 18:34
io la farei così


#include <iostream>
#include <fstream>
using namespace std;

int main () {
ifstream fd;

fd.open ("/dev/ttyACM0", ifstream::in);
while (fd.good())
cout << (char) fd.get();
fd.close();

return 0;
}


ovviamente il good permette di continuare a leggere finchè non si verificano errori sullo stream o arriva l'eof

norih43
05-06-2011, 10:07
La soluzione di pabloski lavora ma è equivalente alla mia (anche se non conoscevo la funzione fstream.good() grazie)... ho notato che quando non funziona resta il led TX acceso.... secondo me è da reinizializzare la porta seriale... come si può fare? :mc:

pabloski
05-06-2011, 12:33
La soluzione di pabloski lavora ma è equivalente alla mia (anche se non conoscevo la funzione fstream.good() grazie)... ho notato che quando non funziona resta il led TX acceso.... secondo me è da reinizializzare la porta seriale... come si può fare? :mc:

ho trovato questo http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1269643472

se ho capito bene si tratta dello stesso problema