summaryrefslogtreecommitdiff
path: root/libvxi11client
diff options
context:
space:
mode:
authordaniel <danieruru@gmail.com>2013-01-25 23:09:40 +0900
committerdaniel <danieruru@gmail.com>2013-01-25 23:09:40 +0900
commite3d04285a9460a8ab13e9725fc2febf1be63a4d9 (patch)
tree50878fe2c72bf8a3164357810d1cce576b9075d7 /libvxi11client
parent008d5f4b9f3cad2d5fe350fa525b8a2135b97785 (diff)
docmd and better termination fix
Diffstat (limited to 'libvxi11client')
-rw-r--r--libvxi11client/perlbits/Client.pm21
-rw-r--r--libvxi11client/perlbits/Client.xs9
-rw-r--r--libvxi11client/perlbits/VXI11-Client.t4
3 files changed, 31 insertions, 3 deletions
diff --git a/libvxi11client/perlbits/Client.pm b/libvxi11client/perlbits/Client.pm
index 605d864..df58e34 100644
--- a/libvxi11client/perlbits/Client.pm
+++ b/libvxi11client/perlbits/Client.pm
@@ -75,6 +75,27 @@ sub vxi_read {
return ($bytes, $string, $reason);
}
+sub vxi_docmd {
+ my $self = shift;
+ my $cmd = shift;
+ my %args = (
+ datain => "",
+ datainlen => -1,
+ dataoutbufferlen => 256,
+ waitlock => 0,
+ autochomp => 1,
+ @_
+ );
+
+ my ($ret, $dataout, $dataoutlen) = vxi_docmd_long($self, $args{datain}, $args{datainlen}, $args{dataoutbufferlen}, $args{waitlock});
+
+ if ($args{autochomp}) {
+ chomp ($dataout);
+ }
+
+ return ($ret, $dataout);
+}
+
1;
__END__
# Below is stub documentation for your module. You'd better edit it!
diff --git a/libvxi11client/perlbits/Client.xs b/libvxi11client/perlbits/Client.xs
index 0de2df3..48571d9 100644
--- a/libvxi11client/perlbits/Client.xs
+++ b/libvxi11client/perlbits/Client.xs
@@ -68,12 +68,17 @@ vxi_destroy_intr_chan(context)
RETVAL
int
-vxi_docmd(context, cmd, waitforlock = 0)
+vxi_docmd_long(context, datain, datainlen, OUTLIST dataout, outbufferlen, OUTLIST dataoutlen, cmd, waitforlock = 0)
VXI11::Client context
+ char* datain
+ int datainlen
+ char* dataout
+ int outbufferlen
+ int dataoutlen
unsigned long cmd
bool waitforlock
CODE:
- RETVAL = vxi11_docmd(context, cmd, waitforlock);
+ RETVAL = vxi11_docmd(context, datain, datainlen, dataout, outbufferlen, &dataoutlen, cmd, waitforlock);
OUTPUT:
RETVAL
diff --git a/libvxi11client/perlbits/VXI11-Client.t b/libvxi11client/perlbits/VXI11-Client.t
index affa622..8a09a55 100644
--- a/libvxi11client/perlbits/VXI11-Client.t
+++ b/libvxi11client/perlbits/VXI11-Client.t
@@ -18,7 +18,8 @@ BEGIN { use_ok('VXI11::Client') };
&VXI11::Client::vxi_startinterruptserver();
-my $instr = &VXI11::Client::vxi_open("192.168.0.62", 0);
+my $address = "roi";
+my $instr = &VXI11::Client::vxi_open($address, 0);
is($instr->vxi_lock(0), 1, "Lock");
ok($instr->vxi_write("*idn?") > 0, "Write");
@@ -40,6 +41,7 @@ is($instr->vxi_clear(), 1, "Clear");
is($instr->vxi_trigger(), 1, "Trigger");
is($instr->vxi_local(), 1, "Local");
is($instr->vxi_remote(), 1, "Remote");
+#ok($instr->vxi_docmd(1) < 1, "docmd"); #this should fail on the bb server
is($instr->vxi_unlock(), 1, "Unlock");
is($instr->vxi_close(), 1, "Close");