diff --git a/HSI_HexagonMI_EF3/HSI.cpp b/HSI_HexagonMI_EF3/HSI.cpp index 4aaeb68..07fbcd4 100644 --- a/HSI_HexagonMI_EF3/HSI.cpp +++ b/HSI_HexagonMI_EF3/HSI.cpp @@ -162,7 +162,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome) { return HSI_STATUS_FAILED; } - rStatus = g_pHSI_Motion->HomeMachine(bHome); + //rStatus = g_pHSI_Motion->HomeMachine(bHome); switch (g_pHSI_Motion->m_iJoyStick) //摇杆设置 { case 0: @@ -266,7 +266,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZ(UINT AxisTypes, double& Po //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ(UINT AxisTypes, double PositionX, double PositionY, - double PositionZ, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear) + double PositionZ, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) @@ -326,7 +326,7 @@ HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis, double& Speed) } //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_EX(UINT AxisTypes, double Speed) +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_EX(UINT AxisTypes, double Speed) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) @@ -339,6 +339,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_EX(UINT AxisTypes, double Speed) } return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status) { @@ -383,160 +384,175 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT& Types) #pragma region 后续考虑 //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FOCUSSPEED_XYZ(double &Speed) +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FOCUSSPEED_XYZ(double& Speed) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->GetFocusSpeed(Speed); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetFocusSpeed(Speed); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_FOCUSSPEED_XYZ(double Speed) +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_FOCUSSPEED_XYZ(double Speed) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetFocusSpeed(Speed); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetFocusSpeed(Speed); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed) +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetSpeedXyz(Speed); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetSpeedXyz(Speed); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double &AccelX, double &AccelY, double &AccelZ) +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double& AccelX, double& AccelY, double& AccelZ) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->GetAccelerationXyz(AccelX, AccelY, AccelZ); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetAccelerationXyz(AccelX, AccelY, AccelZ); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ) +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetAccelerationXyz(AccelX, AccelY, AccelZ); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetAccelerationXyz(AccelX, AccelY, AccelZ); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double &Speed) +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double& Speed) { - UNREFERENCED_PARAMETER(Speed); - return HSI_STATUS_NOT_SUPPORTED; + UNREFERENCED_PARAMETER(Speed); + return HSI_STATUS_NOT_SUPPORTED; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed) +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed) { - UNREFERENCED_PARAMETER(Speed); - return HSI_STATUS_NOT_SUPPORTED; + UNREFERENCED_PARAMETER(Speed); + return HSI_STATUS_NOT_SUPPORTED; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double &AccelR) +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double& AccelR) { - auto rStatus = HSI_STATUS_NORMAL; - UNREFERENCED_PARAMETER(AccelR); - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + UNREFERENCED_PARAMETER(AccelR); + return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR) +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR) { - auto rStatus = HSI_STATUS_NORMAL; - UNREFERENCED_PARAMETER(AccelR); - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + UNREFERENCED_PARAMETER(AccelR); + return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double &ScaleX, double &ScaleY, double &ScaleZ) +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double& ScaleX, double& ScaleY, double& ScaleZ) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->GetScaleResolution(ScaleX, ScaleY, ScaleZ); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetScaleResolution(ScaleX, ScaleY, ScaleZ); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION(double ScaleX, double ScaleY, double ScaleZ) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetScaleResolution(ScaleX, ScaleY, ScaleZ); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetScaleResolution(ScaleX, ScaleY, ScaleZ); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== -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_DEADBAND(double& DeadbandX, double& DeadbandY, double& DeadbandZ, + double& DeadbandR) { - UNREFERENCED_PARAMETER(DeadbandX); - UNREFERENCED_PARAMETER(DeadbandY); - UNREFERENCED_PARAMETER(DeadbandZ); - UNREFERENCED_PARAMETER(DeadbandR); - return HSI_STATUS_NOT_SUPPORTED; + UNREFERENCED_PARAMETER(DeadbandX); + UNREFERENCED_PARAMETER(DeadbandY); + UNREFERENCED_PARAMETER(DeadbandZ); + UNREFERENCED_PARAMETER(DeadbandR); + return HSI_STATUS_NOT_SUPPORTED; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband) +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double& Deadband) { - UNREFERENCED_PARAMETER(Deadband); - return HSI_STATUS_NOT_SUPPORTED; + UNREFERENCED_PARAMETER(Deadband); + return HSI_STATUS_NOT_SUPPORTED; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCPRF_MULTI(UINT AxisTypes, double *EncPos, double *PrfPos, int Count) +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCPRF_MULTI(UINT AxisTypes, double* EncPos, double* PrfPos, int Count) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->GetPositionEncPrfMulti(AxisTypes, EncPos, PrfPos, Count); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetPositionEncPrfMulti(AxisTypes, EncPos, PrfPos, Count); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long *lEncVal) +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long* lEncVal) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) @@ -549,27 +565,30 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long *lEncVal) } return rStatus; } + //=========================================================================== -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_POSITIONPROBE(UINT AxisTypes, double& PositionX, double& PositionY, + double& PositionZ, double& PositionA) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->GetPositionXyzaProbe(AxisTypes, PositionX, PositionY, PositionZ, PositionA); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetPositionXyzaProbe(AxisTypes, PositionX, PositionY, PositionZ, PositionA); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG_PROBE(UINT AxisTypes, double speed) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) { - rStatus = g_pHSI_Motion->JogProbe(AxisTypes,speed); + rStatus = g_pHSI_Motion->JogProbe(AxisTypes, speed); } else { @@ -579,40 +598,15 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG_PROBE(UINT AxisTypes, double speed) } //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZA(UINT AxisTypes, double PositionX, double PositionY, double PositionZ, double PositionA, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetPositionXyza(AxisTypes, PositionX, PositionY, PositionZ, PositionA, eType, dSpeedGear); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point *CacheData) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetPositionXyzCache(AxisTypes, eType, DataCount, CacheData); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_CIRCLEINTERPOLATE(double PositionX, double PositionY, double PositionZ) +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZA(UINT AxisTypes, double PositionX, double PositionY, + double PositionZ, double PositionA, HSI_MOTION_MOVE_TYPE eType, + double dSpeedGear) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) { - rStatus = g_pHSI_Motion->SetCircleInterpolate(PositionX,PositionY,PositionZ); + rStatus = g_pHSI_Motion->SetPositionXyza(AxisTypes, PositionX, PositionY, PositionZ, PositionA, eType, + dSpeedGear); } else { @@ -620,38 +614,88 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_CIRCLEINTERPOLATE(double PositionX, do } return rStatus; } + //=========================================================================== -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_XYZ_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, + Point* CacheData) { - UNREFERENCED_PARAMETER(AxisTypes); - UNREFERENCED_PARAMETER(PositionR); - UNREFERENCED_PARAMETER(Time); - return HSI_STATUS_NOT_SUPPORTED; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetPositionXyzCache(AxisTypes, eType, DataCount, CacheData); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== -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_GET_POSITION_XYZ_CACHE(unsigned char* CacheData, int DataCount) { - UNREFERENCED_PARAMETER(AxisTypes); - UNREFERENCED_PARAMETER(PositionR); - UNREFERENCED_PARAMETER(DirectionType); - UNREFERENCED_PARAMETER(bWait); - return HSI_STATUS_NOT_SUPPORTED; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetPositionXyzCache(CacheData, DataCount); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_CIRCLEINTERPOLATE(double PositionX, double PositionY, double PositionZ) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetCircleInterpolate(PositionX, PositionY, PositionZ); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double& PositionR, double& Time) +{ + UNREFERENCED_PARAMETER(AxisTypes); + UNREFERENCED_PARAMETER(PositionR); + UNREFERENCED_PARAMETER(Time); + return HSI_STATUS_NOT_SUPPORTED; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR, + HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait) +{ + UNREFERENCED_PARAMETER(AxisTypes); + UNREFERENCED_PARAMETER(PositionR); + UNREFERENCED_PARAMETER(DirectionType); + UNREFERENCED_PARAMETER(bWait); + return HSI_STATUS_NOT_SUPPORTED; } //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetDIO(IOChannel,_Status); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetDIO(IOChannel, _Status); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_AXISSTATUS(int* _Status) { @@ -666,8 +710,10 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_AXISSTATUS(int* _Status) } return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_TRIGGERLIGHT(int triggleNum, int delayLighting,int delayLightBefor, int triggleMode, double* Intensities) +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_TRIGGERLIGHT(int triggleNum, int delayLighting, int delayLightBefor, + int triggleMode, double* Intensities) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) @@ -680,13 +726,14 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_TRIGGERLIGHT(int triggleNum, int delayL } return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_IOPROGRAM_DATA(byte* SendData,int length) +HSI_API HSI_STATUS WINAPI HSI_MOTION_IOPROGRAM_DATA(byte* SendData, int length) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) { - rStatus = g_pHSI_Motion->IOprogram(SendData,length); + rStatus = g_pHSI_Motion->IOprogram(SendData, length); } else { @@ -694,8 +741,9 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IOPROGRAM_DATA(byte* SendData,int length) } return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_PPStartPoint(double *startPoint) +HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_PPStartPoint(double* startPoint) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) @@ -708,34 +756,37 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_PPStartPoint(double *startPoint) } return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START() { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->DCCScanStart(); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->DCCScanStart(); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP() { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->DCCScanStop(); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->DCCScanStop(); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_FORLIGHT_PLATE() { @@ -750,46 +801,52 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_FORLIGHT_PLATE() } return rStatus; } + //=========================================================================== -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_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, + double* dTrigDis) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->DCCScanSetData(AxisTypes, eType, lTrigNumber, dTrigDis); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->DCCScanSetData(AxisTypes, eType, lTrigNumber, dTrigDis); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_IO_STEP(bool RunSts) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->IOStep(RunSts); - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->IOStep(RunSts); + } + return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_ZERO_POS(bool bZeroPos) { - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->ZeroPos(bZeroPos); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->ZeroPos(bZeroPos); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; } + //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_PPSPNTS(int* ppsDir, double* gluePPSPos, int* delayLightBefore, int* lightTime, double* lightData, int num) +HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_PPSPNTS(int* ppsDir, double* gluePPSPos, int* delayLightBefore, + int* lightTime, double* lightData, int num) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) @@ -802,6 +859,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_PPSPNTS(int* ppsDir, double* gluePPSPo } return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_DISPENSER(int* index, int* cirdirection, double* gluePos, int num) { @@ -816,6 +874,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_DISPENSER(int* index, int* cirdirectio } return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_DISPENSERSTART(double xOffset, double yOffset, double qOffset) { @@ -830,6 +889,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_DISPENSERSTART(double xOffset, double } return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_PTPDISTANCE(double& ptpDistance, int& spTimeCount) { @@ -844,140 +904,14 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_PTPDISTANCE(double& ptpDistance, int& s } return rStatus; } -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED_EX(UINT AxisTypes, UINT &Types) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->IsSupportedEx(AxisTypes, Types); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP_EX(UINT AxisTypes, bool bHome) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->StartupEx(AxisTypes, bHome); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION_EX(UINT AxisTypes, double &Scale) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->GetScaleResolutionEx(AxisTypes, Scale); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION_EX(UINT AxisTypes, double Scale) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetScaleResolutionEx(AxisTypes, Scale); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_EX(UINT AxisTypes, double &Position, double &Time) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->GetPositionEx(AxisTypes, Position, Time); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_EX(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetPositionEx(AxisTypes, Position, eType, dSpeedGear); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double &Speed) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->GetSpeedEx(AxisTypes, Speed); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} //=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double &Accel) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->GetAccelerationEx(AxisTypes, Accel); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_EX(UINT AxisTypes, double Accel) -{ - auto rStatus = HSI_STATUS_NORMAL; - if (g_pHSI_Motion) - { - rStatus = g_pHSI_Motion->SetAccelerationEx(AxisTypes, Accel); - } - else - { - rStatus = HSI_STATUS_FAILED; - } - return rStatus; -} -//=========================================================================== -HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTPLCJOB(int* CamerasDis, int* BinsDis, int SubArea, int filterTime1, int filterTime2,int pulseSum) +HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED_EX(UINT AxisTypes, UINT& Types) { auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) { - rStatus = g_pHSI_Motion->StartPlcJob(CamerasDis, BinsDis, SubArea, filterTime1, filterTime2,pulseSum); + rStatus = g_pHSI_Motion->IsSupportedEx(AxisTypes, Types); } else { @@ -985,6 +919,144 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTPLCJOB(int* CamerasDis, int* BinsDis, } return rStatus; } + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP_EX(UINT AxisTypes, bool bHome) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->StartupEx(AxisTypes, bHome); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION_EX(UINT AxisTypes, double& Scale) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetScaleResolutionEx(AxisTypes, Scale); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION_EX(UINT AxisTypes, double Scale) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetScaleResolutionEx(AxisTypes, Scale); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_EX(UINT AxisTypes, double& Position, double& Time) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetPositionEx(AxisTypes, Position, Time); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_EX(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, + double dSpeedGear) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetPositionEx(AxisTypes, Position, eType, dSpeedGear); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double& Speed) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetSpeedEx(AxisTypes, Speed); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double& Accel) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->GetAccelerationEx(AxisTypes, Accel); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_EX(UINT AxisTypes, double Accel) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->SetAccelerationEx(AxisTypes, Accel); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + +//=========================================================================== +HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTPLCJOB(int* CamerasDis, int* BinsDis, int SubArea, int filterTime1, + int filterTime2, int pulseSum) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->StartPlcJob(CamerasDis, BinsDis, SubArea, filterTime1, filterTime2, pulseSum); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_SENDBINRESULT(int* BinResult) { @@ -999,6 +1071,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_SENDBINRESULT(int* BinResult) } return rStatus; } + //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_MOTION_TRIGGLECOUNT(int* nCount, int& nArea) { diff --git a/HSI_HexagonMI_EF3/HSI.h b/HSI_HexagonMI_EF3/HSI.h index 1999c57..7a43adb 100644 --- a/HSI_HexagonMI_EF3/HSI.h +++ b/HSI_HexagonMI_EF3/HSI.h @@ -79,7 +79,8 @@ enum HSI_STATUS HSI_STATUS_VP_TIMEOUT = 350, HSI_STATUS_VP_IMAGEPROCESS_FAIL, - HSI_ACS_OK=400,// ACS命令成功 + HSI_ACS_OK=400, + // ACS命令成功 HSI_ACS_ERROR }; @@ -107,43 +108,74 @@ enum HSI_EVENT_FUNCTION_ID // EventData { // Send Receive // V4.2 & V4.3 + - HSI_EVENT_DONE = 0,// N/A N/A - HSI_EVENT_TAKE_HIT = 1,// N/A N/A - HSI_EVENT_ERASE_HIT = 2,// N/A N/A - HSI_EVENT_TIME_CRITICAL = 3,// "ON", or "OFF" N/A - HSI_EVENT_ZOOM_IN = 4,// "MAX", "COARSE", or "FINE" N/A - HSI_EVENT_ZOOM_OUT = 5,// "MAX", "COARSE", or "FINE" N/A - HSI_EVENT_REFRESH_LIVE_VIEW = 6,// N/A N/A - HSI_EVENT_UPDATE_READOUTS = 7,// "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}" N/A - HSI_EVENT_READ_MC_POSITION = 8,// "AxisFlags" "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}" - HSI_EVENT_MOVE_MC_POSITION = 9,// "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed},%1d{bWait}" N/A - HSI_EVENT_CONVERT_MC_TO_GLOBAL = 10,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" - HSI_EVENT_UPDATE_STATUS_MESSAGE = 11,// N/A N/A - HSI_EVENT_OPENFILE_DLG = 12,// N/A "FileName" - HSI_EVENT_DISPLAY_YESNO_MESSAGE = 13,// N/A N/A - HSI_EVENT_DISPLAY_OKCANCEL_MESSAGE = 14,// N/A N/A - HSI_EVENT_DISPLAY_OK_MESSAGE = 15,// N/A N/A + HSI_EVENT_DONE = 0, + // N/A N/A + HSI_EVENT_TAKE_HIT = 1, + // N/A N/A + HSI_EVENT_ERASE_HIT = 2, + // N/A N/A + HSI_EVENT_TIME_CRITICAL = 3, + // "ON", or "OFF" N/A + HSI_EVENT_ZOOM_IN = 4, + // "MAX", "COARSE", or "FINE" N/A + HSI_EVENT_ZOOM_OUT = 5, + // "MAX", "COARSE", or "FINE" N/A + HSI_EVENT_REFRESH_LIVE_VIEW = 6, + // N/A N/A + HSI_EVENT_UPDATE_READOUTS = 7, + // "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}" N/A + HSI_EVENT_READ_MC_POSITION = 8, + // "AxisFlags" "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}" + HSI_EVENT_MOVE_MC_POSITION = 9, + // "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed},%1d{bWait}" N/A + HSI_EVENT_CONVERT_MC_TO_GLOBAL = 10, + // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" + HSI_EVENT_UPDATE_STATUS_MESSAGE = 11, + // N/A N/A + HSI_EVENT_OPENFILE_DLG = 12, + // N/A "FileName" + HSI_EVENT_DISPLAY_YESNO_MESSAGE = 13, + // N/A N/A + HSI_EVENT_DISPLAY_OKCANCEL_MESSAGE = 14, + // N/A N/A + HSI_EVENT_DISPLAY_OK_MESSAGE = 15, + // N/A N/A // V4.3 + Only - HSI_EVENT_DEBUG_LOG = 20,// "%s" N/A - HSI_EVENT_MOVE_MC_POSITION_AND_SETTLE = 21,// "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed}" N/A - HSI_EVENT_CONVERT_GLOBAL_TO_MM = 22,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" - HSI_EVENT_CONVERT_ROT_TO_TABLE_POINT = 23,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" - HSI_EVENT_CONVERT_ROT_OUT_TABLE_POINT = 24,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" - HSI_EVENT_CONVERT_ROT_TO_TABLE_VECTOR = 25,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" - HSI_EVENT_CONVERT_ROT_OUT_TABLE_VECTOR = 26,// "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" + HSI_EVENT_DEBUG_LOG = 20, + // "%s" N/A + HSI_EVENT_MOVE_MC_POSITION_AND_SETTLE = 21, + // "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed}" N/A + HSI_EVENT_CONVERT_GLOBAL_TO_MM = 22, + // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" + HSI_EVENT_CONVERT_ROT_TO_TABLE_POINT = 23, + // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" + HSI_EVENT_CONVERT_ROT_OUT_TABLE_POINT = 24, + // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" + HSI_EVENT_CONVERT_ROT_TO_TABLE_VECTOR = 25, + // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" + HSI_EVENT_CONVERT_ROT_OUT_TABLE_VECTOR = 26, + // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_ILLUMINATION_REFRESH = 27, HSI_EVENT_ILLUMINATION_LOCK = 28, HSI_EVENT_ILLUMINATION_STORE_SET = 29, HSI_EVENT_ILLUMINATION_RESTORE_SET = 30, - HSI_EVENT_ILLUMINATION_DECREASE_ACTIVE = 31,// "%d" - HSI_EVENT_ILLUMINATION_INCREASE_ACTIVE = 32,// "%d" - HSI_EVENT_ILLUMINATION_DECREASE_ALL = 33,// "%d" - HSI_EVENT_ILLUMINATION_INCREASE_ALL = 34,// "%d" - HSI_EVENT_ILLUMINATION_SELECT_LAMP = 35,// "%d" - HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY = 36,// "%d" - HSI_EVENT_ILLUMINATION_GET_LAMP_INTENSITY = 37,// "%d" - HSI_EVENT_ILLUMINATION_SET_LAMP_CALIBRATION_OVERRIDE = 38,// "%d" + HSI_EVENT_ILLUMINATION_DECREASE_ACTIVE = 31, + // "%d" + HSI_EVENT_ILLUMINATION_INCREASE_ACTIVE = 32, + // "%d" + HSI_EVENT_ILLUMINATION_DECREASE_ALL = 33, + // "%d" + HSI_EVENT_ILLUMINATION_INCREASE_ALL = 34, + // "%d" + HSI_EVENT_ILLUMINATION_SELECT_LAMP = 35, + // "%d" + HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY = 36, + // "%d" + HSI_EVENT_ILLUMINATION_GET_LAMP_INTENSITY = 37, + // "%d" + HSI_EVENT_ILLUMINATION_SET_LAMP_CALIBRATION_OVERRIDE = 38, + // "%d" HSI_EVENT_ILLUMINATION_NEXT_RING = 39, HSI_EVENT_ILLUMINATION_PREV_RING = 40, HSI_EVENT_ILLUMINATION_NEXT_SECTOR = 41, @@ -154,31 +186,49 @@ enum HSI_EVENT_FUNCTION_ID // EventData HSI_EVENT_ILLUMINATION_ALLOFF = 46, HSI_EVENT_ILLUMINATION_ALLON = 47, HSI_EVENT_ILLUMINATION_UNLOCK = 48, - HSI_EVENT_IS_PROGRAMMING_MODE = 49,// 1/0 - HSI_EVENT_IS_PORTLOCK_DCC = 50,// 1/0 - HSI_EVENT_IS_ROTAB_ENABLED = 51,// 1/0 - HSI_EVENT_IS_TIME_CRITICAL = 52, // 1/0 + HSI_EVENT_IS_PROGRAMMING_MODE = 49, + // 1/0 + HSI_EVENT_IS_PORTLOCK_DCC = 50, + // 1/0 + HSI_EVENT_IS_ROTAB_ENABLED = 51, + // 1/0 + HSI_EVENT_IS_TIME_CRITICAL = 52, + // 1/0 HSI_EVENT_CONVERT_MM_TO_GLOBAL = 53, HSI_EVENT_CONVERT_GLOBAL_TO_MC = 54, - HSI_EVENT_LASER_FOCUS_ENABLE = 55,// "%d" 0 = not available, 1 = available - HSI_EVENT_MOVE_POINT = 56,// N/A N/A + HSI_EVENT_LASER_FOCUS_ENABLE = 55, + // "%d" 0 = not available, 1 = available + HSI_EVENT_MOVE_POINT = 56, + // N/A N/A HSI_EVENT_MAG_CHANGED = 57, - HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY_IN_MACHINE_LEVELx100 = 58,// "%d" //PR251359-- Instructed to "Please focus on slide" but it's rather unhelpfully turned the lights off for us. - HSI_EVENT_DCC_SCAN_POINTS_AVAILABLE = 59,// "%d" = more to come, 1 = last set N/A - HSI_EVENT_ILLUMINATION_IS_ALL_OFF = 60,// 1/0 //PR253777-- Sensilight does not work if the target has 'ALL OFF' for illum setting--4/16/2008 - HSI_EVENT_ILLUMINATION_DECREASE_ALL_NONZERO = 61,// Sensilight command that wont change a lamp currently set to zero - HSI_EVENT_ILLUMINATION_INCREASE_ALL_NONZERO = 62,// Sensilight command that wont change a lamp currently set to zero22 - HSI_EVENT_LP_QUALITY = 63,// "%d" 0-100% - HSI_EVENT_TP_QUALITY = 64,// "%d" 0-100% - HSI_EVENT_VP_QUALITY = 65,// "%d" 0-100% - HSI_EVENT_FLYMODE_MOVE_COMPLETE = 66,// A queued flymode move has completed - HSI_EVENT_PENDANT_SPEED_PERCENT = 67,// 108336 HMV : Add calls to HSI.H for Speed - HSI_EVENT_PENDANT_AXES_SELECTED = 68,// 108335 HMV : Need to add calls to the HSI.H for Stacked Rotary + HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY_IN_MACHINE_LEVELx100 = 58, + // "%d" //PR251359-- Instructed to "Please focus on slide" but it's rather unhelpfully turned the lights off for us. + HSI_EVENT_DCC_SCAN_POINTS_AVAILABLE = 59, + // "%d" = more to come, 1 = last set N/A + HSI_EVENT_ILLUMINATION_IS_ALL_OFF = 60, + // 1/0 //PR253777-- Sensilight does not work if the target has 'ALL OFF' for illum setting--4/16/2008 + HSI_EVENT_ILLUMINATION_DECREASE_ALL_NONZERO = 61, + // Sensilight command that wont change a lamp currently set to zero + HSI_EVENT_ILLUMINATION_INCREASE_ALL_NONZERO = 62, + // Sensilight command that wont change a lamp currently set to zero22 + HSI_EVENT_LP_QUALITY = 63, + // "%d" 0-100% + HSI_EVENT_TP_QUALITY = 64, + // "%d" 0-100% + HSI_EVENT_VP_QUALITY = 65, + // "%d" 0-100% + HSI_EVENT_FLYMODE_MOVE_COMPLETE = 66, + // A queued flymode move has completed + HSI_EVENT_PENDANT_SPEED_PERCENT = 67, + // 108336 HMV : Add calls to HSI.H for Speed + HSI_EVENT_PENDANT_AXES_SELECTED = 68, + // 108335 HMV : Need to add calls to the HSI.H for Stacked Rotary HSI_EVENT_MOTION = 500, HSI_EVENT_MOTION_DCC_HOME = 501, HSI_EVENT_MOTION_FOCUS_HOME = 502, HSI_EVENT_MOTION_EMERGENT_STOP = 503, - HSI_EVENT_SHUTDOWN_ = 999,// N/A N/A + HSI_EVENT_SHUTDOWN_ = 999, + // N/A N/A HSI_EVENT_MOTION_DRIVER_ALARM = 1000, HSI_EVENT_MOTION_PROBE = 1001, HSI_EVENT_MOTION_DISPENSER = 1002 @@ -269,21 +319,36 @@ enum HSI_MOTION_TYPE enum HSI_MOTION_AXIS_TYPE { - HSI_MOTION_AXIS_X = 0x0001,// This is the default "Sensor level" X Axis - use on single X axis machines - HSI_MOTION_AXIS_Y = 0x0002,// This is the default "Sensor level" Y Axis - use on single Y axis machines - HSI_MOTION_AXIS_Z = 0x0004,// This is the default "Sensor level" Z Axis - use on single Z axis machines - HSI_MOTION_AXIS_R = 0x0008,// This is the default "Sensor level" R Axis - use on single R axis machines - HSI_MOTION_AXIS_X1 = 0x0010,// This is the 1st X Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_Y1 = 0x0020,// This is the 1st Y Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_Z1 = 0x0040,// This is the 1st Z Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_R1 = 0x0080,// This is the 1st R Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_X2 = 0x0100,// This is the 2nd X Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_Y2 = 0x0200,// This is the 2nd Y Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_Z2 = 0x0400,// This is the 2nd Z Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_R2 = 0x0800,// This is the 2nd R Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_X3 = 0x1000,// This is the 3rd X Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_Y3 = 0x2000,// This is the 3rd Y Axis - use on multiple axis machines when specific axis needed - HSI_MOTION_AXIS_Z3 = 0x4000,// This is the 3rd Z Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_X = 0x0001, + // This is the default "Sensor level" X Axis - use on single X axis machines + HSI_MOTION_AXIS_Y = 0x0002, + // This is the default "Sensor level" Y Axis - use on single Y axis machines + HSI_MOTION_AXIS_Z = 0x0004, + // This is the default "Sensor level" Z Axis - use on single Z axis machines + HSI_MOTION_AXIS_R = 0x0008, + // This is the default "Sensor level" R Axis - use on single R axis machines + HSI_MOTION_AXIS_X1 = 0x0010, + // This is the 1st X Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_Y1 = 0x0020, + // This is the 1st Y Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_Z1 = 0x0040, + // This is the 1st Z Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_R1 = 0x0080, + // This is the 1st R Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_X2 = 0x0100, + // This is the 2nd X Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_Y2 = 0x0200, + // This is the 2nd Y Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_Z2 = 0x0400, + // This is the 2nd Z Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_R2 = 0x0800, + // This is the 2nd R Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_X3 = 0x1000, + // This is the 3rd X Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_Y3 = 0x2000, + // This is the 3rd Y Axis - use on multiple axis machines when specific axis needed + HSI_MOTION_AXIS_Z3 = 0x4000, + // This is the 3rd Z Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_R3 = 0x8000 // This is the 3rd R Axis - use on multiple axis machines when specific axis needed }; @@ -291,21 +356,28 @@ enum HSI_MOTION_IO_TYPE { HSI_MOTION_INPUT = 0x0001, HSI_MOTION_INPUT_LIMIT_SWITCH, - HSI_MOTION_INPUT_CH1,//固高、众为兴、EF1输入 + HSI_MOTION_INPUT_CH1, + //固高、众为兴、EF1输入 HSI_MOTION_INPUT_CH2, - HSI_MOTION_INPUT_CH3,//串口控制器输入 - HSI_MOTION_INPUT_CH4,//众为兴运动控制卡测试输入 - HSI_MOTION_INPUT_ALARM,//驱动报警 + HSI_MOTION_INPUT_CH3, + //串口控制器输入 + HSI_MOTION_INPUT_CH4, + //众为兴运动控制卡测试输入 + HSI_MOTION_INPUT_ALARM, + //驱动报警 HSI_MOTION_OUTPUT = 0x0100, HSI_MOTION_OUTPUT_LASER_PEN, - HSI_MOTION_OUTPUT_CH1,//固高、众为兴、EF1输出 + HSI_MOTION_OUTPUT_CH1, + //固高、众为兴、EF1输出 HSI_MOTION_OUTPUT_CH2, - HSI_MOTION_OUTPUT_CH3,//串口控制器输出 + HSI_MOTION_OUTPUT_CH3, + //串口控制器输出 HSI_MOTION_OUTPUT_CH4 //众为兴运动控制卡测试输出 }; //const UINT HSI_MOTION_AXIS_ALL = HSI_MOTION_AXIS_X | HSI_MOTION_AXIS_Y | HSI_MOTION_AXIS_Z; const UINT HSI_MOTION_AXIS_ALL = ACSC_AXIS_0 | ACSC_AXIS_1 | ACSC_AXIS_4; + enum HSI_MOTION_MOVE_TYPE { HSI_MOTION_MOVE_WAIT = 1, @@ -329,11 +401,14 @@ enum HSI_SCAN_MOTION_TYPE { HSI_SCAN_MOTION_LINEAR = 1, HSI_SCAN_MOTION_CIRCULAR, - HSI_SCAN_MOTION_SPEC_LOCA = 100,//EF1 + HSI_SCAN_MOTION_SPEC_LOCA = 100, + //EF1 HSI_SCAN_MOTION_EQ_DIS, HSI_SCAN_MOTION_EQ_DIS_II, - HSI_SCAN_MOTION_LINEAR_TEST,//测试使用 - HSI_SCAN_MOTION_EQ_TEST,//测试使用 + HSI_SCAN_MOTION_LINEAR_TEST, + //测试使用 + HSI_SCAN_MOTION_EQ_TEST, + //测试使用 HSI_SCAN_MOTION_MANUAL_TEST //测试使用 }; @@ -372,42 +447,51 @@ 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_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_GET_POSITION_XYZ_CACHE(unsigned char* CacheData, int DataCount); // 第一阶段结束 // 第二阶段需要重写的API 函数 -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_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_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_IS_SUPPORTED_EX(UINT AxisTypes, UINT &Types); +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_IS_SUPPORTED_EX(UINT AxisTypes, UINT& Types); HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP_EX(UINT AxisTypes, bool bHome); -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION_EX(UINT AxisTypes, double &Scale); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION_EX(UINT AxisTypes, double& Scale); HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION_EX(UINT AxisTypes, double Scale); -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_EX(UINT AxisTypes, double &Position, double &Time); -HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_EX(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear); -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double &Speed); -HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double &Accel); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_EX(UINT AxisTypes, double& Position, double& Time); +HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_EX(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, + double dSpeedGear); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double& Speed); +HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double& Accel); HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_EX(UINT AxisTypes, double Accel); diff --git a/HSI_HexagonMI_EF3/HSI_Motion.cpp b/HSI_HexagonMI_EF3/HSI_Motion.cpp index 3bdb00e..dff0192 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.cpp +++ b/HSI_HexagonMI_EF3/HSI_Motion.cpp @@ -786,8 +786,12 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) m_cSendData[0] = 0x01; m_cSendData[1] = 0x01; m_cSendData[2] = 0x02; - m_cSendData[3] = 0x03; // 10000 (0x27 0x10)对应1秒,3-4字节表示锁存周期 - m_cSendData[4] = 0xE8; + //m_cSendData[3] = 0x03; // 10000 (0x27 0x10)对应1秒,3-4字节表示锁存周期 + //m_cSendData[4] = 0xE8; + + // 10000 (0x27 0x10)对应1秒,3-4字节表示锁存周期 + m_cSendData[3] = (m_axisLatchFrequency >> 8) & 0xFF; + m_cSendData[4] = m_axisLatchFrequency & 0xFF; m_WriteByte = Send_Command(0, (const char*)m_cSendData, 5); Sleep(10); @@ -1125,6 +1129,21 @@ HSI_STATUS HSI_Motion::HomeMachine(bool bHomed) } while (!home); + + //回家后,将锁存板的位置设置为0 + unsigned char m_cSendData[8] = { 0 }; + m_cSendData[0] = 0x01; + m_cSendData[1] = 0x06; + m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2); + Sleep(5); + + + //清除锁存板Flash区 + m_cSendData[0] = 0x01; + m_cSendData[1] = 0x04; + m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2); + Sleep(5); + g_pLogger->SendAndFlushWithTime(L"[HomeMachine] Go Home success\n"); g_pLogger->SendAndFlushWithTime(L"[HomeMachine] Out\n"); } @@ -3720,9 +3739,76 @@ HSI_STATUS HSI_Motion::SetPositionXyzCache(UINT AxisTypes, HSI_MOTION_MOVE_TYPE auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) { - g_pLogger->SendAndFlushWithTime(L"SetPositionXyzCache : start\n"); + g_pLogger->SendAndFlushWithTime(L"[SetPositionXyzCache] start\n"); - g_pLogger->SendAndFlushWithTime(L"SetPositionXyzCache : end\n"); + g_pLogger->SendAndFlushWithTime(L"[SetPositionXyzCache] end\n"); + } + return rStatus; +} + +//=========================================================================== +/** + * \brief 获取缓存点 + * \param CacheData + * \param DataCount + * \return + */ +HSI_STATUS HSI_Motion::GetPositionXyzCache(unsigned char * CacheData, int DataCount) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] start\n"); + + if(m_SO7_Serial.IsOpen()) + { + //发送获取点数量命令 0x01 0x05 + unsigned char m_cSendData[8] = { 0 }; + m_cSendData[0] = 0x01; + m_cSendData[1] = 0x05; + m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2); + Sleep(2); + + //解析缓存点数量 + if(m_SO7_Serial.m_iRecvState) + { + //特殊帧头, 表示该内容为回复点数 + if ((m_SO7_Serial.m_RecvData[0] == 0x01) && (m_SO7_Serial.m_RecvData[0] == 0x1B)) + { + DataCount = (m_SO7_Serial.m_RecvData[4] << 24 | m_SO7_Serial.m_RecvData[5] << 16 | m_SO7_Serial.m_RecvData[6] << 8 | m_SO7_Serial.m_RecvData[7]); + + //详细 https://blog.csdn.net/hebbely/article/details/79577880 + g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] DataCount:%d, %s\n",DataCount, m_SO7_Serial.ToHexStr((const char *)m_SO7_Serial.m_RecvData,8)); + } + } + + //读取锁存点 + m_cSendData[0] = 0x01; + m_cSendData[1] = 0x09; + m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2); //此处应该返回 "ok" + Sleep(2); + + //读取点的字节数,每个点占用12个字节 + if (m_SO7_Serial.m_iRecvBytes != DataCount*12) + { + g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] m_iRecvBytes: %d != Points: %d\n", m_SO7_Serial.m_iRecvBytes, DataCount * 12); + rStatus = HSI_STATUS_FAILED; + } + else + { + memcpy(CacheData, m_SO7_Serial.m_RecvData, m_SO7_Serial.m_iRecvBytes); + m_SO7_Serial.m_iRecvState = FALSE; + rStatus = HSI_STATUS_FAILED; + } + + } + else + { + g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] Serial Port is unavailable! \n"); + rStatus = HSI_STATUS_FAILED; + } + + g_pLogger->SendAndFlushWithTime(L"[GetPositionXyzCache] end\n"); } return rStatus; } @@ -3971,7 +4057,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile) /*m_JogDriveSpeed[j][i] = GetPrivateProfileInt(L"JOG_SPEED", L"JOG_DRIVESPEED_" , 10, csAppPath);*/ //m_JogDriveSpeed[j][i] = speed / (m_Resolution[j] * 50);//速度转换为脉冲 m_JogDriveSpeed[j][i] = speed; //直接读取速度 - g_pLogger->SendAndFlushWithTime(L"[Load_EF3_Motion_Inifile] m_JogDriveSpeed[%d][%d]: %ld %ld\n", i, j, + g_pLogger->SendAndFlushWithTime(L"[Load_EF3_Motion_Inifile] m_JogDriveSpeed[%d][%d]: %d %ld\n", i, j, speed, m_JogDriveSpeed[j][i]); //打印配置文件 档位速度 GetPrivateProfileString(L"JOG_SPEED", L"JOG_STARTSPEED_" + strGear[i] + axisNum[j], L"10", @@ -4097,6 +4183,25 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile) m_IsHavePattern = GetPrivateProfileInt(L"ASIX", L"ISHAVE_AXISPATTERN", 15, csAppPath); m_AxisHomeDirection = GetPrivateProfileInt(L"ASIX", L"AXIS_HOMEDIRECTION", 15, csAppPath); m_IsUseManualRunin = GetPrivateProfileInt(L"ASIX", L"IS_USEMANUALRUNIN", 0, csAppPath); + m_axisLatchFrequency = GetPrivateProfileInt(L"ASIX", L"AXIS_LATCHFREQUENCY", 1, csAppPath); + switch (m_axisLatchFrequency) + { + case 1: + m_axisLatchFrequency = 1000; + break; + case 2: + m_axisLatchFrequency = 2000; + break; + case 3: + m_axisLatchFrequency = 4000; + break; + case 4: + m_axisLatchFrequency = 8000; + break; + case 5: + m_axisLatchFrequency = 16000; + break; + } //锁存频率处理 m_IsUseExternalTrigger = GetPrivateProfileInt(L"FUNCTION", L"IS_USEEXTERNALTRIGGER", 1, csAppPath); m_IsUseSixRingEightArea = GetPrivateProfileInt(L"FUNCTION", L"IS_USESIXRINGEIGHTAREA", 0, csAppPath); @@ -6296,11 +6401,11 @@ HSI_STATUS HSI_Motion::DCCScanStart() //启动定时锁存的同时,启动扫描 外部IO unsigned char m_cSendData[8] = {0}; - m_cSendData[0] = 0x01; m_cSendData[1] = 0x02; m_WriteByte = Send_Command(0, (const char*)m_cSendData, 2); Sleep(2); + g_pLogger->SendAndFlushWithTime(L"[DCCScanStart] Out\n"); m_IsUsePPS = false; } @@ -8785,14 +8890,7 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng WaitForSingleObject(g_RW_Data_Mutex, INFINITE); if (m_bConnected && (m_IsUseEF3 == 1) && (com == 0)) { - g_pLogger->SendAndFlushWithTime(L"[Send_Command] lenth:%d, %s\n", SendDataLength,m_SO7_Serial.ToHexStr(_SendData, SendDataLength)); - int iWriteByte = m_SO7_Serial.Send(_SendData, SendDataLength); - if (iWriteByte != SendDataLength)// 写入字节数不等于发送字节数 - { - rStatus = FALSE; - g_pLogger->SendAndFlushWithTime(L"[Send_Command] WriteByte:%d,!= SendDataLength:%d\n", iWriteByte, SendDataLength); - } - + //------------------------------调试区-----------------------------------// //原文链接:https://blog.csdn.net/qq_31073871/article/details/85696092 /*printf("Send_Command: "); for (int i = 0; i < SendDataLength; i++) @@ -8801,6 +8899,11 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng } printf("\r\n");*/ + //------------------------------调试区-----------------------------------// + + g_pLogger->SendAndFlushWithTime(L"[Send_Command] lenth:%d, %s\n", SendDataLength,m_SO7_Serial.ToHexStr(_SendData, SendDataLength)); + int iWriteByte = m_SO7_Serial.Send(_SendData, SendDataLength); + if (iWriteByte == 0) { int iError = GetLastError(); @@ -8824,7 +8927,31 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng rStatus = FALSE; } - //打印串口返回值 + if (iWriteByte != SendDataLength)// 写入字节数不等于发送字节数 + { + rStatus = FALSE; + g_pLogger->SendAndFlushWithTime(L"[Send_Command] WriteByte:%d,!= SendDataLength:%d\n", iWriteByte, SendDataLength); + } + + //判断回复值,是否为ok 6F 6B + int iRetrys = 0; + while (!m_SO7_Serial.m_iRecvState && iRetrys < 20) + { + iRetrys++; + Sleep(100); + } + + //发送完当前指令后,第一次结束完成标志 + if (m_SO7_Serial.m_iRecvState) + { + if ((m_SO7_Serial.m_RecvData[0] == 0x6F) && (m_SO7_Serial.m_RecvData[0] == 0x6B)) + { + g_pLogger->SendAndFlushWithTime(L"[Send_Command] m_SO7_Serial[%d]. EF3 Reply not ok.\n", com); + rStatus = FALSE; + } + } + + //打印串口返回值,该方式废弃 //Sleep(5); //m_SO7_Serial.OnReceive(); } diff --git a/HSI_HexagonMI_EF3/HSI_Motion.h b/HSI_HexagonMI_EF3/HSI_Motion.h index 9919211..0af7224 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.h +++ b/HSI_HexagonMI_EF3/HSI_Motion.h @@ -257,6 +257,7 @@ public: HSI_STATUS SetPositionXyza(UINT AxisTypes, double PositionX, double PositionY, double PositionZ, double PositionA, HSI_MOTION_MOVE_TYPE eType, double dFlyRadius); HSI_STATUS SetPositionXyzCache(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point* CacheData); + HSI_STATUS HSI_Motion::GetPositionXyzCache(unsigned char * CacheData, int DataCount); HSI_STATUS GetPositionR(UINT AxisTypes, double& PositionR, double& Time); HSI_STATUS SetPositionR(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait); HSI_STATUS SetCircleInterpolate(double PositionX, double PositionY, double PositionZ); //圆弧插补 @@ -491,6 +492,7 @@ public: int m_EF3COMPort; //EF3板com口,默认为2 int m_ForSoft; //针对使用软件 0为MST 1为Metus int m_IsUseManualRunin; //是否开启手动插补(只针对步进电机) + int m_axisLatchFrequency; //轴锁存频率 int m_IsUseRocker; //是否启用摇杆 0为不启用 1为启用旧摇杆,2为新摇杆, 默认为0 int m_IsCollectPos; //是否通过串口打印位置,与摇杆2互斥 int m_IsCloseRocker; diff --git a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP index 26a8687..b19e75d 100644 --- a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP +++ b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP @@ -1,9 +1,6 @@ #include "../stdafx.h" - #include - #include "CMMIO_SERIAL.H " - #include using namespace std; @@ -179,7 +176,7 @@ DWORD CPSerial::Open() if (ProgramPort(m_Port, m_Baud, m_Parity, m_Bits, m_StopBits, m_HandShake)) { TRACE(_T("CmmIO> Port OPEN %s, m_Baud\n", m_Port, m_Baud), Ok); - printf("m_Baud: %d\n", m_Baud); + //printf("m_Baud: %d\n", m_Baud); // Setup the timeouts CommTimeOut.ReadIntervalTimeout = 25; CommTimeOut.ReadTotalTimeoutMultiplier = 1; diff --git a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.H b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.H index c5fcdb1..7ddd783 100644 --- a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.H +++ b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.H @@ -191,8 +191,8 @@ public: // BV Nov 2001: Made public // CRITICAL_SECTION m_QueueLock; BOOL m_iRecvState; //接收状态 - INT m_iRecvBytes; //接收字节数 - INT m_iRecvCount; //接收计数 + INT m_iRecvBytes; //接收字节数 + INT m_iRecvCount; //接收计数 unsigned char m_RecvData[MAX_RECIEVE_BUFFER_SIZE]; }; diff --git a/HSI_HexagonMI_EF3/version.h b/HSI_HexagonMI_EF3/version.h index 9a98c0d..2ba3a92 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.11.25 / 15:12 " -#define HSI_FILE_CSDESCRIPTION _T("2022.11.25 / 15:12 ") +#define HSI_FILE_DESCRIPTION "2022.11.25 / 17:25 " +#define HSI_FILE_CSDESCRIPTION _T("2022.11.25 / 17:25 ") diff --git a/HSI_SEVENOCEAN_EF1_CsTest/HSI/HSI.cs b/HSI_SEVENOCEAN_EF1_CsTest/HSI/HSI.cs index 461c852..7eef5cc 100644 --- a/HSI_SEVENOCEAN_EF1_CsTest/HSI/HSI.cs +++ b/HSI_SEVENOCEAN_EF1_CsTest/HSI/HSI.cs @@ -142,6 +142,11 @@ namespace HSI_SEVENOCEAN_EF1_CsTest.HSI [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_DCC_SCAN_STOP", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS DCCScanStop(); + + + [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_POSITION_XYZ_CACHE", CharSet = CharSet.Unicode)] + public static extern Def.HSI_STATUS GetPositionXyzCache(IntPtr CacheData, int DataCount); + //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_SPEED_R", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS GetSpeedR(ref double speed); diff --git a/HSI_SEVENOCEAN_EF1_CsTest/Program.cs b/HSI_SEVENOCEAN_EF1_CsTest/Program.cs index 6f08cb9..81102ea 100644 --- a/HSI_SEVENOCEAN_EF1_CsTest/Program.cs +++ b/HSI_SEVENOCEAN_EF1_CsTest/Program.cs @@ -7,11 +7,12 @@ namespace HSI_SEVENOCEAN_EF1_CsTest { internal class Program { - private static Interface.PEventCallback _eventCallback; + //private static Interface.PEventCallback _eventCallback; private static void Main(string[] args) { + //1 鑾峰彇HSI Dll鐗堟湰 uint major = Def.HSI_APIVersionMajor; uint minjor = Def.HSI_APIVersionMinor; @@ -40,6 +41,13 @@ namespace HSI_SEVENOCEAN_EF1_CsTest rStatus = Motion.Startup(true); //杩愬姩鍒濆鍖栵紝鍥炲鍒ゆ柇 Console.WriteLine("Motion.Startup:{0}", rStatus); + + IntPtr dataCache = IntPtr.Zero; + int pointCount = 0; + Motion.GetPositionXyzCache(dataCache, pointCount); + Console.WriteLine("pointCount = " + pointCount); + + //5 鑾峰彇EF3鍥轰欢鐗堟湰鍙,寰呮祴璇 //var EF3Version = new byte[20]; ////IntPtr intPtrEF3Version = IntPtr.Zero; diff --git a/SerialAssistant/WPFSerialAssistant/Core.cs b/SerialAssistant/WPFSerialAssistant/Core.cs index 7e3a2a9..929a357 100644 --- a/SerialAssistant/WPFSerialAssistant/Core.cs +++ b/SerialAssistant/WPFSerialAssistant/Core.cs @@ -106,7 +106,16 @@ namespace WPFSerialAssistant } } + private bool SendData(string textToSend) + { + if (string.IsNullOrEmpty(textToSend)) + { + Alert("瑕佸彂閫佺殑鍐呭涓嶈兘涓虹┖锛"); + return false; + } + return SerialPortWrite(textToSend); + } private void AutoSendData() { diff --git a/SerialAssistant/WPFSerialAssistant/EventHandler.cs b/SerialAssistant/WPFSerialAssistant/EventHandler.cs index eac33fb..cb56c2e 100644 --- a/SerialAssistant/WPFSerialAssistant/EventHandler.cs +++ b/SerialAssistant/WPFSerialAssistant/EventHandler.cs @@ -514,9 +514,34 @@ namespace WPFSerialAssistant dataRecvStatusBarItem.Visibility = Visibility.Collapsed; })); - // TO-DO锛 - // 澶勭悊鏁版嵁锛屾瘮濡傝В鏋愭寚浠ょ瓑绛 - } + // TO-DO锛 + // 澶勭悊鏁版嵁锛屾瘮濡傝В鏋愭寚浠ょ瓑绛 + if (recvBuffer.Count > 0) + { + // 涓句緥锛氳В鏋愭寚浠わ紝鑾峰彇閿佸瓨鐐 + if (recvBuffer[0] == 0x01 && recvBuffer[1] == 0x05) + { + // TO-DO锛氬鐞嗘寚浠 + + this.Dispatcher.BeginInvoke(new Action(() => + { + SendData("string textToSend"); + })); + + } + + if (recvBuffer[0] == 0x01 && recvBuffer[1] == 0x09) + { + // TO-DO锛氬鐞嗘寚浠 + + this.Dispatcher.BeginInvoke(new Action(() => + { + SendData("ok"); + })); + } + + } + } #endregion } }