Du hast recht. Funktioniert doch nicht so richtig. Hast du eventuell einen besseren Vorschlag, wie die die beiden Werte eingelesen bekomme. So langsam bin ich nämlich am verzweifeln.
Gruß
Marko
Du hast recht. Funktioniert doch nicht so richtig. Hast du eventuell einen besseren Vorschlag, wie die die beiden Werte eingelesen bekomme. So langsam bin ich nämlich am verzweifeln.
Gruß
Marko
Spontan würde ich vorschlagen C programmieren zu lernen. Ansonsten:
Ich bin mal von deinem Beispiel ausgegangen dass das Sensor Ergebnis immer 3 Stellig ist. Wenn es das nicht ist brauchst du natürlich immer noch ein eindeutiges Stopzeichen auf dass du in der while Bedingung abfragen kannst. Aber das wurde bereits von weiter oben gezeigt.Code:int i = 0; char temp[4]; while(i <4) { temp[i] = readSerialChar(); //Hier die passende Serialport methode verwenden i++; } int result = atoi(temp);
Geändert von shedepe (30.09.2013 um 12:10 Uhr)
mfgCode:char str[32]; int i = 0, j = 0; int val[2]; ... while(Serial.available() > 0) { str[i] = Serial.read(); if(str[i] == '\n' || str[i] == ',') { str[i] = '\0'; i = 0; val[j] = atoi(str); j++; if(j > 1) { j = 0; /* flag etc setzen, dass 2 Werte empfangen wurden und verarbeitet werden können ... whatever... */ } break; } i++; } ...
Toll dieser Tread, da ich fast ein ähnliches Projekt bearbeite, meine Robosteuerung/Messdatenübertragung, werde ich mal fleissig mitlesen und mitprobieren.
Gruss
Gerhard
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Also wenn Bedarf besteht könnte ich eine (interruptbasierte) Beispiel Komponente für einen Atmega erstellen, da ich bereits so etwas ähnliches umgesetzt habe, jedoch etwas allgemeiner und vielseitiger verwendbar. Ob der Code jedoch Arduino kompatibel wäre weis ich nicht, da ich direkt mit der avr-gcc lib arbeite (theoretisch sollte es jedoch funktionieren, da die Arduino Plattform auch nur darauf aufsetzt)
Also mich würde das schon mal interessieren, auf INT basierend habe ich das noch nie gemacht, würd gerne wissen wie sowas gemacht wird...da ist ein Source zum Anschauen und Lernen schon nicht schlecht, wenn er dann noch ok ist und man keine "Fehler lernt" ist es noch besser. das mit den Fehlern meine ich , das oft in englischsprachigen Foren ich oft es nicht mitbekomme, das der Code Fehler hat und darum ins Forum gesetzt wurde...denn so gut ist mein English auch wieder nicht, um alles zu richtig verstehen..
Achso ich nutze eine BT Verbindung, aber für das Serielle ist das auch egeal...
Gerhard
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Uart über Interrupt ist keine Zauberrei. Du hast im Prinzip nur einen Puffer zum schreiben. Da schreibst du rein, der AVR schickt dann einfach jedes Zeichen über einen Interrupt raus. Wenn du hingegen ein Zeichen empfängst, dann wird wiederum ein Interrupt ausgelöst wo du das empfangene Zeichen in den Puffer schreibst. Coden könnt ihr das alles ganz leicht selber, sonst lernt ihr ja nie was
mfg
Lesezeichen