diff --git a/HSI_HexagonMI_EF3/HSI.cpp b/HSI_HexagonMI_EF3/HSI.cpp index d644871..e1004b6 100644 --- a/HSI_HexagonMI_EF3/HSI.cpp +++ b/HSI_HexagonMI_EF3/HSI.cpp @@ -377,6 +377,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT& Types) } #pragma endregion +#define USE_Motion_API #ifdef USE_Motion_API #pragma region 后续考虑 diff --git a/HSI_HexagonMI_EF3/HSI.h b/HSI_HexagonMI_EF3/HSI.h index a0e8c74..de4612b 100644 --- a/HSI_HexagonMI_EF3/HSI.h +++ b/HSI_HexagonMI_EF3/HSI.h @@ -430,28 +430,28 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status); HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status); HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double &Speed); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double &AccelX, double &AccelY, double &AccelZ); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double &Speed); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double &AccelR); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double &ScaleX, double &ScaleY, double &ScaleZ); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION(double ScaleX, double ScaleY, double ScaleZ); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DEADBAND(double &DeadbandX, double &DeadbandY, double &DeadbandZ, double &DeadbandR); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITIONPROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &PositionA); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long *lEncVal); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point *CacheData); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double &PositionR, double &Time); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_PLAN_SCAN(double *pdStartPosX, double *pdStartPosY, double *pdStartPosZ, double *pdEndPosX, double *pdEndPosY, double *pdEndPosZ, double *pdStepDis, bool *pbTrig, int iCount); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double &Speed); +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double &AccelX, double &AccelY, double &AccelZ); +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double &Speed); +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double &AccelR); +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double &ScaleX, double &ScaleY, double &ScaleZ); +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION(double ScaleX, double ScaleY, double ScaleZ); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DEADBAND(double &DeadbandX, double &DeadbandY, double &DeadbandZ, double &DeadbandR); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITIONPROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &PositionA); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long *lEncVal); +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point *CacheData); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double &PositionR, double &Time); +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait); +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_PLAN_SCAN(double *pdStartPosX, double *pdStartPosY, double *pdStartPosZ, double *pdEndPosX, double *pdEndPosY, double *pdEndPosZ, double *pdStepDis, bool *pbTrig, int iCount); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START(); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP(); +HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis); +HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START(); +HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP(); //HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED_EX(UINT AxisTypes, UINT &Types); diff --git a/HSI_HexagonMI_EF3/HSI_Motion.cpp b/HSI_HexagonMI_EF3/HSI_Motion.cpp index f057664..0df3ef9 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.cpp +++ b/HSI_HexagonMI_EF3/HSI_Motion.cpp @@ -92,7 +92,7 @@ void ErrorsHandler() { ErrorStr[Received] = '\0'; printf("Motion Error: %d [%s]\n", ErrorCode, ErrorStr); - g_pLogger->SendAndFlushWithTime(L"[ACS Motion] Motion Error, {%s}\n", ErrorStr); + g_pLogger->SendAndFlushWithTime(L"[ACS Motion] Motion Error %s\n",ErrorStr); } } else @@ -1843,7 +1843,7 @@ HSI_STATUS HSI_Motion::JogOld(UINT AxisTypes, double Speed) HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) { auto rStatus = HSI_STATUS_NORMAL; - g_pLogger->SendAndFlushWithTime(L"[Jog] aixs: [%d] speed:[%d]\n", AxisTypes, Speed); + g_pLogger->SendAndFlushWithTime(L"[Jog] aixs: [%d] speed:[%lf]\n", AxisTypes, Speed); if (g_pHSI_Motion) { if (m_DeviceType != 3) //非转盘设备 @@ -4671,7 +4671,13 @@ HSI_STATUS HSI_Motion::GetDIO(UINT IOChannel, UINT& _Status) return rStatus; } //=========================================================================== -HSI_STATUS HSI_Motion::SetDIO(UINT IOChannel, UINT _Status) +/** + * \brief + * \param IOChannel + * \param _Status + * \return + */ +HSI_STATUS HSI_Motion::SetDIOOld(UINT IOChannel, UINT _Status) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) @@ -4724,7 +4730,65 @@ HSI_STATUS HSI_Motion::SetDIO(UINT IOChannel, UINT _Status) } return rStatus; } +HSI_STATUS HSI_Motion::SetDIO(UINT IOChannel, UINT _Status) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + if (m_bISUseMoreLights > 0 && (m_ForStatus != _Status)) + { + if (m_Led8MotionFlag[m_selectedIndex]) + { + m_ForStatus = _Status; + IOdata[0] = 0x02; + IOdata[1] = 0x02; + IOdata[2] = 0x01; + IOdata[6] = 0x04; + IOdata[7] = 0xff; + IOdata[8] = 0xff; + IOdata[9] = 0xff; + IOdata[10] = 0xff; + IOdata[14] = _Status & 0xff; + IOSend++; + } + else + { + m_ForStatus = _Status; + IOdata[0] = 0x02; + IOdata[1] = 0x02; + IOdata[2] = 0x01; + IOdata[3] = 0x36; + IOdata[4] = 0x04; + IOdata[7] = 0xff; + IOdata[8] = 0xff; + IOdata[9] = 0xff; + IOdata[10] = 0xff; + IOdata[11] = (_Status >> 24) & 0xff; + IOdata[12] = (_Status >> 16) & 0xff; + IOdata[13] = (_Status >> 8) & 0xff; + IOdata[14] = _Status & 0xff; + IOSend++; + } + } + if ((IOChannel == HSI_MOTION_OUTPUT_CH1)/* && (m_ForStatus != _Status)*/) + { + m_ForStatus = _Status; + m_cSendData[0] = CT_PORT; + m_cSendData[1] = 0x02; + m_cSendData[2] = (_Status >> 8) & 0xff; + m_cSendData[3] = _Status & 0xff; + m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); + Sleep(5); + } + } + //-----------TEST Begin------------------ + _Status = 0; + + + //-----------TEST End------------------ + return rStatus; +} //=========================================================================== HSI_STATUS HSI_Motion::GetAxisStatus(int* _Status) { diff --git a/HSI_HexagonMI_EF3/HSI_Motion.h b/HSI_HexagonMI_EF3/HSI_Motion.h index 17064e7..b7cb9bb 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.h +++ b/HSI_HexagonMI_EF3/HSI_Motion.h @@ -28,39 +28,28 @@ enum E_SO7_MOTION_TYPE enum E_EF3_HOME_STATUS { - E_EF3_HOME_NONE, - //0表示从未回过回原点 - E_EF3_HOME_ING, - //1表示正在回原点 - E_EF3_HOME_FINISHED, - //2表示已经回过原点 + E_EF3_HOME_NONE,//0表示从未回过回原点 + E_EF3_HOME_ING,//1表示正在回原点 + E_EF3_HOME_FINISHED,//2表示已经回过原点 }; enum FUN_CMD //第一级指令 { - CT_MOTOR = 0x01, - //MOTOR - CT_LIGHT, - //LIGHT - CT_PORT, - //PORT - CT_ORDER, - //ORDER - CT_SOFTSTOP, - //STOP - CT_GLUEDISPENSER, - //点胶 + CT_MOTOR = 0x01,//MOTOR + CT_LIGHT,//LIGHT + CT_PORT,//PORT + CT_ORDER,//ORDER + CT_SOFTSTOP,//STOP + CT_GLUEDISPENSER,//点胶 CT_TURNTABLE, }; enum MOTOR_CMD //第二级指令 { CT_MOTOR_SET = 0x01, - CT_START_JOG_POS, - // + CT_START_JOG_POS,// CT_START_JOG_NEG, - CT_START_POSITION, - //_POS, + CT_START_POSITION,//_POS, CT_STOP, CT_GOHOME, CT_TRIGGER_DATA, @@ -74,12 +63,11 @@ enum MOTOR_CMD // CT_GLUEDISPENSER_SET, CT_GLUEDISPENSER_CLEAR, CT_GLUEDISPENSER_START, - CT_GLUEDISPENSER_STOP, - //转盘时启用 + CT_GLUEDISPENSER_STOP,//转盘时启用 CT_RTSET, CT_BINSDATA, - CT_RTSTOP, - // CT_MOTOR_UPDATE, // up date all the aixs + CT_RTSTOP,// + CT_MOTOR_UPDATE, // up date all the aixs }; enum MOTOR_START_POSOTION // @@ -286,6 +274,7 @@ public: * \return */ HSI_STATUS SetDIO(UINT IOChannel, UINT _Status); + HSI_STATUS SetDIOOld(UINT IOChannel, UINT _Status); HSI_STATUS GetAxisStatus(int* _Status); HSI_STATUS GetAppPath(CString& Path); /** @@ -645,8 +634,6 @@ private: }; extern HSI_Motion* g_pHSI_Motion; - - extern void ErrorsHandler(const char* ErrorMessage, BOOL fCloseComm); //ACS 错误打印 #endif diff --git a/HSI_HexagonMI_EF3/version.h b/HSI_HexagonMI_EF3/version.h index 83a2d8f..219d53b 100644 --- a/HSI_HexagonMI_EF3/version.h +++ b/HSI_HexagonMI_EF3/version.h @@ -12,5 +12,5 @@ #define HSI_VERSION_REVNUM #define HSI_VERSION_BUILD_DATE _T(__DATE__ ) #define HSI_VERSION_BUILD_TIME _T(__TIME__ ) -#define HSI_FILE_DESCRIPTION "2022.10.21 / 18:06 " -#define HSI_FILE_CSDESCRIPTION _T("2022.10.21 / 18:06 ") +#define HSI_FILE_DESCRIPTION "2022.11.01 / 11:45 " +#define HSI_FILE_CSDESCRIPTION _T("2022.11.01 / 11:45 ") diff --git a/SerialAssistant/README.md b/SerialAssistant/README.md index 68a66ee..bc85c00 100644 Binary files a/SerialAssistant/README.md and b/SerialAssistant/README.md differ