From adf3cf278daaefa0916b0ffda860a8060045be6b Mon Sep 17 00:00:00 2001 From: tdressler <> Date: Sun, 11 May 2008 17:31:09 +0000 Subject: [PATCH] add switch for windows use of Win32::Serialport in _Define and Poll (sorry untested, dont have these devices) git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@178 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/50_WS300.pm | 14 ++++++++++++-- FHEM/60_EM.pm | 18 +++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/FHEM/50_WS300.pm b/FHEM/50_WS300.pm index d2c7196b3..1a171f5e4 100644 --- a/FHEM/50_WS300.pm +++ b/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/60_EM.pm b/FHEM/60_EM.pm index 9be1696dd..4d0cf8650 100755 --- a/FHEM/60_EM.pm +++ b/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;