PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Serielle UART mit C++ Abfragen unter Linux



Celaeno
29.01.2013, 09:55
Hallo erstmal,
vorweg muss ich jetzt einmal sagen, dass mich diese Community sehr inspiriert hat, mit dem Programmieren anzufangen, und vor allem mich mehr mit Microcontroller zu befassen.
Wie jeder Anfänger habe ich so meine kleinen schweirigkeiten, und bitte um Eure Hilfe:

Hardware/Software:
OS: Linux 2.6.32-5-686 mit Debian
MC: Arduino SMD von Conrad
Serielle schnittstelle auf /dev/ttyACM0

Gesucht wird: ein Howto um einen String des Arduino mit C++ auszuwerten.

Auf der Seriellen Konsole der Arduino-Software wird der String mit: 123,456\n ausgegeben.
(Nacher wird der String in eine Arrey zerlegt und verarbeitet.)

Der Code am Arduino:


void setup(){
Serial.begin(9600);
}

void loop(){
Serial.println("123");
Serial.println(",");
Serial.println("456");
Serial.println("\n");
delay(10);
}


Habe schon die C++ Refferenzlisten gecheckt, sowie die USARTs Manuals.

Da ich schon seit gestern die Google-suchfunktion rüttle und schüttle, und dennoch nichts gefunden habe was mir weiter hilft bitte ich euch um einen Link und die richtige Richtung, oder ein paar Keywords.
(Das Netz ist leider voll mit Literatur und gut gemeinten Ratschlägen, sowie Posts deren Lösung mit "Hat sich erledigt" enden)

Vielen Dank im Vorhinein ;)

schorsch_76
29.01.2013, 11:05
Zuallererst unter Linux: cat /dev/ttyACM0

Kommt hier Text an? Falls nein, noch mit setserial die Parameter setzen (vermutlich 9600 8N1 oder 19200 8N1). Dann nochmal mit cat /dev/ttyACM0 testen.

Du kannst dann unter C++ auch einfach die Datei /dev/ttyACM0 öffnen und die Daten empfangen. Um unter C++ die Parameter zu setzen kannst du dich hier schlau lesen.
http://www.c-plusplus.de/forum/216183-full

Gruß
Georg

Celaeno
29.01.2013, 12:10
Ja Super! Der Link beinhaltet was ich wissen wollte,

Ich habe das Device von /dev/ttyS0 auf /dev/ttyAMC0 geändert
Ergebnis -> Datensalat
Dann noch die BAUD-Rate angepasst, auf die 9600
Ergebnis -> Funktioniert.

Da hab ich jetzt wieder was woran ich die nächsten Tage nagen kan ;)
Danke Georg

TheDarkRose
30.01.2013, 08:18
Generell gilt, da unter Linux alles als eine Datei behandelt wird, kannst du alle Schnittstellen mithilfe von einfachen Dateioperationen einlesen und verschicken.