diff options
author | daniel <danieruru@gmail.com> | 2013-01-25 23:09:40 +0900 |
---|---|---|
committer | daniel <danieruru@gmail.com> | 2013-01-25 23:09:40 +0900 |
commit | e3d04285a9460a8ab13e9725fc2febf1be63a4d9 (patch) | |
tree | 50878fe2c72bf8a3164357810d1cce576b9075d7 /libvxi11client | |
parent | 008d5f4b9f3cad2d5fe350fa525b8a2135b97785 (diff) |
docmd and better termination fix
Diffstat (limited to 'libvxi11client')
-rw-r--r-- | libvxi11client/perlbits/Client.pm | 21 | ||||
-rw-r--r-- | libvxi11client/perlbits/Client.xs | 9 | ||||
-rw-r--r-- | libvxi11client/perlbits/VXI11-Client.t | 4 |
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"); |