#! perl -w use strict; use Win32::SerialPort; my $ob = Win32::SerialPort->new ('COM5') || die; my $baud = $ob->baudrate; my $parity = $ob->parity; my $data = $ob->databits; my $stop = $ob->stopbits; my $hshake = $ob->handshake; print "B = $baud, D = $data, S = $stop, P = $parity, H = $hshake\n"; my @data_opt = $ob->databits; # list context print "\nData Bit Options: "; foreach $a (@data_opt) { print " $a"; } @data_opt = $ob->stopbits; # list context print "\nData Bit Options: "; foreach $a (@data_opt) { print " $a"; } @data_opt = $ob->handshake; # list context print "\nData Bit Options: "; foreach $a (@data_opt) { print " $a"; } @data_opt = $ob->parity; # list context print "\nData Bit Options: "; foreach $a (@data_opt) { print " $a"; } @data_opt = $ob->baudrate; # list context print "\nData Bit Options: "; foreach $a (@data_opt) { print " $a"; } undef $ob; ======================= Response ================== B = 38400, D = 8, S = 1, P = none, H = none Data Bit Options: 7 8 Data Bit Options: 2 1 Data Bit Options: rts none dtr xoff Data Bit Options: odd space even none mark Data Bit Options: 300 115200 57600 19200 1200 4800 9600 38400 2400 600 #### #! C:\perl\bin\perl.exe use strict; use warnings; use Win32::SerialPort; my $port_name = 'COM5'; my $config_file = 'setup.cfg'; my $port = new Win32::SerialPort($port_name, $config_file) || die "Unable to open: $^E\n"; # my $status = pack('HHHHHH', 'ca', '00', '01', '00', '00', 'fe'); $port->write("ati"."\n"); sleep 0; my $debug = 1; while(1) { my $line = $port->lookfor(); if( $line ) { { local $/ = "\r"; chomp $line; } if ($debug) { print "[$line]" ;} # Some data processing takes place } else { sleep(1); # Allocate time for other processes to run print "."; } } ======================= Response ================== .......