Ham-Device-FT950
view release on metacpan or search on metacpan
lib/Ham/Device/FT950.pm view on Meta::CPAN
return undef;
}
my $m = $inv_rig_mode{$mode};
$self->writeCmd('md0'.$m.';');
my $result = $self->getMode();
return $result;
}
##############################
#
# Sub getMode
# Returns the mode of the rig
# uses hash $rig_mode
#
eval {
sub getMode {
my $self = shift;
$self->writeCmd('md0;');
my $mode = $self->readResult() || croak "Unable to read Rig Mode!\n";
#print "getMode:result of command: $mode\n";
$mode =~ /MD0([0-9A-D])\;/;
my $m = $rig_mode{$1};
#print "getMode:Value returned: $m\n";
return $m;
}
};
###########################################
#
# Sub readSMeter
#
# Reads the S-Meter
# Send a "RM1;
# receive a string back RM1XXX; where
# XXX = 000-255
# Sub return a value 000-255 or undef
#
sub readSMeter {
my $self = shift;
my $meter;
$self->writeCmd('RM1;');
unless ($meter = $self->readResult()) {return undef }
$meter =~ /RM1(\d+)\;/;
my $r = $1;
return $r
}
###########################################
#
# Sub statBSY
#
# Retrieves status of BUSY light on
# front of Rig.
# Returns 1 if ON
# Returns 0 if OFF
# Return undef is error or don't know
eval {
sub statBSY {
my $self = shift;
my ($busy, $result);
unless ($result = $self->writeCmd('BY;')) { return undef; }
$busy = $self->readResult();
$busy =~ /BY(\d+)\;/;
my $b = $1;
if ($b == 10) { return 1;
} else { return 0; }
}
};
###########################################
#
# Sub setMOX
#
# Sets and unsets the MOX (Manual Operated Xmit)
# Send a 1 to set, 0 to unset and 2 to status
# Status result:
# Returns 1 if ON
# Returns 0 if OFF
# Return undef is error or don't know
#
eval {
sub setMOX {
my $self = shift;
my $mox = shift;
my ($m, $result, $r);
if ($mox == 1) {
unless ($result = $self->writeCmd('MX1;')) { return undef; }
} elsif ($mox == 0) {
unless ($result = $self->writeCmd('MX0;')) { return undef; }
} elsif ($mox == 2) {
unless ($result = $self->writeCmd('MX;')) { return undef; }
$r = $self->readResult();
$r =~ /MX(\d)\;/;
return $1;
}
} #end sub
}; #end eval
###########################################
#
# Sub setVOX
#
# Sets and unsets the MOX (Voice Operated Xmit)
# Send a 1 to set, 0 to unset and 2 to status
# Status result:
# Returns 1 if ON
# Returns 0 if OFF
# Return undef is error or don't know
#
eval {
sub setVOX {
my $self = shift;
my ($vox, $m, $result, $r);
$vox = shift;
if ($vox == 1) {
unless ($result = $self->writeCmd('VX1;')) { return undef; }
} elsif ($vox == 0) {
unless ($result = $self->writeCmd('VX0;')) { return undef; }
} elsif ($vox == 2) {
unless ($result = $self->writeCmd('VX;')) { return undef; }
$r = $self->readResult();
$r =~ /VX(\d)\;/;
return $1;
}
} #end sub
}; #end eval
###########################################
#
# Sub statTX
#
# Retrieves TX status of Rig
# Returns 0 if Radio TX Off CAT TX OFF
# Returns 1 if Radio TX Off CAT TX ON
# Returns 2 if Radio TX ON CAT TX OFF
# Return undef is error or don't know
eval {
sub statTX {
my $self = shift;
my ($busy, $result);
unless ($result = $self->writeCmd('TX;')) { return undef; }
$busy = $self->readResult();
$busy =~ /TX(\d)\;/;
my $b = $1;
if ($b == 0) {
return 1;
} elsif ($b == 1) {
return 1;
} elsif ($b == 2) {
return 2;
} else { return undef; }
}
};
###########################################
#
# Sub statFastStep
#
# Retrieves status of "Fast Step" Button
# Returns 0 for Off
# Returns 1 for ON
# Return undef is error or don't know
eval {
sub statFastStep {
my $self = shift;
my ($busy, $result);
unless ($result = $self->writeCmd('FS;')) { return undef; }
$busy = $self->readResult();
$busy =~ /FS(\d)\;/;
my $b = $1;
if ($b == 0) {
return 0;
} elsif ($b == 1) {
return 1;
} else {
return undef;
}
}
};
###########################################
#
# Sub setFastStep
#
# Sets the fast step mode
# Send 0 for Off
# Send 1 for ON
# Returns number of chars transmitted or
# undef on error
eval {
sub setFastStep {
my $self = shift;
my ($cmd, $result);
$cmd = shift;
if ($cmd == 0) {
unless ($result = $self->writeCmd('FS0;')) { return undef; }
return $result;
} elsif ($cmd == 1) {
unless ($result = $self->writeCmd('FS1;')) { return undef; }
return $result;
} else { return undef;}
}
};
###########################################
#
# Sub readResult
#
# Returns the result from a command to FT-950
# Remember this only works right after a
# read command.
#
sub readResult {
my $self = shift;
my $STALL_DEFAULT = 10; # how many seconds to wait for new input
my $timeout = $STALL_DEFAULT;
my $timeout_msg = "FT-950 timeout\n";
my $chars=0;
my $buffer="";
while ($timeout>0) {
my ($count,$saw)=$port->read(255); # will read _up to_ 255 chars
if ($count > 0) {
$chars+=$count;
$buffer.=$saw;
if ($saw =~ /;/) {
return $buffer; # ; is end of data for FT-950
last;
( run in 1.058 second using v1.01-cache-2.11-cpan-5837b0d9d2c )