DevIo.pm: allow setting of serial parameters (Forum #38242)

git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@8790 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2015-06-21 08:42:13 +00:00
parent 04cd04bdf7
commit 72b4c02da9

View File

@@ -182,6 +182,15 @@ DevIo_OpenDev($$$)
my $po; my $po;
my $baudrate; my $baudrate;
($dev, $baudrate) = split("@", $dev); ($dev, $baudrate) = split("@", $dev);
my ($databits, $parity, $stopbits) = (8, 'none', 1);
if($baudrate =~ m/(\d+)(,([78])(,([NEO])(,([012]))?)?)?/) {
$baudrate = $1 if(defined($1));
$databits = $3 if(defined($3));
$parity = 'odd' if(defined($5) && $5 eq 'O');
$parity = 'even' if(defined($5) && $5 eq 'E');
$stopbits = $7 if(defined($7));
}
if($hash->{DevIoJustClosed}) { if($hash->{DevIoJustClosed}) {
delete $hash->{DevIoJustClosed}; delete $hash->{DevIoJustClosed};
@@ -302,12 +311,13 @@ DevIo_OpenDev($$$)
if($baudrate) { if($baudrate) {
$po->reset_error(); $po->reset_error();
Log3 $name, 3, "Setting $name baudrate to $baudrate" my $p = ($parity eq "none" ? "N" : ($parity eq "odd" ? "O" : "E"));
if(!$hash->{DevioText}); Log3 $name, 3, "Setting $name serial parameters to ".
"$baudrate,$databits,$p,$stopbits" if(!$hash->{DevioText});
$po->baudrate($baudrate); $po->baudrate($baudrate);
$po->databits(8); $po->databits($databits);
$po->parity('none'); $po->parity($parity);
$po->stopbits(1); $po->stopbits($stopbits);
$po->handshake('none'); $po->handshake('none');
# This part is for some Linux kernel versions whih has strange default # This part is for some Linux kernel versions whih has strange default