[vz-dev] vzlogger MeterD0.cpp Master branch parity
Reinhard Wilzeck
reinhard at wilzeck.de
Wed Nov 20 23:36:13 CET 2013
Hallo,
erfreulicherweise kann man nun für das Protokoll D0 parity und baud rate
über die vzlogger.conf konfigurieren.
(Nötig z.B. für Landis+Gyr E350 EDL21 .)
...
"protocol" : "d0", /* see 'vzlogger -h' for list of available
protocols */
"device" : "/dev/ttyUSB0",
"enabled": true,
"parity": "7e1",
"baudrate":300,
...
Leider hat sich ein Fehler beim Setzen der einzelnen bits eingeschlichen.
(Ich weiss nicht, ob es schon jemand gesehen hat)
Dadurch wird unbeabsichtigt u.a. CRTSCTS gesetzt.
Damit sendet Udos USB IR Schreiblesekopf nicht. (macht er richtig, denn
ohne den vzlogger arbeitet er einwandfrei.)
falsch ist z.B.
...
case parity_7e1:
tio.c_cflag |= ~ PARENB;
...
Damit werden alle bits gesetzt (außer PARENB)
Richtig ist:
switch(_parity) {
case parity_8n1:
tio.c_cflag &= ~ PARENB;
tio.c_cflag &= ~ PARODD;
tio.c_cflag &= ~ CSTOPB;
tio.c_cflag &= ~ CSIZE;
tio.c_cflag |= CS8;
break;
case parity_7n1:
tio.c_cflag &= ~ PARENB;
tio.c_cflag &= ~ PARODD;
tio.c_cflag &= ~ CSTOPB;
tio.c_cflag &= ~ CSIZE;
tio.c_cflag |= CS7;
break;
case parity_7e1:
tio.c_cflag &= ~CRTSCTS; // für paranoide, aber nicht
allgemein gültig.
tio.c_cflag |= PARENB;
tio.c_cflag &= ~ PARODD;
tio.c_cflag &= ~ CSTOPB;
tio.c_cflag &= ~ CSIZE;
tio.c_cflag |= CS7;
break;
case parity_7o1:
tio.c_cflag &= ~ PARENB;
tio.c_cflag |= PARODD;
tio.c_cflag &= ~ CSTOPB;
tio.c_cflag &= ~ CSIZE;
tio.c_cflag |= CS7;
break;
}
Dann klappt es auch mit dem Senden (geprüft mit Digitalkamera) und dem
Empfang (geprüft mit IR Fernbedienung vom Fernseher)
An dem Acknowledge, das der Zähler braucht arbeite ich noch. Außerdem
kann man die Schnittstelle auch mit einem Timeout versehen, so das der
read nicht für immer hängen bleibt.
/* Set return rules for read to prevent endless waiting*/
tio.c_cc[VTIME] = 50; /* inter-character timer 50*0.1s*/
tio.c_cc[VMIN] = 0; /* VTIME is timeout counter */
Der praktische Beweis der Funktion steht aber noch aus.
Gruß
Reinhard
More information about the volkszaehler-dev
mailing list