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 !  

> Danke André für die prompte Lösung. > > Wie immer lag der Teufel im Detail.:-) > > Michael > > > 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