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

hwcom und ASCII Datenverkehr Kategorie: Programmierung (von Newbie - 7.09.2011 17:20)
Ich nutze:
C-Control II Station, OSOPT V3.1
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)