c4rd0n / vcontrold

vcontrold to use serial port uart on a Rasperry pi
GNU General Public License v2.0
2 stars 1 forks source link

Fehlermeldung vcontrold beim Schreiben von Timern #1

Open andreasloe opened 6 years ago

andreasloe commented 6 years ago

Es gibt mehrere github-Accounts, auf denen vcontrold gehostet ist. Ich habe folgendes Problem: Ich versuche, die Zeiten mit vcontrold zu setzen. Erst einmal musste ich mir aus dem Code heraussuchen, wie man das überhaupt macht - weil es nirgendwo steht. Leider kommt bei mir eine Fehlermeldung, von der ich vermute, dass sie falsch ist. Hier der genau debug:

vctrld>setTimerWWMo 07:40 10:10 12:00 12:30 15:30 16:00 19:00 20:30 DEBUG:Tue Oct 24 15:46:38 2017 : Befehl: setTimerWWMo 07:40 10:10 12:00 12:30 15:30 16:00 19:00 20:30 DEBUG:Tue Oct 24 15:46:38 2017 : Cycle Time: 07:40 -> [3C] DEBUG:Tue Oct 24 15:46:38 2017 : Cycle Time: 10:10 -> [51] DEBUG:Tue Oct 24 15:46:38 2017 : Cycle Time: 12:00 -> [60] DEBUG:Tue Oct 24 15:46:38 2017 : Cycle Time: 12:30 -> [63] DEBUG:Tue Oct 24 15:46:38 2017 : Cycle Time: 15:30 -> [7B] DEBUG:Tue Oct 24 15:46:38 2017 : Cycle Time: 16:00 -> [80] DEBUG:Tue Oct 24 15:46:38 2017 : Cycle Time: 19:00 -> [98] DEBUG:Tue Oct 24 15:46:38 2017 : Cycle Time: 20:30 -> [A3] DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 41 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 0D DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 00 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 02 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 21 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 00 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 08 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 3C DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 51 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 60 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 63 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 7B DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 80 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: 98 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: A3 DEBUG:Tue Oct 24 15:46:38 2017 : >SEND: BE DEBUG:Tue Oct 24 15:46:38 2017 : <RECV: len=1 06 (90.0 ms) DEBUG:Tue Oct 24 15:46:38 2017 : <RECV: received 06 DEBUG:Tue Oct 24 15:46:38 2017 : DEBUG:Tue Oct 24 15:46:38 2017 : >FRAMER: Command send DEBUG:Tue Oct 24 15:46:38 2017 : >FRAMER: no preset result DEBUG:Tue Oct 24 15:46:38 2017 : <RECV: len=1 41 (0.0 ms) DEBUG:Tue Oct 24 15:46:38 2017 : <RECV: received 41 DEBUG:Tue Oct 24 15:46:38 2017 : <RECV: len=1 05 (0.0 ms) DEBUG:Tue Oct 24 15:46:38 2017 : <RECV: received 05 DEBUG:Tue Oct 24 15:46:38 2017 : <RECV: len=6 01 (0.0 ms) DEBUG:Tue Oct 24 15:46:38 2017 : <RECV: received 01 02 21 00 08 31 DEBUG:Tue Oct 24 15:46:38 2017 : >FRAMER: unexpected length 8 08 DEBUG:Tue Oct 24 15:46:38 2017 : Fehler recv, Abbruch DEBUG:Tue Oct 24 15:46:38 2017 : Fehler beim ausfuehren von setTimerWWMo 07:40 10:10 12:00 12:30 15:30 16:00 19:00 20:30

Die Zeiten werden dabei aber geschrieben - also scheint es sich um einen bug bei vcontrold zu handeln. Inzwischen scheint mir die Funktion int execByteCode der Verursacher zu sein. Dort wird eine -1 zurückgeliefert, was ein Fehler ist.

andreasloe commented 6 years ago

PS framer.c sagt

Vermutlich passiert folgendes: Beim timer werden acht Byte gesendet, siehe oben. Empfangen werden als Antwort sechs Bytes ("RECV: len=6"), geschrieben wurden aber acht Bytes (das ist die letzte Zahl vor der checksum 31: 08). Das passt nicht und framer.c prüft das ja in if (r_len != l_buf[P300_RESP_LEN_OFFSET]) und gibt dann einen Fehler aus.

andreasloe commented 6 years ago

Und noch etwas später. Ich habe mir jetzt mit einem ganz üblen Kommando beholfen, dann verschwindet der Fehler: Zeile 442 lautet if ((r_len != l_buf[P300_RESP_LEN_OFFSET]) && (l_buf[P300_RESP_LEN_OFFSET] != 8)) und neu ist der zweite Abgleich für timer-Befehle.