Re: einlesen verschiedener Daten über HWCOM Kategorie: Programmierung (von André H. - 1.11.2003 13:55) | |
Als Antwort auf einlesen verschiedener Daten über HWCOM von Stone - 29.10.2003 8:53
| |
Hallo Stone, Wenn immer 9 Zeilen ankommen, kannst Du diese einfach so einlesen: string s[9]; byte i; ... for i=0 ... 8 hwcom.inputstr(s[i],0); Falls es aber zu unterbrechungen kommen kann, sollte man mit einem Timeout arbeiten: const timeout=2000; // in ms string s[9]; byte i; long timer; ... for i=0 ... 8 { timer=system.timer(); while not hwcom.rxd(); { if system.timer()-timer>=timeout {i=9;break;} else yield; } if i<9 hwcom.inputstr(s[i],0); } Wenn weniger als 9 Zeilen empfangen werden, wird abgebrochen. Es wird vorrausgesetzt, da� jede Zeile mit einem CR+LF endet (ASCII 13 + 10). Der Abbruch funzt nicht, wenn der Empfang mitten in einer Zeile unterbrochen wird. (Dazu müsste man hwcom.inputstr() etwas umschreiben.) Um Deine Zeile 6 zu zerlegen, kannst Du das Modul strx.c2 verwenden. Jetzt ist nur die Frage, ob die Anzahl der Zeichen immer gleich ist.(5 Ziffern) Falls ja, get das ganz einfach mit: strx.left(s[5],s[5],5); wert=strx.getnum(s[5]); Wenn die Anzahl der Ziffern verschieden ist und Du nach einer "Nicht-Ziffer" suchen mu�t, so ginge dies z.B. so: function ZiffCount(byte s[]) returns byte {byte i; for i=0 ... s[31] if s[i]<0x30 or s[i]>0x39 break; return i; } ... ... strx.left(s[5],s[5],ZiffCount(s[5])); wert=strx.getnum(s[5]); Auf den String von Zeile7 kannst Du einfach mit s[6] zugreifen. MfG André H. > Hi an alle, > > Kann mir bitte wer helfen. > > Ich muss Daten, welche ich über die hwcom empfange auswerten. > Die Daten haben folgende Struktur: > > > AT > OK > > CONNECT > > 12345^130,0,1,0,0,0,1 > Test > > NO CARRIER > > > nun meine Frage: > > wie kann ich diese 9 zeilen am besten einlesen, dass ich "12345" als int habe bzw. "test" als string > > > bitte helft mir weiter. > mfG Stone Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | |
Antwort schreiben Antworten: |