public static void checkInputStatus() { ulong axisStatus; while (started) { Thread.Sleep(100); if (mServoIo.check_flag != 0) { return; } //X轴 axisStatus = RFIDControl.dmc_axis_io_status(0, 0);//读取轴的状态 mServoIo.servo1_alm = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_ALM); mServoIo.servo1_el_b = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_EL_B); mServoIo.servo1_el_f = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_EL_F); mServoIo.servo1_emg = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_EMG); mServoIo.servo1_org = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_ORG); mServoIo.servo1_ez = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_EZ); mServoIo.servo1_inp = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_INP); mServoIo.servo1_rdy = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_RDY); mServoIo.servo1_home_flag = mAxis[0].m_home_flag; //原点状态 //Y轴 axisStatus = RFIDControl.dmc_axis_io_status(0, 1); //读取轴的状态 mServoIo.servo2_alm = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_ALM); mServoIo.servo2_el_b = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_EL_B); mServoIo.servo2_el_f = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_EL_F); mServoIo.servo2_emg = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_EMG); mServoIo.servo2_org = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_ORG); mServoIo.servo2_ez = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_EZ); mServoIo.servo2_inp = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_INP); mServoIo.servo2_rdy = (int)getStatus(axisStatus, (int)AxisStatus.MOTOR_RDY); mServoIo.servo2_home_flag = mAxis[1].m_home_flag;//原点状态 //not exist z axis //Z轴 //各个轴的运动状态 mAxis[0].m_run_status = (ushort)RFIDControl.dmc_check_done(mAxis[0].m_card_num, mAxis[0].m_axis_num); mAxis[1].m_run_status = (ushort)RFIDControl.dmc_check_done(mAxis[1].m_card_num, mAxis[1].m_axis_num); mAxis[0].m_positon = RFIDControl.dmc_get_encoder(mAxis[0].m_card_num, mAxis[0].m_axis_num); mAxis[1].m_positon = RFIDControl.dmc_get_encoder(mAxis[1].m_card_num, mAxis[1].m_axis_num); mInpterplaType.run_flag = RFIDControl.dmc_check_done_multicoor(mInpterplaType.card_num, mInpterplaType.car_num); if ((RFIDControl.dmc_read_inbit(0, 0) == LOW) && (key_emg_press_flag == false)) { key_emg_press_flag = true; emgStop(); } else { key_emg_press_flag = false; } } }
private void sendPos() { bool b = false; bool b_break_able = false; //第一次进入不退出 long microSecond = 0; if (RFIDMove.goHomeFlag != 0) { b = true; } int period = 10; Thread.Sleep(period); while (true) { //进入临界区 //获取位置信息 通过网络发送位置信息 lock (this) { if (enqueable) { xNowPos = RFIDControl.dmc_get_encoder(RFIDMove.mAxis[0].m_card_num, RFIDMove.mAxis[0].m_axis_num); yNowPos = RFIDControl.dmc_get_encoder(RFIDMove.mAxis[1].m_card_num, RFIDMove.mAxis[1].m_axis_num); xNowPosShow = xNowPos / RFIDMove.line_coefficient / 10; //mm yNowPosShow = yNowPos / RFIDMove.cicle_coefficient / 10; //mm microSecond = CurrentMillis.MicroSeconds; posQueue.Enqueue(new DMCPosDto(xNowPosShow, yNowPosShow, microSecond)); } } //离开临界区 Thread.Sleep(10); if (b_break_able) //第一次循环必须读取一个位置信息,以便发送到目标IP { if (b) { if (RFIDMove.goHomeFlag == 0) { break; } } else if ((RFIDMove.mAxis[0].m_run_status != RFIDMove.RUN) && (RFIDMove.mAxis[1].m_run_status != RFIDMove.RUN)) { RFIDControl.dmc_set_position(RFIDMove.mAxis[0].m_card_num, RFIDMove.mAxis[0].m_axis_num, xNowPos / 10); RFIDControl.dmc_set_position(RFIDMove.mAxis[1].m_card_num, RFIDMove.mAxis[1].m_axis_num, yNowPos / 10); RFIDMove.singleAxisMove(ref RFIDMove.mAxis[0], xPos, RFIDMove.ABS_MODE); RFIDMove.singleAxisMove(ref RFIDMove.mAxis[1], yPos, RFIDMove.ABS_MODE); Thread.Sleep(500); break; } } else { b_break_able = true; } } lock (this) { if (enqueable) { xNowPos = RFIDControl.dmc_get_encoder(RFIDMove.mAxis[0].m_card_num, RFIDMove.mAxis[0].m_axis_num); yNowPos = RFIDControl.dmc_get_encoder(RFIDMove.mAxis[1].m_card_num, RFIDMove.mAxis[1].m_axis_num); xNowPosShow = xNowPos / RFIDMove.line_coefficient / 10; //mm yNowPosShow = yNowPos / RFIDMove.cicle_coefficient / 10; //mm microSecond = CurrentMillis.MicroSeconds; posQueue.Enqueue(new DMCPosDto(xNowPosShow, yNowPosShow, microSecond)); } } RFIDControl.dmc_write_sevon_pin(0, 0, 1); RFIDControl.dmc_write_sevon_pin(0, 1, 1); rotatingEnabled = true; horizontalEnabled = true; }