[vz-dev] vzlogger d0 auf Fritzbox. [Patch]
bernd.leibing at uni-ulm.de
bernd.leibing at uni-ulm.de
Fri Jul 20 20:12:21 CEST 2012
Hi,
ich versuche vzlogger auf einer Fritz!Box mit Freetz Modifikation zum
Laufen zu bringen.
Angeschlossen an die Box sind 2 IR-Leseköpfe mit USB Erweiterung.
Zwei Easymeter Q3D sollen per d0 Protokoll ausgelesen werden.
Das Kompilieren hat soweit geklappt. Allerding wirft vzlogger die
"Something unexpected happened: meter_read_d0:279!"
Fehler, die schon öfters auf der Liste beklagt wurden.
Eine Terminalemulation mite 9600 7e zeigt aber perfekte Ausgabe:
/ESY5Q3DA1024 V3.03
1-0:0.0.0*255(111940207)
1-0:1.8.0*255(00000000.7801269*kWh)
1-0:2.8.0*255(00007041.2292533*kWh)
1-0:21.7.255*255(-000073.69*W)
1-0:41.7.255*255(000000.00*W)
1-0:61.7.255*255(-000068.61*W)
1-0:1.7.255*255(-000142.30*W)
1-0:96.5.5*255(A2)
0-0:96.1.255*255(1ESY1127000167)
!
/ESY5Q3DA1024 V3.03
1-0:0.0.0*255(111940207)
1-0:1.8.0*255(00000000.7801269*kWh)
1-0:2.8.0*255(00007041.2293318*kWh)
1-0:21.7.255*255(-000072.74*W)
1-0:41.7.255*255(000000.00*W)
1-0:61.7.255*255(-000068.59*W)
1-0:1.7.255*255(-000141.33*W)
1-0:96.5.5*255(A2)
0-0:96.1.255*255(1ESY1127000167)
!
Ich hab ein paar Debugging Ausgaben in die src/protocols/d0.c Datei
gemacht und bemerkt,
dass beim Einlesen der Zeichen in Zeile 178
read(handle->fd, &byte, 1)
nur Hieroglyphen ankommen. Ich hab mir den Terminalcode in
meter_d0_open_device angeschaut
und mit denjenigen obiger Terminalemulation (picocom) verglichen.
Folgender Patch ist dabei herausgekommen. Damit kommen bei mir jetzt
vernünftige Zeichen an.
diff --git a/src/protocols/d0.c b/src/protocols/d0.c
index 52bb2bd..0de1827 100644
--- a/src/protocols/d0.c
+++ b/src/protocols/d0.c
@@ -322,11 +322,13 @@ int meter_d0_open_device(const char *device,
struct termios *old_tio, speed_t ba
/* backup old configuration to restore it when closing the meter
connection */
memcpy(old_tio, &tio, sizeof(struct termios));
- /* set 7-N-1 */
+ /* set 7-E-1 */
tio.c_iflag &= ~(BRKINT | INLCR | IMAXBEL);
tio.c_oflag &= ~(OPOST | ONLCR);
tio.c_lflag &= ~(ISIG | ICANON | IEXTEN | ECHO);
- tio.c_cflag |= (CS7 | PARENB);
+ tio.c_cflag &= ~PARODD;
+ tio.c_cflag |= PARENB;
+ tio.c_cflag = (tio.c_cflag & ~CSIZE) | CS7;
/* set baudrate */
cfsetispeed(&tio, baudrate);
Viele Grüße,
Bing
--
Bernd 'Bing' Leibing
More information about the volkszaehler-dev
mailing list