Portage d'un script Linux vers Windows
Bonjour,
j'ai récupéré un script (voir ci-dessous depuis http://www.jibble.org/currentcost/
Dans la version Windows, j'ai ajouté le module Win32:: SerialPort et changé les appels du script en conséquence.
Actuellement, je bute sur la ligne open(SERIAL, "+>$PORT"); qui me renvoie un Permission denied.
D'ailleurs, je pense que le port devrait être ouvert en lecture, mais cela ne change rien à l'erreur.
Merci pour votre aide et vos suggestions.
Version d'origine :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #!/usr/bin/perl -w
# Reads data from a Current Cost device via serial port.
use strict;
use Device::SerialPort qw( :PARAM :STAT 0.07 );
my $PORT = "/dev/ttyS0";
my $ob = Device::SerialPort->new($PORT);
$ob->baudrate(2400);
$ob->write_settings;
open(SERIAL, "+>$PORT");
while (my $line = <SERIAL>) {
if ($line =~ m!<ch1><watts>0*(\d+)</watts></ch1>.*<tmpr> *([\-\d.]+)</tmpr>!) {
my $watts = $1;
my $temp = $2;
print "$watts, $temp\n";
}
} |
Version adaptée pour Windows qui plante (j'ai ajouté des settings pour le port COM mais cela ne pose pas de pb)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| use strict;
use Win32::SerialPort qw( :PARAM :STAT 0.07 );
my $PORT = "COM4";
my $ob = Win32::SerialPort->new($PORT);
$ob->baudrate(57600);
$ob->parity("none");
$ob->databits(8);
$ob->stopbits(1);
$ob->write_settings;
open(SERIAL, "+>$PORT") or die "Can't open COM4: $!";
while (my $line = <SERIAL>) {
if ($line =~ m!<tmpr> *([\-\d.]+)</tmpr>.*<watts>0*(\d+)</watts>!) {
my $temp = $1;
my $watts = $2;
print "$watts, $temp\n";
}
} |