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

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Michael, > > > <code> > > 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???? > </code> > Es ist immer wieder dasselbe "Problem". > hwcom.receive() hat noch nie und wird auch nie "Strings" empfangen, da das noch nie > so gedacht war. Diese Funktion dient zum Empfang von Daten in ein Byte-Array. > Ein String ist zwar auch ein Byte-Array, jedoch mit der Besonderheit, daß in Byte 31 die Anzahl > der Zeichen zu stehen hat. Diese Schreibst Du aber nicht rein. > Wenn Du mit hwcom.receive() direkt in einen String empfängst, so bleibt in Byte 31 > natürlich der alte Wert stehen, da der String hier als normales Byte-Array behandelt wird. > Wie man es macht, kannst Du z.B. anhand von hwcom.input() erkennen. > Bei Dir wird das aber etwas einfacher: > <code> > function recString(s[], byte len, long timeout) returns byte > { > s[31]=hwcom.receive(s, len, timeout); > return s[31]; > }</code> > > <code> > > 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. > > </code> > Der Rest scheint zu stimmen. > Besser wäre es bei solchen Dingen natürlich, wenn die Daten nicht als Text übertragen > würde, sondern direkt als Byte, In oder Long-Werte. > Das würde das Auswerten einfacher machen. > > Aber noch ein paar Anmerkungen zum Zerlegen von Strings: > > Mit strx.cut() ist es in Deinem Fall etwas zu aufwendig. In Deinem Fall wären die > Funktion strx.left() und strx.mid() besser geeignet: > <code> strx.left(s_response, s_substring, 3);</code> > Und für alle folgenden Teile mit mid(): > <code> strx.mid(s_response, s_substring, 3, 5);</code> > Übrigens brauchst Du bei keiner der Funktionen den String vorher löschen. > Die Ziel-Strings werden automatisch überschrieben und der rest mit ASCII 0 aufgefüllt. > > Da Dein empfangener String immer ein festes Format hat, würde ich an Deiner Stelle > eine eigene Funktion mit strx.getNum als Vorlage schreiben. > Dann brauchst Du die Zwischenschritte mit dem Kopieren der Strings nicht. > > MfG André H.
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB