Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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: