#!/usr/bin/perl -w use strict; use POSIX qw(:termios_h); use FileHandle; my $buffer= " " x 100; my ($nfd); # # has107k: cua0 is the upper connector # sysopen( DMC, "/dev/cua0", O_RDWR); my $fd = fileno( DMC); my $term = POSIX::Termios->new; $term->getattr( $fd); $term->setospeed( &POSIX::B19200); $term->setispeed( &POSIX::B19200); my $lflag = $term->getlflag(); $term->setlflag( $lflag & ~(POSIX::ECHO)); my $c_cflag = $term->getcflag(); $term->setcflag( $c_cflag | &POSIX::CS8); $term->setattr( $fd, &POSIX::TCSANOW); while() { print " Enter> "; $buffer = <>; goto finish if( $buffer =~ /bye/i); if( length( $buffer)) { $buffer .= "\n"; syswrite( DMC, $buffer, length( $buffer), 0); } $nfd = 1; while( $nfd) { my $rin = my $win = my $ein = ""; vec( $rin, fileno( DMC), 1) = 1; $ein = $rin | $win; $nfd = select( $rin, $win, $ein, 0.1); if( $nfd) { sysread( DMC, $buffer, 100, 0); $buffer =~ s/^\s*(.*?)\s*$/$1/; if( length( $buffer)) { print " $buffer \n"; } } } } finish: close DMC;