#! perl -w
use strict;
use Win32::SerialPort 0.11;
my $file = "COM1";
if (@ARGV) {
$file = shift @ARGV;
}
my $ob = Win32::SerialPort->new ($file) ||
die "Usage: perl options.plx port_name (COMx) > results";
my @baud_opt = $ob->baudrate;
my @parity_opt = $ob->parity;
my @data_opt = $ob->databits;
my @stop_opt = $ob->stopbits;
my @hshake_opt = $ob->handshake;
print "\nAvailable Options for port $file\n";
print "\nData Bit Options: ";
foreach $a (@data_opt) { print " $a"; }
print "\n\nStop Bit Options: ";
foreach $a (@stop_opt) { print " $a"; }
print "\n\nHandshake Options: ";
foreach $a (@hshake_opt) { print " $a"; }
print "\n\nParity Options: ";
foreach $a (@parity_opt) { print " $a"; }
my $c = 8;
print "\n\nBaudrate Options: ";
foreach $a (@baud_opt) {
print " $a";
unless (--$c > 0) {
$c = 8;
print "\n ";
}
}
print "\nBinary Capabilities:\n";
print " can_baud\n" if (scalar $ob->can_baud);
print " can_databits\n" if (scalar $ob->can_databits);
print " can_stopbits\n" if (scalar $ob->can_stopbits);
print " can_dtrdsr\n" if (scalar $ob->can_dtrdsr);
print " can_handshake\n" if (scalar $ob->can_handshake);
print " can_parity_check\n" if (scalar $ob->can_parity_check);
print " can_parity_config\n" if (scalar $ob->can_parity_config);
print " can_parity_enable\n" if (scalar $ob->can_parity_enable);
print " can_rlsd\n" if (scalar $ob->can_rlsd);
print " can_rtscts\n" if (scalar $ob->can_rtscts);
print " can_xonxoff\n" if (scalar $ob->can_xonxoff);
print " can_interval_timeout\n" if (scalar $ob->can_interval_timeout);
print " can_total_timeout\n" if (scalar $ob->can_total_timeout);
print " can_xon_char\n" if (scalar $ob->can_xon_char);
print " can_spec_char\n" if (scalar $ob->can_spec_char);
print " can_16bitmode\n" if (scalar $ob->can_16bitmode);
print " is_rs232\n" if (scalar $ob->is_rs232);
print " is_modem\n" if (scalar $ob->is_modem);
print " binary\n" if (scalar $ob->binary);
print " parity_enable\n" if (scalar $ob->parity_enable);
print "\nCurrent Settings:\n";
printf " baud = %d\n", scalar $ob->baudrate;
printf " parity = %s\n", scalar $ob->parity;
printf " data = %d\n", scalar $ob->databits;
printf " stop = %d\n", scalar $ob->stopbits;
printf " hshake = %s\n", scalar $ob->handshake;
print "\nByte Capabilities:\n";
printf " xon_char = 0x%x\n", scalar $ob->xon_char;
printf " xoff_char = 0x%x\n", scalar $ob->xoff_char;
printf " eof_char = 0x%x\n", scalar $ob->eof_char;
printf " event_char = 0x%x\n", scalar $ob->event_char;
printf " error_char = 0x%x\n", scalar $ob->error_char;
print "\nOther Capabilities:\n";
my ($in, $out) = $ob->buffer_max;
printf " input buffer max = 0x%x\n", $in;
printf " output buffer max = 0x%x\n", $out;
($in, $out)= $ob->buffers;
print " input buffer = $in\n";
print " output buffer = $out\n";
printf " alias = %s\n", $ob->alias;
printf " xon_limit = 0x%x\n", scalar $ob->xon_limit;
printf " xoff_limit = 0x%x\n", scalar $ob->xoff_limit;
print "\nTimeouts:\n";
printf " read_interval = 0x%x\n", scalar $ob->read_interval;
printf " read_const_time = %d\n", scalar $ob->read_const_time;
printf " read_char_time = %d\n", scalar $ob->read_char_time;
printf " write_const_time = %d\n", scalar $ob->write_const_time;
printf " write_char_time = %d\n", scalar $ob->write_char_time;
undef $ob;