#!/usr/bin/perl -w
# cross-platform example7
use strict;
use vars qw( $OS_win $ob $file );
BEGIN {
$OS_win = ($^O eq "MSWin32") ? 1 : 0;
if ($OS_win) {
eval "use Win32::SerialPort 0.13";
die "$@\n" if ($@);
}
else {
eval "use Device::SerialPort";
die "$@\n" if ($@);
}
} # End BEGIN
$file = 'tpj4.cfg';
if ($OS_win) {
$ob = Win32::SerialPort->start ($file);
}
else {
$ob = Device::SerialPort->start ($file);
}
die "Can't open serial port from $file: $^E\n" unless ($ob);
sub waitfor {
my $timeout=$ob->get_tick_count + (1000 * shift);
$ob->lookclear; # clear buffers
my $gotit = "";
for (;;) {
return unless (defined ($gotit = $ob->lookfor));
if ($gotit ne "") {
my ($found, $end) = $ob->lastlook;
return $gotit.$found;
}
return if ($ob->reset_error);
return if ($ob->get_tick_count > $timeout);
}
}
# =============== execution begins here =======================
$ob->error_msg(1); # use built-in error messages
$ob->user_msg(1);
$ob->are_match("BUSY","CONNECT","OK","NO DIALTONE","ERROR","RING",
"NO CARRIER","NO ANSWER");
$ob->write("ATE0X4\r");
printf "%s\n", waitfor(1); # 1 second
print "\nStarting Dial\n";
$ob->write("ATDT5551234\r"); # Use a different number!
printf "%s\n", waitfor(20);
print "\n5 seconds to failure..\n";
waitfor(5) || print "Timed Out\n";
undef $ob;