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 :
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
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"; } }
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"; } }
Partager