home *** CD-ROM | disk | FTP | other *** search
- // gpibio.cpp
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <iostream.h>
- #include "gpibio.h"
-
- // GPIB BOARD CLASS
- gpibdvr *gpibio::dvr[] = {NULL,NULL};
- int gpibio::rep_cnt[] = {0,0}; // Initialize repetition count per board
-
- // Constructor
- gpibdvr::gpibdvr(int b)
- {
- char name[6];
-
- // build board name
- strcpy(name,"gpib");
- if(b==1)
- strcat(name,"1");
- else
- strcat(name,"0");
-
- // Find GPIB interface board
- bhandle = ::ibfind(name);
- if(bhandle < 0)
- {
- cerr << "Can't Find GPIB Board" << endl;
- exit(1);
- }
-
- // Configure The board
- ::ibconfig(bhandle,IbcAUTOPOLL,0);
-
- // Disable the EOI assertion at the end of write I/O
- ::ibeot(bhandle,0);
-
- // Terminate read when EOS is detected, set EOI on EOS
- ::ibeos(bhandle,0xC0A);
-
- // Set read/write/wait time out to 30 seconds
- ::ibtmo(bhandle,T30s);
- }
-
- // Open Specific device -- Returns -1 on error
- int gpibdvr::open_device(int d)
- {
- char name[8];
-
- // Build device name
- sprintf(name,"dev%d",d);
-
- // Find the device
- int device = ::ibfind(name);
- if(ibsta & ERR)
- {
- cerr << "Can't Find device" << endl;
- exit(1);
- }
- return (device);
- }
-
- // Constructor for initializing the GPIB board
- gpibio::gpibio(int b)
- {
- radix = 10; // setup format radix
- board = (b==1) ? 1 : 0; // restrict index
- if(rep_cnt[board]++ == 0)
- {
- dvr[board] = new gpibdvr;
- if(dvr[board] == NULL)
- {
- cerr << "Can't allocate driver class." << endl;
- exit(1);
- }
- }
- }
-
- // Destructor
- gpibio::~gpibio()
- {
- if(--rep_cnt[board] == 0)
- {
- delete dvr[board]; // Release class memory
- dvr[board] = NULL;
- }
- }
-
-
-