2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-03 04:36:36 +00:00

CUL for Windows

git-svn-id: https://svn.fhem.de/fhem/trunk@415 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2009-07-25 15:54:40 +00:00
parent a20e36f1dc
commit 341bc6695c
3 changed files with 19 additions and 25 deletions

View File

@ -518,3 +518,4 @@
- bugfix: EM/EMWZ/EMGZ set changed to work in FHEMWEB
- bugfix: Avoid unitialized in xmllist for corrupt readings (reporter: Boris)
- bugfix: Add binmode to 01_fhemweb.pm for windows
- bugfix: Uniform check for windows, enable CUL for windows.

View File

@ -511,11 +511,13 @@ CUL_ReadAnswer($$$)
{
my ($hash, $arg, $anydata) = @_;
return ("No FD" ,undef) if(!$hash || !defined($hash->{FD}));
return ("No FD" ,undef)
if(!$hash || ($^O !~ /Win/ && !defined($hash->{FD})));
my ($mculdata, $rin) = ("", '');
my $nfound;
for(;;) {
if($^O eq 'MSWin32') {
if($^O =~ m/Win/) {
$nfound=CUL_Ready($hash);
} else {
vec($rin, $hash->{FD}, 1) = 1;
@ -700,22 +702,13 @@ CUL_Read($)
while($culdata =~ m/\n/) {
my $dmsg;
($dmsg,$culdata) = split("\n", $culdata);
$dmsg =~ s/\r//;
goto NEXTMSG if($dmsg eq "");
my ($rmsg, $rssi);
($rmsg,$culdata) = split("\n", $culdata, 2);
$rmsg =~ s/\r//;
goto NEXTMSG if($rmsg eq "");
# Debug message, X05
if($dmsg =~ m/p /) {
foreach my $m (split("p ", $dmsg)) {
Log GetLogLevel($name,4), "CUL: p $m";
}
goto NEXTMSG;
}
my $rssi;
my $rmsg = $dmsg;
if($initstr =~ m/X2/ && $dmsg =~ m/[FTKEHR]([A-F0-9][A-F0-9])+$/) { # RSSI
my $dmsg = $rmsg;
if($initstr =~ m/X2/ && $dmsg =~ m/^[FTKEHR]([A-F0-9][A-F0-9])+$/) { # RSSI
my $l = length($dmsg);
$rssi = hex(substr($dmsg, $l-2, 2));
$dmsg = substr($dmsg, 0, $l-2);
@ -781,7 +774,7 @@ CUL_Read($)
goto NEXTMSG;
}
$hash->{RSSI} = $rssi;
$hash->{RSSI} = $rssi if(defined($rssi));
$hash->{RAWMSG} = $rmsg;
my $foundp = Dispatch($hash, $dmsg);
if($foundp) {

View File

@ -96,7 +96,7 @@ FHZ_Ready($)
my $name = $hash->{NAME};
$hash->{PARTIAL} = "";
if ($^O=~/Win/) {
if($^O =~ m/Win/) {
$po = new Win32::SerialPort ($dev);
} else {
$po = new Device::SerialPort ($dev);
@ -105,7 +105,7 @@ FHZ_Ready($)
Log 1, "USB device $dev reappeared";
$hash->{PortObj} = $po;
if( $^O !~ /Win/ ) {
if($^O !~ m/Win/) {
$hash->{FD} = $po->FILENO;
delete($readyfnlist{"$name.$dev"});
$selectlist{"$name.$dev"} = $hash;
@ -319,7 +319,7 @@ FHZ_Define($$)
$hash->{DeviceName} = $dev;
$hash->{PARTIAL} = "";
Log 3, "FHZ opening FHZ device $dev";
if ($^O=~/Win/) {
if($^O =~ m/Win/) {
require Win32::SerialPort;
$po = new Win32::SerialPort ($dev);
} else {
@ -336,7 +336,7 @@ FHZ_Define($$)
Log 3, "FHZ opened FHZ device $dev";
$hash->{PortObj} = $po;
if( $^O !~ /Win/ ) {
if($^O !~ m/Win/) {
$hash->{FD} = $po->FILENO;
$selectlist{"$name.$dev"} = $hash;
} else {
@ -444,7 +444,7 @@ FHZ_ReadAnswer($$$)
my ($mfhzdata, $rin) = ("", '');
my $nfound;
for(;;) {
if($^O eq 'MSWin32') {
if($^O =~ m/Win/) {
$nfound=FHZ_Ready($hash);
} else {
vec($rin, $hash->{FD}, 1) = 1;
@ -585,14 +585,14 @@ FHZ_Reopen($)
Log 1, "USB device $dev closed";
for(;;) {
sleep(5);
if ($^O eq 'MSWin32') {
if($^O =~ m/Win/) {
$hash->{PortObj} = new Win32::SerialPort($dev);
}else{
$hash->{PortObj} = new Device::SerialPort($dev);
}
if($hash->{PortObj}) {
Log 1, "USB device $dev reopened";
$hash->{FD} = $hash->{PortObj}->FILENO if !($^O eq 'MSWin32');
$hash->{FD} = $hash->{PortObj}->FILENO if($^O !~ m/Win/);
FHZ_DoInit($hash->{NAME}, $hash->{ttytype}, $hash->{PortObj});
return;
}