mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-28 17:12:32 +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:
parent
a20e36f1dc
commit
341bc6695c
@ -518,3 +518,4 @@
|
|||||||
- bugfix: EM/EMWZ/EMGZ set changed to work in FHEMWEB
|
- bugfix: EM/EMWZ/EMGZ set changed to work in FHEMWEB
|
||||||
- bugfix: Avoid unitialized in xmllist for corrupt readings (reporter: Boris)
|
- bugfix: Avoid unitialized in xmllist for corrupt readings (reporter: Boris)
|
||||||
- bugfix: Add binmode to 01_fhemweb.pm for windows
|
- bugfix: Add binmode to 01_fhemweb.pm for windows
|
||||||
|
- bugfix: Uniform check for windows, enable CUL for windows.
|
||||||
|
@ -511,11 +511,13 @@ CUL_ReadAnswer($$$)
|
|||||||
{
|
{
|
||||||
my ($hash, $arg, $anydata) = @_;
|
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 ($mculdata, $rin) = ("", '');
|
||||||
my $nfound;
|
my $nfound;
|
||||||
for(;;) {
|
for(;;) {
|
||||||
if($^O eq 'MSWin32') {
|
if($^O =~ m/Win/) {
|
||||||
$nfound=CUL_Ready($hash);
|
$nfound=CUL_Ready($hash);
|
||||||
} else {
|
} else {
|
||||||
vec($rin, $hash->{FD}, 1) = 1;
|
vec($rin, $hash->{FD}, 1) = 1;
|
||||||
@ -700,22 +702,13 @@ CUL_Read($)
|
|||||||
|
|
||||||
while($culdata =~ m/\n/) {
|
while($culdata =~ m/\n/) {
|
||||||
|
|
||||||
my $dmsg;
|
my ($rmsg, $rssi);
|
||||||
($dmsg,$culdata) = split("\n", $culdata);
|
($rmsg,$culdata) = split("\n", $culdata, 2);
|
||||||
$dmsg =~ s/\r//;
|
$rmsg =~ s/\r//;
|
||||||
goto NEXTMSG if($dmsg eq "");
|
goto NEXTMSG if($rmsg eq "");
|
||||||
|
|
||||||
# Debug message, X05
|
my $dmsg = $rmsg;
|
||||||
if($dmsg =~ m/p /) {
|
if($initstr =~ m/X2/ && $dmsg =~ m/^[FTKEHR]([A-F0-9][A-F0-9])+$/) { # RSSI
|
||||||
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 $l = length($dmsg);
|
my $l = length($dmsg);
|
||||||
$rssi = hex(substr($dmsg, $l-2, 2));
|
$rssi = hex(substr($dmsg, $l-2, 2));
|
||||||
$dmsg = substr($dmsg, 0, $l-2);
|
$dmsg = substr($dmsg, 0, $l-2);
|
||||||
@ -781,7 +774,7 @@ CUL_Read($)
|
|||||||
goto NEXTMSG;
|
goto NEXTMSG;
|
||||||
}
|
}
|
||||||
|
|
||||||
$hash->{RSSI} = $rssi;
|
$hash->{RSSI} = $rssi if(defined($rssi));
|
||||||
$hash->{RAWMSG} = $rmsg;
|
$hash->{RAWMSG} = $rmsg;
|
||||||
my $foundp = Dispatch($hash, $dmsg);
|
my $foundp = Dispatch($hash, $dmsg);
|
||||||
if($foundp) {
|
if($foundp) {
|
||||||
|
@ -96,7 +96,7 @@ FHZ_Ready($)
|
|||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
$hash->{PARTIAL} = "";
|
$hash->{PARTIAL} = "";
|
||||||
if ($^O=~/Win/) {
|
if($^O =~ m/Win/) {
|
||||||
$po = new Win32::SerialPort ($dev);
|
$po = new Win32::SerialPort ($dev);
|
||||||
} else {
|
} else {
|
||||||
$po = new Device::SerialPort ($dev);
|
$po = new Device::SerialPort ($dev);
|
||||||
@ -105,7 +105,7 @@ FHZ_Ready($)
|
|||||||
|
|
||||||
Log 1, "USB device $dev reappeared";
|
Log 1, "USB device $dev reappeared";
|
||||||
$hash->{PortObj} = $po;
|
$hash->{PortObj} = $po;
|
||||||
if( $^O !~ /Win/ ) {
|
if($^O !~ m/Win/) {
|
||||||
$hash->{FD} = $po->FILENO;
|
$hash->{FD} = $po->FILENO;
|
||||||
delete($readyfnlist{"$name.$dev"});
|
delete($readyfnlist{"$name.$dev"});
|
||||||
$selectlist{"$name.$dev"} = $hash;
|
$selectlist{"$name.$dev"} = $hash;
|
||||||
@ -319,7 +319,7 @@ FHZ_Define($$)
|
|||||||
$hash->{DeviceName} = $dev;
|
$hash->{DeviceName} = $dev;
|
||||||
$hash->{PARTIAL} = "";
|
$hash->{PARTIAL} = "";
|
||||||
Log 3, "FHZ opening FHZ device $dev";
|
Log 3, "FHZ opening FHZ device $dev";
|
||||||
if ($^O=~/Win/) {
|
if($^O =~ m/Win/) {
|
||||||
require Win32::SerialPort;
|
require Win32::SerialPort;
|
||||||
$po = new Win32::SerialPort ($dev);
|
$po = new Win32::SerialPort ($dev);
|
||||||
} else {
|
} else {
|
||||||
@ -336,7 +336,7 @@ FHZ_Define($$)
|
|||||||
Log 3, "FHZ opened FHZ device $dev";
|
Log 3, "FHZ opened FHZ device $dev";
|
||||||
|
|
||||||
$hash->{PortObj} = $po;
|
$hash->{PortObj} = $po;
|
||||||
if( $^O !~ /Win/ ) {
|
if($^O !~ m/Win/) {
|
||||||
$hash->{FD} = $po->FILENO;
|
$hash->{FD} = $po->FILENO;
|
||||||
$selectlist{"$name.$dev"} = $hash;
|
$selectlist{"$name.$dev"} = $hash;
|
||||||
} else {
|
} else {
|
||||||
@ -444,7 +444,7 @@ FHZ_ReadAnswer($$$)
|
|||||||
my ($mfhzdata, $rin) = ("", '');
|
my ($mfhzdata, $rin) = ("", '');
|
||||||
my $nfound;
|
my $nfound;
|
||||||
for(;;) {
|
for(;;) {
|
||||||
if($^O eq 'MSWin32') {
|
if($^O =~ m/Win/) {
|
||||||
$nfound=FHZ_Ready($hash);
|
$nfound=FHZ_Ready($hash);
|
||||||
} else {
|
} else {
|
||||||
vec($rin, $hash->{FD}, 1) = 1;
|
vec($rin, $hash->{FD}, 1) = 1;
|
||||||
@ -585,14 +585,14 @@ FHZ_Reopen($)
|
|||||||
Log 1, "USB device $dev closed";
|
Log 1, "USB device $dev closed";
|
||||||
for(;;) {
|
for(;;) {
|
||||||
sleep(5);
|
sleep(5);
|
||||||
if ($^O eq 'MSWin32') {
|
if($^O =~ m/Win/) {
|
||||||
$hash->{PortObj} = new Win32::SerialPort($dev);
|
$hash->{PortObj} = new Win32::SerialPort($dev);
|
||||||
}else{
|
}else{
|
||||||
$hash->{PortObj} = new Device::SerialPort($dev);
|
$hash->{PortObj} = new Device::SerialPort($dev);
|
||||||
}
|
}
|
||||||
if($hash->{PortObj}) {
|
if($hash->{PortObj}) {
|
||||||
Log 1, "USB device $dev reopened";
|
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});
|
FHZ_DoInit($hash->{NAME}, $hash->{ttytype}, $hash->{PortObj});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user