#ifdef LAPTOP #include "c:\slac\Repository\Lib\delay.h" #else #include "v:\\met\\repository\\lib\\delay.h" #include #endif #include /* ************************************************************** */ /* * This file contains functions for the cam_move User Interface * * * Yurii Levashov * * 09/02/2004 */ /* ************************************************************** */ #include #include #include #include #include "Cam_movers.h" #include "cam_movers_dec.h" #include "cam_movers_param.h" #include "hp34970_sw.h" #include "cm6k6_g.h" //#include "ev16p.h" static int panelHandle; // Public Functions Declaration void set_coordinate_box( int c_flag); void cam_move_ui_error(char* message); void cam_move_ui_init(void); // Private variables Declaration static int err; static int switch_status; static int hp34970_ID, cm6k6_ID, ev16p_ID; static int panelHandle, panelHandleParam, panelHandleTest; int save_param_flag = FALSE; static char log_f_name[260]; static struct com_param cm_param; static struct move_param mv_param; static int GUI_control_order[20] = {CAM_PANEL_XCOORDINATE, CAM_PANEL_YCOORDINATE, CAM_PANEL_ROLL_IN, CAM_PANEL_PITCH_IN, CAM_PANEL_YAW_IN, CAM_PANEL_XCOORDINATE_OUT, CAM_PANEL_YCOORDINATE_OUT, CAM_PANEL_ROLL_OUT, CAM_PANEL_PITCH_OUT, CAM_PANEL_YAW_OUT, CAM_PANEL_POT_1, CAM_PANEL_POT_2, CAM_PANEL_POT_3, CAM_PANEL_POT_4,CAM_PANEL_POT_5, CAM_PANEL_GAGE_2, CAM_PANEL_GAGE_4, CAM_PANEL_GAGE_1, CAM_PANEL_GAGE_3, CAM_PANEL_GAGE_5}; /* ************************************************************** */ /* Public Functions */ /* ************************************************************** */ /* * cam_move_ui_init * This function initializes the user interface for the cam_move. * * Input: * ID * * Yurii Levashov * 09/02/2004 */ void cam_move_ui_init(void) { /* Open the cam_move_ui panel */ if ((panelHandle = LoadPanel (0, "Cam_movers.uir", CAM_PANEL)) < 0) { cam_move_ui_error(" Can not load UI Panel!!!"); return; } DisplayPanel (panelHandle); //Display the panel when the user interface runs /* Done */ return; } /* ************************************************************** */ /* error_handling * * This function inform operator about error and error codes * * Yurii Levashov * 09/10/2004 */ void cam_move_error_handling(int err, char descr[]) { char msg[200]; Fmt(msg, "%saxis = axis; m_param->time_int = time_int; m_param->num_steps = num_steps; m_param->step_size = step_size; m_param->accel = accel; m_param->vel = vel; m_param->distance = dist; m_param->gage_number = gage; return; } /*************************************************************************/ int CVICALLBACK do_cam_test (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: if ((panelHandleTest = LoadPanel (0, "Cam_movers.uir", TEST_PANEL)) < 0) { cam_move_ui_error(" Can not load Test Panel!!!"); return -1; } SetActivePanel(panelHandleTest); break; } return 0; } int CVICALLBACK test_distance_move (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int err; static int panel_ID; panel_ID = panel; switch (event) { case EVENT_COMMIT: // read current moving parameters from GUI test_read_move_param(panel, &mv_param); //do the test move SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_VISIBLE, 1); SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Motion in Progress"); DisplayPanel (panel_ID); //if(mv_param.distance != 0.0) err = cam_test(cm_param, mv_param, log_f_name); // else cam_test_cable_test(panel_ID, mv_param); SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Done"); DisplayPanel (panel_ID); break; case EVENT_LEFT_CLICK: break; case EVENT_RIGHT_CLICK: break; } return 0; } int CVICALLBACK test_zero_data (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { static int panel_ID; panel_ID = panel; switch (event) { case EVENT_COMMIT: SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Setting Position to zero"); DisplayPanel (panel_ID); SetCtrlAttribute (panel_ID, TEST_PANEL_GAGE1_OUT, ATTR_CTRL_VAL, 0.0); cam_test_zero_readings(panel_ID, TEST_PANEL_GAGE1_OUT); SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Done"); DisplayPanel (panel_ID); break; case EVENT_LEFT_CLICK: break; case EVENT_RIGHT_CLICK: break; } return 0; } int CVICALLBACK exit_test (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: // Close panel DiscardPanel (panel); // Reset moving parameters fill_param_structure(&mv_param, &cm_param, 0); //display main panel DisplayPanel(panelHandle); break; case EVENT_LEFT_CLICK: break; case EVENT_RIGHT_CLICK: break; } return 0; } int CVICALLBACK test_get_temp (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { double temp; switch (event) { case EVENT_COMMIT: cam_test_get_temp(&temp, cm_param); break; case EVENT_LEFT_CLICK: break; case EVENT_RIGHT_CLICK: break; } return 0; } int CVICALLBACK test_get_position (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { double position; int gage; switch (event) { case EVENT_COMMIT: // read current moving parameters from GUI test_read_move_param(panel, &mv_param); gage = mv_param.gage_number; position = cam_test_get_position(cm_param, gage, 1); break; case EVENT_LEFT_CLICK: break; case EVENT_RIGHT_CLICK: break; } return 0; } int CVICALLBACK test_get_angle (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { double angle; switch (event) { case EVENT_COMMIT: // read current moving parameters from GUI test_read_move_param(panel, &mv_param); angle = cam_test_get_angle(&mv_param, cm_param); break; case EVENT_LEFT_CLICK: break; case EVENT_RIGHT_CLICK: break; } return 0; } int CVICALLBACK test_device_init (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int f_handle; int err = 0; static int panel_ID; panel_ID = panel; switch (event) { case EVENT_COMMIT: SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_VISIBLE, 1); SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Initialization in Progress"); DisplayPanel (panel_ID); // fill parameter structure fill_param_structure(&mv_param, &cm_param, 1); // read current moving parameters from GUI test_read_move_param(panel_ID, &mv_param); err = cam_move_device_init(log_f_name, panel_ID, TEST_PANEL_TEXT_STATUS, cm_param, mv_param); if(err != 0) MessagePopup ("Init Error", "Error in device init"); else { // Create a read/write file to save the data /* MessagePopup ("File name", "Please, input file name to log the data"); file_open(log_f_name, &f_handle, 0); if(f_handle == -1) error_handling(f_handle, "Can not create the file"); */ // Make command buttons available SetCtrlAttribute (panel_ID, TEST_PANEL_COMMAND_GET_ANGLE, ATTR_DIMMED,0); SetCtrlAttribute (panel_ID, TEST_PANEL_COMMAND_SET_ANGLE, ATTR_DIMMED,0); SetCtrlAttribute (panel_ID, TEST_PANEL_COMMAND_POS, ATTR_DIMMED, 0); SetCtrlAttribute (panel_ID, TEST_PANEL_COMMAND_TEMP, ATTR_DIMMED, 0); SetCtrlAttribute (panel_ID, TEST_PANEL_COMMAND_MOVE, ATTR_DIMMED, 0); SetCtrlAttribute (panel_ID, TEST_PANEL_COMMANDBUTTON_Z, ATTR_DIMMED, 0); SetCtrlAttribute (panel_ID, TEST_PANEL_GO_TO_ZERO, ATTR_DIMMED, 0); SetCtrlAttribute (panel_ID, TEST_PANEL_GO_TO_HOME, ATTR_DIMMED, 0); SetCtrlAttribute (panel_ID, TEST_PANEL_WORK_POINT, ATTR_DIMMED, 0); SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_VISIBLE, 1); err = SetAxisRange (panel_ID, TEST_PANEL_GRAPH, VAL_MANUAL, 0.0, GEAR_RATIO, VAL_NO_CHANGE, 0.0, 0.0); if(err < 0) cam_move_error_handling(err, " Problem changing X limit"); SetCtrlAttribute (panel_ID, TEST_PANEL_COMMANDBUTTON_INIT, ATTR_DIMMED, 1); SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Devices Ready"); DisplayPanel (panel_ID); } break; case EVENT_LEFT_CLICK: break; case EVENT_RIGHT_CLICK: break; } return 0; } int CVICALLBACK test_refresh_graph (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int err; static int panel_ID; panel_ID = panel; switch (event) { case EVENT_COMMIT: err = DeleteGraphPlot (panel_ID, TEST_PANEL_GRAPH, -1, VAL_IMMEDIATE_DRAW); if (err != 0) cam_move_error_handling(err, " Problem deleting Graph"); err = SetAxisRange (panel_ID, TEST_PANEL_GRAPH, VAL_MANUAL, 0.0, GEAR_RATIO, VAL_MANUAL, -1.0, 1.0); SetCtrlAttribute (panel_ID, TEST_PANEL_AMPLITUDE, ATTR_VISIBLE, 0); SetCtrlAttribute (panel_ID, TEST_PANEL_PHASE, ATTR_VISIBLE, 0); DisplayPanel (panel_ID); break; } return 0; } int CVICALLBACK test_go_zero (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { static int panel_ID; double angle; panel_ID = panel; switch (event) { case EVENT_COMMIT: // read current moving parameters from GUI SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Go to Pot zero position"); DisplayPanel (panel_ID); test_read_move_param(panel_ID, &mv_param); cam_test_go_zero(panel_ID, &mv_param, cm_param); angle = cam_test_get_angle(&mv_param, cm_param); SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Pot zero Done"); DisplayPanel (panel_ID); break; } return 0; } int CVICALLBACK test_go_home (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { static int panel_ID; panel_ID = panel; switch (event) { case EVENT_COMMIT: SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL,"Go to Pot home position"); DisplayPanel (panel_ID); test_read_move_param(panel_ID, &mv_param); cam_test_go_zero(panel_ID, &mv_param, cm_param); Delay(0.5); cam_test_go_home(&mv_param, cm_param); SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Homing Done"); DisplayPanel (panel_ID); break; } return 0; } int CVICALLBACK find_work_point (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { static int panel_ID; panel_ID = panel; switch (event) { case EVENT_COMMIT: // find position of the work point mv_param.step_size = cam_test_find_work_point (mv_param, cm_param); //move cam into work point position move_cam_motor(panel_ID, &mv_param, &mv_param.step_size, 0); SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Done"); DisplayPanel (panel_ID); break; } return 0; } int CVICALLBACK test_set_angle (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int i; double angle; static int panel_ID; panel_ID = panel; switch (event) { case EVENT_COMMIT: SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Measure angle"); DisplayPanel (panel_ID); for(i = 0; i < 20; i++) { angle = cam_test_get_angle(&mv_param, cm_param); Delay(0.1); } SetCtrlAttribute (panel_ID, TEST_PANEL_TEXT_STATUS, ATTR_CTRL_VAL, "Done"); DisplayPanel (panel_ID); break; } return 0; }