#include "vxi11.h" #include #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 \n", argv[0]); exit(1); } int err = 0; if ((err = vxi11_open(argv[1])) > 0) { // write some bytes int byteswritten = vxi11_write(IDENTIFY, sizeof(IDENTIFY)); if (byteswritten >= 0) printf("Wrote %d bytes\n", byteswritten); else printf("Error writing data\n"); // read some bytes int bytesread = vxi11_read(); 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! %d\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); } }