Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hey Monks

I'm trying to send commands and receive output from a modem through com1.

Unfortunately i have to do this through windows and so activeperl is what i am using.

this is my source code:
open(PORT,"+>COM1") || die "Cant Open"; print PORT "at\n"; read(PORT,$buf,3); print "$buf\n"; close(PORT);

only problem is i'm getting garbage ourput >> If i read 400 characters instead of 3 my program code (source) is printed out on the screen along with garbage!!

Dont know what i'm doing wrong - please help!

Thanks a lot
G

20040218 Edit by Corion: Added formatting, fixed CODE tags

janitored by ybiC: Retitle from "COM1". One word node titles are a bad thing, very bad

Replies are listed 'Best First'.
Re: COM1
by DrHyde (Prior) on Feb 18, 2004 at 13:17 UTC
    You should turn off perl's output buffering if you're using print - see $| in perldoc perlvar. And because you're using Windows, I expect you need to use binmode.
Re: Output garbage from serial port
by bageler (Hermit) on Feb 18, 2004 at 19:40 UTC
    have you tried using sysread for reading from a system device?