/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Seriel kommunikation med perl
Fra : Henrik Schmidt


Dato : 04-11-01 11:07

Hello !

Har nogen her prøvet seriel kommunikation med perl ?

Jeg skulle gerne ende med et script der på en linux box kan sende en
kommando, f.eks. ATZ til et modem 9600,8,N,1, og scriptet skulle så gerne
returnere OK, ERROR, eller hvad modemet nu returnerer.

Jeg har ledt på nettet, men har ikke fundet noget der umiddelbart har
medført succes , men interessante links modtages med kyshånd.

På forhånd tak.

/Henrik



 
 
Peter Makholm (04-11-2001)
Kommentar
Fra : Peter Makholm


Dato : 04-11-01 11:25

"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

--
Når folk spørger mig, om jeg er nørd, bliver jeg altid ilde til mode
og svarer lidt undskyldende: "Nej, jeg bruger RedHat".
-- Allan Olesen på dk.edb.system.unix

Henrik Schmidt (04-11-2001)
Kommentar
Fra : Henrik Schmidt


Dato : 04-11-01 13:17

Jeg takker, nu er der da hul til porten

/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



Henrik Schmidt (04-11-2001)
Kommentar
Fra : Henrik Schmidt


Dato : 04-11-01 19:03

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




Christian E. Lysel (20-11-2001)
Kommentar
Fra : Christian E. Lysel


Dato : 20-11-01 23:27

Henrik Schmidt wrote:

> 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/ ).


Hvad koster fætteren?

Jeg ville nok bikse den sammen med mrtg, eller noget ligende.


Peter Makholm (04-11-2001)
Kommentar
Fra : Peter Makholm


Dato : 04-11-01 23:23

"Henrik Schmidt" <dont@mail.me> writes:

> open(serial, "+>/dev/cua0") || die "Can't open /dev/cua0\n";
> system("stty -echo raw >/dev/cua0");

Er du sikker på at du har en /dev/cua0. Det er lang tid siden at
/dev/cua? blev afskaffet til fordel for /dev/ttyS? og din open-linje
vil ikke brokke sig fordi den primært åbner for skrivning til filen.

Hvad gik der galt med Device::SerialPort?

--
Når folk spørger mig, om jeg er nørd, bliver jeg altid ilde til mode
og svarer lidt undskyldende: "Nej, jeg bruger RedHat".
-- Allan Olesen på dk.edb.system.unix

Henrik Schmidt (05-11-2001)
Kommentar
Fra : Henrik Schmidt


Dato : 05-11-01 18:01

Hej Peter !

Jeg er ret sikker på jeg har /dev/cua0, det er næsten det eneste jeg er
sikker på , jeg kan ihvertfald åbne miterm med parametrene "-s 9600 -d
/dev/cua0" og opnå forbindelse til min hardware.

Problemerne opstår først med "system("stty -echo raw >/dev/cua0");" der
udløser "stty: No such file or directory", og udelader jeg den er der ikke
hul igennem længere. Jeg forstår det ikke, er det ikke et kald hvor perl
kalder en ekstern kommando ? Kommandoen stty er ukendt for min maskine, men
alligevel har den angivligt stor betydning.

Hvad der gik der galt med Device::SerialPort ?

Jeg kører på en ret begrænset distribution (Freesco, se http://freesco.org),
og jeg er ikke så stiv på linux endnu at jeg ser mig istand til at kaste mig
ud i al for megen opgradering og installation på en 100 % textbaseret
Linux -og så faldt jeg lige over scriptet og det funkede (lidt) uden de
store krumspring så ehhh .....

Er du (eller andre) istand til at pinde de 2 linjer ud for mig som du har
klippet fra mit script ?

/Henrik


"Peter Makholm" <peter@makholm.net> skrev i en meddelelse
news:87k7x6p44g.fsf@xyzzy.adsl.dk...
> "Henrik Schmidt" <dont@mail.me> writes:
>
> > open(serial, "+>/dev/cua0") || die "Can't open /dev/cua0\n";
> > system("stty -echo raw >/dev/cua0");
>
> Er du sikker på at du har en /dev/cua0. Det er lang tid siden at
> /dev/cua? blev afskaffet til fordel for /dev/ttyS? og din open-linje
> vil ikke brokke sig fordi den primært åbner for skrivning til filen.
>
> Hvad gik der galt med Device::SerialPort?



Michael Legart - Tis~ (05-11-2001)
Kommentar
Fra : Michael Legart - Tis~


Dato : 05-11-01 18:00

Henrik Schmidt <dont@mail.me> wrote:

> Problemerne opstår først med "system("stty -echo raw >/dev/cua0");" der
> udløser "stty: No such file or directory", og udelader jeg den er der ikke

Prøv med

   system("/bin/stty -echo raw >/dev/cua0");

i stedet

Henrik Schmidt (05-11-2001)
Kommentar
Fra : Henrik Schmidt


Dato : 05-11-01 18:48

Hej Michael !

Det virker ikke, men :

#!/usr/bin/perl
@options = ("V", "1", "2","3");
foreach $option (@options)
{
open(serial, "+>/dev/cua0") || die "Can't open /dev/ttyb\n";
system("tty --silent >/dev/cua0");
$out = "$option";
syswrite(serial, $out, length($out) ) ;
sysread(serial, $in, 100);
print "$in";
}

Det spiller bare ?!?!?!?!

Ingen fejl, blot følgende output :

DigiTherm II V1.33
IC1 +005,0C
IC2 +036,0C
IC3 ****,*C

Jeg forstår det ikke .....

/Henrik

"Michael Legart - Tiscali" <mlegart@dk.tiscali.com> skrev i en meddelelse
news:LAzF7.5260$RM3.479907@news000.worldonline.dk...
> Henrik Schmidt <dont@mail.me> wrote:
>
> > Problemerne opstår først med "system("stty -echo raw >/dev/cua0");" der
> > udløser "stty: No such file or directory", og udelader jeg den er der
ikke
>
> Prøv med
>
> system("/bin/stty -echo raw >/dev/cua0");
>
> i stedet



Michael Legart - Tis~ (05-11-2001)
Kommentar
Fra : Michael Legart - Tis~


Dato : 05-11-01 18:57

Henrik Schmidt <dont@mail.me> wrote:
> Jeg forstår det ikke .....

Maaske har du ikke en stty kommando paa dit system?

--
Med venlig hilsen / Kind regards
Michael Legart, System Developer - Tiscali A/S (World Online)
Peter Bangs Vej 26, DK-2000 Frederiksberg - http://www.tiscali.dk
Phone +45 3814 7000, Fax +45 3814 7007

Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste