perl: seriova komunikace II
Vasek Vobornik
vobornik na fmplus.cz
Pondělí Únor 21 23:18:03 MET 2000
Diky za nakopnuti,
abych pravdu rekl, vypotil jsem i kurioznejsi kod, ale nic nefungovalo.
Ted to sice uz trochu funguje, ale zda se, ze to jeste neni to prave
orechove - nekde se ztraceji a jinde objevuji navic znaky. Pripojil
jsem k PC pres kabel RDS koder a spustil jsem:
------------------------<CUT>---------------------------
#!/usr/bin/perl
use POSIX;
open MODEM, "+>/dev/ttyS0" or die "Error openning com1: $!";
$fd = fileno(MODEM);
$termios = new POSIX::Termios;
$termios->getattr($fd);
$termios->setispeed(&POSIX::B9600);
$termios->setospeed(&POSIX::B9600);
$termios->setattr($fd, &POSIX::TCSANOW);
print MODEM "PS1:FM PLUS\n";
for ($i=0;$i<10;$i++) {
$in=<MODEM>;
print $in;
}
------------------------<CUT>---------------------------
Vysledek podobneho snazeni v BASICU pod DOSEM nebo primo pres terminal je:
------------------------<CUT>---------------------------
PS1:FM PLUS
ok
------------------------<CUT>---------------------------
1.radek je zpetne echo prikazu z RDS koderu
2.radek potvrzeni prijeti a zpracovani prikazu
Bohuzel vysledek z vyse uvedeneho programu je:
------------------------<CUT>---------------------------
PS1USPLUPS1:M PLUSPS1 PLUS
!
PLUS
------------------------<CUT>---------------------------
znak ! znamena chyba v prikazu - t.j. uz do RDS koderu to neprichazi
korektne
a RDS koder to nezpracuje.
Myslim, ze krome rychlosti by se melo nastavit jeste pocet bitu (8), parita
(N)
a stop-bit (1), coz se nikde nenastavuje. Zkousel jsem nahlednout do
`perldoc POSIX`,
ale nic z toho jsem tam nenasel.
Nemate pro mne nejaky dalsi "kopanec" ? ;-)
Dik
Vasek Vobornik
Honza Pazdziora <adelton na fi.muni.cz> píše v diskusním
příspěvku:FptuE5.8rv na news.muni.cz...
> On Sat, 12 Feb 2000 11:52:40 +0100, Vasek Vobornik <vobornik na fmplus.cz>
wrote:
> > Prosim heeelp. Uz si nevim rady a mam kruhy pod ocima.
> > Muze mi nekdo poslat script v perlu, ktery nastavi seriovy port
> > (COM1) na rychlost 9600,N,8,1, pocka na "OK" a vysle na nej "Connected"
??
>
> Na to, ze mate kruhy pod ocima, je ten vysledek hubeny -- predpokladal
> bych, ze nam ukazete aspon
>
> #!/usr/bin/perl -w
> open COM1, "+>/dev/ttyS0";
> __END__
>
> nebo tak.
>
> Cili muj start, abychom meli aspon neco, o cem se muzem bavit, je
>
> use POSIX;
>
> open MODEM, "+>/dev/ttyS0" or die "Error openning com1: $!";
> $fd = fileno(MODEM);
> $termios = new POSIX::Termios;
> $termios->getattr($fd);
> $termios->setispeed(&POSIX::B9600);
> $termios->setospeed(&POSIX::B9600);
> $termios->setattr($fd, &POSIX::TCSANOW);
>
> Je to oprano primo z dejanews a netvrdim, ze to funguje, ale mame
> kod, coz je dobry zacatek.
>
> --
> ------------------------------------------------------------------------
> Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
> .project: Perl, DBI, Oracle, MySQL, auth. WWW servers, MTB, Spain.
> ------------------------------------------------------------------------
Další informace o konferenci Perl