/* ************************************************************** */ /* * Module PT2025UI * This module contains functions for the Metrolab PT2025 * user interface. * * Zachary Wolf * 1/8/03 */ /* ************************************************************** */ /* INCLUDES */ #include #include #include /* Needed if linking in external compiler; harmless otherwise */ #include #include "pt2025uir.h" #include "pt2025ui.h" #include "pt2025.h" /* ************************************************************** */ /* PRIVATE VARIABLES */ static int pt2025_ID; static int pt2025_panel; /* ************************************************************** */ /* PRIVATE FUNCTION DECLARATIONSS */ void pt2025ui_error(char* msg); /* ************************************************************** */ /* PUBLIC FUNCTIONS */ /* ************************************************************** */ /* * pt2025ui_init * This function initializes the user interface for the PT2025. * * Input: * ID, PT2025 device identifier * * Zachary Wolf * 1/8/03 */ void pt2025ui_init(int ID) { /* Save the device ID */ pt2025_ID = ID; /* Open the PT2025 panel */ pt2025_panel = LoadPanel(0, "pt2025uir.uir", PT2025PAN); if (pt2025_panel < 0) { pt2025ui_error("Could not open user interface panel"); return; } /* Display the panel when the user interface runs */ DisplayPanel(pt2025_panel); /* Done */ return; } /* ************************************************************** */ /* PRIVATE FUNCTIONS */ /* ************************************************************** */ /* * pt2025ui_error * This function handles error messages for the PT2025 user interface. * * Input: * message, string to display in standard I/O * * Zachary Wolf * 8/26/98 */ void pt2025ui_error(char* message) { /* Declare variables */ char buf[80]; /* Notify the operator of the error */ printf("\nPT2025UI ERROR: %s\n", message); Beep(); Delay(.5); Beep(); /* Terminate the program if the operator desires */ printf("Press ENTER to continue.\nPress any key then ENTER to terminate program.\n"); fgets(buf, 80, stdin); if (buf[0] == '\n') return; else exit(0); } /* ************************************************************** */ /* PRIVATE USER INTERFACE FUNCTIONS */ /* ************************************************************** */ int CVICALLBACK pt2025ui_set_mux_chan (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { char chan[PT2025_MAX_CMD]; switch (event) { case EVENT_COMMIT: GetCtrlVal(panel, PT2025PAN_STR_MUX_CHAN, chan); pt2025_set_mux_chan(pt2025_ID, chan[0]); break; } return 0; } /* ************************************************************** */ int CVICALLBACK pt2025ui_set_coarse_field (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int probe_num; double b_coarse; switch (event) { case EVENT_COMMIT: GetCtrlVal(panel, PT2025PAN_NUM_PROBE_NUM, &probe_num); GetCtrlVal(panel, PT2025PAN_NUM_COARSE_FIELD, &b_coarse); pt2025_set_manual_coarse(pt2025_ID, probe_num, b_coarse); break; } return 0; } /* ************************************************************** */ int CVICALLBACK pt2025ui_set_field_dir (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { char dir[PT2025_MAX_CMD]; switch (event) { case EVENT_COMMIT: GetCtrlVal(panel, PT2025PAN_STR_FIELD_DIR, dir); pt2025_set_field_dir(pt2025_ID, dir[0]); break; } return 0; } /* ************************************************************** */ int CVICALLBACK pt2025ui_set_mode_manual (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: pt2025_set_mode_manual(pt2025_ID); break; } return 0; } /* ************************************************************** */ int CVICALLBACK pt2025ui_set_mode_auto (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: pt2025_set_mode_auto(pt2025_ID); break; } return 0; } /* ************************************************************** */ int CVICALLBACK pt2025ui_set_mode_search (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: pt2025_set_mode_search(pt2025_ID); break; } return 0; } /* ************************************************************** */ int CVICALLBACK pt2025ui_get_reading(int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { char reading[PT2025_MAX_CMD]; char lock_status; double meas_val; char units; switch (event) { case EVENT_COMMIT: pt2025_get_reading(pt2025_ID, &lock_status, &meas_val, &units); sprintf(reading, "%c %f %c", lock_status, meas_val, units); SetCtrlVal(panel, PT2025PAN_STR_READING, reading); break; } return 0; } /* ************************************************************** */ int CVICALLBACK pt2025ui_get_b(int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { double b; switch (event) { case EVENT_COMMIT: pt2025_get_b(pt2025_ID, &b); SetCtrlVal(panel, PT2025PAN_NUM_B, b); break; } return 0; } /* ************************************************************** */ int CVICALLBACK pt2025ui_get_b_ave(int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { double b_ave, b_rms; switch (event) { case EVENT_COMMIT: pt2025_get_b_ave(pt2025_ID, &b_ave, &b_rms); SetCtrlVal(panel, PT2025PAN_NUM_B_AVE, b_ave); SetCtrlVal(panel, PT2025PAN_NUM_B_RMS, b_rms); break; } return 0; } /* ************************************************************** */ int CVICALLBACK pt2025ui_quit(int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: pt2025_exit(pt2025_ID); QuitUserInterface(0); break; } return 0; }