Für dieses Forum muß Javascript im Browser aktiviert werden!
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 Günni, > > > wie Du selbst im Oktober 2003 mal im Forum korrigiert hast, befindet sich nach wie vor ein Fehler > > in der o.g. Funktion im aktuellen Modul: die For-Schleife muß mit Null beginnen. > > Danke für den Hinweis. > Das hatte ich anscheinend ganz vergessen. Ich werde demnächst eine neue Version hochladen, > bei der das gefixt ist. > > > Außerdem ist die Lösung zur Bestimmung der Stringlänge zwar sehr elegant wenn es sich um > > echte Strings handelt die z.B. mit String-Manipulationsfunktionen erstellt wurde, aber wenn Du > > beispielsweise einen String mittels hwcom.receive empfängst liefert Deine Funktion stets 0 zurück. > > Ähh, wo steht denn bitte, daß man mit hw-/swcom.receive() zum Strings-Empfangen ist ??? > Diese Funktion dient einzig und allein zum Empfangen von Datenrahmen. Und ein Datenrahmen > ist hier ein Bytearray, kein String. Man kann lediglich ein String angeben, wie > ich es auch häufig mache, da ein String ein spezielles Bytearray mit 32 Byte Größe ist. > > Zum echten Empfangen von Zeichenfolgen gibt es die funtion inpustr() in den com-Modulen. > Diese müssen beim Übetragen natürlich mit CRLF abgeschlossen werden. > > Wenn man Dennoch receive() zusammen mit Strings einsetzen will, muß man nach > dem Empfangen die Stringlänge der Stringvariable setzen. > Das geht z.B. so: > <code> > function setStrlen(byte s[], byte len) > { > s[30]=0; // Dieses Byte muß normal immer den Wert 0 haben. > s[31]=len; > } > > string text; byte x; > ... > setStrLen(text, hwcom.receive(text,30,500)); > </code> > Alternativ kann man sich auch eine eigene Receive-Funktion für Strings bauen: > <code> > function receiveString(byte s[], byte maxlen, long timeout) > { > if maxlen>30 maxlen=30; > s[31]=hwcom.receive(s, maxlen, timeout); > }</code> > > > Deshalb schlage ich folgende Verbesserung vor: Übergabe von String <i>und</i> Stringlänge. Somit > > bietet sich mehr Flexibilität. > > Ich würde das eher als Rückschritt sehen. Denn das Modul strx.c2 ist in erster Linie > nur für Strings gedacht. Und bei Strings muß die Länge in Byte 31 stehen. > Wenn die Stringvariable nicht als String mit Daten gefüllt wird, muß man dieses Byte > eben anschließend seperat setzen. > > MfG André H.