Hej alle !
Det drejer sig om kommunikation med et system der bruges til måling af
temperatur. Hardwaren er i stand til at måle temperaturen med hjælp fra op
til tre eksterne følere, og sende temperaturdata'ene serielt (9600,8,N,1)
til f.eks. en PC (se evt.
http://www.digitherm.dk/ ).
Hardwaren accepterer 4 kommandoer :
V udlæser versionsnummeret på hardwaren
1 udlæser temperatur på føler 1
2 udlæser temperatur på føler 2
3 udlæser temperatur på føler 3
er der ikke tilsluttet en føler udlæses blot ****,*C istedet for
temperaturen.
Jeg har lavet følgende stump perl kode til formålet :
#!/usr/bin/perl
@options = ("V", "1", "2","3");
foreach $option (@options)
{
open(serial, "+>/dev/cua0") || die "Can't open /dev/cua0\n";
system("stty -echo raw >/dev/cua0");
$out = "$option";
syswrite(serial, $out, length($out) ) ;
sleep(1);
sysread(serial, $in, 1000);
print "$in";
}
Dette program udløser :
stty: No such file or directory
DigiTherm II V1.33
stty: No such file or directory
IC1 +009,0C
stty: No such file or directory
IC2 +036,5C
stty: No such file or directory
IC3 ****,*C
Jeg forstår det ikke, "stty: No such file or directory" udløses af
"system("stty -echo raw >/dev/cua0");", men kan IKKE undværes da der så ikke
kommer noget fra hardwaren overhovedet.
Jeg ville gerne have et output ala :
DigiTherm II V1.33
IC1 +009,0C
IC2 +036,5C
IC3 ****,*C
Har nogen konstruktive forslag (helst ikke alt for videnskablige) til
optimering / en HELT anden måde at gøre det på ?
Alle kommentarer er velkomne ....
Til orientering er IC1 monteret udendørs i Rønne, og IC2 sidder på toppen af
min maskine (IBM PC350 P75) der skal styre showet.
/Henrik
"Peter Makholm" <peter@makholm.net> skrev i en meddelelse
news:87pu6yrfxx.fsf@xyzzy.adsl.dk...
> "Henrik Schmidt" <dont@mail.me> writes:
>
> > Har nogen her prøvet seriel kommunikation med perl ?
>
> 15 sekunder på CPAN:
>
> Prøv at se på Device::SerialPort