Parity für serielle Kommunikation über DevIO setzen

Begonnen von StefanStrobel, 17 Juni 2015, 19:31:07

Vorheriges Thema - Nächstes Thema

StefanStrobel

Hallo,

Ein Anwender des Modbus-Moduls hat sich mit dem Problem gemeldet, dass sein Gerät "Even" Parity benötigt. Leider ist das Ändern der Parity in DevIO momentan nicht vorgesehen. Bevor ich hier einen Patch vorschlage würde ich gerne die Syntax abstimmen. Was haltet Ihr davon wenn man Hash->DeviceName nicht nur als z.B. /dev/ttyUSB1@9600 spezifizieren kann sondern auch /dev/ttyUSB1@9600:8N1 oder eben hinten dran :8E1?

Gruß
    Stefan

rudolfkoenig

Man kann sowas relativ einfach mit dem eigenen InitFn (Argument #3 bei DevIo_OpenDev) erledigen.
Wenn mehr als ein Modul sowas braucht, dann koennen wir das auch in DevIo unterbringen. Das Problem mit der DevIo Loesung ist, dass es potentiell alle betrifft, und einen groesseren Testaufwand nach sich zieht.

Dr. Boris Neubert

Hallo,

m.E. grundsätzlich gute Erweiterung,  z.B. für ECMD nützlich. Sollte aber durch Komma getrennt und optional sein. Als optionaler Parameter ist der Testaufwand m.E. minimal und die Änderung risikoarm.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Na wenn ECMD das auch haben will, dann haetten wir ja schon 2 Module. D.h. der Syntax ist device@Baudrate,nrDatabits,ParityType,nrParityBits und jede Angabe hinter Baudrate ist optional. Der Regexp koennte so aussehen:
% perl -e '"38400,8,N,1" =~ m/(\d+)(,([78])(,([NE])(,([012]))?)?)?/; print "$1/$3/$5/$7/\n"'
38400/8/N/1/

StefanStrobel


rudolfkoenig

Musste den Patch anpassen, sonst gab es Fehler beim Aufruf ohne Baudrate.
Habs etwas getestet und eingecheckt.

StefanStrobel