diff --git a/fhem/FHEM/50_WS300.pm b/fhem/FHEM/50_WS300.pm index d2c7196b3..1a171f5e4 100644 --- a/fhem/FHEM/50_WS300.pm +++ b/fhem/FHEM/50_WS300.pm @@ -125,7 +125,13 @@ WS300_Define($$) $hash->{READINGS}{WS300Device}{VAL} = "Initializing"; $hash->{READINGS}{WS300Device}{TIME} = TimeNow; - my $po = new Device::SerialPort ($a[2]); + if ($^O=~/Win/) { + eval ("use Win32::SerialPort;"); + my $po = new Win32::SerialPort ($DeviceName); + }else{ + eval ("use Device::SerialPort;"); + my $po = new Device::SerialPort ($DeviceName); + } if(!$po) { $hash->{STATE} = "error opening device"; @@ -534,7 +540,11 @@ NEXTPOLL: $hash->{READINGS}{WS300Device}{VAL} = "disconnected"; $hash->{READINGS}{WS300Device}{TIME} = TimeNow; sleep(1); - my $po = new Device::SerialPort($devname); + if ($^O=~/Win/) { + my $po = new Win32::SerialPort ($devname); + }else{ + my $po = new Device::SerialPort ($devname); + } if($po) { $po->reset_error(); diff --git a/fhem/FHEM/60_EM.pm b/fhem/FHEM/60_EM.pm index 9be1696dd..4d0cf8650 100755 --- a/fhem/FHEM/60_EM.pm +++ b/fhem/FHEM/60_EM.pm @@ -3,7 +3,7 @@ package main; use strict; use warnings; -use Device::SerialPort; + sub EM_Write($$); sub EmCrc($$); @@ -60,7 +60,14 @@ EM_Define($$) } Log 3, "EM opening device $dev"; - my $po = new Device::SerialPort ($dev); + if ($^O=~/Win/) { + eval ("use Win32::SerialPort;"); + my $po = new Win32::SerialPort ($dev); + }else{ + eval ("use Device::SerialPort;"); + my $po = new Device::SerialPort ($dev); + } + return "Can't open $dev: $!" if(!$po); Log 3, "EM opened device $dev"; $po->close(); @@ -277,7 +284,12 @@ EmGetData($$) $d = EmMakeMsg(pack('H*', $d)); return undef if(!$dev); - my $serport = new Device::SerialPort ($dev); + if ($^O=~/Win/) { + my $serport = new Win32::SerialPort ($dev); + }else{ + my $serport = new Device::SerialPort ($dev); + } + if(!$serport) { Log 1, "EM: Can't open $dev: $!"; return undef;