hwcom und ASCII Datenverkehr Kategorie: Programmierung (von Newbie - 7.09.2011 17:20) | ||
| ||
Ich will zwischen zwei seriellen Geräten einen Datenaustausch realisieren. Der Master soll einen Link herstellen und sobald dies geschehen ist, eine Statusanfrage senden, welche mit einem String beantwortet wird. Der erste Teil funktioniert Problemlos - beim zweiten klappts einfach nicht. if COMLink==0 //Wenn Link nicht aktiv { s_message="LNK"; //Sende Link Request hwcom.send(s_message,3); if hwcom.receive(s_response,3,1000)!=3 //Wenn nicht 3 Zeichen innerhalb von einer Sekunde eintreffen - Link Error COMLink=0; else {if strx.comp(s_response,"ACK") //Wenn ACK eintrifft, funktioniert die Kommunikation {COMLink=1; i=0;} }; } Der Teil funktioniert problemlos. Soweit, so gut. Ich sende dann als Antwort auf STS genau den String 535-00060955233056232211111 zurück. 27 Zeichen. Es kommen auch 27 Zeichen an, die Prüfung mit strx.comp ergibt -1 - also alles soweit so gut. Beim Parsen der Werte klappts dann aber nicht else //Wenn Link aktiv, sende Statusanfrage { s_message="STS"; //Sende Status-Request hwcom.flush(); hwcom.send(s_message,3) lcdext.zahl2(hwcom.receive(s_response,27,5000)); //Ergibt 27 -> OK! lcdext.zahl3(strx.comp(s_response,"535-00060955233056232211111")); //Ergibt -1 -> OK lcdext.zahl2(str.length(s_response)); //Ergibt 0???? //s_response="535-00060955233056232211111" b.)so würde der Parser funktionieren str.clear(s_substring); strx.cut(s_response,s_substring,0,3); //erste 3 Zeichen V_BatVtg=strx.getNum(s_substring); //ergibt 0 über hwcom, 535 über b.) lcdext.zahl4n1(V_BatVtg); str.clear(s_substring); strx.cut(s_response,s_substring,0,5); V_TotBatCur=strx.getNum(s_substring); //negatives Vorzeichen wird interpretiert etc.etc. Was habe ich nicht bedacht? Der Buffer ist mit 32 Byte standardmässig ja genügend gross. Danke für euren Input! Newbie | ||
Antwort schreiben Antworten: Re: hwcom und ASCII Datenverkehr (von André H. - 7.09.2011 20:57) Re: hwcom und ASCII Datenverkehr (von Newbie - 8.09.2011 8:46) |