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:
parent
a20e36f1dc
commit
341bc6695c
@ -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.
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user