git-svn-id: https://svn.fhem.de/fhem/trunk@182 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
tdressler
2008-05-11 21:01:17 +00:00
parent 479e8d7950
commit 9e1b89cb65
3 changed files with 30 additions and 22 deletions

View File

@@ -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;
@@ -124,13 +124,13 @@ WS300_Define($$)
$hash->{SENSOR} = 10; $hash->{SENSOR} = 10;
$hash->{READINGS}{WS300Device}{VAL} = "Initializing"; $hash->{READINGS}{WS300Device}{VAL} = "Initializing";
$hash->{READINGS}{WS300Device}{TIME} = TimeNow; $hash->{READINGS}{WS300Device}{TIME} = TimeNow;
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)
{ {

View File

@@ -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) {

View File

@@ -149,9 +149,11 @@ FileLog_Get($@)
return "Usage: get $a[0] <from> <to> <column_list>" if(int(@a) != 4); return "Usage: get $a[0] <from> <to> <column_list>" if(int(@a) != 4);
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));