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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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";
	}
}