#ifdef HAVE_LABJACK #include "libsurf.h" #include "ljackv112.h" #endif #include #include #include #include #include #define NSAMP 10 #define NSTEP 20 #define STRLEN 100 static void usage () { fprintf(stderr, "adc: usage: adc -b board\n"); exit(1); } int main (int argc, char **argv) { #ifdef HAVE_LABJACK int i; char c; long id = 0; long ov; char bname[STRLEN] = { 0 }; float v; while ((c = getopt(argc, argv, "b:")) != -1) { switch (c) { case 'b': strncpy(bname, optarg, STRLEN - 1); bname[STRLEN - 1] = 0; break; default: strncpy(bname, optarg, STRLEN - 1); bname[STRLEN - 1] = 0; break; case '?': usage(); } } if (strlen(bname) == 0) usage(); fprintf(stderr, "Calibrating board %s\n", bname); for (i = 0; i < NSTEP; ++i) { int j; int adc; float sum_g = 0, sum_p = 0; float adc_g = 0, adc_p = 0; /* set output voltages */ if (EAnalogOut(&id, 0, 2 * i / (double)NSTEP, 2 * i / (double)NSTEP)) return 3; for (j = 0; j < NSAMP; ++j) { sleep(1); if (EAnalogIn(&id, 0, 0, 0, &ov, &v)) return 3; sum_g += v; if (EAnalogIn(&id, 0, 1, 0, &ov, &v)) return 3; sum_p += v; if ((adc = surf_brd_get_gnd_v_adc(bname, 3)) < 0) return 2; adc_g += adc; if ((adc = surf_brd_get_dig_v_adc(bname, 0)) < 0) return 2; adc_p += adc; /* printf(" %3x", adc); */ /* fflush(stdout); */ } printf("%.3f / %4d (power)\t%.3f / %4d (gnd)\n", sum_p / (double)NSAMP, (int)rint(adc_p / (double)NSAMP), sum_g / (double)NSAMP, (int)rint(adc_g / (double)NSAMP)); fflush(stdout); } #endif return 0; }