1#!perl -w 2# 3# Simple command-line terminal emulator 4# by Andrej Mikus 5# with small modifications by Bill Birthisel 6# no local echo at either end 7# 8 9use lib './blib/lib','../blib/lib'; # can run from here or distribution base 10use Device::SerialPort 0.05; 11use Term::ReadKey; 12 13use strict; 14 15my $file = "/dev/ttyS0"; 16my $ob = Device::SerialPort->new ($file) or die "Can't start $file\n"; 17 # next test will die at runtime unless $ob 18 19my $c; 20my $p1 = "Simple Terminal Emulator\n"; 21$p1 .= "Type CAPITAL Q to quit\n\n"; 22print $p1; 23$p1 =~ s/\n/\r\n/ogs; 24$ob->write ($p1); 25 26for ( ;; ) { 27 if ( $c = $ob -> input ) { 28 $c =~ s/\r/\n/ogs; 29 print $c; 30 last if $c =~ /Q/; 31 $c =~ s/\n/\r\n/ogs; 32 $ob -> write ( $c ); 33 } 34 35 if ( defined ( $c = ReadKey ( -1 ) ) ) { 36 $c =~ s/\r/\n/ogs; 37 $c =~ s/\n/\r\n/ogs; 38 $ob -> write ( $c ); 39 last if $c eq 'Q'; 40 } 41 select undef, undef, undef, 0.04; # 25/sec. 42} 43 44$ob -> close or die "Close failed: $!\n"; 45undef $ob; # closes port AND frees memory in perl 46