SWCOM OS Bug? Kategorie: Progr. Assembler, TaskingTools, OS (von Newbie - 19.09.2011 9:53) | ||
| ||
Ich beziehe mich auf meinen Post http://www.cc2net.de/Foren/CC2Net_Forum/lesen.php?eintrag=16231 Ich vermute stark, das ein Bezug zu folgendem Post besteht. Langsam vermute ich einen Fehler weiter unten im "System" - darum jetzt ein Post hier.: http://www.cc2net.de/Foren/CC2Net_Forum/lesen.php?eintrag=15567 Ausgangslage: Ich verwende SWCOM mit Pegelwandler. Die Routine funktioniert einwandfrei mit HWCOM, jedoch nicht mit SWCOM. Hier der aktuelle Code. Es ist das einzige Modul und thread im Projekt. thread main { stports.init(); stports.alloff(); lcdext.init(); swcom.init(); swcom.setspeed(5); byte buffer[32]; //2ter serieller Buffer byte length; int Wert1; int Wert2; int Wert3; byte Flag1; byte Flag2; byte Flag3; mem.fill(buffer,32,0x00); //Löschen loop { wait swcom.ready(); wait swcom.rxd(); swcom.receive(buffer,9,500); Wert1=mem.getint(buffer,0); Wert2=mem.getint(buffer,2); Wert3=mem.getint(buffer,4); Flag1=buffer[6]; Flag2=buffer[7]; Flag3=buffer[8]; wait swcom.ready(); swcom.send(buffer,9); //Echo lcdext.clear();lcdext.home(); lcdext.zahl3p(Wert1);lcdext.zahl3p(Wert2);lcdext.zahl3p(Wert3); lcdext.line(2); lcdext.zahl3p(Flag1);lcdext.zahl3p(Flag2);lcdext.zahl3p(Flag3); } } Wenn ich 9 Zeichen schicke, werden 18 geantwortet. Dabei gibt es immer 8 0x00 nach dem ersten Zeichen, dass sich einschiebt. z.B. "ABCDEFGI" wird zwar wiedergegeben, aber mit 8x 0x00 nach dem A Bei Zahlen, zb. 0x01 0xF4 0x00 0xF0 0x01 0x2C 0x01 0x01 0x01 dasselbe Jetzt kommt das Verrückte: Wenn ich am Anfang noch ein Zeichen mehr anhänge 0x01 0x01 0xF4 0x00 0xF0 0x01 0x2C 0x01 0x01 0x01 wird korrekt geparst! D.h. das erste Zeichen scheint für mem.getint verloren gegangen zu sein, ist jedoch da, wie man am Echo des Ports feststellen kann! Das selbe ist reproduzierbar mit Text. Irgendwie kommt es zu einem selektiven Shift nach links. Dies erfolgt ab dem ersten Loop. Lässt sich auch ganz einfach mit einem String testen. Z.b. indem man ihn im LCD anzeigen lässt: lcdext.home(); lcdext.printlength(buffer,9); Das erste Zeichen wird verschluckt und der ganze String nach links geschoben. Beim Echo treten 8 Zeichen nach dem ersten - das offenbar doch da war - auf, welche dort nicht hingehören. Ich habe zwei verschiedene CC2 benutzt mit zwei verschiedenen Pegelwandlern. Eine Brandneu. Beide Aktuell. Hat jemand eine Idee? Workaround? | ||
Antwort schreiben Antworten: Re: SWCOM OS Bug? (von Newbie - 19.09.2011 10:36) |