Simon Reinhardt

NAME

Lab::VXI11 - Perl interface to VXI-11 Test&Measurement backend

SYNOPSIS

  use Lab::VXI11;

  my $client = Lab::VXI11->new('132.199.1.2', DEVICE_CORE, DEVICE_CORE_VERSION, "tcp");

  ($error, $lid, $abortPort, $maxRecvSize) = $client->create_link(0, 0, 0, "inst0");

  # Send "*IDN\n" command and read answer.
  ($error, $size) = $client->device_write($lid, 1000, 0, 0, "*IDN?\n");
  ($error, $reason, $data) = $client->device_read($lid, 100, 1000, 0, 0, 0);
  
  ($error) = $client->destroy_link($lid);

DESCRIPTION

Raw XS interface for VXI-11. Uses Sun's RPC library and C-code created by rpcgen.

The VXI-11 API is documented in the VXI-11 specification. A good tutorial can be found in Agilent's application note Using Linux to Control LXI Instruments Through VXI-11.

INSTALLATION

With most Unix platforms, Sun's RPC library (sunrpc) is part of the libc and Lab::VXI11 does not have any dependencies. If your system uses GNU C library (glibc) (default libc on Linux), note that sunrpc is deprecated as of glibc 2.26. If sunrpc is not contained in the libc, you can install libtirpc as an replacement, e.g.

 $ apt-get install libtirpc-dev pkg-config

Lab::VXI11 can then be installed with any CPAN client:

 $ cpanm Lab::VXI11

On Windows this module is untested (VISA contains a VXI11 driver).

METHODS

See the VXI-11 specs for more details.

new

  $client = Lab::VXI11->new($host, $prog, $vers, $proto); 
  ($erro, $lid, $abortPort, $maxRecvSize) = $client->create_link($clientId, $lockDevice, $lock_timeout, $device);

device_write

 ($error, $size) = $client->device_write($lid, $io_timeout, $lock_timeout, $flags, $data);

device_read

 ($error, $reason, $data) = $client->device_read($lid, $requestSize, $io_timeout, $lock_timeout, $flags, $termChar);

$termChar needs to be a number, e.g. ord("\n").

device_readstb

 ($error, $stb) = $client->device_readstb($lid, $flags, $lock_timeout, $io_timeout);

device_trigger

 ($error) = $client->device_trigger($lid, $flags, $lock_timeout, $io_timeout);

device_clear

 ($error) = $client->device_clear($lid, $flags, $lock_timeout, $io_timeout);

device_remote

 ($error) = $client->device_remote($lid, $flags, $lock_timeout, $io_timeout);

device_local

 ($error) = $client->device_local($lid, $flags, $lock_timeout, $io_timeout);

device_lock

 ($error) = $client->device_remote($lid, $flags, $lock_timeout);

device_unlock

 ($error) = $client->device_unlock($lid);

device_enable_srq

 ($error) = $client->device_enable_srq($lid, $enable, $handle);

device_docmd

 ($error, $data_out) = $client->device_docmd($lid, $flags, $io_timeout, $lock_timeout, $cmd, $network_order, $datasize, $data_in);
 ($error) = $client->destroy_link($lid);

create_intr_chan

 ($error) = $client->create_intr_chan($hostAddr, $hostPort, $progNum, $progVers, $progFamily);

destroy_intr_chan

 ($error) = $client->destroy_intr_chan();

REPORTING BUGS

Please report bugs at https://github.com/lab-measurement/Lab-VXI11/issues.

CONTACT

Feel free to contact us at the #labmeasurement channel on Freenode IRC.

SEE ALSO

AUTHOR

Simon Reinhardt, <simon.reinhardt@stud.uni-regensburg.de>

COPYRIGHT AND LICENSE

Copyright (C) 2017 by Simon Reinhardt

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.24.0 or, at your option, any later version of Perl 5 you may have available.