From 698e1223fabe73cfed8b9000939629d01a65554c Mon Sep 17 00:00:00 2001 From: wio Date: Mon, 10 Oct 2022 10:13:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=93=E6=9E=84=E6=95=B4=E7=90=86=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E4=BB=B6=E7=BC=96=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E9=80=82=E9=85=8DVS=20gb2312?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HSI_HexagonMI_EF3.sln | 1 - HSI_HexagonMI_EF3/HSI.cpp | 71 +++-- HSI_HexagonMI_EF3/HSI.h | 119 ++++---- HSI_HexagonMI_EF3/HSI_Function.h | 2 +- HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj | 3 +- .../HSI_HexagonMI_EF3.vcxproj.filters | 1 + HSI_HexagonMI_EF3/HSI_Motion.cpp | 275 +++++++++--------- HSI_HexagonMI_EF3/HSI_Motion.h | 214 +++++++------- HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.cpp | 8 +- HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.h | 6 +- HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.CPP | 3 +- HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP | 4 +- HSI_HexagonMI_EF3/logger.cpp | 1 + HSI_HexagonMI_EF3/logger.h | 2 +- HSI_HexagonMI_EF3/resource.h | 4 +- HSI_HexagonMI_EF3/stdafx.cpp | 10 +- HSI_HexagonMI_EF3/stdafx.h | 15 +- HSI_HexagonMI_EF3/version.h | 4 +- .../HSI_Hexa.ECCF081D.tlog/CL.command.1.tlog | Bin 7406 -> 6794 bytes .../HSI_Hexa.ECCF081D.tlog/CL.read.1.tlog | Bin 79182 -> 0 bytes .../HSI_Hexa.ECCF081D.tlog/CL.write.1.tlog | Bin 5432 -> 0 bytes .../HSI_HexagonMI_EF3.lastbuildstate | 2 +- .../HSI_HexagonMI_EF3.write.1u.tlog | Bin 586 -> 0 bytes .../link.command.1.tlog | Bin 4190 -> 0 bytes .../HSI_Hexa.ECCF081D.tlog/link.read.1.tlog | Bin 13346 -> 0 bytes .../HSI_Hexa.ECCF081D.tlog/link.write.1.tlog | Bin 1864 -> 0 bytes .../x64/Debug/HSI_HexagonMI_EF3.exp | Bin 11061 -> 0 bytes ...HexagonMI_EF3.vcxproj.FileListAbsolute.txt | 0 SerialAssistant/WPFSerialAssistant/Core.cs | 4 +- .../WPFSerialAssistant/MainWindow.xaml | 5 - .../WPFSerialAssistant/MainWindow.xaml.cs | 104 ++++++- .../WPFSerialAssistant/Utilities.cs | 30 +- .../WPFSerialAssistant.csproj | 1 + x64/Debug/HSI_Sevenocean_EF1.exp | Bin 0 -> 9109 bytes 34 files changed, 514 insertions(+), 375 deletions(-) delete mode 100644 HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/CL.read.1.tlog delete mode 100644 HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/CL.write.1.tlog delete mode 100644 HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/HSI_HexagonMI_EF3.write.1u.tlog delete mode 100644 HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/link.command.1.tlog delete mode 100644 HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/link.read.1.tlog delete mode 100644 HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/link.write.1.tlog delete mode 100644 HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.exp delete mode 100644 HSI_HexagonMI_EF3/x64/Debug/HSI_HexagonMI_EF3.vcxproj.FileListAbsolute.txt create mode 100644 x64/Debug/HSI_Sevenocean_EF1.exp diff --git a/HSI_HexagonMI_EF3.sln b/HSI_HexagonMI_EF3.sln index 4034bf8..f42d1ae 100644 --- a/HSI_HexagonMI_EF3.sln +++ b/HSI_HexagonMI_EF3.sln @@ -102,7 +102,6 @@ Global {DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|Any CPU.Build.0 = Debug|Any CPU {DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|x64.ActiveCfg = Debug|Any CPU - {DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|x64.Build.0 = Debug|Any CPU {DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|x86.ActiveCfg = Debug|Any CPU {DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Debug|x86.Build.0 = Debug|Any CPU {DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/HSI_HexagonMI_EF3/HSI.cpp b/HSI_HexagonMI_EF3/HSI.cpp index 2712726..618fa11 100644 --- a/HSI_HexagonMI_EF3/HSI.cpp +++ b/HSI_HexagonMI_EF3/HSI.cpp @@ -113,6 +113,15 @@ HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM() //=========================================================================== #pragma endregion +//////////////////////////////////////////////////////////////////////////////// +// MOTION API +/////////////////////////////////////////////////////////////////////////////// +#pragma region Motion API + + + + + HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types) { auto rStatus = HSI_STATUS_NORMAL; @@ -188,25 +197,19 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome) return rStatus; } //=========================================================================== -/** - * .ѯ�ʻ�̨�Ƿ���ԭ�� - * - * \param bHomed �Ƿ��� ԭ �� - * \return - */ -//HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed) -//{ -// auto rStatus = HSI_STATUS_NORMAL; -// if (g_pHSI_Motion) -// { -// rStatus = g_pHSI_Motion->IsHomed(bHomed); -// } -// else -// { -// rStatus = HSI_STATUS_FAILED; -// } -// return rStatus; -//} +HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed) +{ + auto rStatus = HSI_STATUS_NORMAL; + if (g_pHSI_Motion) + { + rStatus = g_pHSI_Motion->IsHomed(bHomed); + } + else + { + rStatus = HSI_STATUS_FAILED; + } + return rStatus; +} //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis,double &Speed) { @@ -615,7 +618,6 @@ 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) { @@ -753,7 +755,6 @@ 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) { auto rStatus = HSI_STATUS_NORMAL; @@ -980,9 +981,14 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_FINDORIGINTEST(bool type) return rStatus; } -#if 0 -///////////////////////////////////////////////////////////////////////////// +#pragma endregion +// +#ifdef USE_ILLUMINATION_API + +//////////////////////////////////////////////////////////////////////////////// +// ILLUMINATION API +/////////////////////////////////////////////////////////////////////////////// #pragma region // ILLUMINATION API //=========================================================================== @@ -1152,8 +1158,14 @@ HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_TESTLIGHT(bool flag) } //=========================================================================== #pragma endregion - // 0 -///////////////////////////////////////////////////////////////////////////// + +#endif // USE_ILLUMINATION_API + +//̽ +#ifdef USE_Probe_API +/////////////////////////////////////////////////////////////////////////////// +// Probe API +/////////////////////////////////////////////////////////////////////////////// #pragma region probe //=========================================================================== HSI_API HSI_STATUS WINAPI HSI_TP_STARTUP() @@ -1344,7 +1356,10 @@ HSI_API HSI_STATUS WINAPI HSI_TP_SHUTDOWN() //=========================================================================== #pragma endregion -#endif +#endif // USE_Probe_API + +// +#ifdef Test #pragma region Test //=========================================================================== @@ -1362,4 +1377,6 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_COLLECTPOS(bool isEnable, MOTOR_AXISCHOOES_ return rStatus; } //=========================================================================== -#pragma endregion \ No newline at end of file +#pragma endregion + +#endif // Test \ No newline at end of file diff --git a/HSI_HexagonMI_EF3/HSI.h b/HSI_HexagonMI_EF3/HSI.h index ddeca60..4aee761 100644 --- a/HSI_HexagonMI_EF3/HSI.h +++ b/HSI_HexagonMI_EF3/HSI.h @@ -234,11 +234,11 @@ struct sHSIEventProperties // >>>> In Interfaces typedef VOID(WINAPI *pEventCallback)(HSI_EVENT_TYPE EventType, HSI_EVENT_RESPONSE_TYPE ResponseType, UINT EventID, char EventData[HSI_MaxStringLength + 1], UINT &EventCallbackID); -//HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly); -//HSI_API HSI_STATUS WINAPI HSI_GET_INTERFACE_VERSION(UINT &APIVersionMajor, UINT &APIVersionMinor); -//HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int &_NumMachineTypes); -//HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback); -//HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM(); +HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly); +HSI_API HSI_STATUS WINAPI HSI_GET_INTERFACE_VERSION(UINT &APIVersionMajor, UINT &APIVersionMinor); +HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int &_NumMachineTypes); +HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback); +HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM(); // <<<< Out Interfaces @@ -284,18 +284,18 @@ 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_CH4//��Ϊ���˶����ƿ�������� + 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; @@ -326,11 +326,12 @@ enum HSI_SCAN_MOTION_TYPE 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_MANUAL_TEST//����ʹ�� + HSI_SCAN_MOTION_LINEAR_TEST,//ʹ + HSI_SCAN_MOTION_EQ_TEST,//ʹ + HSI_SCAN_MOTION_MANUAL_TEST//ʹ }; + enum HSI_ZOOM_TYPE { HSI_ZOOM_MANUAL = 0, @@ -347,8 +348,8 @@ const int HSI_MAX_POSITIONS_STORED = 500; // >>>> In Interfaces HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed); +HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome); +HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed); HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double &Speed); HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis, double &Speed); @@ -368,10 +369,9 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband); HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed); HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG(); -//HSI_API BOOL WINAPI HSI_MOTION_GET_PROBE_TOUCH(); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_TOUCH_MOVE(double dSpeed, double dEndPosX, double dEndPosY, double dEndPosZ, double dI, double dJ, double dK); + HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZ(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &Time); -//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZA_PROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &dI, double &dJ, double &dK, double &PositionA); + 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); @@ -389,6 +389,8 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_ 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); //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); @@ -400,74 +402,88 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP(); //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); +//δʵ //HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_MAGNIFICATION(UINT AxisTypes, double mag, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear); //HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_MAGNIFICATION(UINT AxisTypes, double &mag); //HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_POS(UINT AxisTypes, double ScalePos, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear); //HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_POS(UINT AxisTypes, double &ScalePos); +//HSI_API BOOL WINAPI HSI_MOTION_GET_PROBE_TOUCH(); +//HSI_API HSI_STATUS WINAPI HSI_MOTION_TOUCH_MOVE(double dSpeed, double dEndPosX, double dEndPosY, double dEndPosZ, double dI, double dJ, double dK); +//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZA_PROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &dI, double &dJ, double &dK, double &PositionA); + HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN(); // <<<< Out Interfaces + +#ifdef USE_Illumination_API + + + /////////////////////////////////////////////////////////////////////////////// // Illumination API /////////////////////////////////////////////////////////////////////////////// enum HSI_ILLUMINATION_INFO { - HSI_ILLUMINATION_INFO_UNKNOWN = 0, - HSI_ILLUMINATION_INFO_SO7 = 0x01, - HSI_ILLUMINATION_INFO_SO7_II = 0x02,//lvgang - HSI_ILLUMINATION_INFO_SO7_III = 0x04,//shixuyong - HSI_ILLUMINATION_INFO_TOTAL + HSI_ILLUMINATION_INFO_UNKNOWN = 0, + HSI_ILLUMINATION_INFO_SO7 = 0x01, + HSI_ILLUMINATION_INFO_SO7_II = 0x02,//lvgang + HSI_ILLUMINATION_INFO_SO7_III = 0x04,//shixuyong + HSI_ILLUMINATION_INFO_TOTAL }; + enum HSI_ILLUMINATION_BULB_TYPE { - HSI_ILLUMINATION_BULB_ROUND = 1, - HSI_ILLUMINATION_BULB_SQUARE = 2, - HSI_ILLUMINATION_BULB_RING = 3, - HSI_ILLUMINATION_BULB_GRID = 4 + HSI_ILLUMINATION_BULB_ROUND = 1, + HSI_ILLUMINATION_BULB_SQUARE = 2, + HSI_ILLUMINATION_BULB_RING = 3, + HSI_ILLUMINATION_BULB_GRID = 4 }; enum HSI_ILLUMINATION_LAMP_TYPE { - HSI_ILLUMINATION_LAMP_COAXIAL = 0, - HSI_ILLUMINATION_LAMP_SURFACE = 1, - HSI_ILLUMINATION_LAMP_PROFILE = 2, - HSI_ILLUMINATION_LAMP_PROFILE_OUTER = 3 + HSI_ILLUMINATION_LAMP_COAXIAL = 0, + HSI_ILLUMINATION_LAMP_SURFACE = 1, + HSI_ILLUMINATION_LAMP_PROFILE = 2, + HSI_ILLUMINATION_LAMP_PROFILE_OUTER = 3 }; + enum HSI_ILLUMINATION_LAMP_CONTROL_TYPE { - HSI_ILLUMINATION_LAMP_CONTROL_BY_WHOLE_LAMP = 0x0000, - HSI_ILLUMINATION_LAMP_CONTROL_BY_RINGS = 0x0001, - HSI_ILLUMINATION_LAMP_CONTROL_BY_OCTANTS = 0x0002, - HSI_ILLUMINATION_LAMP_CONTROL_BY_SEGMENTS = 0x0004, - HSI_ILLUMINATION_LAMP_CONTROL_BY_OTHER + HSI_ILLUMINATION_LAMP_CONTROL_BY_WHOLE_LAMP = 0x0000, + HSI_ILLUMINATION_LAMP_CONTROL_BY_RINGS = 0x0001, + HSI_ILLUMINATION_LAMP_CONTROL_BY_OCTANTS = 0x0002, + HSI_ILLUMINATION_LAMP_CONTROL_BY_SEGMENTS = 0x0004, + HSI_ILLUMINATION_LAMP_CONTROL_BY_OTHER }; + enum HSI_ILLUMINATION_BULB_STATE { - HSI_ILLUMINATION_BULB_STATE_TURN_ON = 0, - HSI_ILLUMINATION_BULB_STATE_TURN_OFF = 1, - HSI_ILLUMINATION_BULB_STATE_TOTAL + HSI_ILLUMINATION_BULB_STATE_TURN_ON = 0, + HSI_ILLUMINATION_BULB_STATE_TURN_OFF = 1, + HSI_ILLUMINATION_BULB_STATE_TOTAL }; + enum HSI_ILLUMINATION_TYPE { - HSI_ILLUMINATION_SUPPORTS_DCC_CONTROL = 0x0001, - HSI_ILLUMINATION_SUPPORTS_MANUAL_CONTROL = 0x0002 + HSI_ILLUMINATION_SUPPORTS_DCC_CONTROL = 0x0001, + HSI_ILLUMINATION_SUPPORTS_MANUAL_CONTROL = 0x0002 }; enum HSI_ILLUMINATION_LAMP_LOCATION_TYPE { - HSI_ILLUMINATION_LAMP_LOCATION_NONE = 0, - HSI_ILLUMINATION_LAMP_LOCATION_TOP_ON_AXIS = 1, - HSI_ILLUMINATION_LAMP_LOCATION_TOP_ANGLED = 2, - HSI_ILLUMINATION_LAMP_LOCATION_BOTTOM = 3, - HSI_ILLUMINATION_LAMP_LOCATION_MOVABLE = 4 + HSI_ILLUMINATION_LAMP_LOCATION_NONE = 0, + HSI_ILLUMINATION_LAMP_LOCATION_TOP_ON_AXIS = 1, + HSI_ILLUMINATION_LAMP_LOCATION_TOP_ANGLED = 2, + HSI_ILLUMINATION_LAMP_LOCATION_BOTTOM = 3, + HSI_ILLUMINATION_LAMP_LOCATION_MOVABLE = 4 }; const int HSI_ILLUMINATION_MAX_LAMPS = 6; const int HSI_ILLUMINATION_MAX_BULB_COLORS = 3; const int HSI_ILLUMINATION_MAX_RINGS = 12; const int HSI_ILLUMINATION_MAX_SECTORS = 16; -const int HSI_ILLUMINATION_MAX_BULBS = HSI_ILLUMINATION_MAX_RINGS*HSI_ILLUMINATION_MAX_SECTORS; +const int HSI_ILLUMINATION_MAX_BULBS = HSI_ILLUMINATION_MAX_RINGS * HSI_ILLUMINATION_MAX_SECTORS; const int HSI_ILLUMINATION_MAX_BULB_TYPE = 2; const int HSI_MaxLampNameLength = 29, HSI_MaxLampDescriptionLength = 255; // Maximum string length (buffer size - 1) @@ -477,7 +493,7 @@ HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_IS_SUPPORTED(UINT &Types); HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_STARTUP(); HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_COUNT(int &nLamps); HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_INFO(int& _LampInfo, int& _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], - int *NumRings, int *NumSectors, int* _Color, double *_Angle, bool &bCanBeCalibrated); + int *NumRings, int *NumSectors, int* _Color, double *_Angle, bool &bCanBeCalibrated); HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_STATE(int nLamp, bool *bBulbStates, double *Intensities, int &Color, double &Angle); HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SET_LAMP_STATE(int nLamp, bool *bBulbStates, double *Intensities, int Color, double Angle, bool bWait); HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_STATE_ALL(int _LampInfo, int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS]); @@ -485,6 +501,9 @@ HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SET_LAMP_STATE_ALL(int _LampInfo, int HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SHUTDOWN(); // <<<< Out Interfaces +#endif // !USE_Illumination_API + + class HSI { diff --git a/HSI_HexagonMI_EF3/HSI_Function.h b/HSI_HexagonMI_EF3/HSI_Function.h index 33d6395..697b7da 100644 --- a/HSI_HexagonMI_EF3/HSI_Function.h +++ b/HSI_HexagonMI_EF3/HSI_Function.h @@ -254,7 +254,7 @@ private: double seekSpeed; double retractDis; double retractManDis; - E_EF3_PROBE_STATUS probeRunStatus;//̽״̬ + E_EF3_PROBE_STATUS probeRunStatus;//̽������״̬ }; extern HSI_Function *g_pHSI_Function; diff --git a/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj b/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj index d94e81f..52c2c81 100644 --- a/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj +++ b/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj @@ -89,7 +89,7 @@ - Use + NotUsing Level3 Disabled WIN32;_DEBUG;_WINDOWS;_USRDLL;HSI_EXPORTS;%(PreprocessorDefinitions) @@ -178,6 +178,7 @@ xcopy "$(OutDir)\$(ProjectName).pdb" ..\HSI_GOOGOL_GTS800_WPFTest\bin\Debug\HSI. + diff --git a/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj.filters b/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj.filters index 22a6523..5ad887a 100644 --- a/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj.filters +++ b/HSI_HexagonMI_EF3/HSI_HexagonMI_EF3.vcxproj.filters @@ -19,5 +19,6 @@ + \ No newline at end of file diff --git a/HSI_HexagonMI_EF3/HSI_Motion.cpp b/HSI_HexagonMI_EF3/HSI_Motion.cpp index dbbef58..5e06bd7 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.cpp +++ b/HSI_HexagonMI_EF3/HSI_Motion.cpp @@ -1,5 +1,4 @@ -// HSI_Motion.cpp : 定义 DLL 的初始化例程。 -// +// HSI_Motion.cpp : DLL ijʼ̡ #include "stdafx.h" #include "HSI.h" #include "HSI_Sevenocean_EF3.h" @@ -18,7 +17,7 @@ using namespace std; //=========================================================================== HSI_Motion *g_pHSI_Motion = nullptr; CLogger extern *g_pLogger = nullptr; -HANDLE hCom;//串口句柄 +HANDLE hCom;//ھ const int WSA_MAJOR_VERSION = 2; const int WSA_MINOR_VERSION = 2; @@ -127,7 +126,7 @@ HSI_Motion::HSI_Motion() bSaveSpeedFlag = false; m_IsUseManualRunin = 0; fourthAxisFlag = false; - bCircleRun = false;//圆弧插补 + bCircleRun = false;//Բ岹 m_UseAxisNum = 1; jogAxisNum = 0; jogDirFlag = false; @@ -136,9 +135,9 @@ HSI_Motion::HSI_Motion() set_start = 0; set_end = 0; m_iSpeedType = 0; - m_axisDirX = 0;//探针运动时X轴的运动方向 - m_axisDirY = 0;//探针运动时Y轴的运动方向 - m_axisDirZ = 0;//探针运动时Z轴的运动方向 + m_axisDirX = 0;//̽˶ʱX˶ + m_axisDirY = 0;//̽˶ʱY˶ + m_axisDirZ = 0;//̽˶ʱZ˶ m_probeSeekSpeed = 0; bUseGlueDispenser = false; @@ -147,9 +146,9 @@ HSI_Motion::HSI_Motion() m_iGlueAccSpeed = 1; GlueDispenserindexNum = 0; - m_isUseAport = 0;//A串口 + m_isUseAport = 0;//A m_portAnum = 0; - m_isUseBport = 0;//B串口 + m_isUseBport = 0;//B m_portBnum = 0; m_bEmergencyState = false; SpCompleteTStart = 0; @@ -182,7 +181,7 @@ HSI_Motion::HSI_Motion() } CTime tm = CTime::GetCurrentTime(); - CString csTime = tm.Format("%Y-%m-%d");//显示年月日 + CString csTime = tm.Format("%Y-%m-%d");//ʾ CString dir = L"\\Log\\" + csTime += L".SO7_EF3.Log"; g_pLogger = new CLogger(dir); g_pLogger2 = new CLogger(L"\\Log\\EF3_SumTime.Log"); @@ -190,7 +189,7 @@ HSI_Motion::HSI_Motion() { for (int j = 0; j < 5; j++) { - m_JogDriveSpeed[j][i] = 10; //表示5个档位 + m_JogDriveSpeed[j][i] = 10; //ʾ5λ m_JogStartSpeed[j][i] = 10; m_JogAccLine[j][i] = 5; m_JogAccCurve[j][i] = 0; @@ -293,12 +292,12 @@ bool HSI_Motion::PortInit(int iSerialComPort, int iBuadRate) sprintf_s(buf, "COM%d", iSerialComPort); CString comName(buf); hCom = CreateFile(comName, - GENERIC_READ | GENERIC_WRITE, //允许读和写 - 0, //独占方式,串口必须为0 + GENERIC_READ | GENERIC_WRITE, //д + 0, //ռʽ,ڱΪ0 NULL, - OPEN_EXISTING, //打开而不是创建,串口必须为打开 - 0, //同步方式,同步执行时,函数直到操作完成后才返回 - NULL);//串口必须为NULL + OPEN_EXISTING, //򿪶ǴڱΪ + 0, //ͬʽ,ִͬʱֱɺŷ + NULL);//ڱΪNULL if (hCom != (HANDLE)-1) { PurgeComm(hCom, PURGE_TXCLEAR | PURGE_RXCLEAR); @@ -315,7 +314,7 @@ bool HSI_Motion::PortInit(int iSerialComPort, int iBuadRate) return false;//Setting Error!!!! } - //设置读写超时时间 + //öдʱʱ COMMTIMEOUTS to; memset(&to, 0, sizeof(to)); to.ReadIntervalTimeout = 100; @@ -371,7 +370,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3控制器打开失败,串口"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3ʧ,"); EventCallback(sEvenProp); return HSI_STATUS_FAILED; } @@ -418,7 +417,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) g_pLogger->SendAndFlushWithTime(L"[Startup] DriverAlarmStatus HSI_STATUS_FAILED\n"); //return HSI_STATUS_FAILED; } - //无效软限位 + //Чλ m_cSendData[0] = CT_MOTOR; m_cSendData[1] = CT_MOTOR_SET; m_cSendData[2] = AXIS_XYZU; @@ -431,12 +430,12 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) m_cSendData[9] = 0; m_cSendData[10] = 0; m_cSendData[11] = 0; - m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength);//初始化防止第一次无效 + m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength);//ʼֹһЧ Sleep(5); m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); g_pLogger->SendAndFlushWithTime(L"[Startup] Limit no Enable\n"); - //设置方向4个轴的方向,按位 + //÷4ķ򣬰λ m_cSendData[0] = CT_MOTOR; m_cSendData[1] = CT_MOTOR_SET; m_cSendData[2] = AXIS_X; @@ -448,28 +447,28 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) Sleep(10); m_cSendData[0] = CT_MOTOR; m_cSendData[1] = CT_MDATA_INIT; - m_cSendData[2] = m_motorType & 0xff; //电机类型(步进电机或伺服电机) - m_cSendData[3] = m_IsUseExternalTrigger; //是否启用外触发功能 - m_cSendData[4] = m_IsUseSixRingEightArea; //是否启用六环八区灯功能 + m_cSendData[2] = m_motorType & 0xff; //ͣŷ + m_cSendData[3] = m_IsUseExternalTrigger; //Ƿⴥ + m_cSendData[4] = m_IsUseSixRingEightArea; //Ƿƹ m_cSendData[5] = m_IsHardLimit; m_cSendData[6] = m_IsEnableAxis; - m_cSendData[7] = m_IsProbe; //是否启用探针 - m_cSendData[8] = m_EF3LightType; //5V高频灯光配置 - m_cSendData[9] = m_IsUseRocker; //是否启用摇杆 - m_cSendData[10] = m_IsHavePattern; //光栅 - m_cSendData[11] = m_AxisHomeDirection; //轴回家方向 - m_cSendData[12] = m_IsCollectPos; //是否从串口打印位置 - m_cSendData[16] = m_IsLightDebug; //是否不回家也能调试灯光 + m_cSendData[7] = m_IsProbe; //Ƿ̽ + m_cSendData[8] = m_EF3LightType; //5VƵƹ + m_cSendData[9] = m_IsUseRocker; //Ƿҡ + m_cSendData[10] = m_IsHavePattern; //դ + m_cSendData[11] = m_AxisHomeDirection; //ؼҷ + m_cSendData[12] = m_IsCollectPos; //ǷӴڴӡλ + m_cSendData[16] = m_IsLightDebug; //Ƿ񲻻ؼҲܵԵƹ if (m_IsStartInput == 1 && m_IsUseRocker == 2) { - m_cSendData[14] = m_StartInputPort >> 8 & 0xff; //外部启动端口号 H - m_cSendData[15] = m_StartInputPort & 0xff; //外部启动端口号 L + m_cSendData[14] = m_StartInputPort >> 8 & 0xff; //ⲿ˿ں H + m_cSendData[15] = m_StartInputPort & 0xff; //ⲿ˿ں L } m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); Sleep(10); - ////步进电机补偿值设定 + ////ֵ趨 //if (m_motorType == 0) //{ // m_cSendData[0] = CT_MOTOR; @@ -485,7 +484,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) // g_pLogger->SendAndFlushWithTime(L"[Startup] Set Encoder Dir\n"); //} - //多光源板 + //Դ if (m_bISUseMoreLights > 0) { for (int i = 0; i < m_bISUseMoreLights; i++) @@ -505,7 +504,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "光源板打开网口失败"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Դʧ"); EventCallback(sEvenProp); return HSI_STATUS_FAILED; } @@ -529,7 +528,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) } } - //摇杆速度设置 + //ҡٶ if (m_IsUseRocker == 1) { m_cSendData[0] = CT_MOTOR; @@ -557,7 +556,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) Sleep(5); g_pLogger->SendAndFlushWithTime(L"[Startup] Set Rocker Success\n"); } - //摇杆2下载档位 + //ҡ2صλ if (m_IsUseRocker == 2) { SetAllGears(); @@ -604,7 +603,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) return rStatus; } -//获取EF3固件版本 +//ȡEF3̼汾 HSI_STATUS HSI_Motion::GetFirmwareVersion(byte *version) { m_Thread_StateData = HSI_THREAD_PAUSED; @@ -663,7 +662,7 @@ HSI_STATUS HSI_Motion::GetFirmwareVersion(byte *version) return HSI_STATUS_NORMAL; } -//回家 +//ؼ //=========================================================================== HSI_STATUS HSI_Motion::HomeMachine(bool bHomed) { @@ -680,7 +679,7 @@ HSI_STATUS HSI_Motion::HomeMachine(bool bHomed) if (g_pHSI_Motion) { g_pLogger->SendAndFlushWithTime(L"[HomeMachine] In\n"); - //判断是否需要回家 + //жǷҪؼ bool home(false); IsHomed(home); if (home == true) @@ -700,7 +699,7 @@ HSI_STATUS HSI_Motion::HomeMachine(bool bHomed) } if (m_bEmergencyState) { - AfxMessageBox(_T("急停或安全门或安全光幕触发!")); + AfxMessageBox(_T("ͣȫŻȫĻ")); return HSI_STATUS_FAILED; } CurrentHomeMachineState = E_EF3_HOME_ING; @@ -842,7 +841,7 @@ HSI_STATUS HSI_Motion::HomeFindIndex() if (m_Home_Machine_Axis[i] == 1) { AxisTypes = IndexConvertAxis(i); - //无效软限位 + //Чλ m_cSendData[0] = CT_MOTOR; m_cSendData[1] = CT_MOTOR_SET; m_cSendData[2] = AxisTypes; @@ -974,7 +973,7 @@ HSI_STATUS HSI_Motion::HomeFindIndex() } if (m_bEmergencyState) { - AfxMessageBox(_T("急停或安全门或安全光幕触发!")); + AfxMessageBox(_T("ͣȫŻȫĻ")); return HSI_STATUS_FAILED; } if (Count > 25000) @@ -984,7 +983,7 @@ HSI_STATUS HSI_Motion::HomeFindIndex() sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "回家超时"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "ؼҳʱ"); EventCallback(sEvenProp); return HSI_STATUS_FAILED; } @@ -995,22 +994,22 @@ HSI_STATUS HSI_Motion::HomeFindIndex() bool bHomed = true; if ((m_SO7_Serial.m_RecvData[38] & 0x01) == 0 && m_Home_Machine_Axis[1] == 1) { - strcat_s(MessageHome, 30, "1、"); + strcat_s(MessageHome, 30, "1"); bHomed = false; } if ((m_SO7_Serial.m_RecvData[38] & 0x02) == 0 && m_Home_Machine_Axis[2] == 1) { - strcat_s(MessageHome, 30, "2、"); + strcat_s(MessageHome, 30, "2"); bHomed = false; } if ((m_SO7_Serial.m_RecvData[38] & 0x04) == 0 && m_Home_Machine_Axis[3] == 1) { - strcat_s(MessageHome, 30, "3、"); + strcat_s(MessageHome, 30, "3"); bHomed = false; } if ((m_SO7_Serial.m_RecvData[38] & 0x08) == 0 && m_Home_Machine_Axis[4] == 1) { - strcat_s(MessageHome, 30, "4、"); + strcat_s(MessageHome, 30, "4"); bHomed = false; } if (!bHomed) @@ -1019,7 +1018,7 @@ HSI_STATUS HSI_Motion::HomeFindIndex() sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcat_s(MessageHome, 100, "轴回家失败!"); + strcat_s(MessageHome, 100, "ؼʧ!"); strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, MessageHome); EventCallback(sEvenProp); return HSI_STATUS_FAILED; @@ -1069,11 +1068,11 @@ HSI_STATUS HSI_Motion::IsHomed(bool &bHomed) g_pLogger->SendAndFlushWithTime(L"[IsHomed] In\n"); short isHomed[5] = { 1, 1, 1, 1, 1 }; //int Count = 0; - //if (bHomed == true)//定位是增大判断精度 + //if (bHomed == true)//λжϾ //{ // Count = 1000; //} - //所有轴都不需要回家 + //ᶼҪؼ if (m_Home_Machine_Axis[1] == 0 && m_Home_Machine_Axis[2] == 0 && m_Home_Machine_Axis[3] == 0 && m_Home_Machine_Axis[4] == 0) { g_pLogger->SendAndFlushWithTime(L"[IsHomed] No Axis Go Home E_GTS_HOME_FINISHED\n"); @@ -1082,7 +1081,7 @@ HSI_STATUS HSI_Motion::IsHomed(bool &bHomed) return HSI_STATUS_NORMAL; } - //判断是否需要回家 + //жǷҪؼ int Delay = 0; while (m_SO7_Serial.m_RecvData[0] != 2) { @@ -1176,7 +1175,7 @@ HSI_STATUS HSI_Motion::ZeroPos(bool bZeroPos) return rStatus; } -//JOG模式 +//JOGģʽ //=========================================================================== HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) { @@ -1206,12 +1205,12 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) m_cSendData[1] = CT_MOTOR_SET; m_cSendData[2] = AxisTypes; m_cSendData[3] = SOFT_LIMIT_POS_NEG; - m_cSendData[4] = (int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) & 0xff; + m_cSendData[4] = (int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) & 0xff;//λ m_cSendData[5] = ((int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 8) & 0xff; m_cSendData[6] = ((int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 16) & 0xff; m_cSendData[7] = ((int)(m_P_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 24) & 0xff; - m_cSendData[8] = (int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) & 0xff; + m_cSendData[8] = (int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) & 0xff; //λ m_cSendData[9] = ((int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 8) & 0xff; m_cSendData[10] = ((int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 16) & 0xff; m_cSendData[11] = ((int)(m_N_Work_Limit[AxisNumber] / m_Resolution[AxisNumber]) >> 24) & 0xff; @@ -1221,7 +1220,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) } else { - //无效软限位 + //Чλ m_cSendData[0] = CT_MOTOR; m_cSendData[1] = CT_MOTOR_SET; m_cSendData[2] = AxisTypes; @@ -1254,7 +1253,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) { if (AxisTypes == AXIS_X && m_motorType & 0x01) { - if (!bJOGDir)//负方向 + if (!bJOGDir)// { RemainPul = (int)(now_pos[1] / m_Resolution[1]) - (int)(m_N_Work_Limit[1] / m_Resolution[1]); limitSDPul = (DriveSpeed - StartSpeed) * 13; @@ -1285,7 +1284,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) } else if (AxisTypes == AXIS_Y && m_motorType & 0x02) { - if (!bJOGDir)//负方向 + if (!bJOGDir)// { RemainPul = (int)(now_pos[2] / m_Resolution[2]) - (int)(m_N_Work_Limit[2] / m_Resolution[2]); limitSDPul = (DriveSpeed - StartSpeed) * 13; @@ -1316,7 +1315,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) } if (AxisTypes == AXIS_Z && m_motorType & 0x04) { - if (!bJOGDir)//负方向 + if (!bJOGDir)// { RemainPul = (int)(now_pos[3] / m_Resolution[3]) - (int)(m_N_Work_Limit[3] / m_Resolution[3]); limitSDPul = (DriveSpeed - StartSpeed) * 13; @@ -1347,7 +1346,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) } if (AxisTypes == AXIS_U && m_motorType & 0x08) { - if (!bJOGDir)//负方向 + if (!bJOGDir)// { RemainPul = (int)(now_pos[4] / m_Resolution[4]) - (int)(m_N_Work_Limit[4] / m_Resolution[4]); limitSDPul = (DriveSpeed - StartSpeed) * 13; @@ -1426,7 +1425,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) m_cSendData[0] = CT_MOTOR; if (AxisNumber == 1 || AxisNumber == 2) { - if (!bJOGDir)//方向 + if (!bJOGDir)// { m_cSendData[1] = CT_START_JOG_NEG; } @@ -1437,7 +1436,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) } else { - if (bJOGDir)//方向 + if (bJOGDir)// { m_cSendData[1] = CT_START_JOG_POS; } @@ -1455,7 +1454,7 @@ HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed) } return rStatus; } -//JOG模式 +//JOGģʽ //=========================================================================== HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed) { @@ -1500,7 +1499,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed) } else { - //无效软限位 + //Чλ m_cSendData[0] = CT_MOTOR; m_cSendData[1] = CT_MOTOR_SET; m_cSendData[2] = AxisTypes; @@ -1537,7 +1536,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed) { if (AxisTypes == AXIS_X && m_motorType & 0x01) { - if (!bJOGDir)//负方向 + if (!bJOGDir)// { RemainPul = (int)(now_pos[1] / m_Resolution[1]) - (int)(m_N_Work_Limit[1] / m_Resolution[1]); limitSDPul = (DriveSpeed - StartSpeed) * 13; @@ -1568,7 +1567,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed) } else if (AxisTypes == AXIS_Y && m_motorType & 0x02) { - if (!bJOGDir)//负方向 + if (!bJOGDir)// { RemainPul = (int)(now_pos[2] / m_Resolution[2]) - (int)(m_N_Work_Limit[2] / m_Resolution[2]); limitSDPul = (DriveSpeed - StartSpeed) * 13; @@ -1599,7 +1598,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed) } if (AxisTypes == AXIS_Z && m_motorType & 0x04) { - if (!bJOGDir)//负方向 + if (!bJOGDir)// { RemainPul = (int)(now_pos[3] / m_Resolution[3]) - (int)(m_N_Work_Limit[3] / m_Resolution[3]); limitSDPul = (DriveSpeed - StartSpeed) * 13; @@ -1630,7 +1629,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed) } if (AxisTypes == AXIS_U && m_motorType & 0x08) { - if (!bJOGDir)//负方向 + if (!bJOGDir)// { RemainPul = (int)(now_pos[4] / m_Resolution[4]) - (int)(m_N_Work_Limit[4] / m_Resolution[4]); limitSDPul = (DriveSpeed - StartSpeed) * 13; @@ -1709,7 +1708,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed) m_cSendData[0] = CT_MOTOR; if (AxisNumber == 1 || AxisNumber == 2) { - if (!bJOGDir)//方向 + if (!bJOGDir)// { m_cSendData[1] = CT_START_JOG_NEG; } @@ -1720,7 +1719,7 @@ HSI_STATUS HSI_Motion::JoyStick(UINT AxisTypes, long Speed) } else { - if (bJOGDir)//方向 + if (bJOGDir)// { m_cSendData[1] = CT_START_JOG_POS; } @@ -1849,7 +1848,7 @@ int HSI_Motion::P2P(short AxisNumber, long Pos, double Speed, double Acc) return 0; } -//运动控制部分 +//˶Ʋ //=========================================================================== HSI_STATUS HSI_Motion::GetPositionEncPrfMulti(UINT AxisTypes, double *EncPos, double *PrfPos, int Count) { @@ -1919,7 +1918,7 @@ HSI_STATUS HSI_Motion::GetPositionXyz(UINT AxisTypes, double &PositionX, double { auto rStatus = HSI_STATUS_NORMAL; UNREFERENCED_PARAMETER(AxisTypes); - //读取3个轴的位置 + //ȡ3λ CString tempStr; if (g_pHSI_Motion) { @@ -1980,7 +1979,7 @@ HSI_STATUS HSI_Motion::GetPositionXyz(UINT AxisTypes, double &PositionX, double HSI_STATUS HSI_Motion::GetEncoderXyz(long *lEncoderVal) { auto rStatus = HSI_STATUS_NORMAL; - //读取3个轴的编码器值 + //ȡ3ıֵ if (g_pHSI_Motion) { if (m_SO7_Serial.m_RecvData[0] == 2) @@ -2112,19 +2111,19 @@ HSI_STATUS HSI_Motion::SetPositionXyz(UINT AxisTypes, double PositionX, double Pos_t[4] = NowPos[4] = (int)(m_EncPos[4] / m_Resolution[4]); } - if (m_motorType & 0x01) //步进电机 + if (m_motorType & 0x01) // Pos[1] = (int)(PositionX / m_Resolution[1]) - NowPos[1]; else Pos[1] = (int)(PositionX / m_Resolution[1]) - Pos_t[1]; - if (m_motorType & 0x02) //步进电机 + if (m_motorType & 0x02) // Pos[2] = (int)(PositionX / m_Resolution[2]) - NowPos[2]; else Pos[2] = (int)(PositionY / m_Resolution[2]) - Pos_t[2]; - if (m_motorType & 0x04) //步进电机 + if (m_motorType & 0x04) // Pos[3] = (int)(PositionX / m_Resolution[3]) - NowPos[3]; else Pos[3] = (int)(PositionZ / m_Resolution[3]) - Pos_t[3]; - if (m_motorType & 0x08) //步进电机 + if (m_motorType & 0x08) // Pos[4] = (int)(PositionX / m_Resolution[4]) - NowPos[4]; else Pos[4] = (int)(m_PositionA / m_Resolution[4]) - Pos_t[4]; @@ -2454,7 +2453,7 @@ HSI_STATUS HSI_Motion::SetPositionXyz(UINT AxisTypes, double PositionX, double } Sleep(10); - //启动插补和定位功能 + //岹Ͷλ /* if (m_motorType == 1) { send_pos_data[0] = CT_MOTOR; @@ -2617,7 +2616,7 @@ HSI_STATUS HSI_Motion::SetCircleInterpolate(double PositionX, double PositionY return rStatus; } -//探针接口 +//̽ӿ //=========================================================================== void HSI_Motion::ProbeRetractManDist(int RetractManDist) { @@ -2750,7 +2749,7 @@ HSI_STATUS HSI_Motion::JogProbe(UINT AxisTypes, double Speed) return rStatus; } -//读取配置 +//ȡ //=========================================================================== HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile) { @@ -2762,7 +2761,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile) CString temp = L""; CString strGear[5] = { L"GEAR0_", L"GEAR1_", L"GEAR2_", L"GEAR3_", L"GEAR4_" }; CString axisNum[5] = { L"0", L"1", L"2", L"3", L"4" }; - //判断Log目录是否存在,不存在就创建 + //жLogĿ¼Ƿڣھʹ if (CreateDirectory(m_AppPath + L"\\Log", NULL)) { g_pLogger->SendAndFlushWithTime(L"[Load_EF3_Motion_Inifile] Create Log Directory\n"); @@ -2775,7 +2774,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile) sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3_Motion.ini文件不存在!"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3_Motion.iniļڣ"); EventCallback(sEvenProp); return HSI_STATUS_FAILED; } @@ -2836,7 +2835,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile) m_setPositionPrecision = GetPrivateProfileInt(L"SETPOSITION", L"SETPPSITION_PRECISION", 1, csAppPath); m_setPositionNum = GetPrivateProfileInt(L"SETPOSITION", L"SETPOSITION_NUMBER", 1, csAppPath); - //两块四路光源板 + //·Դ m_isUseAport = GetPrivateProfileInt(L"COMPORT", L"IS_COM_PORT_A", 0, csAppPath); m_portAnum = GetPrivateProfileInt(L"COMPORT", L"COM_PORT_A", 0, csAppPath); m_isUseBport = GetPrivateProfileInt(L"COMPORT", L"IS_COM_PORT_B", 0, csAppPath); @@ -2909,7 +2908,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile) sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3_Config.ini文件不存在!"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3_Config.iniļڣ"); EventCallback(sEvenProp); return HSI_STATUS_FAILED; } @@ -2977,7 +2976,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile) return rStatus; } -//读取/设置光栅尺精度 +//ȡ/ùդ߾ //=========================================================================== HSI_STATUS HSI_Motion::GetScaleResolution(double &_ScaleX, double &_ScaleY, double &_ScaleZ) { @@ -3003,7 +3002,7 @@ HSI_STATUS HSI_Motion::SetScaleResolution(double _ScaleX, double _ScaleY, double return rStatus; } -//回调定位完成 +//صλ //=========================================================================== void HSI_Motion::SendMsgMotionFinished() { @@ -3014,7 +3013,7 @@ void HSI_Motion::SendMsgMotionFinished() EventCallback(sEvenProp); } -//回调探针运行 +//ص̽ //=========================================================================== void HSI_Motion::SendMsgProbeFinished() { @@ -3095,7 +3094,7 @@ void HSI_Motion::UpdateMotionState() // double ProPulse[5] = { 0.0 }; if (interpolationflag&&m_motorType) { - while (Count < m_SetPotion_Count[1])//到位次数判断 + while (Count < m_SetPotion_Count[1])//λж { Sleep(2); GetPositionXyz(HSI_MOTION_AXIS_ALL, prfpos[1], prfpos[2], prfpos[3], prfpos[0]); @@ -3122,7 +3121,7 @@ void HSI_Motion::UpdateMotionState() Count++; g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] m_SetPotion_Count = %d\n", Count); } - //if (Count == m_SetPotion_Count[1]) //超时退出 + //if (Count == m_SetPotion_Count[1]) //ʱ˳ //{ // if (g_IsClose == false) // { @@ -3131,7 +3130,7 @@ void HSI_Motion::UpdateMotionState() // sEvenProp.EventType = HSI_EVENT_ERROR; // sEvenProp.EventID = HSI_EVENT_MOTION; // sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - // strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Nowait_HSI定位超时!"); + // strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Nowait_HSIλʱ!"); // EventCallback(sEvenProp); // } // else @@ -3164,25 +3163,25 @@ void HSI_Motion::UpdateMotionState() sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Nowait_EF3定位超时!"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Nowait_EF3λʱ!"); EventCallback(sEvenProp); } switch (CurrentMotionState) { - case E_SO7_MOTION_MOVETO: - { - g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Nowait CurrentMotionState E_SO7_MOTION_MOVETO\n"); - m_Thread_State = HSI_THREAD_PAUSED; - CurrentMotionState = E_SO7_MOTION_NONE; - m_IsExMotion = 2; - SendMsgMotionFinished(); - break; - } - default: - { - g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Nowait CurrentMotionState default\n"); - break; - } + case E_SO7_MOTION_MOVETO: + { + g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Nowait CurrentMotionState E_SO7_MOTION_MOVETO\n"); + m_Thread_State = HSI_THREAD_PAUSED; + CurrentMotionState = E_SO7_MOTION_NONE; + m_IsExMotion = 2; + SendMsgMotionFinished(); + break; + } + default: + { + g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Nowait CurrentMotionState default\n"); + break; + } } } g_pLogger->SendAndFlushWithTime(L"[UpdateMotionState] Out\n"); @@ -3207,7 +3206,7 @@ void HSI_Motion::UpdateMotionStateIO() UINT recvData = 0; while (m_Thread_StateIO == HSI_THREAD_RUNNING) { - //1个脚踏开关 + //1̤ Sleep(3); GetDIO(HSI_MOTION_INPUT_CH1, m_InputStatus); if (m_IsStartInput == 1) @@ -3371,7 +3370,7 @@ void HSI_Motion::DoEvents() sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "DoEvents_异常"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "DoEvents_쳣"); EventCallback(sEvenProp); } if (g_IsClose) @@ -3445,12 +3444,12 @@ HSI_STATUS HSI_Motion::GetDIO(UINT IOChannel, UINT& _Status) { _Status = m_SO7_Serial.m_RecvData[40]; } - if (IOChannel == HSI_MOTION_INPUT_CH1) //获取通用输入 + if (IOChannel == HSI_MOTION_INPUT_CH1) //ȡͨ { _Status = m_SO7_Serial.m_RecvData[34]; _Status = (m_SO7_Serial.m_RecvData[35] | (_Status << 8)) & 0xffff; } - if (IOChannel == HSI_MOTION_OUTPUT_CH1) //获取通用输出 + if (IOChannel == HSI_MOTION_OUTPUT_CH1) //ȡͨ { _Status = m_SO7_Serial.m_RecvData[36]; _Status = (m_SO7_Serial.m_RecvData[37] | (_Status << 8)) & 0xffff; @@ -3549,7 +3548,7 @@ HSI_STATUS HSI_Motion::GetAxisStatus(int* _Status) } //=========================================================================== -//暂停和关闭 +//ͣ͹ر HSI_STATUS HSI_Motion::AbortMotion() { auto rStatus = HSI_STATUS_NORMAL; @@ -3653,7 +3652,7 @@ HSI_STATUS HSI_Motion::Shutdown() } //=========================================================================== -//触发灯光 +//ƹ HSI_STATUS HSI_Motion::SetTriggerLight(int triggleNum, int delayLighting, int delayLightBefor, int triggleMode, double* Intensities) { auto rStatus = HSI_STATUS_NORMAL; @@ -3715,7 +3714,7 @@ HSI_STATUS HSI_Motion::SetTriggerLight(int triggleNum, int delayLighting, int de return rStatus; } -//硬件触发拍照 +//Ӳ //=========================================================================== HSI_STATUS HSI_Motion::DCCPPStartPoint(double *startPoint) { @@ -3736,7 +3735,7 @@ HSI_STATUS HSI_Motion::DCCScanSetData(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType auto rStatus = HSI_STATUS_NORMAL; if (g_pHSI_Motion) { - //触发的位置为相对位置,用法一般是移动到起点位置,再开始设置触发位置(相对位置),最终设置终点位置 + //λΪλ,÷һƶλãٿʼôλ(λ)յλ g_pLogger->SendAndFlushWithTime(L"[DCCScanSetData] In\n"); int axisNum; unsigned char m_SendDCCData[64] = { 0 }; @@ -4272,7 +4271,7 @@ HSI_STATUS HSI_Motion::DCCForLightPlate() return rStatus; } -//转盘 +//ת //=========================================================================== HSI_STATUS HSI_Motion::StartPlcJob(int* CamerasDis, int* BinsDis, int SubArea, int filterTime1, int filterTime2, int pluseSumDis) { @@ -4287,7 +4286,7 @@ HSI_STATUS HSI_Motion::StartPlcJob(int* CamerasDis, int* BinsDis, int SubArea, i sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "开始前请确认当前位置大于零!"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "ʼǰȷϵǰλô㣡"); EventCallback(sEvenProp); return HSI_STATUS_FAILED; } @@ -4387,7 +4386,7 @@ HSI_STATUS HSI_Motion::GetTriggleCount(int *nCount, int& nArea) return rStatus; } //=========================================================================== -//点胶 +//㽺 HSI_STATUS HSI_Motion::GluePPSpnts(int* ppsDir, double* gluePPSPos, int* delayLightBefore, int* lightTime, double* lightData, int num) { auto rStatus = HSI_STATUS_NORMAL; @@ -4395,20 +4394,20 @@ HSI_STATUS HSI_Motion::GluePPSpnts(int* ppsDir, double* gluePPSPos, int* delayLi { unsigned char send_gluePPS_data[64] = { 0 }; send_gluePPS_data[0] = CT_GLUEDISPENSER; - send_gluePPS_data[1] = 0x01; //擦除指令 + send_gluePPS_data[1] = 0x01; //ָ m_WriteByte = Send_Command(0, (const char*)send_gluePPS_data, m_SendDataLength); Sleep(200); int posIndex = 0; int loadFeet[4]; int j = 0; - int c = 0; //触发计数 + int c = 0; // int dirType = 0; int saveDir = 0; int duanNum = 0; double triggerPnt[4]; double savePPSPnt[4]; GlueDispenserindexNum = 0; -#pragma region 拍照点 +#pragma region յ for (size_t i = 0; i < num; i++) { if (i == 0) @@ -5214,7 +5213,7 @@ HSI_STATUS HSI_Motion::GlueDispenserStart(double xOffset, double yOffset, double } return rStatus; } -void HSI_Motion::GluedispenserDone() +void HSI_Motion::GluedispenserDone()//Ϳ { if (bRunGlueDispenser == HSI_THREAD_RUNNING) { @@ -5231,7 +5230,7 @@ void HSI_Motion::GluedispenserDone() { if ((m_SO7_Serial.m_RecvData[60] & 0x0f)) { - g_pLogger->SendAndFlushWithTime(L"[GluedispenserDone] Run End Normal\n"); + g_pLogger->SendAndFlushWithTime(L"[GluedispenserDone] Run End Normal\n");//Ϳ m_SO7_Serial.m_RecvData[60] = 0; break; } @@ -5274,7 +5273,7 @@ HSI_STATUS HSI_Motion::GetPntsDistance(double& pDistance, int& spTimeCount) return rStatus; } //=========================================================================== -//运动控制参数读取及设置 +//˶Ʋȡ //=========================================================================== int HSI_Motion::SpeedPercent(int AxisNum, double &Speed, int &DirveSpeed, int &StartSpeed, int &AccLine, int &DecLine, int &AccCurve, int &DecCurve) { @@ -5338,7 +5337,7 @@ int HSI_Motion::SpeedPercent(int AxisNum, double &Speed, int &DirveSpeed, int &S return (int)Speed; } //=========================================================================== -//JoyStick运动控制参数读取及设置 +//JoyStick˶Ʋȡ //=========================================================================== bool HSI_Motion::SpeedPercentJoyStick(int AxisNum, long &Speed, int &DirveSpeed, int &StartSpeed, int &AccLine, int &DecLine, int &AccCurve, int &DecCurve) { @@ -5505,7 +5504,7 @@ double HSI_Motion::LimitOver(UINT AxisTypes, double &LimitPos) { switch (AxisNumber) { - case 1: //轴1 + case 1: //1 { if (LimitPos >= m_P_Work_Limit[1]) { @@ -6180,7 +6179,7 @@ unsigned __stdcall HSI_Motion::m_ThreadData(LPVOID pThis) case HSI_THREAD_RUNNING: { TRACE("HSI_THREAD_RUNNING.\r\n"); - _This->UpdateMotionStateData(); + _This->UpdateMotionStateData();//ȡλ break; } case HSI_THREAD_PAUSED: @@ -6201,7 +6200,7 @@ unsigned __stdcall HSI_Motion::m_ThreadData(LPVOID pThis) } //=========================================================================== -//JOG运行到软限位的运动调节 +//JOGеλ˶ //=========================================================================== void HSI_Motion::UpdateMotionStateJOGStop() { @@ -6311,7 +6310,7 @@ void HSI_Motion::UpdateMotionStateJOGStop() case 4: { - //第四轴未添加 + //δ } break; default: break; @@ -6321,7 +6320,7 @@ void HSI_Motion::UpdateMotionStateJOGStop() } } //=========================================================================== -void HSI_Motion::CreateThreadJOGStop() +void HSI_Motion::CreateThreadJOGStop() //JOGеλ˶ { if (m_Thread_IdJOGStop == NULL) { @@ -6365,7 +6364,7 @@ void HSI_Motion::CloseThreadJOGStop() } //=========================================================================== -unsigned __stdcall HSI_Motion::m_ThreadJOGStop(LPVOID pThis) +unsigned __stdcall HSI_Motion::m_ThreadJOGStop(LPVOID pThis) //JOGеλ˶ { HSI_Motion* _This = (HSI_Motion*)pThis; for (;;) @@ -6399,7 +6398,7 @@ unsigned __stdcall HSI_Motion::m_ThreadJOGStop(LPVOID pThis) } } //=========================================================================== -//无用 +// HSI_STATUS HSI_Motion::IOStep(bool RunSts) { auto rStatus = HSI_STATUS_NORMAL; @@ -6465,7 +6464,7 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3控制器已断开连接"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "EF3ѶϿ"); EventCallback(sEvenProp); } } @@ -6481,7 +6480,7 @@ BOOL HSI_Motion::Send_Command(int com, const char* _SendData, DWORD SendDataLeng ///////////////////////////////////////////////////////////////////////// -#pragma region //网口通信8路 26路光源板通信 +#pragma region //ͨ8· 26·Դͨ #pragma warning(disable:4996) TCPIP_RETURN_CODE HSI_Motion::TCPConnect(int index, char* Address, u_short port) @@ -6505,7 +6504,7 @@ TCPIP_RETURN_CODE HSI_Motion::TCPConnect(int index, char* Address, u_short port) { int iMode = 1; int i = 0; - int retVal = ioctlsocket(m_socket[index], FIONBIO, (u_long FAR*)&iMode);//非阻塞连接 + int retVal = ioctlsocket(m_socket[index], FIONBIO, (u_long FAR*)&iMode);// if (retVal == SOCKET_ERROR) { closesocket(m_socket[index]); @@ -6545,7 +6544,7 @@ TCPIP_RETURN_CODE HSI_Motion::TCPConnect(int index, char* Address, u_short port) } } iMode = 0; - retVal = ioctlsocket(m_socket[index], FIONBIO, (u_long FAR*)&iMode);//设置阻塞 + retVal = ioctlsocket(m_socket[index], FIONBIO, (u_long FAR*)&iMode);// if (retVal == SOCKET_ERROR) { closesocket(m_socket[index]); @@ -6680,7 +6679,7 @@ TCPIP_RETURN_CODE HSI_Motion::TCPSend() sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "光源板已断开连接"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "ԴѶϿ"); EventCallback(sEvenProp); m_ThreadTCP_State = TCPIP_THREAD_EXIT; closesocket(m_socket[m_selectedIndex]); @@ -6723,7 +6722,7 @@ TCPIP_RETURN_CODE HSI_Motion::TCPSend() sEvenProp.EventType = HSI_EVENT_ERROR; sEvenProp.EventID = HSI_EVENT_MOTION; sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; - strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "光源板已断开连接"); + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "ԴѶϿ"); EventCallback(sEvenProp); m_ThreadTCP_State = TCPIP_THREAD_EXIT; closesocket(m_socket[m_selectedIndex]); @@ -6845,7 +6844,7 @@ HSI_STATUS HSI_Motion::SetAllGears() unsigned char send_glue_data[64] = { 0 }; send_glue_data[0] = 0x01; send_glue_data[1] = 0x01; - send_glue_data[2] = 0x01 << (i - 1); //轴号 + send_glue_data[2] = 0x01 << (i - 1); // send_glue_data[3] = 0x08; for (size_t j = 0; j < 5; j++) diff --git a/HSI_HexagonMI_EF3/HSI_Motion.h b/HSI_HexagonMI_EF3/HSI_Motion.h index e190bbc..e4bdff2 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.h +++ b/HSI_HexagonMI_EF3/HSI_Motion.h @@ -16,7 +16,7 @@ const double SCALE_UNITS = 1000.0; static CLogger* g_pLogger; static CLogger* g_pLogger2; -static bool g_IsClose;//用于DoEvents()的退出,而不异常 +static bool g_IsClose;//DoEvents()˳쳣 enum E_SO7_MOTION_TYPE { @@ -27,23 +27,23 @@ 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 //第一级指令 +enum FUN_CMD //һָ { CT_MOTOR = 0x01, //MOTOR CT_LIGHT, //LIGHT CT_PORT, //PORT CT_ORDER, //ORDER CT_SOFTSTOP, //STOP - CT_GLUEDISPENSER, //点胶 + CT_GLUEDISPENSER, //㽺 CT_TURNTABLE, }; -enum MOTOR_CMD //第二级指令 +enum MOTOR_CMD //ڶָ { CT_MOTOR_SET = 0x01, CT_START_JOG_POS, // @@ -63,7 +63,7 @@ enum MOTOR_CMD //第二级指令 CT_GLUEDISPENSER_CLEAR, CT_GLUEDISPENSER_START, CT_GLUEDISPENSER_STOP, - //转盘时启用 + //תʱ CT_RTSET, CT_BINSDATA, CT_RTSTOP, @@ -72,13 +72,13 @@ enum MOTOR_CMD //第二级指令 enum MOTOR_START_POSOTION // { - INTERPOLATION = 0x61,//插补 - GANGED = 0x41,//独立 + INTERPOLATION = 0x61,//岹 + GANGED = 0x41,// CIRCLER = 0x64, CIRCLEL = 0x65, }; -enum MOTOR_AXISCHOOES_CMD //第三级指令 +enum MOTOR_AXISCHOOES_CMD //ָ { AXIS_X = 0x01, AXIS_Y = 0x02, @@ -97,7 +97,7 @@ enum MOTOR_AXISCHOOES_CMD //第三级指令 AXIS_XYZU = 0x0f, }; -enum MOTOR_SET_KIND //第四级指令 +enum MOTOR_SET_KIND //ļָ { JOG_SPEED_ACC_DEC, POSITION_SPEED_ACC_DEC_POS, @@ -235,28 +235,28 @@ public: static HANDLE m_Thread_Id; static HANDLE m_Thread_Mutex; static HANDLE m_hTriggerEvent; - //用于IO发消息的线程 + //IOϢ߳ static int m_Thread_StateIO; static HANDLE m_Thread_IdIO; static HANDLE m_Thread_MutexIO; static HANDLE m_hTriggerEventIO; - //读取EF3的数据状态 + //ȡEF3״̬ static int m_Thread_StateData; static HANDLE m_Thread_IdData; static HANDLE m_Thread_MutexData; static HANDLE m_hTriggerEventData; - //读取EF3的探针状态 + //ȡEF3̽״̬ static int m_Thread_StateProbe; static HANDLE m_Thread_IdProbe; static HANDLE m_Thread_MutexProbe; static HANDLE m_hTriggerEventProbe; - //点胶运行状态 + //㽺״̬ static int bRunGlueDispenser; - //读取EF3的JOG stop的状态 + //ȡEF3JOG stop״̬ static int m_Thread_StateJOGStop; static HANDLE m_Thread_IdJOGStop; static HANDLE m_Thread_MutexJOGStop; @@ -266,16 +266,16 @@ public: static HANDLE g_WR_ToMove_Mutex; static HANDLE g_Lock_JogAndTrigger; - double m_Resolution[5];//从1开始,0不用 - double m_N_Work_Limit[5]; //负限位 - double m_P_Work_Limit[5]; //正限位 + double m_Resolution[5];//1ʼ,0 + double m_N_Work_Limit[5]; //λ + double m_P_Work_Limit[5]; //λ int m_Home_AddJogGears[5]; int m_Home_DecJogGears[5]; int m_Home_Time[5]; int m_SetPotion_Count[5]; - //定位参数 + //λ int m_SetPotion_StartSpeed[5]; int m_SetPotion_DriveSpeed[5]; int m_SetPotion_Line[5]; @@ -288,129 +288,129 @@ public: int m_stepPosition_H_speed[10]; int m_stepPosition_Load[10]; int m_stepPosition_acc[10]; - double m_PositionA;//第四轴的地位位置 + double m_PositionA;//ĵλλ - //jog参数 - int m_JogDriveSpeed[5][5];//5:轴号,从1开始;5:档位 + //jog + int m_JogDriveSpeed[5][5];//5,1ʼ5λ int m_JogStartSpeed[5][5]; int m_JogAccLine[5][5]; int m_JogDecLine[5][5]; int m_JogAccCurve[5][5]; int m_JogDecCurve[5][5]; - int m_Jog_Auto_Focus;//变焦使用的速度 + int m_Jog_Auto_Focus;//佹ʹõٶ - int m_LogIsOpen[5];//是否打开记录,0为打开,非0为关闭 + int m_LogIsOpen[5];//Ƿ򿪼¼0Ϊ򿪣0Ϊر unsigned int m_precisionCount[5]; unsigned int m_precisionTime[5]; - int m_StopJogMode[5];//JOG模式采用急停还是平滑停止 - double m_PosThread[5];//SetpositionXyz的目标位置 - int m_PosNow[5];//调用SetpositionXyz时,读取当前位置 + int m_StopJogMode[5];//JOGģʽüͣƽֹͣ + double m_PosThread[5];//SetpositionXyzĿλ + int m_PosNow[5];//SetpositionXyzʱȡǰλ double targetpos_n[5]; double targetpos_l[5]; short m_AxisThread; - int m_IsExMotion; //0是xyz用的,1是单轴用的,2都不用 - int m_Home_Machine_Axis[5];//用于启动时需要回原点的轴号选择 - int m_Home_Pos_Axis[5];//记住关闭电源时的位置,用于判断是否还需要回原点 - int m_IsHomeEncPos; //是否启动实际位置判断是否回家,默认0,1启用,0关闭 - int m_IsHomePrfPos; //是否启动规划位置判断是否回家,默认1,1启用,0关闭 + int m_IsExMotion; //0xyzõģ1ǵõģ2 + int m_Home_Machine_Axis[5];//ʱҪԭѡ + int m_Home_Pos_Axis[5];//סرյԴʱλãжǷҪԭ + int m_IsHomeEncPos; //ǷʵλжǷؼңĬ01ã0ر + int m_IsHomePrfPos; //Ƿ滮λжǷؼңĬ11ã0ر - int m_IsIOFuntion;//是否启动IO功能,1为打开,0为关闭 - int m_IsStartInput;//是否启用脚踏开关功能,1为启用,0为关闭,默认0 - UINT m_StartInputPort;//外部输入按钮启动程序 + int m_IsIOFuntion;//ǷIOܣ1Ϊ򿪣0Ϊر + int m_IsStartInput;//Ƿý̤عܣ1Ϊã0ΪرգĬ0 + UINT m_StartInputPort;//ⲿ밴ť UINT m_InputStatus; UINT m_ForStatus; - int m_Set_XYZA_Reserve;//XYZA轴方向 - int m_motorType;//电机类型 1为伺服电机 0为步进电机 - int m_setPositionDelay;//设置定位超时 - int m_setPositionPrecision;//设置定位精度 + int m_Set_XYZA_Reserve;//XYZA᷽ + int m_motorType;// 1Ϊŷ 0Ϊ + int m_setPositionDelay;//öλʱ + int m_setPositionPrecision;//öλ int m_setPositionNum; CString m_AppPath; - //MST软件运行标志,trueMST软件已经启动,falseMST软件停止 + //MSTб־trueMSTѾfalseMSTֹͣ bool m_MSTRunFlag; - int m_IsUse_HSICompensation;//是否启用HSI进行定位补偿 0为不启用 1为启用 默认为0 - int m_Compensation_Pluse;//补偿脉冲数 - int m_IsHardLimit; //设备轴硬限位设置 为0表示所有轴都为软限位 1为X轴为硬限位 2为Y轴 3为XY轴 4为Z轴 7为XYZ轴 默认为7 - int m_IsEnableAxis; //设备启用轴设置 为0表示所有轴不启用 1为X轴启用 2为Y轴启用 3为XY轴启用 4为Z轴启用 7为XYZ轴启用 默认为7 - int m_IsUseExternalTrigger; //是否启用外触发功能 0为不启用 1为启用 默认为1 - int m_IsUseSixRingEightArea; //是否启用六环八区灯功能 0为不启用 1为启用 2为二环八区灯 默认为0 - int m_SixEightSubArea[8]; //六环八区分区功能 - int m_IsUseTwentySixLight;//是否启用26路灯光 0为不启用 1位启用 默认为0 - int m_IsUseEF3;//是否启用EF3 - int m_DeviceType;//设备类型,0为通用设备,1为三激光, 2为大视野,3为转盘设备 默认为0 - int m_UseAxisNum;//转盘设备使用轴号 - int m_IbinCount;//记录获取到的分bin数 + int m_IsUse_HSICompensation;//ǷHSIжλ 0Ϊ 1Ϊ ĬΪ0 + int m_Compensation_Pluse;// + int m_IsHardLimit; //豸Ӳλ Ϊ0ʾᶼΪλ 1ΪXΪӲλ 2ΪY 3ΪXY 4ΪZ 7ΪXYZ ĬΪ7 + int m_IsEnableAxis; //豸 Ϊ0ʾ᲻ 1ΪX 2ΪY 3ΪXY 4ΪZ 7ΪXYZ ĬΪ7 + int m_IsUseExternalTrigger; //Ƿⴥ 0Ϊ 1Ϊ ĬΪ1 + int m_IsUseSixRingEightArea; //Ƿƹ 0Ϊ 1Ϊ 2Ϊ ĬΪ0 + int m_SixEightSubArea[8]; // + int m_IsUseTwentySixLight;//Ƿ26·ƹ 0Ϊ 1λ ĬΪ0 + int m_IsUseEF3;//ǷEF3 + int m_DeviceType;//豸ͣ0Ϊͨ豸1Ϊ, 2ΪҰ3Ϊת豸 ĬΪ0 + int m_UseAxisNum;//ת豸ʹ + int m_IbinCount;//¼ȡķbin bool m_IsUsePPS; - int m_iJoyStick;//遥感类型:0:无 1:老式摇杆 + int m_iJoyStick;//ңͣ0 1ʽҡ int m_bISUseMoreLights; int m_EF3LightType; int m_LightType; int m_IsUseFourthSpeed; - CString m_IsOpenTCPIP[4];//可提供的tcp通信的ip + CString m_IsOpenTCPIP[4];//ṩtcpͨŵip bool m_tcpCntFlag[4]; int m_selectedIndex; - bool m_Led8MotionFlag[4];//是否为8路光源板 - int m_IsHavePattern;//是否有光栅 - int m_AxisHomeDirection;//轴回家时的方向 - int m_IsUseJerk;//是否启用急停 0为不启用 1为启用 - DWORD t_start;//获取jog运行的开始时间 - DWORD t_end;//获取jog运行的结束时间 - DWORD set_start;//获取定位运行开始时间 - DWORD set_end;//获取定位运行结束时间 - //是否启用探针捕获功能,1启用,默认0关闭 + bool m_Led8MotionFlag[4];//ǷΪ8·Դ + int m_IsHavePattern;//Ƿйդ + int m_AxisHomeDirection;//ؼʱķ + int m_IsUseJerk;//Ƿüͣ 0Ϊ 1Ϊ + DWORD t_start;//ȡjogеĿʼʱ + DWORD t_end;//ȡjogеĽʱ + DWORD set_start;//ȡλпʼʱ + DWORD set_end;//ȡλнʱ + //Ƿ̽벶ܣ1ãĬ0ر int m_IsProbe; - //探针触发时,锁存的轴号,默认3表示锁存XYZ共3轴,4表示XYZA共4轴 + //̽봥ʱţĬ3ʾXYZ3ᣬ4ʾXYZA4 int m_ProbeAllAxis; - long m_ProbeCapturePos[5];//锁存各轴的位置 - double m_ProbeReturnPos;//探针触发时,调试时返回的距离mm,点击启动按钮时不起作用,默认10.0mm - int m_ProbeReturnSpeed;//探针触发后,轴的回退速度 - int m_isOKGlint; //是否开启ok/ng闪烁 - int m_ETIPort;//外部触发拍照输入端口号 - int m_axisStatus;//运动各轴的状态 - int m_axisAlarmStatus;//轴报警状态 - int m_EF3COMPort;//EF3板com口,默认为2 - int m_ForSoft;//针对使用软件 0为MST 1为Metus - int m_IsUseManualRunin;//是否开启手动插补(只针对步进电机) + long m_ProbeCapturePos[5];//λ + double m_ProbeReturnPos;//̽봥ʱʱصľmmťʱ,Ĭ10.0mm + int m_ProbeReturnSpeed;//̽봥Ļٶ + int m_isOKGlint; //Ƿok/ng˸ + int m_ETIPort;//ⲿ˿ں + int m_axisStatus;//˶״̬ + int m_axisAlarmStatus;//ᱨ״̬ + int m_EF3COMPort;//EF3comڣĬΪ2 + int m_ForSoft;//ʹ 0ΪMST 1ΪMetus + int m_IsUseManualRunin;//Ƿֶ岹ֻԲ - int m_IsUseRocker; //是否启用摇杆 0为不启用 1为启用旧摇杆,2为新摇杆, 默认为0 - int m_IsCollectPos; //是否通过串口打印位置,与摇杆2互斥 + int m_IsUseRocker; //Ƿҡ 0Ϊ 1Ϊþҡˣ2Ϊҡˣ ĬΪ0 + int m_IsCollectPos; //Ƿͨڴӡλãҡ2 int m_IsCloseRocker; - int m_IsLightDebug;//是否不回家也能调试灯光 0为不启用 1为启用 默认为0 - int m_rockerHStartSpeed[4];//摇杆XYZ轴高初始速度 - int m_rockerHDriveSpeed[4];//摇杆XYZ轴高驱动速度 - int m_rockerLStartSpeed[4];//摇杆XYZ轴低初始速度 - int m_rockerLDriveSpeed[4];//摇杆XYZ轴低驱动速度 - int m_rockerASpeed[4]; //XYZ轴加减速1 - int m_rockerDSpeed[4]; //XYZ轴加减速2 - int m_SaveAxisNum;//保存轴号 - int m_SaveAxisSpeed;//保存速度 + int m_IsLightDebug;//Ƿ񲻻ؼҲܵԵƹ 0Ϊ 1Ϊ ĬΪ0 + int m_rockerHStartSpeed[4];//ҡXYZ߳ʼٶ + int m_rockerHDriveSpeed[4];//ҡXYZٶ + int m_rockerLStartSpeed[4];//ҡXYZͳʼٶ + int m_rockerLDriveSpeed[4];//ҡXYZٶ + int m_rockerASpeed[4]; //XYZӼ1 + int m_rockerDSpeed[4]; //XYZӼ2 + int m_SaveAxisNum;// + int m_SaveAxisSpeed;//ٶ bool bSaveSpeedFlag; bool fourthAxisFlag; - bool bCircleRun;//圆弧插补 - int iCircleRunPnt[5];//圆弧插补时的圆心位置 - int jogAxisNum;//jog运动的轴号 + bool bCircleRun;//Բ岹 + int iCircleRunPnt[5];//Բ岹ʱԲλ + int jogAxisNum;//jog˶ int jogspeed; bool jogMoving; bool jogDirFlag; bool m_bEmergencyState; - bool bUseGlueDispenser;//是否开启点胶 + bool bUseGlueDispenser;//Ƿ㽺 int m_iGlueStartSpeed; int m_iGlueDriveSpeed; int m_iGlueAccSpeed; - int GlueDispenserindexNum;//点胶段数 + int GlueDispenserindexNum;//㽺 int GluerunCount; int m_iSpeedType; - int m_axisDirX;//探针运动时X轴的运动方向 - int m_axisDirY;//探针运动时Y轴的运动方向 - int m_axisDirZ;//探针运动时Z轴的运动方向 + int m_axisDirX;//̽˶ʱX˶ + int m_axisDirY;//̽˶ʱY˶ + int m_axisDirZ;//̽˶ʱZ˶ int m_probeSeekSpeed; - int m_isUseAport;//A串口 + int m_isUseAport;//A int m_portAnum; - int m_isUseBport;//B串口 + int m_isUseBport;//B int m_portBnum; int SpCompleteTStart; @@ -426,7 +426,7 @@ public: double m_EncPos[5]; double m_PrfPos[5]; - double m_PosForAllAxis[5];//记录4轴位置 + double m_PosForAllAxis[5];//¼4λ bool m_bConnected; int m_SendDataLength; unsigned char m_cSendData[64]; @@ -442,13 +442,13 @@ public: DWORD m_RecvDataSize; E_EF3_HOME_STATUS CurrentHomeMachineState; - //刷新探针状态 + //ˢ̽״̬ static unsigned __stdcall m_ThreadProbe(LPVOID pThis); void CreateThreadProbe(); void CloseThreadProbe(); void UpdateMotionStateProbe(); - //刷新位置状态 + //ˢλ״̬ static unsigned __stdcall m_Thread(LPVOID pThis); void CreateThread(); void CloseThread(); @@ -456,19 +456,19 @@ public: void UpdateMotionStateEx(); void GluedispenserDone(); - //IO发消息使用 + //IOϢʹ static unsigned __stdcall m_ThreadIO(LPVOID pThis); void CreateThreadIO(); void CloseThreadIO(); void UpdateMotionStateIO(); - //读取EF3的数据状态 + //ȡEF3״̬ static unsigned __stdcall m_ThreadData(LPVOID pThis); void CreateThreadData(); void CloseThreadData(); void UpdateMotionStateData(); - //读取EF3的JOG位置 以便停止JOG运动 + //ȡEF3JOGλ ԱֹͣJOG˶ static unsigned __stdcall m_ThreadJOGStop(LPVOID pThis); void CreateThreadJOGStop(); void CloseThreadJOGStop(); @@ -496,12 +496,12 @@ private: int iScanMotionType; int iTriggleNum; int iMotionDirection; - int begin_position[5]; //外触发到初始点需要发送的脉冲数 + int begin_position[5]; //ⴥʼҪ͵ HINSTANCE m_Hinst; E_SO7_MOTION_TYPE CurrentMotionState; E_SO7_MOTION_READ_TYPE CurrentReadDataType; - //网口通信添加 + //ͨ private: TCPIP_RETURN_CODE TCPConnect(int index,char* Address, u_short port); void DisConnect(); @@ -525,9 +525,9 @@ private: unsigned char lightdata[64]; int LightSend; public: - HSI_STATUS CollectPos(bool isEnable, MOTOR_AXISCHOOES_CMD axis, short cycle); //位置采集打开/关闭 + HSI_STATUS CollectPos(bool isEnable, MOTOR_AXISCHOOES_CMD axis, short cycle); //λòɼ/ر private: - HSI_STATUS SetAllGears(); //下发所有档位数据 + HSI_STATUS SetAllGears(); //·еλ }; extern HSI_Motion *g_pHSI_Motion; diff --git a/HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.cpp b/HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.cpp index e877fa1..e023c44 100644 --- a/HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.cpp +++ b/HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.cpp @@ -1,4 +1,4 @@ -// HSI_Sevenocean_EF3.cpp : 定义 DLL 的初始化例程。 +// HSI_Sevenocean_EF3.cpp : DLL ijʼ̡ // #include "stdafx.h" @@ -30,10 +30,10 @@ HSI_Sevenocean_EF3::~HSI_Sevenocean_EF3() } //=========================================================================== /** - * HSI 初始化 + * HSI ʼ * - * \param _hWnd :消息传输句柄 - * \param _bOfflineOnly :暂无用,默认 False + * \param _hWnd Ϣ + * \param _bOfflineOnly ãĬ False * \return */ HSI_STATUS HSI_Sevenocean_EF3::Startup(HWND _hWnd, bool _bOfflineOnly) diff --git a/HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.h b/HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.h index a60de67..076a614 100644 --- a/HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.h +++ b/HSI_HexagonMI_EF3/HSI_Sevenocean_EF3.h @@ -1,13 +1,13 @@ -// HSI_Sevenocean_EF3.h : HSI_Sevenocean_EF3 DLL 的主头文件 +// HSI_Sevenocean_EF3.h : HSI_Sevenocean_EF3 DLL ͷļ // #pragma once #ifndef __AFXWIN_H__ -#error "在包含此文件之前包含“stdafx.h”以生成 PCH 文件" +#error "ڰļ֮ǰstdafx.h PCH ļ" #endif -#include "resource.h" // 主符号 +#include "resource.h" // #include diff --git a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.CPP b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.CPP index d6162ad..3299fd8 100644 --- a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.CPP +++ b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_BASE.CPP @@ -1,4 +1,5 @@ -#include "stdafx.h" +#include "../stdafx.h" + #include "cmmio_base.h" #ifdef _WIN64 diff --git a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP index afbdcc9..5617e2d 100644 --- a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP +++ b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP @@ -1,4 +1,4 @@ -#include "stdafx.h" +#include "../stdafx.h" #include @@ -170,7 +170,7 @@ DWORD CPSerial::Open() if( SetCommMask( m_PortHandle, EV_RXCHAR | EV_TXEMPTY | EV_BREAK | EV_CTS | EV_DSR | EV_ERR | EV_RLSD ) ) { - // Initialise the Overlapping structures and start the + // Initialize the Overlapping structures and start the // monitoring task m_ReceiveOLap.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL ); m_TransmitOLap.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL ); diff --git a/HSI_HexagonMI_EF3/logger.cpp b/HSI_HexagonMI_EF3/logger.cpp index 020071a..a789e44 100644 --- a/HSI_HexagonMI_EF3/logger.cpp +++ b/HSI_HexagonMI_EF3/logger.cpp @@ -2,6 +2,7 @@ #include "logger.h" #include #include + void CLogger::SendAtTime(const TCHAR* buffer) { EnterCriticalSection(&m_lockLogger); diff --git a/HSI_HexagonMI_EF3/logger.h b/HSI_HexagonMI_EF3/logger.h index 3277691..e5e4131 100644 --- a/HSI_HexagonMI_EF3/logger.h +++ b/HSI_HexagonMI_EF3/logger.h @@ -50,7 +50,7 @@ public: void SendAndFlush(LPCTSTR, ...); void SendAndFlushPerMode(LPCTSTR, ...); void SendAndFlushWithTime(LPCTSTR, ...); - bool IsEnabledLog/* = false*/;//Ƿ־ + bool IsEnabledLog/* = false*/;//�Ƿ�������־ CString m_FileName; long m_lLogMask; FILE *m_File; diff --git a/HSI_HexagonMI_EF3/resource.h b/HSI_HexagonMI_EF3/resource.h index 7bed6f0..014ede3 100644 --- a/HSI_HexagonMI_EF3/resource.h +++ b/HSI_HexagonMI_EF3/resource.h @@ -1,8 +1,8 @@ -//{{NO_DEPENDENCIES}} +//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by HSI_Sevenocean_EF3.rc -// 新对象的下一组默认值 +// ¶һĬֵ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS diff --git a/HSI_HexagonMI_EF3/stdafx.cpp b/HSI_HexagonMI_EF3/stdafx.cpp index 9d90014..3f80e8e 100644 --- a/HSI_HexagonMI_EF3/stdafx.cpp +++ b/HSI_HexagonMI_EF3/stdafx.cpp @@ -1,8 +1,8 @@ -// stdafx.cpp : 只包括标准包含文件的源文件 -// HSI_Sevenocean_EF3.pch 将作为预编译头 -// stdafx.obj 将包含预编译类型信息 +// stdafx.cpp : ֻ׼ļԴļ +// HSI_Sevenocean_EF3.pch ΪԤͷ +// stdafx.obj ԤϢ #include "stdafx.h" -// TODO: 在 STDAFX.H 中 -// 引用任何所需的附加头文件,而不是在此文件中引用 +// TODO: STDAFX.H +// κĸͷļڴļ diff --git a/HSI_HexagonMI_EF3/stdafx.h b/HSI_HexagonMI_EF3/stdafx.h index 6851942..ee9627a 100644 --- a/HSI_HexagonMI_EF3/stdafx.h +++ b/HSI_HexagonMI_EF3/stdafx.h @@ -1,17 +1,14 @@ -// stdafx.h : 标准系统包含文件的包含文件, -// 或是经常使用但不常更改的 -// 特定于项目的包含文件 +// stdafx.h : ׼ϵͳļİļ +// Ǿʹõĵ +// ضĿİļ // #pragma once #include "targetver.h" -#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的信息 -// Windows 头文件: +#define WIN32_LEAN_AND_MEAN // Windows ͷļųʹõϢ +// Windows ͷļ: //#include #include - - - -// TODO: 在此处引用程序需要的其他头文件 +// TODO: ڴ˴óҪͷļ diff --git a/HSI_HexagonMI_EF3/version.h b/HSI_HexagonMI_EF3/version.h index 1841582..2956bb3 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.09.30 / 10:33 " -#define HSI_FILE_CSDESCRIPTION _T("2022.09.30 / 10:33 ") +#define HSI_FILE_DESCRIPTION "2022.10.10 / 9:43 " +#define HSI_FILE_CSDESCRIPTION _T("2022.10.10 / 9:43 ") diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/CL.command.1.tlog b/HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/CL.command.1.tlog index 9869019e05871188baafccd1d3912a386c841969..cd31da01893cc555e1001f505eda01e956d61e8e 100644 GIT binary patch delta 92 zcmaE7*=4%n2-{>9<`0{tI6g6f7?Y(q6efS;keKYp(Y9HER}3WhZn6Te#N>G*J)89e dxgY}jWY{L_3G!^7C$a=4z_EFr#2FaJ008zOAddh5 delta 122 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 F7XViba7O?D diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/link.command.1.tlog b/HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/link.command.1.tlog deleted file mode 100644 index 7e93b17f96f8b43cf537d509d31c121d27b7bca5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4190 zcmdUyOK;Oa5Xa|?#CM2t0S=@jrKLpT5ZiqioW!b=)|H}0JW^EA7DQ-Ih_A+1;=mdB z{dXGz#ig}Ri7fBhvopK%+Ijr^acG;?wvp{H=hm@p>s!xK+hu+ZEVO}TthekDZ_6Gs zuQ7hV`1)n-y#021_$?b*VqIWei!I_wpxbA!U1sf^0UuvELAYbqw`>)h+}7gGLsgb8n|*;d6{{^zqHu`Rnp4;EjF1g^JvZ!EAljNw?3FVU`A*oVGj70KMv4F3VsS~z7p}L2(Ao}U*ap$ zi|)^e-D1CH1-ez}o>ru5l7-51suM*yuFP+^Z&4{ev1cpuBg+!s|UWo?u@zo_CFIT5+a z%@y4c%JP!tRBei^Lq=ubveK&3Ore|Cb>*}*qxX@$EbZJs=6tVkJC%!LJZ_U)HgHk( zDr^W&=<>#iP3(gA#GctbdudZB&w#wQcR)V^tJ%37ga4Xm!ur%<9)Wwp_XLc(JL43{ z8JI^7>l3?A?9^T{zA0Qk2Kxhh3$yOH8KFzn>)VVSfFn%yU2Y*1f6AZn}X zR+i|qqPrz2_kd+sQdO$*fwFBbK2Yub)Mdn66CF2LT=xS-qgDmb%8}RMYVMi Y-rs%N^%%t+(*N*p)0-60Usq@U0_nee`Tzg` diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/link.read.1.tlog b/HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/link.read.1.tlog deleted file mode 100644 index e2201a32d63d63d9307191b5b040b85786b0ceb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13346 zcmds;%Wl&^6ozMw#5;5e3!)~yK)XxqBn^%2D7ITuMa_~2K(Io*8n48HHSqm2a$TnZ za;emrs*1-RkL~}QIdiVl-@k6n(43ovxuC5~-;7OWQZqAi+V}KDrZ748d*+Z|&%B{M z;rR2*_irbk&p&>;{gE%s)FkvJW@2LgraX7eyXLfdb58$q%f01rl214C%N_?ZH|1zaCn4%snNbPFW|d$htqLmDCr|h2aK9n&6RWh ziYMNolU_6Kn*NmcWSr^VCD%?TcF~2>eG_!j!sx1Fe_eA%drXh67wEHuW3A&Z7$0-T zJ@@o@B#{LeXYgSLw)@C@(6TX@WJzR+sylAiT(7wrW1C{j@rJJASF43&l)omyHCHdG3(u>|tD75|615-MxW!nJ1=F<-cmfzX%WZ%19>L-$jW7Dj=FB}%ls&0<#>^OVhqnR=%uoRq1K>zf7>$EMatTCIRTtvBV==&G~INn_>85&O`Ny^U~8p&vc^0q`0Km6PYhk zvFf*q!WjQhyO|VS?!FRzrLc~N6+`;vn>&4|SXg_hcISLsukIf+XvbQQT`hk3Cz?kg z(++)%3LU@!7s`J#PMYw(qwPjG5oe%s}eNC(!DMxj~ z`<#wZ%rFf&zcXNlQaE#gG>XcaLv^ct?1 zECFqYSx{|x`~2GD;g};!yW{X>4cC1Cn;b;Mdc~d8H(d9%`Xn8sES+`_&5+i?4l?4) p+-#DAZRaHA1I6}#N}fCQjradAn%k>=olcMJ-q)Vhb@#LOe*o4$y5s-= diff --git a/HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/link.write.1.tlog b/HSI_HexagonMI_EF3/x64/Debug/HSI_Hexa.ECCF081D.tlog/link.write.1.tlog deleted file mode 100644 index 46fbad9485cfa2e6818f914a390e808d5f87f259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1864 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 - -