fixes
git-svn-id: https://svn.fhem.de/fhem/trunk@182 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -114,7 +114,7 @@ WS300_Define($$)
|
|||||||
{
|
{
|
||||||
my ($hash, $def) = @_;
|
my ($hash, $def) = @_;
|
||||||
my @a = split("[ \t][ \t]*", $def);
|
my @a = split("[ \t][ \t]*", $def);
|
||||||
|
my $po;
|
||||||
if($a[0] eq "WS300Device")
|
if($a[0] eq "WS300Device")
|
||||||
{
|
{
|
||||||
$defptr{10} = $hash;
|
$defptr{10} = $hash;
|
||||||
@@ -127,10 +127,10 @@ WS300_Define($$)
|
|||||||
|
|
||||||
if ($^O=~/Win/) {
|
if ($^O=~/Win/) {
|
||||||
eval ("use Win32::SerialPort;");
|
eval ("use Win32::SerialPort;");
|
||||||
my $po = new Win32::SerialPort ($DeviceName);
|
$po = new Win32::SerialPort ($DeviceName);
|
||||||
}else{
|
}else{
|
||||||
eval ("use Device::SerialPort;");
|
eval ("use Device::SerialPort;");
|
||||||
my $po = new Device::SerialPort ($DeviceName);
|
$po = new Device::SerialPort ($DeviceName);
|
||||||
}
|
}
|
||||||
if(!$po)
|
if(!$po)
|
||||||
{
|
{
|
||||||
@@ -514,6 +514,7 @@ WS300_Poll($)
|
|||||||
my $hash = shift;
|
my $hash = shift;
|
||||||
my $bstring=" ";
|
my $bstring=" ";
|
||||||
my $count;
|
my $count;
|
||||||
|
my $po;
|
||||||
my $inchar='';
|
my $inchar='';
|
||||||
my $escape=0;
|
my $escape=0;
|
||||||
my $ll = GetLogLevel("WS300Device");
|
my $ll = GetLogLevel("WS300Device");
|
||||||
@@ -541,9 +542,9 @@ NEXTPOLL:
|
|||||||
$hash->{READINGS}{WS300Device}{TIME} = TimeNow;
|
$hash->{READINGS}{WS300Device}{TIME} = TimeNow;
|
||||||
sleep(1);
|
sleep(1);
|
||||||
if ($^O=~/Win/) {
|
if ($^O=~/Win/) {
|
||||||
my $po = new Win32::SerialPort ($devname);
|
$po = new Win32::SerialPort ($devname);
|
||||||
}else{
|
}else{
|
||||||
my $po = new Device::SerialPort ($devname);
|
$po = new Device::SerialPort ($devname);
|
||||||
}
|
}
|
||||||
if($po)
|
if($po)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ EM_Define($$)
|
|||||||
{
|
{
|
||||||
my ($hash, $def) = @_;
|
my ($hash, $def) = @_;
|
||||||
my @a = split("[ \t][ \t]*", $def);
|
my @a = split("[ \t][ \t]*", $def);
|
||||||
|
my $po;
|
||||||
$hash->{STATE} = "Initialized";
|
$hash->{STATE} = "Initialized";
|
||||||
|
|
||||||
delete $hash->{PortObj};
|
delete $hash->{PortObj};
|
||||||
@@ -62,10 +62,10 @@ EM_Define($$)
|
|||||||
Log 3, "EM opening device $dev";
|
Log 3, "EM opening device $dev";
|
||||||
if ($^O=~/Win/) {
|
if ($^O=~/Win/) {
|
||||||
eval ("use Win32::SerialPort;");
|
eval ("use Win32::SerialPort;");
|
||||||
my $po = new Win32::SerialPort ($dev);
|
$po = new Win32::SerialPort ($dev);
|
||||||
}else{
|
}else{
|
||||||
eval ("use Device::SerialPort;");
|
eval ("use Device::SerialPort;");
|
||||||
my $po = new Device::SerialPort ($dev);
|
$po = new Device::SerialPort ($dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
return "Can't open $dev: $!" if(!$po);
|
return "Can't open $dev: $!" if(!$po);
|
||||||
@@ -282,12 +282,13 @@ EmGetData($$)
|
|||||||
{
|
{
|
||||||
my ($dev, $d) = @_;
|
my ($dev, $d) = @_;
|
||||||
$d = EmMakeMsg(pack('H*', $d));
|
$d = EmMakeMsg(pack('H*', $d));
|
||||||
|
my $serport;
|
||||||
return undef if(!$dev);
|
return undef if(!$dev);
|
||||||
|
#OS depends
|
||||||
if ($^O=~/Win/) {
|
if ($^O=~/Win/) {
|
||||||
my $serport = new Win32::SerialPort ($dev);
|
$serport = new Win32::SerialPort ($dev);
|
||||||
}else{
|
}else{
|
||||||
my $serport = new Device::SerialPort ($dev);
|
$serport = new Device::SerialPort ($dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$serport) {
|
if(!$serport) {
|
||||||
@@ -313,15 +314,19 @@ EmGetData($$)
|
|||||||
my $started = 0;
|
my $started = 0;
|
||||||
my $complete = 0;
|
my $complete = 0;
|
||||||
for(;;) {
|
for(;;) {
|
||||||
my ($rout, $rin) = ('', '');
|
#select will not work on windows, replaced with status
|
||||||
vec($rin, $serport->FILENO, 1) = 1;
|
#
|
||||||
my $nfound = select($rout=$rin, undef, undef, 1.0);
|
#my ($rout, $rin) = ('', '');
|
||||||
|
#vec($rin, $serport->FILENO, 1) = 1;
|
||||||
if($nfound < 0) {
|
#my $nfound = select($rout=$rin, undef, undef, 1.0);
|
||||||
$rm = "EM Select error $nfound / $!";
|
#
|
||||||
goto DONE;
|
#if($nfound < 0) {
|
||||||
}
|
# $rm = "EM Select error $nfound / $!";
|
||||||
last if($nfound == 0);
|
# goto DONE;
|
||||||
|
#}
|
||||||
|
#last if($nfound == 0);
|
||||||
|
my ($BlockingFlags, $InBytes, $OutBytes, $ErrorFlags)=$serport->status;
|
||||||
|
last if ($InBytes<1);
|
||||||
|
|
||||||
my $buf = $serport->input();
|
my $buf = $serport->input();
|
||||||
if(!defined($buf) || length($buf) == 0) {
|
if(!defined($buf) || length($buf) == 0) {
|
||||||
|
|||||||
@@ -150,8 +150,10 @@ FileLog_Get($@)
|
|||||||
my $fh = new IO::File $hash->{currentlogfile};
|
my $fh = new IO::File $hash->{currentlogfile};
|
||||||
seekTo($fh, $hash, $a[1]);
|
seekTo($fh, $hash, $a[1]);
|
||||||
# my @arr =
|
# my @arr =
|
||||||
|
my $data='';
|
||||||
while(my $l = <$fh>) {
|
while(my $l = <$fh>) {
|
||||||
last if($l gt $a[2]);
|
last if($l gt $a[2]);
|
||||||
|
$data.=$l;
|
||||||
}
|
}
|
||||||
close($fh);
|
close($fh);
|
||||||
return "EOF" if(!defined($data));
|
return "EOF" if(!defined($data));
|
||||||
|
|||||||
Reference in New Issue
Block a user