/* This program calculates calibration constants for the Dataq DI194RS serial */ /* data acquisition device. */ #include #include #include #include #include #include using namespace std; #include "dataqsdk.h" #define TRUE 1 #define FALSE 0 #define PRODUCTNAME "DI-194RS" #define MAXCHANNELS 4 #define DATAMASK 0x0000FFC0 #ifndef CALFILENAME #define CALFILENAME "/etc/di194rs.cal" #endif #ifndef SERIALPORT #ifdef __OpenBSD__ #define SERIALPORT "/dev/cua00" #endif #ifdef __linux__ #define SERIALPORT "/dev/ttyS0" #endif #endif static void SDKerror(dataqsdk *dev, char *caller, int abortflag) { long int error_code = 0; if (dev->ControlError(error_code)) { fprintf(stderr, "ERROR: %s() failed, %s\n", caller, strerror(error_code)); if (abortflag) exit(1); } } static void GetCalibration(short int *offsets, float *scalefactors) { FILE *calfile; int i; calfile = fopen(CALFILENAME, "r"); if (calfile == NULL) { fprintf(stderr, "ERROR: fopen() for %s failed, %s\n", CALFILENAME, strerror(errno)); exit(1); } for (i = 0; i < MAXCHANNELS; i++) fscanf(calfile, "%hd %e\n", &offsets[i], &scalefactors[i]); fclose(calfile); } static void SaveCalibration(short int *offsets, float *scalefactors) { FILE *calfile; int i; calfile = fopen(CALFILENAME, "w"); if (calfile == NULL) { fprintf(stderr, "ERROR: fopen() for %s failed, %s\n", CALFILENAME, strerror(errno)); exit(1); } for (i = 0; i < MAXCHANNELS; i++) fprintf(calfile, "%d %e\n", offsets[i], scalefactors[i]); fclose(calfile); }