NAME
USB::TMC - Perl interface to USB Test & Measurement (USBTMC) backend.
SYNOPSIS
use USB::TMC;
# Open usb connection to Agilent 34410A digital multimeter
my $usbtmc = USB::TMC->new(
vid => 0x0957,
pid => 0x0607,
serial => 'MY47000419', # only needed if vid/pid is ambiguous
);
$usbtmc->write(data => "*CLS\n");
$usbtmc->write(data => "VOLT:NPLC 10\n");
print $usbtmc->query(data => ":read?\n", length => 100);
my $capabilities = $usbtmc->get_capabilities();
my $support_term_char = $capabilities->{support_term_char};
DESCRIPTION
This module provides a user-space USBTMC driver.
Internally this module is based on USB::LibUSB.
Does not yet support the additional features of USBTMC-USB488. But those could easily be added if needed.
METHODS
Errors with USB transfers will result in a croak.
Use default timeout if timeout
arg is not given.
new
my $usbtmc = USB::TMC->new(
vid => $vid,
pid => $pid,
serial => $serial, # optional
reset_device => 0, # default: do device reset
debug_mode => 1, # print lots of debug messages
libusb_log_level => LIBUSB_LOG_LEVEL_DEBUG, # Import LIBUSB_LOG_LEVEL_* constant from USB::LibUSB
term_char => "\n", # Stop a read request if the term_char occurs in the
# byte stream. Default: do not use term char
timeout => 10, # timeout in seconds. default: 5
);
write
$usbtmc->write(data => $data, timeout => $timeout);
Do DEV_DEP_MSG_OUT transfer.
read
my $data = $usbtmc->read(length => $read_length, timeout => $timeout);
Do REQUEST_DEV_DEP_MSG_IN and DEV_DEP_MSG_IN transfers.
Typically you will not need this method and only use "query".
query
my $data = $usbtmc->query(data => $data, length => $read_length, timeout => $timeout);
Send a query command and read the result.
get_capabilities
my $capabilites = $usbtmc->get_capabilities(timeout => $timeout);
Do GET_CAPABILITIES request.
The $capabilities
hash contains the following keys:
- bcdUSBTMC
- listen_only
- talk_only
- accept_indicator_pulse
- support_term_char