#! perl -w use Win::SerialPort 0.08; package COM1demo3; use strict; use Win32; sub get_tf { my $result = shift; if ($result) { return "T"; } return "F"; } my $file = "COM1"; my $ob; my $full_cfg = 0; # Constructor if (@ARGV) { $file = $ARGV[0]; $ob = Win::SerialPort->start ($file) or die "could not open port from configuration $file\n"; # next test would die at runtime without $ob $full_cfg++; } else { $ob = Win::SerialPort->new ($file) or die "could not open port from $file\n"; # next test would die at runtime without $ob } my @carp_off_please = Win::SerialPort->set_test_mode_active(1); #### Check Port Settings my $baud=$ob->baudrate; my $par=$ob->parity; my $data=$ob->databits; my $stop=$ob->stopbits; my $hshake=$ob->handshake; my $rint=$ob->read_interval; my $rconst=$ob->read_const_time; my $rchar=$ob->read_char_time; my $wconst=$ob->write_const_time; my $wchar=$ob->write_char_time; my ($rbuf, $wbuf)= $ob->buffers; my $alias=$ob->alias; my $xof_l=$ob->xoff_limit; my $xon_l=$ob->xon_limit; my $user=get_tf(scalar $ob->user_msg); my $error=get_tf(scalar $ob->error_msg); my $debug=get_tf(scalar $ob->debug); my $bin=get_tf(scalar $ob->binary); my $par_e=get_tf(scalar $ob->parity_enable); my $xon_c=sprintf("0x%x", scalar $ob->xon_char); my $xof_c=sprintf("0x%x", scalar $ob->xoff_char); my $eof_c=sprintf("0x%x", scalar $ob->eof_char); my $evt_c=sprintf("0x%x", scalar $ob->event_char); my $err_c=sprintf("0x%x", scalar $ob->error_char); if ($rint == 0xffffffff) { $rint = "OFF "; } sub update_menu { $baud=$ob->baudrate; $par=$ob->parity; $data=$ob->databits; $stop=$ob->stopbits; $hshake=$ob->handshake; $rint=$ob->read_interval; $rconst=$ob->read_const_time; $rchar=$ob->read_char_time; $wconst=$ob->write_const_time; $wchar=$ob->write_char_time; ($rbuf, $wbuf)= $ob->buffers; $alias=$ob->alias; $xof_l=$ob->xoff_limit; $xon_l=$ob->xon_limit; $user=get_tf(scalar $ob->user_msg); $error=get_tf(scalar $ob->error_msg); $debug=get_tf(scalar $ob->debug); $bin=get_tf(scalar $ob->binary); $par_e=get_tf(scalar $ob->parity_enable); $xon_c=sprintf("0x%x", scalar $ob->xon_char); $xof_c=sprintf("0x%x", scalar $ob->xoff_char); $eof_c=sprintf("0x%x", scalar $ob->eof_char); $evt_c=sprintf("0x%x", scalar $ob->event_char); $err_c=sprintf("0x%x", scalar $ob->error_char); if ($rint == 0xffffffff) { $rint = "OFF "; } $-=0; write; } format STDOUT_TOP = ======================== Serial Port Setup =========================== . format STDOUT = A Alias: @<<<<<<<<<<<< M Read Interval Time @>>>>>>> MS $alias, $rint B Baud: @<<<<<< N Read Char. Time @>>>>>>> MS $baud, $rchar C Binary: @< O Read Constant Time @>>>>>>> MS $bin, $rconst D Databits: @< P Write Char. Time @>>>>>>> MS $data, $wchar E Parity_En: @< Q Write Const. Time @>>>>>>> MS $par_e, $wconst F Parity: @<<<< R Read Buffer Size @>>>>>>> $par, $rbuf G Error Msg: @<< S Write Buffer Size @>>>>>>> $error, $wbuf H Handshake: @<<<< T Buffer Send Xon (top) @>>>>> $hshake, $xon_l I User Msg: @<<<< U Buffer Send Xoff (bot) @>>>>> $user, $xof_l J Error Char: @<<<< V Xoff Character @>>>>> $err_c, $xof_c K Event Char: @<<<< W Xon Character @>>>>> $evt_c, $xon_c L Debug: @<<<< X Eof Character @>>>>> $debug, $eof_c . write; print "\nWaiting 5 seconds before continuing\n"; sleep 5; $ob->user_msg(1); $ob->parity("odd"); $ob->parity_enable(1); update_menu; unless ($full_cfg) { print "\nParity settings will not update until write_settings complete\n"; } undef $ob;