1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#include <stdio.h>
#include "libvxi11client.h"
#define IDENTIFY "*IDN?"
static char* geterrorstring(int errorcode) {
switch (errorcode) {
case 0:
return "invalid state (not connected) or no response from server";
case -8:
return "operation not supported";
default:
return "unknown error code";
}
}
int main(int argc, char *argv[]) {
printf("VXI-11 test client\n");
if (argc != 2) {
printf("usage; %s <host>\n", argv[0]);
exit(1);
}
int err = 0;
if ((err = vxi11_open(argv[1], NULL)) > 0) {
// write some bytes
int byteswritten = vxi11_write(IDENTIFY, sizeof(IDENTIFY), false);
if (byteswritten >= 0)
printf("Wrote %d bytes\n", byteswritten);
else
printf("Error writing data\n");
// read some bytes
int bytesread = vxi11_read(NULL, 0, false, false, 0);
if (bytesread >= 0)
printf("Read %d bytes\n", bytesread);
else
printf("Error reading data\n");
// trigger
if (vxi11_trigger() > 0)
printf("triggered\n");
// clear
if (vxi11_clear() > 0)
printf("cleared\n");
// abort
if ((err = vxi11_abort()) > 0)
printf("aborted\n");
else
printf("abort failed; %s\n", geterrorstring(err));
// lock
if ((err = vxi11_lock()) > 0)
printf("locked\n");
// unlock
if ((err = vxi11_unlock()) > 0)
printf("unlocked\n");
// remote
if ((err = vxi11_remote()) > 0)
printf("remote'd\n");
// local
if ((err = vxi11_local()) > 0)
printf("local'd\n");
// read the status byte
int statusbyte = vxi11_readstatusbyte();
if (statusbyte >= 0)
printf("Status byte is 0x%02x\n", statusbyte);
else
printf("Error reading status byte\n");
// create interrupt channel
err = vxi11_create_intr_chan();
// destroy interrupt channel
if ((err = vxi11_destroy_intr_chan()) > 0)
printf("destroyed interrupt channel\n");
else
printf("Error destroying interrupt channel; %s\n", geterrorstring(err));
// docmd
if ((err = vxi11_docmd(0x00)) > 0)
printf("did command, should fail!\n");
else
printf("Error calling docmd; %s\n", geterrorstring(err));
// close
if ((err = vxi11_close() > 0))
printf("Closed\n");
}
else {
printf("Error opening device; %s\n", geterrorstring(err));
exit(1);
}
return 0;
}
|