引入ACS库,代码格式整理

This commit is contained in:
zhengxuan.zhang
2022-10-12 10:18:46 +08:00
parent 6d2b284f36
commit 82115577c2
40 changed files with 9905 additions and 3556 deletions
+19 -2
View File
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15 # Visual Studio Version 17
VisualStudioVersion = 15.0.28307.2017 VisualStudioVersion = 17.3.32922.545
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HSI_Sevenocean_EF1", "..\EF3-Interfac\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\HSI_Sevenocean_EF1\HSI_Sevenocean_EF1.vcxproj", "{09F6ECED-CD30-4ACA-BD5E-FFB4F53C353A}" Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HSI_Sevenocean_EF1", "..\EF3-Interfac\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\HSI_Sevenocean_EF1\HSI_Sevenocean_EF1.vcxproj", "{09F6ECED-CD30-4ACA-BD5E-FFB4F53C353A}"
EndProject EndProject
@@ -18,6 +18,11 @@ EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFSerialAssistant", "SerialAssistant\WPFSerialAssistant\WPFSerialAssistant.csproj", "{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFSerialAssistant", "SerialAssistant\WPFSerialAssistant\WPFSerialAssistant.csproj", "{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HSI_SEVENOCEAN_EF1_CsTest", "HSI_SEVENOCEAN_EF1_CsTest\HSI_SEVENOCEAN_EF1_CsTest.csproj", "{7ED499CB-651C-4154-9741-EEF347BDBFB5}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HSI_SEVENOCEAN_EF1_CsTest", "HSI_SEVENOCEAN_EF1_CsTest\HSI_SEVENOCEAN_EF1_CsTest.csproj", "{7ED499CB-651C-4154-9741-EEF347BDBFB5}"
ProjectSection(ProjectDependencies) = postProject
{ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B} = {ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ACSPL_VS2017", "C:\Program Files (x86)\ACS Motion Control\SPiiPlus ADK Suite v3.02\ACSC\C_CPP\Samples\Reciprocated\ACSPL\ACSPL_VS2017.vcxproj", "{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -111,6 +116,18 @@ Global
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|x64.Build.0 = Release|Any CPU {7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|x64.Build.0 = Release|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|x86.ActiveCfg = Release|x86 {7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|x86.ActiveCfg = Release|x86
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|x86.Build.0 = Release|x86 {7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|x86.Build.0 = Release|x86
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Debug|Any CPU.ActiveCfg = Debug|x64
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Debug|Any CPU.Build.0 = Debug|x64
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Debug|x64.ActiveCfg = Debug|x64
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Debug|x64.Build.0 = Debug|x64
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Debug|x86.ActiveCfg = Debug|Win32
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Debug|x86.Build.0 = Debug|Win32
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Release|Any CPU.ActiveCfg = Release|x64
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Release|Any CPU.Build.0 = Release|x64
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Release|x64.ActiveCfg = Release|x64
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Release|x64.Build.0 = Release|x64
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Release|x86.ActiveCfg = Release|Win32
{26BA6D1A-E94D-46EE-A361-2D1AFDB2338A}.Release|x86.Build.0 = Release|Win32
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
File diff suppressed because it is too large Load Diff
+52 -18
View File
@@ -2,7 +2,7 @@
#include "HSI.h" #include "HSI.h"
#include "HSI_Motion.h" #include "HSI_Motion.h"
#include "HSI_Sevenocean_EF3.h" #include "HSI_Sevenocean_EF3.h"
#include "SevenOcean\CMMIO_SERIAL.h" #include "SevenOcean/CMMIO_SERIAL.h"
//#include "HSI_Illumination.h" //#include "HSI_Illumination.h"
//#include "HSI_Function.h" //#include "HSI_Function.h"
//#include "HSI_JoyStick.h" //#include "HSI_JoyStick.h"
@@ -14,14 +14,36 @@
static HWND g_hWnd = nullptr; static HWND g_hWnd = nullptr;
static bool g_bOfflineOnly = false; static bool g_bOfflineOnly = false;
////////////////////////////////////////////////////////////////////////////////////////////////////
// 开发说明
//初版 V0.1 2022/10/10
//---------------------------------------
//1、剥离 Metus初步所需函数(14个函数,包含是否回家,运动初始化,版本,JOG运动,运动到指定位置等)并生成dll
//
//
//
//
//
//
//
//
//
//
//
//
//
////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma region interface #pragma region interface
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_GET_INTERFACE_VERSION(UINT &APIVersionMajor, UINT &APIVersionMinor) HSI_API HSI_STATUS WINAPI HSI_GET_INTERFACE_VERSION(UINT& APIVersionMajor, UINT& APIVersionMinor)
{ {
APIVersionMajor = HSI_APIVersionMajor; APIVersionMajor = HSI_APIVersionMajor; //HSI.dll 主版本号
APIVersionMinor = HSI_APIVersionMinor; APIVersionMinor = HSI_APIVersionMinor; //HSI.dll 小版本号
return HSI_STATUS_NORMAL; return HSI_STATUS_NORMAL;
} }
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly) HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly)
{ {
@@ -32,7 +54,7 @@ HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly)
} }
if (g_pHSI_Sevenocean_EF3) if (g_pHSI_Sevenocean_EF3)
{ {
g_pHSI_Sevenocean_EF3->Startup(_hWnd, _bOfflineOnly); g_pHSI_Sevenocean_EF3->Startup(_hWnd, _bOfflineOnly); //初始化EF3
} }
else else
{ {
@@ -42,8 +64,9 @@ HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly)
g_bOfflineOnly = _bOfflineOnly; g_bOfflineOnly = _bOfflineOnly;
return rStatus; return rStatus;
} }
//==========================获取机器控制器信息,3代表EF3================================================= //==========================获取机器控制器信息,3代表EF3=================================================
HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int &_NumMachineTypes) HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int& _NumMachineTypes)
{ {
auto rStatus = HSI_STATUS_NORMAL; auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Sevenocean_EF3) if (g_pHSI_Sevenocean_EF3)
@@ -56,6 +79,7 @@ HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int &_NumMachineTypes)
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback) HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback)
{ {
@@ -70,6 +94,7 @@ HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback)
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM() HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM()
{ {
@@ -77,14 +102,14 @@ HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM()
if (g_pLogger) if (g_pLogger)
{ {
delete g_pLogger; delete g_pLogger;
g_pLogger = NULL; g_pLogger = nullptr;
} }
if (g_pLogger2) if (g_pLogger2)
{ {
delete g_pLogger2; delete g_pLogger2;
g_pLogger2 = NULL; g_pLogger2 = nullptr;
} }
//if (g_pHSI_Illumination) //if (g_pHSI_Illumination) //屏蔽光照
//{ //{
// rStatus = g_pHSI_Illumination->Shutdown(); // rStatus = g_pHSI_Illumination->Shutdown();
// delete g_pHSI_Illumination; // delete g_pHSI_Illumination;
@@ -92,11 +117,11 @@ HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM()
//} //}
if (g_pHSI_Motion) if (g_pHSI_Motion)
{ {
rStatus = g_pHSI_Motion->Shutdown(); rStatus = g_pHSI_Motion->Shutdown(); //运动终止
delete g_pHSI_Motion; delete g_pHSI_Motion;
g_pHSI_Motion = nullptr; g_pHSI_Motion = nullptr;
} }
//if (g_pHSI_JoyStick) //if (g_pHSI_JoyStick) //屏蔽摇杆
//{ //{
// g_pHSI_JoyStick->SuspendJoyStickThread(); // g_pHSI_JoyStick->SuspendJoyStickThread();
// delete g_pHSI_JoyStick; // delete g_pHSI_JoyStick;
@@ -104,12 +129,13 @@ HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM()
//} //}
if (g_pHSI_Sevenocean_EF3) if (g_pHSI_Sevenocean_EF3)
{ {
g_pHSI_Sevenocean_EF3->Shutdown(); g_pHSI_Sevenocean_EF3->Shutdown(); //EF3对象删除
delete g_pHSI_Sevenocean_EF3; delete g_pHSI_Sevenocean_EF3;
g_pHSI_Sevenocean_EF3 = nullptr; g_pHSI_Sevenocean_EF3 = nullptr;
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
#pragma endregion #pragma endregion
@@ -159,8 +185,9 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome)
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte *verion) HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte* verion)
{ {
auto rStatus = HSI_STATUS_NORMAL; auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion) if (g_pHSI_Motion)
@@ -173,6 +200,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte *verion)
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN() HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN()
{ {
@@ -189,6 +217,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN()
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed) HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed)
{ {
@@ -203,6 +232,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed)
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG() HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG()
{ {
@@ -217,8 +247,10 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG()
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
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_XYZ(UINT AxisTypes, double& PositionX, double& PositionY,
double& PositionZ, double& Time)
{ {
auto rStatus = HSI_STATUS_NORMAL; auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion) if (g_pHSI_Motion)
@@ -231,8 +263,10 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZ(UINT AxisTypes, double &Po
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
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) 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)
{ {
auto rStatus = HSI_STATUS_NORMAL; auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion) if (g_pHSI_Motion)
@@ -245,6 +279,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ(UINT AxisTypes, double Po
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION() HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION()
{ {
@@ -259,8 +294,9 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION()
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed) HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool& bHomed)
{ {
auto rStatus = HSI_STATUS_NORMAL; auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion) if (g_pHSI_Motion)
@@ -1183,7 +1219,6 @@ HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_TESTLIGHT(bool flag)
#endif // USE_ILLUMINATION_API #endif // USE_ILLUMINATION_API
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Probe API 探针 // Probe API 探针
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@@ -1383,4 +1418,3 @@ HSI_API HSI_STATUS WINAPI HSI_TP_SHUTDOWN()
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// 测试功能 // 测试功能
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
+195 -101
View File
@@ -1,4 +1,3 @@
#ifndef HSI_H_INCLUDED_ #ifndef HSI_H_INCLUDED_
#define HSI_H_INCLUDED_ #define HSI_H_INCLUDED_
@@ -80,6 +79,7 @@ enum HSI_STATUS
HSI_STATUS_VP_TIMEOUT = 350, HSI_STATUS_VP_TIMEOUT = 350,
HSI_STATUS_VP_IMAGEPROCESS_FAIL HSI_STATUS_VP_IMAGEPROCESS_FAIL
}; };
enum HSI_MACHINE_TYPE enum HSI_MACHINE_TYPE
{ {
HSI_MACHINE_UNKNOWN = 0, HSI_MACHINE_UNKNOWN = 0,
@@ -89,6 +89,7 @@ enum HSI_MACHINE_TYPE
HSI_MACHINE_GOOGOL = 4, HSI_MACHINE_GOOGOL = 4,
HSI_MACHINE_TYPE_TOTAL, HSI_MACHINE_TYPE_TOTAL,
}; };
enum HSI_EVENT_TYPE enum HSI_EVENT_TYPE
{ {
HSI_EVENT_NONE = 0, HSI_EVENT_NONE = 0,
@@ -98,46 +99,79 @@ enum HSI_EVENT_TYPE
HSI_EVENT_SAFETY = 4, HSI_EVENT_SAFETY = 4,
HSI_EVENT_SAFETY_KEEP = 5 HSI_EVENT_SAFETY_KEEP = 5
}; };
enum HSI_EVENT_FUNCTION_ID // EventData enum HSI_EVENT_FUNCTION_ID // EventData
{ // Send Receive {
// Send Receive
// V4.2 & V4.3 + // V4.2 & V4.3 +
HSI_EVENT_DONE = 0, // N/A N/A HSI_EVENT_DONE = 0,
HSI_EVENT_TAKE_HIT = 1, // N/A N/A // N/A N/A
HSI_EVENT_ERASE_HIT = 2, // N/A N/A HSI_EVENT_TAKE_HIT = 1,
HSI_EVENT_TIME_CRITICAL = 3, // "ON", or "OFF" N/A // N/A N/A
HSI_EVENT_ZOOM_IN = 4, // "MAX", "COARSE", or "FINE" N/A HSI_EVENT_ERASE_HIT = 2,
HSI_EVENT_ZOOM_OUT = 5, // "MAX", "COARSE", or "FINE" N/A // N/A N/A
HSI_EVENT_REFRESH_LIVE_VIEW = 6, // N/A N/A HSI_EVENT_TIME_CRITICAL = 3,
HSI_EVENT_UPDATE_READOUTS = 7, // "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}" N/A // "ON", or "OFF" N/A
HSI_EVENT_READ_MC_POSITION = 8, // "AxisFlags" "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}" HSI_EVENT_ZOOM_IN = 4,
HSI_EVENT_MOVE_MC_POSITION = 9, // "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed},%1d{bWait}" N/A // "MAX", "COARSE", or "FINE" N/A
HSI_EVENT_CONVERT_MC_TO_GLOBAL = 10, // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_ZOOM_OUT = 5,
HSI_EVENT_UPDATE_STATUS_MESSAGE = 11, // N/A N/A // "MAX", "COARSE", or "FINE" N/A
HSI_EVENT_OPENFILE_DLG = 12, // N/A "FileName" HSI_EVENT_REFRESH_LIVE_VIEW = 6,
HSI_EVENT_DISPLAY_YESNO_MESSAGE = 13, // N/A N/A // N/A N/A
HSI_EVENT_DISPLAY_OKCANCEL_MESSAGE = 14, // N/A N/A HSI_EVENT_UPDATE_READOUTS = 7,
HSI_EVENT_DISPLAY_OK_MESSAGE = 15, // N/A N/A // "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 // V4.3 + Only
HSI_EVENT_DEBUG_LOG = 20, // "%s" N/A HSI_EVENT_DEBUG_LOG = 20,
HSI_EVENT_MOVE_MC_POSITION_AND_SETTLE = 21, // "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed}" N/A // "%s" N/A
HSI_EVENT_CONVERT_GLOBAL_TO_MM = 22, // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_MOVE_MC_POSITION_AND_SETTLE = 21,
HSI_EVENT_CONVERT_ROT_TO_TABLE_POINT = 23, // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" // "AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed}" N/A
HSI_EVENT_CONVERT_ROT_OUT_TABLE_POINT = 24, // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_CONVERT_GLOBAL_TO_MM = 22,
HSI_EVENT_CONVERT_ROT_TO_TABLE_VECTOR = 25, // "%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" // "%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_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_REFRESH = 27,
HSI_EVENT_ILLUMINATION_LOCK = 28, HSI_EVENT_ILLUMINATION_LOCK = 28,
HSI_EVENT_ILLUMINATION_STORE_SET = 29, HSI_EVENT_ILLUMINATION_STORE_SET = 29,
HSI_EVENT_ILLUMINATION_RESTORE_SET = 30, HSI_EVENT_ILLUMINATION_RESTORE_SET = 30,
HSI_EVENT_ILLUMINATION_DECREASE_ACTIVE = 31, // "%d" HSI_EVENT_ILLUMINATION_DECREASE_ACTIVE = 31,
HSI_EVENT_ILLUMINATION_INCREASE_ACTIVE = 32, // "%d" // "%d"
HSI_EVENT_ILLUMINATION_DECREASE_ALL = 33, // "%d" HSI_EVENT_ILLUMINATION_INCREASE_ACTIVE = 32,
HSI_EVENT_ILLUMINATION_INCREASE_ALL = 34, // "%d" // "%d"
HSI_EVENT_ILLUMINATION_SELECT_LAMP = 35, // "%d" HSI_EVENT_ILLUMINATION_DECREASE_ALL = 33,
HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY = 36, // "%d" // "%d"
HSI_EVENT_ILLUMINATION_GET_LAMP_INTENSITY = 37, // "%d" HSI_EVENT_ILLUMINATION_INCREASE_ALL = 34,
HSI_EVENT_ILLUMINATION_SET_LAMP_CALIBRATION_OVERRIDE = 38, // "%d" // "%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_NEXT_RING = 39,
HSI_EVENT_ILLUMINATION_PREV_RING = 40, HSI_EVENT_ILLUMINATION_PREV_RING = 40,
HSI_EVENT_ILLUMINATION_NEXT_SECTOR = 41, HSI_EVENT_ILLUMINATION_NEXT_SECTOR = 41,
@@ -148,38 +182,57 @@ enum HSI_EVENT_FUNCTION_ID // Ev
HSI_EVENT_ILLUMINATION_ALLOFF = 46, HSI_EVENT_ILLUMINATION_ALLOFF = 46,
HSI_EVENT_ILLUMINATION_ALLON = 47, HSI_EVENT_ILLUMINATION_ALLON = 47,
HSI_EVENT_ILLUMINATION_UNLOCK = 48, HSI_EVENT_ILLUMINATION_UNLOCK = 48,
HSI_EVENT_IS_PROGRAMMING_MODE = 49, // 1/0 HSI_EVENT_IS_PROGRAMMING_MODE = 49,
HSI_EVENT_IS_PORTLOCK_DCC = 50, // 1/0 // 1/0
HSI_EVENT_IS_ROTAB_ENABLED = 51, // 1/0 HSI_EVENT_IS_PORTLOCK_DCC = 50,
HSI_EVENT_IS_TIME_CRITICAL = 52, // 1/0 // 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_MM_TO_GLOBAL = 53,
HSI_EVENT_CONVERT_GLOBAL_TO_MC = 54, HSI_EVENT_CONVERT_GLOBAL_TO_MC = 54,
HSI_EVENT_LASER_FOCUS_ENABLE = 55, // "%d" 0 = not available, 1 = available HSI_EVENT_LASER_FOCUS_ENABLE = 55,
HSI_EVENT_MOVE_POINT = 56, // N/A N/A // "%d" 0 = not available, 1 = available
HSI_EVENT_MOVE_POINT = 56,
// N/A N/A
HSI_EVENT_MAG_CHANGED = 57, 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_ILLUMINATION_SET_LAMP_INTENSITY_IN_MACHINE_LEVELx100 = 58,
HSI_EVENT_DCC_SCAN_POINTS_AVAILABLE = 59, // "%d" = more to come, 1 = last set N/A // "%d" //PR251359-- Instructed to "Please focus on slide" but it's rather unhelpfully turned the lights off for us.
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_DCC_SCAN_POINTS_AVAILABLE = 59,
HSI_EVENT_ILLUMINATION_DECREASE_ALL_NONZERO = 61, // Sensilight command that wont change a lamp currently set to zero // "%d" = more to come, 1 = last set N/A
HSI_EVENT_ILLUMINATION_INCREASE_ALL_NONZERO = 62, // Sensilight command that wont change a lamp currently set to zero22 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_LP_QUALITY = 63,
HSI_EVENT_TP_QUALITY = 64, // "%d" 0-100% // "%d" 0-100%
HSI_EVENT_VP_QUALITY = 65, // "%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_FLYMODE_MOVE_COMPLETE = 66,
HSI_EVENT_PENDANT_SPEED_PERCENT = 67, // 108336 HMV : Add calls to HSI.H for Speed // A queued flymode move has completed
HSI_EVENT_PENDANT_AXES_SELECTED = 68, // 108335 HMV : Need to add calls to the HSI.H for Stacked Rotary 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 = 500,
HSI_EVENT_MOTION_DCC_HOME = 501, HSI_EVENT_MOTION_DCC_HOME = 501,
HSI_EVENT_MOTION_FOCUS_HOME = 502, HSI_EVENT_MOTION_FOCUS_HOME = 502,
HSI_EVENT_MOTION_EMERGENT_STOP = 503, 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_DRIVER_ALARM = 1000,
HSI_EVENT_MOTION_PROBE = 1001, HSI_EVENT_MOTION_PROBE = 1001,
HSI_EVENT_MOTION_DISPENSER = 1002 HSI_EVENT_MOTION_DISPENSER = 1002
}; };
enum HSI_NOTIFY_TYPE enum HSI_NOTIFY_TYPE
{ {
HSI_NOTIFY_PROGRAM_EXECUTION_START = 0, HSI_NOTIFY_PROGRAM_EXECUTION_START = 0,
@@ -193,6 +246,7 @@ enum HSI_NOTIFY_TYPE
HSI_NOTIFY_CLEAR_ITERATIONS = 7, HSI_NOTIFY_CLEAR_ITERATIONS = 7,
HSI_NOTIFY_EMERGENCY_STATE = 9 HSI_NOTIFY_EMERGENCY_STATE = 9
}; };
enum HSI_EVENT_RESPONSE_TYPE enum HSI_EVENT_RESPONSE_TYPE
{ {
HSI_EVENT_CALLBACK = 0, HSI_EVENT_CALLBACK = 0,
@@ -216,14 +270,16 @@ struct sHSIEventProperties
HSI_EVENT_TYPE EventType; HSI_EVENT_TYPE EventType;
HSI_EVENT_RESPONSE_TYPE EventResponse; HSI_EVENT_RESPONSE_TYPE EventResponse;
char EventData[HSI_MaxStringLength + 1]; char EventData[HSI_MaxStringLength + 1];
void Init() void Init()
{ {
EventID = 0; EventID = 0;
EventCallbackID = 0; EventCallbackID = 0;
EventType = HSI_EVENT_NONE; EventType = HSI_EVENT_NONE;
EventResponse = HSI_EVENT_CALLBACK; EventResponse = HSI_EVENT_CALLBACK;
memset(EventData, 0, (HSI_MaxStringLength + 1)*sizeof(char)); memset(EventData, 0, (HSI_MaxStringLength + 1) * sizeof(char));
}; };
sHSIEventProperties() sHSIEventProperties()
{ {
Init(); Init();
@@ -231,12 +287,12 @@ struct sHSIEventProperties
}; };
// >>>> In Interfaces // >>>> In Interfaces
typedef VOID(WINAPI *pEventCallback)(HSI_EVENT_TYPE EventType, HSI_EVENT_RESPONSE_TYPE ResponseType, UINT EventID, char EventData[HSI_MaxStringLength + 1], UINT &EventCallbackID); using pEventCallback = VOID(WINAPI *)(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_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_INTERFACE_VERSION(UINT& APIVersionMajor, UINT& APIVersionMinor);
HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int &_NumMachineTypes); 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_SET_EVENT_CALLBACK(pEventCallback _pCallback);
HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM(); HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM();
@@ -263,39 +319,61 @@ enum HSI_MOTION_TYPE
enum HSI_MOTION_AXIS_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_X = 0x0001,
HSI_MOTION_AXIS_Y = 0x0002, // This is the default "Sensor level" Y Axis - use on single Y axis machines // This is the default "Sensor level" X Axis - use on single X axis machines
HSI_MOTION_AXIS_Z = 0x0004, // This is the default "Sensor level" Z Axis - use on single Z axis machines HSI_MOTION_AXIS_Y = 0x0002,
HSI_MOTION_AXIS_R = 0x0008, // This is the default "Sensor level" R Axis - use on single R axis machines // This is the default "Sensor level" Y Axis - use on single Y 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_Z = 0x0004,
HSI_MOTION_AXIS_Y1 = 0x0020, // This is the 1st Y Axis - use on multiple axis machines when specific axis needed // This is the default "Sensor level" Z Axis - use on single Z axis machines
HSI_MOTION_AXIS_Z1 = 0x0040, // This is the 1st Z Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_R = 0x0008,
HSI_MOTION_AXIS_R1 = 0x0080, // This is the 1st R Axis - use on multiple axis machines when specific axis needed // This is the default "Sensor level" R Axis - use on single R axis machines
HSI_MOTION_AXIS_X2 = 0x0100, // This is the 2nd X Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_X1 = 0x0010,
HSI_MOTION_AXIS_Y2 = 0x0200, // This is the 2nd Y Axis - use on multiple axis machines when specific axis needed // This is the 1st X 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_Y1 = 0x0020,
HSI_MOTION_AXIS_R2 = 0x0800, // This is the 2nd R Axis - use on multiple axis machines when specific axis needed // This is the 1st Y 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_Z1 = 0x0040,
HSI_MOTION_AXIS_Y3 = 0x2000, // This is the 3rd Y Axis - use on multiple axis machines when specific axis needed // This is the 1st Z 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_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 HSI_MOTION_AXIS_R3 = 0x8000 // This is the 3rd R Axis - use on multiple axis machines when specific axis needed
}; };
enum HSI_MOTION_IO_TYPE enum HSI_MOTION_IO_TYPE
{ {
HSI_MOTION_INPUT = 0x0001, HSI_MOTION_INPUT = 0x0001,
HSI_MOTION_INPUT_LIMIT_SWITCH, HSI_MOTION_INPUT_LIMIT_SWITCH,
HSI_MOTION_INPUT_CH1,//固高、众为兴、EF1输入 HSI_MOTION_INPUT_CH1,
//固高、众为兴、EF1输入
HSI_MOTION_INPUT_CH2, HSI_MOTION_INPUT_CH2,
HSI_MOTION_INPUT_CH3,//串口控制器输入 HSI_MOTION_INPUT_CH3,
HSI_MOTION_INPUT_CH4,//众为兴运动控制卡测试输入 //串口控制器输入
HSI_MOTION_INPUT_ALARM,//驱动报警 HSI_MOTION_INPUT_CH4,
//众为兴运动控制卡测试输入
HSI_MOTION_INPUT_ALARM,
//驱动报警
HSI_MOTION_OUTPUT = 0x0100, HSI_MOTION_OUTPUT = 0x0100,
HSI_MOTION_OUTPUT_LASER_PEN, HSI_MOTION_OUTPUT_LASER_PEN,
HSI_MOTION_OUTPUT_CH1,//固高、众为兴、EF1输出 HSI_MOTION_OUTPUT_CH1,
//固高、众为兴、EF1输出
HSI_MOTION_OUTPUT_CH2, HSI_MOTION_OUTPUT_CH2,
HSI_MOTION_OUTPUT_CH3,//串口控制器输出 HSI_MOTION_OUTPUT_CH3,
HSI_MOTION_OUTPUT_CH4//众为兴运动控制卡测试输出 //串口控制器输出
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 = HSI_MOTION_AXIS_X | HSI_MOTION_AXIS_Y | HSI_MOTION_AXIS_Z;
@@ -318,17 +396,21 @@ enum HSI_MOTION_AXIS_R_MOVE_TYPE
HSI_MOTION_AXIS_R_ANTICLOCKWISE = 2, HSI_MOTION_AXIS_R_ANTICLOCKWISE = 2,
HSI_MOTION_AXIS_R_FASTEST = 3 HSI_MOTION_AXIS_R_FASTEST = 3
}; };
enum HSI_SCAN_MOTION_TYPE enum HSI_SCAN_MOTION_TYPE
{ {
HSI_SCAN_MOTION_LINEAR = 1, HSI_SCAN_MOTION_LINEAR = 1,
HSI_SCAN_MOTION_CIRCULAR, 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,
HSI_SCAN_MOTION_EQ_DIS_II, HSI_SCAN_MOTION_EQ_DIS_II,
HSI_SCAN_MOTION_LINEAR_TEST,//测试使用 HSI_SCAN_MOTION_LINEAR_TEST,
HSI_SCAN_MOTION_EQ_TEST,//测试使用 //测试使用
HSI_SCAN_MOTION_MANUAL_TEST//测试使用 HSI_SCAN_MOTION_EQ_TEST,
//测试使用
HSI_SCAN_MOTION_MANUAL_TEST //测试使用
}; };
@@ -338,31 +420,30 @@ enum HSI_ZOOM_TYPE
HSI_ZOOM_NAVITAR=3 HSI_ZOOM_NAVITAR=3
}; };
typedef struct using Point = struct
{ {
double x; double x;
double y; double y;
double z; double z;
}Point; };
const int HSI_MAX_POSITIONS_STORED = 500; const int HSI_MAX_POSITIONS_STORED = 500;
// >>>> In Interfaces // >>>> In Interfaces
// 第一阶段需要重写的API 函数 // 第一阶段需要重写的API 函数
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome); HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte *verion); HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte* verion);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN(); HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN();
HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis, double &Speed); 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);
HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed); HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG(); HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG();
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_XYZ(UINT AxisTypes, double& PositionX, double& PositionY,
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, double& Time);
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);
HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION(); HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION();
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed); HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool& bHomed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types); //HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types);
@@ -391,7 +472,6 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP(); //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_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_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);
@@ -420,7 +500,6 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed);
#ifdef USE_Illumination_API #ifdef USE_Illumination_API
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Illumination API // Illumination API
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@@ -505,19 +584,34 @@ HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SHUTDOWN();
#endif // !USE_Illumination_API #endif // !USE_Illumination_API
class HSI class HSI
{ {
public: public:
HSI() : hWnd(nullptr), bOfflineOnly(false){} HSI() : hWnd(nullptr), bOfflineOnly(false)
virtual ~HSI(){} {
virtual HSI_STATUS IsSupported(UINT &Types){ Types = 0; return HSI_STATUS_NORMAL; } }
virtual HSI_STATUS Startup(HWND _hWnd, bool _bOfflineOnly){ hWnd = _hWnd; bOfflineOnly = _bOfflineOnly; return HSI_STATUS_NORMAL; }
virtual HSI_STATUS Shutdown(){ return HSI_STATUS_NORMAL; } virtual ~HSI()
{
}
virtual HSI_STATUS IsSupported(UINT& Types)
{
Types = 0;
return HSI_STATUS_NORMAL;
}
virtual HSI_STATUS Startup(HWND _hWnd, bool _bOfflineOnly)
{
hWnd = _hWnd;
bOfflineOnly = _bOfflineOnly;
return HSI_STATUS_NORMAL;
}
virtual HSI_STATUS Shutdown() { return HSI_STATUS_NORMAL; }
protected: protected:
HWND hWnd; HWND hWnd;
bool bOfflineOnly; bool bOfflineOnly;
sHSIEventProperties sEvenProp; sHSIEventProperties sEvenProp;
}; };
#endif #endif
@@ -76,6 +76,7 @@
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
<IncludePath>\DirectXLib\Include;$(IncludePath)</IncludePath> <IncludePath>\DirectXLib\Include;$(IncludePath)</IncludePath>
<OutDir>$(MSBuildProjectDirectory)\$(Platform)\$(Configuration)\</OutDir> <OutDir>$(MSBuildProjectDirectory)\$(Platform)\$(Configuration)\</OutDir>
<IntDir>$(MSBuildProjectDirectory)\obj</IntDir>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental> <LinkIncremental>true</LinkIncremental>
@@ -171,6 +172,7 @@ xcopy "$(OutDir)\$(ProjectName).pdb" ..\HSI_GOOGOL_GTS800_WPFTest\bin\Debug\HSI.
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="ACS\ACSC.h" />
<ClInclude Include="HSI.h" /> <ClInclude Include="HSI.h" />
<ClInclude Include="SevenOcean\CMMIO_BASE.H" /> <ClInclude Include="SevenOcean\CMMIO_BASE.H" />
<ClInclude Include="logger.h" /> <ClInclude Include="logger.h" />
@@ -196,6 +198,9 @@ xcopy "$(OutDir)\$(ProjectName).pdb" ..\HSI_GOOGOL_GTS800_WPFTest\bin\Debug\HSI.
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Library Include="ACS\ACSCL_x64.LIB" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
@@ -20,5 +20,9 @@
<ClInclude Include="targetver.h" /> <ClInclude Include="targetver.h" />
<ClInclude Include="version.h" /> <ClInclude Include="version.h" />
<ClInclude Include="SevenOcean\CMMIO_SERIAL.H" /> <ClInclude Include="SevenOcean\CMMIO_SERIAL.H" />
<ClInclude Include="ACS\ACSC.h" />
</ItemGroup>
<ItemGroup>
<Library Include="ACS\ACSCL_x64.LIB" />
</ItemGroup> </ItemGroup>
</Project> </Project>
File diff suppressed because it is too large Load Diff
+146 -128
View File
@@ -3,7 +3,7 @@
#pragma once #pragma once
#include "logger.h" #include "logger.h"
#include "SevenOcean\CMMIO_SERIAL.H" #include "SevenOcean/CMMIO_SERIAL.H"
#define TCPIP_THREAD_RUNNING 0 #define TCPIP_THREAD_RUNNING 0
#define TCPIP_THREAD_PAUSED 1 #define TCPIP_THREAD_PAUSED 1
@@ -16,7 +16,7 @@
const double SCALE_UNITS = 1000.0; const double SCALE_UNITS = 1000.0;
static CLogger* g_pLogger; static CLogger* g_pLogger;
static CLogger* g_pLogger2; static CLogger* g_pLogger2;
static bool g_IsClose;//用于DoEvents()的退出,而不异常 static bool g_IsClose; //用于DoEvents()的退出,而不异常
enum E_SO7_MOTION_TYPE enum E_SO7_MOTION_TYPE
{ {
@@ -25,30 +25,42 @@ enum E_SO7_MOTION_TYPE
E_SO7_MOTION_MOVETO, E_SO7_MOTION_MOVETO,
E_SO7_MOTION E_SO7_MOTION
}; };
enum E_EF3_HOME_STATUS enum E_EF3_HOME_STATUS
{ {
E_EF3_HOME_NONE,//0表示从未回过回原点 E_EF3_HOME_NONE,
E_EF3_HOME_ING,//1表示正在回原点 //0表示从未回过回原点
E_EF3_HOME_FINISHED,//2表示已经回过原点 E_EF3_HOME_ING,
//1表示正在回原点
E_EF3_HOME_FINISHED,
//2表示已经回过原点
}; };
enum FUN_CMD //第一级指令 enum FUN_CMD //第一级指令
{ {
CT_MOTOR = 0x01, //MOTOR CT_MOTOR = 0x01,
CT_LIGHT, //LIGHT //MOTOR
CT_PORT, //PORT CT_LIGHT,
CT_ORDER, //ORDER //LIGHT
CT_SOFTSTOP, //STOP CT_PORT,
CT_GLUEDISPENSER, //点胶 //PORT
CT_ORDER,
//ORDER
CT_SOFTSTOP,
//STOP
CT_GLUEDISPENSER,
//点胶
CT_TURNTABLE, CT_TURNTABLE,
}; };
enum MOTOR_CMD //第二级指令 enum MOTOR_CMD //第二级指令
{ {
CT_MOTOR_SET = 0x01, CT_MOTOR_SET = 0x01,
CT_START_JOG_POS, // CT_START_JOG_POS,
//
CT_START_JOG_NEG, CT_START_JOG_NEG,
CT_START_POSITION, //_POS, CT_START_POSITION,
//_POS,
CT_STOP, CT_STOP,
CT_GOHOME, CT_GOHOME,
CT_TRIGGER_DATA, CT_TRIGGER_DATA,
@@ -72,8 +84,10 @@ enum MOTOR_CMD //
enum MOTOR_START_POSOTION // enum MOTOR_START_POSOTION //
{ {
INTERPOLATION = 0x61,//插补 INTERPOLATION = 0x61,
GANGED = 0x41,//独立 //插补
GANGED = 0x41,
//独立
CIRCLER = 0x64, CIRCLER = 0x64,
CIRCLEL = 0x65, CIRCLEL = 0x65,
}; };
@@ -123,7 +137,8 @@ enum E_SO7_MOTION_READ_TYPE
E_DATA_TYPE_IO, E_DATA_TYPE_IO,
}; };
typedef enum { using TCPIP_RETURN_CODE = enum
{
TCPIP_CONNECT_OK = 0, TCPIP_CONNECT_OK = 0,
TCPIP_INIT_WINSOCK_ERROR, TCPIP_INIT_WINSOCK_ERROR,
TCPIP_INVAILD_SOCKET, TCPIP_INVAILD_SOCKET,
@@ -134,57 +149,56 @@ typedef enum {
TCPIP_TIMEOUT, TCPIP_TIMEOUT,
TCPIP_WSAEWOULDBLOCK = 10035, TCPIP_WSAEWOULDBLOCK = 10035,
TCPIP_CONNECT_STATUS_UNKNOWN TCPIP_CONNECT_STATUS_UNKNOWN
};
} TCPIP_RETURN_CODE;
class HSI_Motion : public HSI class HSI_Motion : public HSI
{ {
public: public:
HSI_Motion(); HSI_Motion();
~HSI_Motion(); ~HSI_Motion() override;
HSI_STATUS IsSupported(UINT &Types); HSI_STATUS IsSupported(UINT& Types) override;
HSI_STATUS Startup(HWND _hWnd, bool _bOfflineOnly) override;
virtual HSI_STATUS Startup(HWND _hWnd, bool _bOfflineOnly); HSI_STATUS GetFirmwareVersion(byte* version);
HSI_STATUS GetFirmwareVersion(byte *version);
HSI_STATUS HomeMachine(bool bHomed); HSI_STATUS HomeMachine(bool bHomed);
HSI_STATUS HomeJog(short AxisNumber, short Dir, bool Wait = false); HSI_STATUS HomeJog(short AxisNumber, short Dir, bool Wait = false);
HSI_STATUS HomeFindIndex(); HSI_STATUS HomeFindIndex();
HSI_STATUS ZeroPos(bool bZeroPos); HSI_STATUS ZeroPos(bool bZeroPos);
HSI_STATUS IsHomed(bool &bHomed); HSI_STATUS IsHomed(bool& bHomed);
HSI_STATUS GetSpeedXyz(int AxisNum, double &Speed); HSI_STATUS GetSpeedXyz(int AxisNum, double& Speed);
HSI_STATUS SetSpeedXyz(double Speed); HSI_STATUS SetSpeedXyz(double Speed);
HSI_STATUS GetFocusSpeed(double &Speed); HSI_STATUS GetFocusSpeed(double& Speed);
HSI_STATUS SetFocusSpeed(double Speed); HSI_STATUS SetFocusSpeed(double Speed);
HSI_STATUS GetAccelerationXyz(double &AccelX, double &AccelY, double &AccelZ); HSI_STATUS GetAccelerationXyz(double& AccelX, double& AccelY, double& AccelZ);
HSI_STATUS SetAccelerationXyz(double AccelX, double AccelY, double AccelZ); HSI_STATUS SetAccelerationXyz(double AccelX, double AccelY, double AccelZ);
HSI_STATUS GetSpeedR(double &Speed); HSI_STATUS GetSpeedR(double& Speed);
HSI_STATUS SetSpeedR(double Speed); HSI_STATUS SetSpeedR(double Speed);
HSI_STATUS GetScaleResolution(double &_ScaleX, double &_ScaleY, double &_ScaleZ); HSI_STATUS GetScaleResolution(double& _ScaleX, double& _ScaleY, double& _ScaleZ);
HSI_STATUS SetScaleResolution(double _ScaleX, double _ScaleY, double _ScaleZ); HSI_STATUS SetScaleResolution(double _ScaleX, double _ScaleY, double _ScaleZ);
HSI_STATUS GetDeadBand(double &DeadbandX, double &DeadbandY, double &DeadbandZ, double &DeadbandR); HSI_STATUS GetDeadBand(double& DeadbandX, double& DeadbandY, double& DeadbandZ, double& DeadbandR);
HSI_STATUS GetRefreshDeadBand(double &Deadband); HSI_STATUS GetRefreshDeadBand(double& Deadband);
HSI_STATUS Jog(UINT AxisTypes, double Speed); HSI_STATUS Jog(UINT AxisTypes, double Speed);
HSI_STATUS JoyStick(UINT AxisTypes, long Speed); HSI_STATUS JoyStick(UINT AxisTypes, long Speed);
HSI_STATUS StopJog(); HSI_STATUS StopJog();
HSI_STATUS StopJogEx(UINT AxisTypes); HSI_STATUS StopJogEx(UINT AxisTypes);
HSI_STATUS GetPositionEncPrfMulti(UINT AxisTypes, double *EncPos, double *PrfPos, int Count); HSI_STATUS GetPositionEncPrfMulti(UINT AxisTypes, double* EncPos, double* PrfPos, int Count);
HSI_STATUS GetPositionXyz(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &Time); HSI_STATUS GetPositionXyz(UINT AxisTypes, double& PositionX, double& PositionY, double& PositionZ, double& Time);
HSI_STATUS GetPositionXyzaProbe(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &PositionA); HSI_STATUS GetPositionXyzaProbe(UINT AxisTypes, double& PositionX, double& PositionY, double& PositionZ,
HSI_STATUS GetEncoderXyz(long *lEncoderVal); double& PositionA);
HSI_STATUS GetEncoderXyz(long* lEncoderVal);
HSI_STATUS JogProbe(UINT AxisTypes, double Speed); HSI_STATUS JogProbe(UINT AxisTypes, double Speed);
void ProbeRetractManDist(int RetractManDist); void ProbeRetractManDist(int RetractManDist);
int CaculateStepMotorACC(int pos, int maxacc, int minacc); int CaculateStepMotorACC(int pos, int maxacc, int minacc);
HSI_STATUS SetPositionXyz(UINT AxisTypes, double PositionX, double PositionY, double PositionZ, HSI_MOTION_MOVE_TYPE eType, double dFlyRadius); HSI_STATUS SetPositionXyz(UINT AxisTypes, double PositionX, double PositionY, double PositionZ,
HSI_STATUS SetPositionXyza(UINT AxisTypes, double PositionX, double PositionY, double PositionZ, double PositionA, HSI_MOTION_MOVE_TYPE eType, double dFlyRadius); HSI_MOTION_MOVE_TYPE eType, double dFlyRadius);
HSI_STATUS SetPositionXyzCache(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point *CacheData); HSI_STATUS SetPositionXyza(UINT AxisTypes, double PositionX, double PositionY, double PositionZ, double PositionA,
HSI_STATUS GetPositionR(UINT AxisTypes, double &PositionR, double &Time); HSI_MOTION_MOVE_TYPE eType, double dFlyRadius);
HSI_STATUS SetPositionXyzCache(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point* CacheData);
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 SetPositionR(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait);
HSI_STATUS SetCircleInterpolate(double PositionX, double PositionY, double PositionZ); HSI_STATUS SetCircleInterpolate(double PositionX, double PositionY, double PositionZ);
HSI_STATUS Load_EF3_Motion_Inifile(CString GoogolIniFile); HSI_STATUS Load_EF3_Motion_Inifile(CString GoogolIniFile);
@@ -194,40 +208,43 @@ public:
HSI_STATUS GetDIO(UINT IOChannel, UINT& _Status); HSI_STATUS GetDIO(UINT IOChannel, UINT& _Status);
HSI_STATUS SetDIO(UINT IOChannel, UINT _Status); HSI_STATUS SetDIO(UINT IOChannel, UINT _Status);
HSI_STATUS GetAxisStatus(int* _Status); HSI_STATUS GetAxisStatus(int* _Status);
HSI_STATUS GetAppPath(CString &Path); HSI_STATUS GetAppPath(CString& Path);
virtual HSI_STATUS Shutdown(); HSI_STATUS Shutdown() override;
HSI_STATUS IsSupportedEx(UINT AxisTypes, UINT &Types); HSI_STATUS IsSupportedEx(UINT AxisTypes, UINT& Types);
HSI_STATUS StartupEx(UINT AxisTypes, bool bHome); HSI_STATUS StartupEx(UINT AxisTypes, bool bHome);
HSI_STATUS GetScaleResolutionEx(UINT AxisTypes, double &Scale); HSI_STATUS GetScaleResolutionEx(UINT AxisTypes, double& Scale);
HSI_STATUS SetScaleResolutionEx(UINT AxisTypes, double Scale); HSI_STATUS SetScaleResolutionEx(UINT AxisTypes, double Scale);
HSI_STATUS GetPositionEx(UINT AxisTypes, double &Position, double &Time); HSI_STATUS GetPositionEx(UINT AxisTypes, double& Position, double& Time);
HSI_STATUS SetPositionStep(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear); HSI_STATUS SetPositionStep(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
HSI_STATUS SetPositionEx(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear); HSI_STATUS SetPositionEx(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
HSI_STATUS GetSpeedEx(UINT AxisTypes, double &Speed); HSI_STATUS GetSpeedEx(UINT AxisTypes, double& Speed);
HSI_STATUS SetSpeedEx(UINT AxisTypes, double Speed); HSI_STATUS SetSpeedEx(UINT AxisTypes, double Speed);
HSI_STATUS GetAccelerationEx(UINT AxisTypes, double &Accel); HSI_STATUS GetAccelerationEx(UINT AxisTypes, double& Accel);
HSI_STATUS SetAccelerationEx(UINT AxisTypes, double Accel); HSI_STATUS SetAccelerationEx(UINT AxisTypes, double Accel);
HSI_STATUS SetTriggerLight(int triggleNum, int delayLighting, int delayLightBefor,int triggleMode, double* Intensities); HSI_STATUS SetTriggerLight(int triggleNum, int delayLighting, int delayLightBefor, int triggleMode,
HSI_STATUS DCCPPStartPoint(double *startPoint); double* Intensities);
HSI_STATUS DCCPPStartPoint(double* startPoint);
HSI_STATUS DCCScanSetData(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis); HSI_STATUS DCCScanSetData(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis);
HSI_STATUS DCCScanStart(); HSI_STATUS DCCScanStart();
HSI_STATUS DCCScanStop(); HSI_STATUS DCCScanStop();
HSI_STATUS DCCForLightPlate(); HSI_STATUS DCCForLightPlate();
HSI_STATUS IOStep(bool RunSts); HSI_STATUS IOStep(bool RunSts);
HSI_STATUS IOprogram(byte* SendData,int length); HSI_STATUS IOprogram(byte* SendData, int length);
HSI_STATUS FindOriginTest(bool state); HSI_STATUS FindOriginTest(bool state);
HSI_STATUS StartPlcJob(int* CamerasDis, int* BinsDis, int SubArea,int filterTime1, int filterTime2,int pluseSumDis); HSI_STATUS StartPlcJob(int* CamerasDis, int* BinsDis, int SubArea, int filterTime1, int filterTime2,
int pluseSumDis);
HSI_STATUS SendBinResult(int* BinResult); HSI_STATUS SendBinResult(int* BinResult);
HSI_STATUS GetTriggleCount(int* nCount, int& nArea); HSI_STATUS GetTriggleCount(int* nCount, int& nArea);
HSI_STATUS GluePPSpnts(int* ppsDir, double* gluePPSPos, int* delayLightBefore, int* lightTime, double* lightData, int num); HSI_STATUS GluePPSpnts(int* ppsDir, double* gluePPSPos, int* delayLightBefore, int* lightTime, double* lightData,
HSI_STATUS GlueDispenser(int* index, int* cirdirection , double* gluePos, int num); int num);
HSI_STATUS GlueDispenser(int* index, int* cirdirection, double* gluePos, int num);
HSI_STATUS GlueDispenserStart(double xOffset, double yOffset, double qOffset); HSI_STATUS GlueDispenserStart(double xOffset, double yOffset, double qOffset);
HSI_STATUS GetPntsDistance(double& ptpDistance,int& spTimeCount); HSI_STATUS GetPntsDistance(double& ptpDistance, int& spTimeCount);
public: public:
static int m_Thread_State; static int m_Thread_State;
@@ -265,7 +282,7 @@ public:
static HANDLE g_WR_ToMove_Mutex; static HANDLE g_WR_ToMove_Mutex;
static HANDLE g_Lock_JogAndTrigger; static HANDLE g_Lock_JogAndTrigger;
double m_Resolution[5];//从1开始,0不用 double m_Resolution[5]; //从1开始,0不用
double m_N_Work_Limit[5]; //负限位 double m_N_Work_Limit[5]; //负限位
double m_P_Work_Limit[5]; //正限位 double m_P_Work_Limit[5]; //正限位
@@ -287,129 +304,129 @@ public:
int m_stepPosition_H_speed[10]; int m_stepPosition_H_speed[10];
int m_stepPosition_Load[10]; int m_stepPosition_Load[10];
int m_stepPosition_acc[10]; int m_stepPosition_acc[10];
double m_PositionA;//第四轴的地位位置 double m_PositionA; //第四轴的地位位置
//jog 参数 //jog 参数
int m_JogDriveSpeed[5][5];//5:轴号,从1开始;5:档位 int m_JogDriveSpeed[5][5]; //5:轴号,从1开始;5:档位
int m_JogStartSpeed[5][5]; int m_JogStartSpeed[5][5];
int m_JogAccLine[5][5]; int m_JogAccLine[5][5];
int m_JogDecLine[5][5]; int m_JogDecLine[5][5];
int m_JogAccCurve[5][5]; int m_JogAccCurve[5][5];
int m_JogDecCurve[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_precisionCount[5]; //回家误差脉冲个数
unsigned int m_precisionTime[5]; unsigned int m_precisionTime[5]; //超时时间(0.1ms)
int m_StopJogMode[5];//JOG模式采用急停还是平滑停止 int m_StopJogMode[5]; //JOG模式采用急停还是平滑停止
double m_PosThread[5];//SetpositionXyz的目标位置 double m_PosThread[5]; //SetpositionXyz的目标位置
int m_PosNow[5];//调用SetpositionXyz时,读取当前位置 int m_PosNow[5]; //调用SetpositionXyz时,读取当前位置
double targetpos_n[5]; double targetpos_n[5];
double targetpos_l[5]; double targetpos_l[5];
short m_AxisThread; short m_AxisThread;
int m_IsExMotion; //0是xyz用的,1是单轴用的,2都不用 int m_IsExMotion; //0是xyz用的,1是单轴用的,2都不用
int m_Home_Machine_Axis[5];//用于启动时需要回原点的轴号选择 int m_Home_Machine_Axis[5]; //用于启动时需要回原点的轴号选择
int m_Home_Pos_Axis[5];//记住关闭电源时的位置,用于判断是否还需要回原点 int m_Home_Pos_Axis[5]; //记住关闭电源时的位置,用于判断是否还需要回原点
int m_IsHomeEncPos; //是否启动实际位置判断是否回家,默认0,1启用,0关闭 int m_IsHomeEncPos; //是否启动实际位置判断是否回家,默认0,1启用,0关闭
int m_IsHomePrfPos; //是否启动规划位置判断是否回家,默认1,1启用,0关闭 int m_IsHomePrfPos; //是否启动规划位置判断是否回家,默认1,1启用,0关闭
int m_IsIOFuntion;//是否启动IO功能,1为打开,0为关闭 int m_IsIOFuntion; //是否启动IO功能,1为打开,0为关闭
int m_IsStartInput;//是否启用脚踏开关功能,1为启用,0为关闭,默认0 int m_IsStartInput; //是否启用脚踏开关功能,1为启用,0为关闭,默认0
UINT m_StartInputPort;//外部输入按钮启动程序 UINT m_StartInputPort; //外部输入按钮启动程序
UINT m_InputStatus; UINT m_InputStatus;
UINT m_ForStatus; UINT m_ForStatus;
int m_Set_XYZA_Reserve;//XYZA轴方向 int m_Set_XYZA_Reserve; //XYZA轴方向
int m_motorType;//电机类型 1为伺服电机 0为步进电机 int m_motorType; //电机类型 1为伺服电机 0为步进电机
int m_setPositionDelay;//设置定位超时 int m_setPositionDelay; //设置定位超时
int m_setPositionPrecision;//设置定位精度 int m_setPositionPrecision; //设置定位精度
int m_setPositionNum; int m_setPositionNum;
CString m_AppPath; CString m_AppPath;
//MST软件运行标志,trueMST软件已经启动,falseMST软件停止 //MST软件运行标志,trueMST软件已经启动,falseMST软件停止
bool m_MSTRunFlag; bool m_MSTRunFlag;
int m_IsUse_HSICompensation;//是否启用HSI进行定位补偿 0为不启用 1为启用 默认为0 int m_IsUse_HSICompensation; //是否启用HSI进行定位补偿 0为不启用 1为启用 默认为0
int m_Compensation_Pluse;//补偿脉冲数 int m_Compensation_Pluse; //补偿脉冲数
int m_IsHardLimit; //设备轴硬限位设置 为0表示所有轴都为软限位 1为X轴为硬限位 2为Y轴 3为XY轴 4为Z轴 7为XYZ轴 默认为7 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_IsEnableAxis; //设备启用轴设置 为0表示所有轴不启用 1为X轴启用 2为Y轴启用 3为XY轴启用 4为Z轴启用 7为XYZ轴启用 默认为7
int m_IsUseExternalTrigger; //是否启用外触发功能 0为不启用 1为启用 默认为1 int m_IsUseExternalTrigger; //是否启用外触发功能 0为不启用 1为启用 默认为1
int m_IsUseSixRingEightArea; //是否启用六环八区灯功能 0为不启用 1为启用 2为二环八区灯 默认为0 int m_IsUseSixRingEightArea; //是否启用六环八区灯功能 0为不启用 1为启用 2为二环八区灯 默认为0
int m_SixEightSubArea[8]; //六环八区分区功能 int m_SixEightSubArea[8]; //六环八区分区功能
int m_IsUseTwentySixLight;//是否启用26路灯光 0为不启用 1位启用 默认为0 int m_IsUseTwentySixLight; //是否启用26路灯光 0为不启用 1位启用 默认为0
int m_IsUseEF3;//是否启用EF3 int m_IsUseEF3; //是否启用EF3
int m_DeviceType;//设备类型,0为通用设备,1为三激光, 2为大视野,3为转盘设备 默认为0 int m_DeviceType; //设备类型,0为通用设备,1为三激光, 2为大视野,3为转盘设备 默认为0
int m_UseAxisNum;//转盘设备使用轴号 int m_UseAxisNum; //转盘设备使用轴号
int m_IbinCount;//记录获取到的分bin数 int m_IbinCount; //记录获取到的分bin数
bool m_IsUsePPS; bool m_IsUsePPS;
int m_iJoyStick;//遥感类型:0:无 1:老式摇杆 int m_iJoyStick; //摇杆类型:0:无 1:老式摇杆
int m_bISUseMoreLights; int m_bISUseMoreLights; //更多灯光
int m_EF3LightType; int m_EF3LightType;
int m_LightType; int m_LightType;
int m_IsUseFourthSpeed; int m_IsUseFourthSpeed;
CString m_IsOpenTCPIP[4];//可提供的tcp通信的ip CString m_IsOpenTCPIP[4]; //可提供的tcp通信的ip
bool m_tcpCntFlag[4]; bool m_tcpCntFlag[4];
int m_selectedIndex; int m_selectedIndex;
bool m_Led8MotionFlag[4];//是否为8路光源板 bool m_Led8MotionFlag[4]; //是否为8路光源板
int m_IsHavePattern;//是否有光栅 int m_IsHavePattern; //是否有光栅
int m_AxisHomeDirection;//轴回家时的方向 int m_AxisHomeDirection; //轴回家时的方向
int m_IsUseJerk;//是否启用急停 0为不启用 1为启用 int m_IsUseJerk; //是否启用急停 0为不启用 1为启用
DWORD t_start;//获取jog运行的开始时间 DWORD t_start; //获取jog运行的开始时间
DWORD t_end;//获取jog运行的结束时间 DWORD t_end; //获取jog运行的结束时间
DWORD set_start;//获取定位运行开始时间 DWORD set_start; //获取定位运行开始时间
DWORD set_end;//获取定位运行结束时间 DWORD set_end; //获取定位运行结束时间
//是否启用探针捕获功能,1启用,默认0关闭 //是否启用探针捕获功能,1启用,默认0关闭
int m_IsProbe; int m_IsProbe;
//探针触发时,锁存的轴号,默认3表示锁存XYZ共3轴,4表示XYZA共4轴 //探针触发时,锁存的轴号,默认3表示锁存XYZ共3轴,4表示XYZA共4轴
int m_ProbeAllAxis; int m_ProbeAllAxis;
long m_ProbeCapturePos[5];//锁存各轴的位置 long m_ProbeCapturePos[5]; //锁存各轴的位置
double m_ProbeReturnPos;//探针触发时,调试时返回的距离mm,点击启动按钮时不起作用,默认10.0mm double m_ProbeReturnPos; //探针触发时,调试时返回的距离mm,点击启动按钮时不起作用,默认10.0mm
int m_ProbeReturnSpeed;//探针触发后,轴的回退速度 int m_ProbeReturnSpeed; //探针触发后,轴的回退速度
int m_isOKGlint; //是否开启ok/ng 闪烁 int m_isOKGlint; //是否开启ok/ng 闪烁
int m_ETIPort;//外部触发拍照输入端口号 int m_ETIPort; //外部触发拍照输入端口号
int m_axisStatus;//运动各轴的状态 int m_axisStatus; //运动各轴的状态
int m_axisAlarmStatus;//轴报警状态 int m_axisAlarmStatus; //轴报警状态
int m_EF3COMPort;//EF3板com口,默认为2 int m_EF3COMPort; //EF3板com口,默认为2
int m_ForSoft;//针对使用软件 0为MST 1为Metus int m_ForSoft; //针对使用软件 0为MST 1为Metus
int m_IsUseManualRunin;//是否开启手动插补(只针对步进电机) int m_IsUseManualRunin; //是否开启手动插补(只针对步进电机)
int m_IsUseRocker; //是否启用摇杆 0为不启用 1为启用旧摇杆,2为新摇杆, 默认为0 int m_IsUseRocker; //是否启用摇杆 0为不启用 1为启用旧摇杆,2为新摇杆, 默认为0
int m_IsCollectPos; //是否通过串口打印位置,与摇杆2互斥 int m_IsCollectPos; //是否通过串口打印位置,与摇杆2互斥
int m_IsCloseRocker; int m_IsCloseRocker;
int m_IsLightDebug;//是否不回家也能调试灯光 0为不启用 1为启用 默认为0 int m_IsLightDebug; //是否不回家也能调试灯光 0为不启用 1为启用 默认为0
int m_rockerHStartSpeed[4];//摇杆XYZ轴高初始速度 int m_rockerHStartSpeed[4]; //摇杆XYZ轴高初始速度
int m_rockerHDriveSpeed[4];//摇杆XYZ轴高驱动速度 int m_rockerHDriveSpeed[4]; //摇杆XYZ轴高驱动速度
int m_rockerLStartSpeed[4];//摇杆XYZ轴低初始速度 int m_rockerLStartSpeed[4]; //摇杆XYZ轴低初始速度
int m_rockerLDriveSpeed[4];//摇杆XYZ轴低驱动速度 int m_rockerLDriveSpeed[4]; //摇杆XYZ轴低驱动速度
int m_rockerASpeed[4]; //XYZ轴加减速1 int m_rockerASpeed[4]; //XYZ轴加减速1
int m_rockerDSpeed[4]; //XYZ轴加减速2 int m_rockerDSpeed[4]; //XYZ轴加减速2
int m_SaveAxisNum;//保存轴号 int m_SaveAxisNum; //保存轴号
int m_SaveAxisSpeed;//保存速度 int m_SaveAxisSpeed; //保存速度
bool bSaveSpeedFlag; bool bSaveSpeedFlag;
bool fourthAxisFlag; bool fourthAxisFlag;
bool bCircleRun;//圆弧插补 bool bCircleRun; //圆弧插补
int iCircleRunPnt[5];//圆弧插补时的圆心位置 int iCircleRunPnt[5]; //圆弧插补时的圆心位置
int jogAxisNum;//jog运动的轴号 int jogAxisNum; //jog运动的轴号
int jogspeed; int jogspeed;
bool jogMoving; bool jogMoving;
bool jogDirFlag; bool jogDirFlag;
bool m_bEmergencyState; bool m_bEmergencyState;
bool bUseGlueDispenser;//是否开启点胶 bool bUseGlueDispenser; //是否开启点胶
int m_iGlueStartSpeed; int m_iGlueStartSpeed;
int m_iGlueDriveSpeed; int m_iGlueDriveSpeed;
int m_iGlueAccSpeed; int m_iGlueAccSpeed;
int GlueDispenserindexNum;//点胶段数 int GlueDispenserindexNum; //点胶段数
int GluerunCount; int GluerunCount;
int m_iSpeedType; int m_iSpeedType;
int m_axisDirX;//探针运动时X轴的运动方向 int m_axisDirX; //探针运动时X轴的运动方向
int m_axisDirY;//探针运动时Y轴的运动方向 int m_axisDirY; //探针运动时Y轴的运动方向
int m_axisDirZ;//探针运动时Z轴的运动方向 int m_axisDirZ; //探针运动时Z轴的运动方向
int m_probeSeekSpeed; int m_probeSeekSpeed;
int m_isUseAport;//A串口 int m_isUseAport; //A串口
int m_portAnum; int m_portAnum;
int m_isUseBport;//B串口 int m_isUseBport; //B串口
int m_portBnum; int m_portBnum;
int SpCompleteTStart; int SpCompleteTStart;
@@ -425,7 +442,7 @@ public:
double m_EncPos[5]; double m_EncPos[5];
double m_PrfPos[5]; double m_PrfPos[5];
double m_PosForAllAxis[5];//记录4轴位置 double m_PosForAllAxis[5]; //记录4轴位置
bool m_bConnected; bool m_bConnected;
int m_SendDataLength; int m_SendDataLength;
unsigned char m_cSendData[64]; unsigned char m_cSendData[64];
@@ -476,12 +493,15 @@ public:
void SendMsgMotionFinished(); void SendMsgMotionFinished();
void SendMsgProbeFinished(); void SendMsgProbeFinished();
VOID EventCallback(sHSIEventProperties& sEventProp); VOID EventCallback(sHSIEventProperties& sEventProp);
int SpeedPercent(int AxisNum, double &Speed,int &DriveSpeed,int &StartSpeed, int &AccLine, int &DecLine,int &AccCurve,int &DecCurve); int SpeedPercent(int AxisNum, double& Speed, int& DriveSpeed, int& StartSpeed, int& AccLine, int& DecLine,
bool SpeedPercentJoyStick(int AxisNum, long &Speed, int &DriveSpeed, int &StartSpeed, int &AccLine, int &DecLine, int &AccCurve, int &DecCurve); int& AccCurve, int& DecCurve);
void HomeJogGearsChoice(int AxisType, int JogGears, int &DriveSpeed, int &StartSpeed, int &AccLine, int &DecLine, int &AccCurve, int &DecCurve); bool SpeedPercentJoyStick(int AxisNum, long& Speed, int& DriveSpeed, int& StartSpeed, int& AccLine, int& DecLine,
int& AccCurve, int& DecCurve);
void HomeJogGearsChoice(int AxisType, int JogGears, int& DriveSpeed, int& StartSpeed, int& AccLine, int& DecLine,
int& AccCurve, int& DecCurve);
short AxisConvertIndex(UINT AxisTypes); short AxisConvertIndex(UINT AxisTypes);
short IndexConvertAxis(int Index); short IndexConvertAxis(int Index);
double LimitOver(UINT AxisTypes, double &LimitPos); double LimitOver(UINT AxisTypes, double& LimitPos);
int P2P(short AxisNumber, long Pos, double Speed, double Acc); int P2P(short AxisNumber, long Pos, double Speed, double Acc);
void DoEvents(); void DoEvents();
HSI_STATUS DriverAlarmStatus(); HSI_STATUS DriverAlarmStatus();
@@ -502,7 +522,7 @@ private:
//网口通信添加 //网口通信添加
private: private:
TCPIP_RETURN_CODE TCPConnect(int index,char* Address, u_short port); TCPIP_RETURN_CODE TCPConnect(int index, char* Address, u_short port);
void DisConnect(); void DisConnect();
static unsigned __stdcall m_ThreadSendTCP(LPVOID pThis); static unsigned __stdcall m_ThreadSendTCP(LPVOID pThis);
static HANDLE m_ThreadTCP_Id; static HANDLE m_ThreadTCP_Id;
@@ -520,7 +540,7 @@ private:
void Create_Thread(); void Create_Thread();
void Exit_Thread(); void Exit_Thread();
int Init_Winsock(); int Init_Winsock();
public: public:
unsigned char lightdata[64]; unsigned char lightdata[64];
int LightSend; int LightSend;
public: public:
@@ -529,7 +549,5 @@ private:
HSI_STATUS SetAllGears(); //下发所有档位数据 HSI_STATUS SetAllGears(); //下发所有档位数据
}; };
extern HSI_Motion *g_pHSI_Motion; extern HSI_Motion* g_pHSI_Motion;
#endif #endif
+12 -6
View File
@@ -11,23 +11,24 @@
#endif #endif
//=========================================================================== //===========================================================================
HSI_Sevenocean_EF3 *g_pHSI_Sevenocean_EF3 = nullptr; HSI_Sevenocean_EF3* g_pHSI_Sevenocean_EF3 = nullptr;
pEventCallback HSI_Sevenocean_EF3::m_pEventCallback = nullptr; pEventCallback HSI_Sevenocean_EF3::m_pEventCallback = nullptr;
//=========================================================================== //===========================================================================
HSI_Sevenocean_EF3::HSI_Sevenocean_EF3() HSI_Sevenocean_EF3::HSI_Sevenocean_EF3()
{ {
hWnd = NULL; hWnd = nullptr;
bOfflineOnly = false; bOfflineOnly = false;
TRACE0("HSI_Sevenocean_EF3 Constructor!\n"); TRACE0("HSI_Sevenocean_EF3 Constructor!\n");
} }
//=========================================================================== //===========================================================================
HSI_Sevenocean_EF3::~HSI_Sevenocean_EF3() HSI_Sevenocean_EF3::~HSI_Sevenocean_EF3()
{ {
TRACE0("HSI_Sevenocean_EF3 Destructor!\n"); TRACE0("HSI_Sevenocean_EF3 Destructor!\n");
} }
//=========================================================================== //===========================================================================
/** /**
* HSI ³õʼ»¯ * HSI ³õʼ»¯
@@ -43,13 +44,15 @@ HSI_STATUS HSI_Sevenocean_EF3::Startup(HWND _hWnd, bool _bOfflineOnly)
bOfflineOnly = _bOfflineOnly; bOfflineOnly = _bOfflineOnly;
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_STATUS HSI_Sevenocean_EF3::GetMachineInfo(int &_NumMachineTypes) HSI_STATUS HSI_Sevenocean_EF3::GetMachineInfo(int& _NumMachineTypes)
{ {
auto rStatus = HSI_STATUS_NORMAL; auto rStatus = HSI_STATUS_NORMAL;
_NumMachineTypes = HSI_MACHINE_EF3; _NumMachineTypes = HSI_MACHINE_EF3; //»úÆ÷ÀàÐÍEF3
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
HSI_STATUS HSI_Sevenocean_EF3::SetEventCallback(pEventCallback _pCallback) HSI_STATUS HSI_Sevenocean_EF3::SetEventCallback(pEventCallback _pCallback)
{ {
@@ -66,14 +69,17 @@ HSI_STATUS HSI_Sevenocean_EF3::SetEventCallback(pEventCallback _pCallback)
} }
return rStatus; return rStatus;
} }
//=========================================================================== //===========================================================================
VOID HSI_Sevenocean_EF3::EventCallback(sHSIEventProperties& _sEventProp) VOID HSI_Sevenocean_EF3::EventCallback(sHSIEventProperties& _sEventProp)
{ {
if (m_pEventCallback) if (m_pEventCallback)
{ {
m_pEventCallback(_sEventProp.EventType, _sEventProp.EventResponse, _sEventProp.EventID, _sEventProp.EventData, _sEventProp.EventCallbackID); m_pEventCallback(_sEventProp.EventType, _sEventProp.EventResponse, _sEventProp.EventID, _sEventProp.EventData,
_sEventProp.EventCallbackID);
} }
} }
//=========================================================================== //===========================================================================
HSI_STATUS HSI_Sevenocean_EF3::Shutdown() HSI_STATUS HSI_Sevenocean_EF3::Shutdown()
{ {
+6 -8
View File
@@ -11,20 +11,18 @@
#include <cstring> #include <cstring>
class HSI_Sevenocean_EF3 :public HSI class HSI_Sevenocean_EF3 : public HSI
{ {
public: public:
HSI_Sevenocean_EF3(); HSI_Sevenocean_EF3();
~HSI_Sevenocean_EF3(); ~HSI_Sevenocean_EF3() override;
virtual HSI_STATUS Startup(HWND _hWnd, bool _bOfflineOnly); HSI_STATUS Startup(HWND _hWnd, bool _bOfflineOnly) override;
HSI_STATUS GetMachineInfo(int &_NumMachineTypes); HSI_STATUS GetMachineInfo(int& _NumMachineTypes);
HSI_STATUS SetEventCallback(pEventCallback _pCallback); HSI_STATUS SetEventCallback(pEventCallback _pCallback);
virtual HSI_STATUS Shutdown(); HSI_STATUS Shutdown() override;
static VOID EventCallback(sHSIEventProperties& sEventProp); static VOID EventCallback(sHSIEventProperties& sEventProp);
private: private:
static pEventCallback m_pEventCallback; static pEventCallback m_pEventCallback;
}; };
extern HSI_Sevenocean_EF3 *g_pHSI_Sevenocean_EF3; extern HSI_Sevenocean_EF3* g_pHSI_Sevenocean_EF3;
+60 -58
View File
@@ -14,20 +14,20 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
void CMMIO::Init() void CMMIO::Init()
{ {
m_RXTempPtr = NULL; m_RXTempPtr = nullptr;
m_RXHead=NULL; m_RXHead = nullptr;
m_RXTail=NULL; m_RXTail = nullptr;
m_SXTempPtr = NULL; m_SXTempPtr = nullptr;
m_SXHead=NULL; m_SXHead = nullptr;
m_SXTail=NULL; m_SXTail = nullptr;
CurrentPointer=0; CurrentPointer = 0;
m_iNbMsgWaiting=0; m_iNbMsgWaiting = 0;
m_terminator='\0'; m_terminator = '\0';
m_usesTerminator=FALSE; m_usesTerminator = FALSE;
m_pReceiveNotify = NULL; m_pReceiveNotify = nullptr;
} }
void CMMIO::SetCallback(CMMIO::p_fstr ptr) void CMMIO::SetCallback(p_fstr ptr)
{ {
m_pReceiveNotify = ptr; m_pReceiveNotify = ptr;
} }
@@ -37,19 +37,19 @@ DWORD CMMIO::Send(CString buffer, BOOL needsResponse/*=FALSE*/)
//ZH 12-12-05 EnterCriticalSection(&m_QueueLock); //ZH-122904 //ZH 12-12-05 EnterCriticalSection(&m_QueueLock); //ZH-122904
char LocBuffer[MAX_OUTPUT_BUFFER_SIZE]; char LocBuffer[MAX_OUTPUT_BUFFER_SIZE];
int length = buffer.GetLength (); int length = buffer.GetLength();
if (length >MAX_OUTPUT_BUFFER_SIZE) if (length > MAX_OUTPUT_BUFFER_SIZE)
{ {
length = MAX_OUTPUT_BUFFER_SIZE; length = MAX_OUTPUT_BUFFER_SIZE;
} }
unsigned short* ptr = (unsigned short*)buffer.GetBuffer (MAX_OUTPUT_BUFFER_SIZE); auto ptr = (unsigned short*)buffer.GetBuffer(MAX_OUTPUT_BUFFER_SIZE);
for (int i=0;i<length;i++) for (int i = 0; i < length; i++)
{ {
LocBuffer[i] = (char)(ptr[i] & 0xff); LocBuffer[i] = static_cast<char>(ptr[i] & 0xff);
} }
DWORD res = Send(LocBuffer,length, needsResponse); DWORD res = Send(LocBuffer, length, needsResponse);
//ZH 12-12-05 LeaveCriticalSection( &m_QueueLock ); //ZH-122904 //ZH 12-12-05 LeaveCriticalSection( &m_QueueLock ); //ZH-122904
@@ -59,21 +59,21 @@ DWORD CMMIO::Send(CString buffer, BOOL needsResponse/*=FALSE*/)
// GetNextReceived() : Helper function, rreturns receives messages placed in the queue // GetNextReceived() : Helper function, rreturns receives messages placed in the queue
// by LineReceive() // by LineReceive()
// //
int CMMIO::GetNextReceived(char *inputBuf) int CMMIO::GetNextReceived(char* inputBuf)
{ {
struct SerialList *Free; struct SerialList* Free;
int cnt=0; int cnt = 0;
// If there is a previous block then delete it // If there is a previous block then delete it
if (NULL != m_RXTempPtr) if (nullptr != m_RXTempPtr)
delete[] m_RXTempPtr; delete[] m_RXTempPtr;
m_RXTempPtr = NULL; m_RXTempPtr = nullptr;
// We are messing with pointers so use the CriticalSection // We are messing with pointers so use the CriticalSection
// EnterCriticalSection(&m_QueueLock); // EnterCriticalSection(&m_QueueLock);
// If there any more to return // If there any more to return
if( m_RXHead ) if (m_RXHead)
{ {
Free = m_RXHead; Free = m_RXHead;
m_RXHead = m_RXHead->Next; m_RXHead = m_RXHead->Next;
@@ -86,23 +86,23 @@ int CMMIO::GetNextReceived(char *inputBuf)
--m_iNbMsgWaiting; // mp --m_iNbMsgWaiting; // mp
// move over the data to the user's buffer // move over the data to the user's buffer
if (NULL != inputBuf) if (nullptr != inputBuf)
memcpy (inputBuf, m_RXTempPtr, cnt); memcpy(inputBuf, m_RXTempPtr, cnt);
} }
if( m_RXHead == NULL ) if (m_RXHead == nullptr)
m_RXTail = NULL; m_RXTail = nullptr;
// All done so out of the CriticalSection // All done so out of the CriticalSection
// LeaveCriticalSection( &m_QueueLock ); // LeaveCriticalSection( &m_QueueLock );
return(cnt); return (cnt);
} }
int CMMIO::AddReceived( const char *Buffer,DWORD Bytes) int CMMIO::AddReceived(const char* Buffer, DWORD Bytes)
{ {
DWORD index = 0; //primary buffer index DWORD index = 0; //primary buffer index
struct SerialList *Ptr; struct SerialList* Ptr;
static char Buffer2[MAX_RECIEVE_BUFFER_SIZE]; // result buffer static char Buffer2[MAX_RECIEVE_BUFFER_SIZE]; // result buffer
static char* pBuffer2 = &Buffer2[0]; static char* pBuffer2 = &Buffer2[0];
unsigned char c; unsigned char c;
@@ -131,11 +131,11 @@ int CMMIO::AddReceived( const char *Buffer,DWORD Bytes)
{ {
bArmed = false; bArmed = false;
for (;index<Bytes;index++) for (; index < Bytes; index++)
{ {
c=Buffer[index] & 0xff; c = Buffer[index] & 0xff;
//TRACE(_T("== %02x% ==\n"),c); //copy char one by one //TRACE(_T("== %02x% ==\n"),c); //copy char one by one
*(pBuffer2++) = c ; //copy char one by one *(pBuffer2++) = c; //copy char one by one
// check for end of packet. ignore if this is the last char anyways // check for end of packet. ignore if this is the last char anyways
if (m_usesTerminator && c == m_terminator && (index < Bytes - 1)) if (m_usesTerminator && c == m_terminator && (index < Bytes - 1))
@@ -150,17 +150,18 @@ int CMMIO::AddReceived( const char *Buffer,DWORD Bytes)
bArmed = bDone = true; bArmed = bDone = true;
// We are messing with pointers so use the CriticalSection // We are messing with pointers so use the CriticalSection
if (bArmed ) if (bArmed)
{ {
// EnterCriticalSection(&m_QueueLock); // EnterCriticalSection(&m_QueueLock);
//Allocate a new list and add it in //Allocate a new list and add it in
count = pBuffer2-(&Buffer2[0]); count = pBuffer2 - (&Buffer2[0]);
if (m_pReceiveNotify) if (m_pReceiveNotify)
{ // send a string to callback or, {
char* pLocalBuffer = new char[count+1]; // send a string to callback or,
auto pLocalBuffer = new char[count + 1];
if (pLocalBuffer) if (pLocalBuffer)
{ {
memcpy (pLocalBuffer,Buffer2,count); memcpy(pLocalBuffer, Buffer2, count);
pLocalBuffer[count] = 0; pLocalBuffer[count] = 0;
CString LocalStr(pLocalBuffer); CString LocalStr(pLocalBuffer);
(*m_pReceiveNotify)(LocalStr); (*m_pReceiveNotify)(LocalStr);
@@ -168,9 +169,10 @@ int CMMIO::AddReceived( const char *Buffer,DWORD Bytes)
} }
} }
else else
{ // add it as before to received data .... {
// add it as before to received data ....
Ptr = new struct SerialList; Ptr = new struct SerialList;
Ptr->Buffer = new char[count + 1 ]; Ptr->Buffer = new char[count + 1];
/************************************************************************/ /************************************************************************/
/* Greg Guilbeau - 2011/08/23 */ /* Greg Guilbeau - 2011/08/23 */
/* The following line(s) have been modified to handle x64 conversion */ /* The following line(s) have been modified to handle x64 conversion */
@@ -181,14 +183,14 @@ int CMMIO::AddReceived( const char *Buffer,DWORD Bytes)
#else #else
Ptr->Bytes = count,__FILE__,__LINE__; Ptr->Bytes = count,__FILE__,__LINE__;
#endif #endif
Ptr->Next = NULL; Ptr->Next = nullptr;
memcpy( Ptr->Buffer, Buffer2, count ); memcpy(Ptr->Buffer, Buffer2, count);
Ptr->Buffer[count] = 0; Ptr->Buffer[count] = 0;
memcpy(m_sLastMessage,Buffer2,count); //copy to last message memcpy(m_sLastMessage, Buffer2, count); //copy to last message
m_sLastMessage[count]=0; m_sLastMessage[count] = 0;
if( m_RXTail ) if (m_RXTail)
m_RXTail->Next = Ptr; m_RXTail->Next = Ptr;
else else
m_RXHead = Ptr; m_RXHead = Ptr;
@@ -198,7 +200,7 @@ int CMMIO::AddReceived( const char *Buffer,DWORD Bytes)
++m_iNbMsgWaiting; ++m_iNbMsgWaiting;
} }
// LeaveCriticalSection( &m_QueueLock ); // LeaveCriticalSection( &m_QueueLock );
pBuffer2=&Buffer2[0]; // reset out buffer pBuffer2 = &Buffer2[0]; // reset out buffer
count = 0; count = 0;
bEventRequest = true; bEventRequest = true;
} }
@@ -206,7 +208,7 @@ int CMMIO::AddReceived( const char *Buffer,DWORD Bytes)
while (!bDone); while (!bDone);
//TRACE (_T("CMMIO> Done\n")); //TRACE (_T("CMMIO> Done\n"));
return(TRUE); return (TRUE);
} }
void CMMIO::LineReceive(char* s, int nbCharAvail, BOOL ignoreDelimiter /*= FALSE*/) void CMMIO::LineReceive(char* s, int nbCharAvail, BOOL ignoreDelimiter /*= FALSE*/)
@@ -215,13 +217,14 @@ void CMMIO::LineReceive(char* s, int nbCharAvail, BOOL ignoreDelimiter /*= FALSE
{ {
//TRACE(_T("LineReceive got %d chars \n"),nbCharAvail); //TRACE(_T("LineReceive got %d chars \n"),nbCharAvail);
char c; char c;
for (int i=0 ; i<nbCharAvail ; i++ ) for (int i = 0; i < nbCharAvail; i++)
{ {
c=s[i]; c = s[i];
m_InputBuffer[CurrentPointer++] = c; m_InputBuffer[CurrentPointer++] = c;
// only add a packet if we have a delimiter // only add a packet if we have a delimiter
if ((!m_usesTerminator && i == nbCharAvail -1) || (m_usesTerminator && c == m_terminator) || ignoreDelimiter) if ((!m_usesTerminator && i == nbCharAvail - 1) || (m_usesTerminator && c == m_terminator) ||
ignoreDelimiter)
{ {
m_InputBuffer[CurrentPointer] = '\0'; m_InputBuffer[CurrentPointer] = '\0';
AddReceived(m_InputBuffer, CurrentPointer); AddReceived(m_InputBuffer, CurrentPointer);
@@ -234,22 +237,22 @@ void CMMIO::LineReceive(char* s, int nbCharAvail, BOOL ignoreDelimiter /*= FALSE
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
DWORD CMMIO::Close() DWORD CMMIO::Close()
{ {
struct SerialList *Free; struct SerialList* Free;
// Delete the contents of the temp rx pointer if any // Delete the contents of the temp rx pointer if any
delete[] m_RXTempPtr; delete[] m_RXTempPtr;
m_RXTempPtr = NULL; m_RXTempPtr = nullptr;
// Clear down all internal lists // Clear down all internal lists
// EnterCriticalSection( &m_QueueLock ); // EnterCriticalSection( &m_QueueLock );
while( m_RXHead ) while (m_RXHead)
{ {
Free = m_RXHead; Free = m_RXHead;
m_RXHead = m_RXHead->Next; m_RXHead = m_RXHead->Next;
delete[] Free->Buffer; delete[] Free->Buffer;
delete Free; delete Free;
} }
m_RXHead = NULL; m_RXHead = nullptr;
// for now we are not using the Transmit list // for now we are not using the Transmit list
#if 0 #if 0
@@ -264,10 +267,9 @@ DWORD CMMIO::Close()
m_TXHead = NULL; m_TXHead = NULL;
#endif #endif
// LeaveCriticalSection( &m_QueueLock ); // LeaveCriticalSection( &m_QueueLock );
return(TRUE); return (TRUE);
} }
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// END OF BASE CLASS CMMIO // END OF BASE CLASS CMMIO
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
+39 -28
View File
@@ -7,13 +7,14 @@
#define MAX_OUTPUT_BUFFER_SIZE 2048 #define MAX_OUTPUT_BUFFER_SIZE 2048
#define MAX_RECIEVE_BUFFER_SIZE 3000 #define MAX_RECIEVE_BUFFER_SIZE 3000
// TCP, serial style routines // TCP, serial style routines
struct SerialList struct SerialList
{ {
struct SerialList *Next; struct SerialList* Next;
DWORD Bytes; DWORD Bytes;
int Item; int Item;
char *Buffer; char* Buffer;
}; };
class CMMIO class CMMIO
@@ -27,9 +28,9 @@ private:
int CurrentPointer; int CurrentPointer;
char m_sLastMessage[MAX_RECIEVE_BUFFER_SIZE]; char m_sLastMessage[MAX_RECIEVE_BUFFER_SIZE];
struct SerialList *m_RXHead; struct SerialList* m_RXHead;
struct SerialList *m_RXTail; struct SerialList* m_RXTail;
char *m_RXTempPtr; char* m_RXTempPtr;
CString m_LastError; CString m_LastError;
BOOL m_hasError; BOOL m_hasError;
@@ -37,18 +38,19 @@ protected:
CString m_lastErrMsg; CString m_lastErrMsg;
int m_iNbMsgWaiting; int m_iNbMsgWaiting;
BOOL m_UseBuffferedSend; BOOL m_UseBuffferedSend;
CRITICAL_SECTION m_QueueLock; CRITICAL_SECTION m_QueueLock; //ÁÙ½çÇø
CRITICAL_SECTION m_ReadLock; CRITICAL_SECTION m_ReadLock;
CRITICAL_SECTION m_WriteLock; CRITICAL_SECTION m_WriteLock;
struct SerialList *m_SXHead; struct SerialList* m_SXHead;
struct SerialList *m_SXTail; struct SerialList* m_SXTail;
char *m_SXTempPtr; char* m_SXTempPtr;
protected: protected:
virtual void Init(); virtual void Init();
int AddReceived( const char *Buffer,DWORD Bytes); // [7/30/2004] int AddReceived(const char* Buffer, DWORD Bytes); // [7/30/2004]
void Error(CString sErr) { void Error(CString sErr)
{
TRACE(sErr); TRACE(sErr);
m_LastError = sErr; m_LastError = sErr;
m_hasError = TRUE; m_hasError = TRUE;
@@ -59,24 +61,27 @@ protected:
public: public:
CMMIO() CMMIO()
{ {
InitializeCriticalSection( &m_QueueLock ); // Sean Flynn mutex needs to be initialized prior to attempting to lock otherwise it will core InitializeCriticalSection(&m_QueueLock);
InitializeCriticalSection( &m_ReadLock ); // initializing here will ensure the mutex is always initialized // Sean Flynn mutex needs to be initialized prior to attempting to lock otherwise it will core
InitializeCriticalSection( &m_WriteLock ); InitializeCriticalSection(&m_ReadLock); // initializing here will ensure the mutex is always initialized
InitializeCriticalSection(&m_WriteLock);
Init(); Init();
}; };
virtual ~CMMIO() virtual ~CMMIO()
{ {
DeleteCriticalSection( &m_QueueLock ); // Clean up the mutexes resources when the destructor is called. DeleteCriticalSection(&m_QueueLock); // Clean up the mutexes resources when the destructor is called.
DeleteCriticalSection( &m_ReadLock ); DeleteCriticalSection(&m_ReadLock);
DeleteCriticalSection( &m_WriteLock ); DeleteCriticalSection(&m_WriteLock);
}; };
virtual DWORD Open() { virtual DWORD Open()
{
return 0; return 0;
} }
BOOL getError(CString& sErr) { BOOL getError(CString& sErr)
{
BOOL hasError = m_hasError; BOOL hasError = m_hasError;
if (m_hasError) if (m_hasError)
{ {
@@ -86,25 +91,31 @@ public:
return (hasError); return (hasError);
} }
virtual int GetNextReceived(char *inputBuf=NULL); virtual int GetNextReceived(char* inputBuf = nullptr);
virtual int HasNextReceived(void) { virtual int HasNextReceived(void)
{
return (m_RXHead ? m_RXHead->Bytes : FALSE); return (m_RXHead ? m_RXHead->Bytes : FALSE);
} }
virtual void SetTerminateChar(char ch) {
m_terminator=ch; virtual void SetTerminateChar(char ch)
m_usesTerminator=TRUE; {
m_terminator = ch;
m_usesTerminator = TRUE;
} }
virtual void LineReceive(char* s, int nbCharAvail, BOOL ignoreDelimiter = FALSE); virtual void LineReceive(char* s, int nbCharAvail, BOOL ignoreDelimiter = FALSE);
virtual CString GetLastErrStr() {
virtual CString GetLastErrStr()
{
return m_lastErrMsg; return m_lastErrMsg;
} }
typedef void(*p_fstr)(CString); using p_fstr = void(*)(CString);
void SetCallback(p_fstr); void SetCallback(p_fstr);
virtual DWORD Send(LPCSTR buffer, int l, BOOL needsResponse=FALSE) = 0; // [8/11/2004] virtual DWORD Send(LPCSTR buffer, int l, BOOL needsResponse = FALSE) = 0; // [8/11/2004]
virtual DWORD Send(CString buffer, BOOL needsResponse=FALSE); // [8/11/2004] virtual DWORD Send(CString buffer, BOOL needsResponse = FALSE); // [8/11/2004]
virtual bool IsValid() = 0; // pure virtual function virtual bool IsValid() = 0; // pure virtual function
protected: protected:
+210 -195
View File
@@ -29,55 +29,76 @@ static char Codes[][6] =
unsigned int WINAPI CSerialTask(LPVOID CSerialPtr) unsigned int WINAPI CSerialTask(LPVOID CSerialPtr)
{ {
TRACE( TEXT("Serial task has started \n") ); TRACE(TEXT("Serial task has started \n"));
// Call the ControlTask function in the specified plugin // Call the ControlTask function in the specified plugin
((CPSerial *)CSerialPtr)->ReceiveTask(); static_cast<CPSerial*>(CSerialPtr)->ReceiveTask();
TRACE( TEXT("Serial task has completed \n") ); TRACE(TEXT("Serial task has completed \n"));
_endthreadex(0); _endthreadex(0);
return(0); return (0);
} }
CPSerial::CPSerial() CPSerial::CPSerial()
{ {
// Serial port is not open // Serial port is not open
m_PortHandle = INVALID_HANDLE_VALUE; m_PortHandle = INVALID_HANDLE_VALUE;
m_IsWrtingData=FALSE; m_IsWrtingData = FALSE;
// Default port settings // Default port settings
m_Port = 1; m_Port = 1;
m_Baud = CBR_115200; m_Baud = CBR_115200;
m_Parity ='N'; m_Parity = 'N';
m_Bits = 8; m_Bits = 8;
m_StopBits = 1; m_StopBits = 1;
m_HandShake =CS_HANDSHAKE_FOR_SO7; m_HandShake = CS_HANDSHAKE_FOR_SO7;
m_RXTimeout = CS_DEFAULT_RX_TIMEOUT; m_RXTimeout = CS_DEFAULT_RX_TIMEOUT;
m_TXTimeout = CS_DEFAULT_TX_TIMEOUT; m_TXTimeout = CS_DEFAULT_TX_TIMEOUT;
m_iRecvState=FALSE; m_iRecvState = FALSE;
m_iRecvBytes=0; m_iRecvBytes = 0;
memset(m_RecvData,0,MAX_RECIEVE_BUFFER_SIZE); memset(m_RecvData, 0,MAX_RECIEVE_BUFFER_SIZE);
// Everything else set to NULL // Everything else set to NULL
m_ThreadHandle = NULL; m_ThreadHandle = nullptr;
//m_TXHead = NULL; //m_TXHead = NULL;
//m_TXTail = NULL; //m_TXTail = NULL;
//m_RXHead = NULL; //m_RXHead = NULL;
//m_RXTail =NULL; //m_RXTail =NULL;
memset( &m_ReceiveOLap, 0, sizeof( OVERLAPPED )); memset(&m_ReceiveOLap, 0, sizeof(OVERLAPPED));
memset( &m_TransmitOLap, 0, sizeof( OVERLAPPED )); memset(&m_TransmitOLap, 0, sizeof(OVERLAPPED));
memset( &m_ReadOLap, 0, sizeof( OVERLAPPED )); memset(&m_ReadOLap, 0, sizeof(OVERLAPPED));
memset( &m_WriteOLap, 0, sizeof( OVERLAPPED )); memset(&m_WriteOLap, 0, sizeof(OVERLAPPED));
m_hWaitCMMResponse = CreateEvent( NULL, TRUE, FALSE, NULL ); //事件最常用在多线程同步互斥机制。
m_hNewRx = CreateEvent( NULL, TRUE, FALSE, NULL ); // to trigger OnRx //1、HANDLE CreateEvent(
m_ReadOLap.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); //
// LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES结构指针,可为NULL
// BOOL bManualReset, // 手动/自动
// // TRUE:表示手动,在WaitForSingleObject后必须手动调用ResetEvent清除信号
// // FALSE:表示自动,在WaitForSingleObject后,系统自动清除事件信号
// BOOL bInitialState, //初始状态,FALSE为无信号,TRUE为有信号
// LPCTSTR lpName //事件的名称
//);
//
//2、SetEvent:设置为激活触发状态。
//
//3、ResetEvent:设置为未激活触发状态。
//
//4、WaitForSingleObject:检测信号,如果未激活,代码就会处于挂起状态,不再往下执行。
//
//————————————————
//版权声明:本文为CSDN博主「AI浩」的原创文章,遵循CC 4.0 BY - SA版权协议,转载请附上原文出处链接及本声明。
//原文链接:https ://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/108380956
m_hWaitCMMResponse = CreateEvent(nullptr, TRUE, FALSE, nullptr);
m_hNewRx = CreateEvent(nullptr, TRUE, FALSE, nullptr); // to trigger OnRx
m_ReadOLap.hEvent = CreateEvent(nullptr, TRUE, FALSE, nullptr);
//m_RXTempPtr = NULL; //m_RXTempPtr = NULL;
m_DebugInPtr = 0; m_DebugInPtr = 0;
m_DebugCount = 0; m_DebugCount = 0;
m_Item = 0; m_Item = 0;
m_MaxTXRetries = 5; m_MaxTXRetries = 5;
m_iRecvCount=252; m_iRecvCount = 252;
/* /*
// CriticalSection for locking lists // CriticalSection for locking lists
InitializeCriticalSection( &m_QueueLock ); InitializeCriticalSection( &m_QueueLock );
@@ -87,8 +108,8 @@ CPSerial::CPSerial()
// IsValidBuffer = FALSE; // IsValidBuffer = FALSE;
CurrentPointer = 0; CurrentPointer = 0;
m_hWaitCMMResponse = CreateEvent( NULL, TRUE, FALSE, NULL ); m_hWaitCMMResponse = CreateEvent(nullptr, TRUE, FALSE, nullptr);
m_hNewRx = CreateEvent( NULL, TRUE, FALSE, NULL ); // to trigger OnRx m_hNewRx = CreateEvent(nullptr, TRUE, FALSE, nullptr); // to trigger OnRx
// pParent = NULL; // pParent = NULL;
} }
@@ -98,24 +119,23 @@ CPSerial::CPSerial()
CPSerial::~CPSerial() CPSerial::~CPSerial()
{ {
if( IsOpen( ) ) if (IsOpen())
{ {
TRACE(TEXT("Warning : closing serial port in destructor\n")); TRACE(TEXT("Warning : closing serial port in destructor\n"));
Close(); Close();
} }
while(GetNextReceived()) while (GetNextReceived()); // mp 3/3/99 prevents leaks
; // mp 3/3/99 prevents leaks
/* /*
DeleteCriticalSection( &m_QueueLock ); DeleteCriticalSection( &m_QueueLock );
DeleteCriticalSection( &m_ReadLock ); DeleteCriticalSection( &m_ReadLock );
DeleteCriticalSection( &m_WriteLock ); DeleteCriticalSection( &m_WriteLock );
*/ */
// close the overlapped io event // close the overlapped io event
CloseHandle( m_ReadOLap.hEvent ); CloseHandle(m_ReadOLap.hEvent);
CloseHandle( m_WriteOLap.hEvent ); CloseHandle(m_WriteOLap.hEvent);
// //
CloseHandle( m_hWaitCMMResponse ); CloseHandle(m_hWaitCMMResponse);
CloseHandle( m_hNewRx); CloseHandle(m_hNewRx);
} }
@@ -134,7 +154,7 @@ DWORD CPSerial::Open()
// RegisterDebugWindow( ); // RegisterDebugWindow( );
// Close the port incase it is already open // Close the port incase it is already open
Close( ); Close();
// Start of assuming the worst // Start of assuming the worst
Ok = FALSE; Ok = FALSE;
@@ -144,16 +164,16 @@ DWORD CPSerial::Open()
#if 0 #if 0
PortName.Format( TEXT("\\\\.\\COM%d"), m_Port ); PortName.Format( TEXT("\\\\.\\COM%d"), m_Port );
#else #else
PortName.Format( TEXT("COM%d"), m_Port ); PortName.Format(TEXT("COM%d"), m_Port);
#endif #endif
m_PortHandle = CreateFile( PortName, GENERIC_WRITE | GENERIC_READ, 0, NULL, m_PortHandle = CreateFile(PortName, GENERIC_WRITE | GENERIC_READ, 0, nullptr,
OPEN_EXISTING, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL ); nullptr);
if( IsOpen( ) ) if (IsOpen())
{ {
// Setup the port according to the stored parameters // Setup the port according to the stored parameters
if( ProgramPort( m_Port, m_Baud, m_Parity, m_Bits, m_StopBits, m_HandShake ) ) if (ProgramPort(m_Port, m_Baud, m_Parity, m_Bits, m_StopBits, m_HandShake))
{ {
// Setup the timeouts // Setup the timeouts
CommTimeOut.ReadIntervalTimeout = 25; CommTimeOut.ReadIntervalTimeout = 25;
@@ -161,21 +181,21 @@ DWORD CPSerial::Open()
CommTimeOut.ReadTotalTimeoutConstant = 1; CommTimeOut.ReadTotalTimeoutConstant = 1;
CommTimeOut.WriteTotalTimeoutMultiplier = 1; CommTimeOut.WriteTotalTimeoutMultiplier = 1;
CommTimeOut.WriteTotalTimeoutConstant = m_TXTimeout; CommTimeOut.WriteTotalTimeoutConstant = m_TXTimeout;
if( SetCommTimeouts( m_PortHandle, &CommTimeOut ) ) if (SetCommTimeouts(m_PortHandle, &CommTimeOut))
{ {
// Setup the buffer sizes // Setup the buffer sizes
if( SetupComm( m_PortHandle, 2048, 2048 ) ) if (SetupComm(m_PortHandle, 2048, 2048))
{ {
// Setup the event masks for the monitoring task // Setup the event masks for the monitoring task
if( SetCommMask( m_PortHandle, EV_RXCHAR | EV_TXEMPTY | EV_BREAK | if (SetCommMask(m_PortHandle, EV_RXCHAR | EV_TXEMPTY | EV_BREAK |
EV_CTS | EV_DSR | EV_ERR | EV_RLSD ) ) EV_CTS | EV_DSR | EV_ERR | EV_RLSD))
{ {
// Initialize the Overlapping structures and start the // Initialize the Overlapping structures and start the
// monitoring task // monitoring task
m_ReceiveOLap.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL ); m_ReceiveOLap.hEvent = CreateEvent(nullptr, TRUE, FALSE, nullptr);
m_TransmitOLap.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL ); m_TransmitOLap.hEvent = CreateEvent(nullptr, TRUE, FALSE, nullptr);
m_ThreadHandle = (HANDLE)_beginthreadex( NULL, 0, CSerialTask, this, m_ThreadHandle = (HANDLE)_beginthreadex(nullptr, 0, CSerialTask, this,
0, &ThreadID ); 0, &ThreadID);
//Sleep(1000); //Sleep(1000);
Ok = TRUE; Ok = TRUE;
} }
@@ -186,15 +206,15 @@ DWORD CPSerial::Open()
} }
// Things have gone wrong so close the port // Things have gone wrong so close the port
if( Ok == FALSE ) if (Ok == FALSE)
{ {
TRACE(_T("CmmIO> Port OPEN issue -> CLOSED\n"),Ok); TRACE(_T("CmmIO> Port OPEN issue -> CLOSED\n"), Ok);
Close( ); Close();
} }
} }
TRACE(_T("CmmIO> Port OPEN = %d \n"),Ok); TRACE(_T("CmmIO> Port OPEN = %d \n"), Ok);
// Return the state // Return the state
return( IsOpen( ) ); return (IsOpen());
} }
@@ -202,9 +222,9 @@ DWORD CPSerial::Open()
// IsOpen() : returns true if the serial port is open // IsOpen() : returns true if the serial port is open
// //
int CPSerial::IsOpen( ) int CPSerial::IsOpen()
{ {
return( m_PortHandle != INVALID_HANDLE_VALUE ); return (m_PortHandle != INVALID_HANDLE_VALUE);
} }
@@ -212,24 +232,24 @@ int CPSerial::IsOpen( )
// SetPort() : Store the serial settings. If the port is open then these // SetPort() : Store the serial settings. If the port is open then these
// settings are applied now // settings are applied now
int CPSerial::SetPort(int Port,int Baud,char Parity,int Bits,int StopBits,int HandShake) int CPSerial::SetPort(int Port, int Baud, char Parity, int Bits, int StopBits, int HandShake)
{ {
// Use the current settings if the value has the default of 0 // Use the current settings if the value has the default of 0
m_Port = Port; m_Port = Port;
if(Baud == 0) if (Baud == 0)
Baud = m_Baud; Baud = m_Baud;
if(Parity == 0) if (Parity == 0)
Parity = m_Parity; Parity = m_Parity;
if(Bits == 0) if (Bits == 0)
Bits = m_Bits; Bits = m_Bits;
if(StopBits == 0) if (StopBits == 0)
StopBits = m_StopBits; StopBits = m_StopBits;
if (HandShake==0) if (HandShake == 0)
HandShake=m_HandShake; HandShake = m_HandShake;
// If the values are ok then store them // If the values are ok then store them
if( ProgramPort( Port, Baud, Parity, Bits, StopBits, HandShake ) ) if (ProgramPort(Port, Baud, Parity, Bits, StopBits, HandShake))
{ {
m_Port = Port; m_Port = Port;
m_Baud = Baud; m_Baud = Baud;
@@ -237,9 +257,9 @@ int CPSerial::SetPort(int Port,int Baud,char Parity,int Bits,int StopBits,int Ha
m_Bits = Bits; m_Bits = Bits;
m_StopBits = StopBits; m_StopBits = StopBits;
m_HandShake = HandShake; m_HandShake = HandShake;
return(TRUE); return (TRUE);
} }
return(FALSE); return (FALSE);
} }
@@ -247,24 +267,24 @@ int CPSerial::SetPort(int Port,int Baud,char Parity,int Bits,int StopBits,int Ha
// GetPortData() : return the current settings // GetPortData() : return the current settings
// //
void CPSerial::GetPortData(int *Port,int *Baud,char *Parity,int *Bits,int *StopBits,int *HandShake) void CPSerial::GetPortData(int* Port, int* Baud, char* Parity, int* Bits, int* StopBits, int* HandShake)
{ {
// return the requested settings // return the requested settings
if( Port ) if (Port)
*Port = m_Port; *Port = m_Port;
if( m_Baud ) if (m_Baud)
*Baud = m_Baud; *Baud = m_Baud;
if( Parity ) if (Parity)
*Parity = m_Parity; *Parity = m_Parity;
if( Bits ) if (Bits)
*Bits = m_Bits; *Bits = m_Bits;
if( StopBits ) if (StopBits)
*StopBits = m_StopBits; *StopBits = m_StopBits;
if( HandShake ) if (HandShake)
*HandShake = m_HandShake; *HandShake = m_HandShake;
} }
DWORD CPSerial::SendWriteFile(const char *Buffer, DWORD Bytes) DWORD CPSerial::SendWriteFile(const char* Buffer, DWORD Bytes)
{ {
DWORD BytesWritten; DWORD BytesWritten;
BOOL WriteState; BOOL WriteState;
@@ -283,16 +303,16 @@ DWORD CPSerial::Close()
HANDLE Port; HANDLE Port;
// If the port is open then close it // If the port is open then close it
if( IsOpen( ) ) if (IsOpen())
{ {
Port = m_PortHandle; Port = m_PortHandle;
m_PortHandle = INVALID_HANDLE_VALUE; m_PortHandle = INVALID_HANDLE_VALUE;
CloseHandle( Port ); CloseHandle(Port);
if( WaitForSingleObject( m_ThreadHandle, (5 * LONG_TIMEOUT) ) != WAIT_OBJECT_0 ) if (WaitForSingleObject(m_ThreadHandle, (5 * LONG_TIMEOUT)) != WAIT_OBJECT_0)
TRACE( TEXT("ERR:Serial port thread failed to terminate\n") ); TRACE(TEXT("ERR:Serial port thread failed to terminate\n"));
m_ThreadHandle = NULL; m_ThreadHandle = nullptr;
CloseHandle( m_ReceiveOLap.hEvent ); CloseHandle(m_ReceiveOLap.hEvent);
CloseHandle( m_TransmitOLap.hEvent ); CloseHandle(m_TransmitOLap.hEvent);
} }
CMMIO::Close(); CMMIO::Close();
@@ -323,7 +343,7 @@ DWORD CPSerial::Close()
LeaveCriticalSection( &m_QueueLock ); LeaveCriticalSection( &m_QueueLock );
*/ */
return(TRUE); return (TRUE);
} }
@@ -333,10 +353,10 @@ DWORD CPSerial::Close()
DWORD CPSerial::Send(LPCSTR buffer, int l, BOOL /*needsResponse=FALSE*/) DWORD CPSerial::Send(LPCSTR buffer, int l, BOOL /*needsResponse=FALSE*/)
{ {
m_IsWrtingData=TRUE; m_IsWrtingData = TRUE;
return (WritePort(buffer, static_cast<DWORD>(l)));
return ( WritePort ((const char*) buffer, (DWORD) l));
} }
/* /*
DWORD CPSerial::Send(CString buffer) DWORD CPSerial::Send(CString buffer)
{ {
@@ -360,16 +380,16 @@ return res;
// WritePort() : Writes the specifed bytes to the serial port // WritePort() : Writes the specifed bytes to the serial port
// //
DWORD CPSerial::WritePort(const char *Buffer,DWORD Bytes) DWORD CPSerial::WritePort(const char* Buffer, DWORD Bytes)
{ {
DWORD BytesWritten, TotalWritten, Error; DWORD BytesWritten, TotalWritten, Error;
BOOL WriteState; BOOL WriteState;
int Retrys; int Retrys;
TotalWritten=0; TotalWritten = 0;
// Check that the port is open // Check that the port is open
if( IsOpen( ) ) if (IsOpen())
{ {
// Enter a critical section incase this is been used from multiple threads // Enter a critical section incase this is been used from multiple threads
//EnterCriticalSection(&m_WriteLock); //EnterCriticalSection(&m_WriteLock);
@@ -383,31 +403,30 @@ DWORD CPSerial::WritePort(const char *Buffer,DWORD Bytes)
Retrys++; Retrys++;
BytesWritten = 0; BytesWritten = 0;
// Write the data // Write the data
WriteState = WriteFile( m_PortHandle, &Buffer[TotalWritten], WriteState = WriteFile(m_PortHandle, &Buffer[TotalWritten],
Bytes-TotalWritten, &BytesWritten, Bytes - TotalWritten, &BytesWritten,
&m_WriteOLap ); &m_WriteOLap);
if( !WriteState ) if (!WriteState)
{ {
Sleep(5); Sleep(5);
// Ensure the write is going on in the background // Ensure the write is going on in the background
if( GetLastError() == ERROR_IO_PENDING ) if (GetLastError() == ERROR_IO_PENDING)
{ {
// And wait for it to finish // And wait for it to finish
WaitForSingleObject( m_WriteOLap.hEvent, LONG_TIMEOUT ); // GER WaitForSingleObject(m_WriteOLap.hEvent, LONG_TIMEOUT); // GER
GetOverlappedResult( m_PortHandle, &m_WriteOLap, &BytesWritten, GetOverlappedResult(m_PortHandle, &m_WriteOLap, &BytesWritten,
FALSE ); FALSE);
} }
else else
{ {
// Gone wrong so clear any erros // Gone wrong so clear any erros
ClearCommError( m_PortHandle, &Error, NULL ); ClearCommError(m_PortHandle, &Error, nullptr);
BytesWritten= 0 ; BytesWritten = 0;
} }
} }
TotalWritten += BytesWritten; TotalWritten += BytesWritten;
} }
while( Retrys <= m_MaxTXRetries && TotalWritten < Bytes ); while (Retrys <= m_MaxTXRetries && TotalWritten < Bytes);
//ZH //ZH
/* /*
@@ -419,29 +438,29 @@ DWORD CPSerial::WritePort(const char *Buffer,DWORD Bytes)
//LeaveCriticalSection( &m_WriteLock ); //LeaveCriticalSection( &m_WriteLock );
} }
return( TotalWritten ); return (TotalWritten);
} }
//========================================================================== //==========================================================================
int CPSerial::ReadBlock(BYTE *abIn, int MaxLength) int CPSerial::ReadBlock(BYTE* abIn, int MaxLength)
{ {
BOOL JudgeRead; BOOL JudgeRead;
COMSTAT ComStat; COMSTAT ComStat;
DWORD dwErrorFlags, dwLength; DWORD dwErrorFlags, dwLength;
ClearCommError(m_PortHandle, &dwErrorFlags, &ComStat); ClearCommError(m_PortHandle, &dwErrorFlags, &ComStat);
if (dwErrorFlags>0) if (dwErrorFlags > 0)
{ {
PurgeComm(m_PortHandle, PURGE_RXABORT | PURGE_RXCLEAR); PurgeComm(m_PortHandle, PURGE_RXABORT | PURGE_RXCLEAR);
return 0; return 0;
} }
dwLength = ((DWORD)MaxLength<ComStat.cbInQue ? MaxLength : ComStat.cbInQue); dwLength = (static_cast<DWORD>(MaxLength) < ComStat.cbInQue ? MaxLength : ComStat.cbInQue);
memset(abIn, 0, MaxLength); memset(abIn, 0, MaxLength);
//如果有字符即读入 //如果有字符即读入
if (dwLength) if (dwLength)
{ {
JudgeRead = ReadFile(m_PortHandle, abIn, dwLength, &dwLength, &m_ReceiveOLap);//¶Á³ö×Ö·ûÖÁabIn´¦ JudgeRead = ReadFile(m_PortHandle, abIn, dwLength, &dwLength, &m_ReceiveOLap); //读出字符至abIn
if (!JudgeRead) if (!JudgeRead)
{ {
//如果重叠操作未完成,等待直到操作完成 //如果重叠操作未完成,等待直到操作完成
@@ -463,7 +482,7 @@ int CPSerial::ReadBlock(BYTE *abIn, int MaxLength)
// ReceiveTask() : Internal function, this runs as a thread and provides the // ReceiveTask() : Internal function, this runs as a thread and provides the
// OnRecieve and OnTransmit events // OnRecieve and OnTransmit events
void CPSerial::ReceiveTask( void ) void CPSerial::ReceiveTask(void)
{ {
//DWORD BytesWritten; //DWORD BytesWritten;
DWORD Events; DWORD Events;
@@ -475,7 +494,7 @@ void CPSerial::ReceiveTask( void )
BYTE abIn[MAXBLOCK]; BYTE abIn[MAXBLOCK];
int len; int len;
len = ReadBlock(abIn, MAXBLOCK); len = ReadBlock(abIn, MAXBLOCK);
if ((len>0) && (len<MAX_RECIEVE_BUFFER_SIZE)) if ((len > 0) && (len < MAX_RECIEVE_BUFFER_SIZE))
{ {
//memset(m_RecvData, 0, m_iRecvBytes); //memset(m_RecvData, 0, m_iRecvBytes);
memcpy(m_RecvData, abIn, len); memcpy(m_RecvData, abIn, len);
@@ -531,8 +550,7 @@ void CPSerial::ReceiveTask( void )
// Go round while the port is open // Go round while the port is open
} }
while( IsOpen( ) ); while (IsOpen());
} }
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@@ -542,40 +560,40 @@ void CPSerial::ReceiveTask( void )
void CPSerial::OnReceive() void CPSerial::OnReceive()
{ {
// Dummy OnReceieve if not used // Dummy OnReceieve if not used
char s[MAX_RECIEVE_BUFFER_SIZE]={0}; char s[MAX_RECIEVE_BUFFER_SIZE] = {0};
s[1]='\0'; s[1] = '\0';
CurrentPointer = 0; CurrentPointer = 0;
if (m_HandShake==CS_HANDSHAKE_FOR_TRESASTR_E) if (m_HandShake == CS_HANDSHAKE_FOR_TRESASTR_E)
{ {
int num = ReadPort(s, MAX_RECIEVE_BUFFER_SIZE); int num = ReadPort(s, MAX_RECIEVE_BUFFER_SIZE);
if ((num>0) && (num<MAX_RECIEVE_BUFFER_SIZE)) if ((num > 0) && (num < MAX_RECIEVE_BUFFER_SIZE))
{ {
if(m_IsWrtingData) if (m_IsWrtingData)
{ {
memset(m_RecvData,0,MAX_RECIEVE_BUFFER_SIZE); memset(m_RecvData, 0,MAX_RECIEVE_BUFFER_SIZE);
m_IsWrtingData=FALSE; m_IsWrtingData = FALSE;
m_iRecvBytes=0; m_iRecvBytes = 0;
} }
TRACE1("----RECV%d----\r\n",num); TRACE1("----RECV%d----\r\n", num);
TRACE3("%02X %02X %02X ",s[0],s[1],s[2]); TRACE3("%02X %02X %02X ", s[0], s[1], s[2]);
TRACE3("%02X %02X %02X ",s[3],s[4],s[5]); TRACE3("%02X %02X %02X ", s[3], s[4], s[5]);
TRACE3("%02X %02X %02X\r\n",s[6],s[7],s[8]); TRACE3("%02X %02X %02X\r\n", s[6], s[7], s[8]);
for(int i=0;i<num;i++) for (int i = 0; i < num; i++)
{ {
m_RecvData[m_iRecvBytes++]=s[i]; m_RecvData[m_iRecvBytes++] = s[i];
} }
m_iRecvState=TRUE; m_iRecvState = TRUE;
} }
} }
else else
{ {
int num = ReadPort(s, m_iRecvCount); int num = ReadPort(s, m_iRecvCount);
if ((num>0) && (num<MAX_RECIEVE_BUFFER_SIZE)) if ((num > 0) && (num < MAX_RECIEVE_BUFFER_SIZE))
{ {
// memset(m_RecvData,0,m_iRecvBytes); // memset(m_RecvData,0,m_iRecvBytes);
memcpy(m_RecvData,s, num); memcpy(m_RecvData, s, num);
m_iRecvBytes=num; m_iRecvBytes = num;
m_iRecvState=TRUE; m_iRecvState = TRUE;
} }
} }
//LineReceive(s, num); //LineReceive(s, num);
@@ -586,39 +604,39 @@ void CPSerial::OnReceive()
// ReadPort() : Read the specifed number of bytes. // ReadPort() : Read the specifed number of bytes.
// //
DWORD CPSerial::ReadPort(char *Buffer,DWORD Bytes) DWORD CPSerial::ReadPort(char* Buffer, DWORD Bytes)
{ {
DWORD BytesRead,Error; DWORD BytesRead, Error;
BOOL ReadState; BOOL ReadState;
BytesRead = 0; BytesRead = 0;
// Check the port is open // Check the port is open
if( IsOpen( ) ) if (IsOpen())
{ {
// Enter a critical section incase this is been used from multiple threads // Enter a critical section incase this is been used from multiple threads
// EnterCriticalSection(&m_ReadLock); // EnterCriticalSection(&m_ReadLock);
// Start the read // Start the read
ReadState = ReadFile(m_PortHandle,Buffer,Bytes,&BytesRead,&m_ReadOLap); ReadState = ReadFile(m_PortHandle, Buffer, Bytes, &BytesRead, &m_ReadOLap);
if( !ReadState ) if (!ReadState)
{ {
Sleep(3); Sleep(3);
// the specifed number of bytes were not available so // the specifed number of bytes were not available so
// the read will continue in the background aslong as // the read will continue in the background aslong as
// GetLastError() returns ERROR_IO_PENDING // GetLastError() returns ERROR_IO_PENDING
if( GetLastError() == ERROR_IO_PENDING ) if (GetLastError() == ERROR_IO_PENDING)
{ {
// Wait for the read to complete // Wait for the read to complete
WaitForSingleObject( m_ReadOLap.hEvent, LONG_TIMEOUT ); // GER WaitForSingleObject(m_ReadOLap.hEvent, LONG_TIMEOUT); // GER
// get the result of the read // get the result of the read
if( GetOverlappedResult( m_PortHandle, &m_ReadOLap, &BytesRead, FALSE ) == 0 ) if (GetOverlappedResult(m_PortHandle, &m_ReadOLap, &BytesRead, FALSE) == 0)
Error = GetLastError(); Error = GetLastError();
} }
else else
{ {
// Gone wrong so clear any erros // Gone wrong so clear any erros
ClearCommError( m_PortHandle, &Error, NULL ); ClearCommError(m_PortHandle, &Error, nullptr);
BytesRead = 0 ; BytesRead = 0;
} }
} }
@@ -631,11 +649,10 @@ DWORD CPSerial::ReadPort(char *Buffer,DWORD Bytes)
// LeaveCriticalSection( &m_ReadLock ); // LeaveCriticalSection( &m_ReadLock );
} }
return(BytesRead); return (BytesRead);
} }
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// ReadPort() : Read the specifed number of bytes into a CString class. // ReadPort() : Read the specifed number of bytes into a CString class.
// //
@@ -657,35 +674,35 @@ DWORD CPSerial::ReadPort(CString &Buffer,DWORD Bytes)
// ProgramPort() : Internal function to setup the serial port // ProgramPort() : Internal function to setup the serial port
// //
int CPSerial::ProgramPort(int Port,int Baud,char Parity,int Bits,int StopBits,int HandShake) int CPSerial::ProgramPort(int Port, int Baud, char Parity, int Bits, int StopBits, int HandShake)
{ {
CString Param,Params; CString Param, Params;
DCB SerialDCB; DCB SerialDCB;
int Ok; int Ok;
// Build up the serial port settings // Build up the serial port settings
Params.Format( TEXT("com%d"), Port ); Params.Format(TEXT("com%d"), Port);
Param.Format( TEXT(" baud=%d"), Baud ); Param.Format(TEXT(" baud=%d"), Baud);
Params += Param; Params += Param;
Param.Format( TEXT(" parity=%c"), Parity ); Param.Format(TEXT(" parity=%c"), Parity);
Params += Param; Params += Param;
Param.Format( TEXT(" data=%d"), Bits ); Param.Format(TEXT(" data=%d"), Bits);
Params += Param; Params += Param;
Param.Format( TEXT(" stop=%d"), StopBits ); Param.Format(TEXT(" stop=%d"), StopBits);
Params += Param; Params += Param;
Ok = FALSE; Ok = FALSE;
memset( (void *)&SerialDCB, 0, sizeof(SerialDCB) ); memset(&SerialDCB, 0, sizeof(SerialDCB));
SerialDCB.DCBlength = sizeof(SerialDCB); SerialDCB.DCBlength = sizeof(SerialDCB);
// Place them in the DCB structure, this also validates them if the // Place them in the DCB structure, this also validates them if the
// serial port is not open // serial port is not open
if( BuildCommDCB( Params, &SerialDCB ) ) if (BuildCommDCB(Params, &SerialDCB))
{ {
// If the port is open // If the port is open
if( IsOpen( ) ) if (IsOpen())
{ {
// Set the handshake bits // Set the handshake bits
switch(HandShake) switch (HandShake)
{ {
case CS_HANDSHAKE_RTSCTS: case CS_HANDSHAKE_RTSCTS:
SerialDCB.fOutxCtsFlow = TRUE; SerialDCB.fOutxCtsFlow = TRUE;
@@ -711,37 +728,37 @@ int CPSerial::ProgramPort(int Port,int Baud,char Parity,int Bits,int StopBits,in
SerialDCB.fDtrControl = DTR_CONTROL_ENABLE; SerialDCB.fDtrControl = DTR_CONTROL_ENABLE;
break; break;
case CS_HANDSHAKE_FOR_SO7: case CS_HANDSHAKE_FOR_SO7:
SerialDCB.fDsrSensitivity=FALSE; SerialDCB.fDsrSensitivity = FALSE;
SerialDCB.XonChar = 17; SerialDCB.XonChar = 17;
SerialDCB.XoffChar = 19; SerialDCB.XoffChar = 19;
SerialDCB.fOutX=FALSE; SerialDCB.fOutX = FALSE;
SerialDCB.fInX=FALSE; SerialDCB.fInX = FALSE;
SerialDCB.fErrorChar=FALSE; SerialDCB.fErrorChar = FALSE;
SerialDCB.fRtsControl=RTS_CONTROL_ENABLE; SerialDCB.fRtsControl = RTS_CONTROL_ENABLE;
SerialDCB.fDtrControl = DTR_CONTROL_ENABLE; SerialDCB.fDtrControl = DTR_CONTROL_ENABLE;
SerialDCB.fOutxCtsFlow=FALSE; SerialDCB.fOutxCtsFlow = FALSE;
SerialDCB.fOutxDsrFlow=FALSE; SerialDCB.fOutxDsrFlow = FALSE;
SerialDCB.XonLim=2048; SerialDCB.XonLim = 2048;
SerialDCB.XoffLim=512; SerialDCB.XoffLim = 512;
break; break;
case CS_HANDSHAKE_FOR_TRESASTR_E: case CS_HANDSHAKE_FOR_TRESASTR_E:
SerialDCB.EofChar = 26; SerialDCB.EofChar = 26;
SerialDCB.XonChar = 17; SerialDCB.XonChar = 17;
SerialDCB.XoffChar = 19; SerialDCB.XoffChar = 19;
SerialDCB.fOutX=TRUE; SerialDCB.fOutX = TRUE;
SerialDCB.fInX=TRUE; SerialDCB.fInX = TRUE;
SerialDCB.fRtsControl=RTS_CONTROL_DISABLE; SerialDCB.fRtsControl = RTS_CONTROL_DISABLE;
SerialDCB.fDtrControl = DTR_CONTROL_ENABLE; SerialDCB.fDtrControl = DTR_CONTROL_ENABLE;
SerialDCB.fDsrSensitivity=FALSE; SerialDCB.fDsrSensitivity = FALSE;
SerialDCB.XonLim=256; SerialDCB.XonLim = 256;
SerialDCB.XoffLim=256; SerialDCB.XoffLim = 256;
break; break;
default: default:
break; break;
} }
// Finally apply the params to the port // Finally apply the params to the port
if(SetCommState( m_PortHandle, &SerialDCB ) ) if (SetCommState(m_PortHandle, &SerialDCB))
{ {
Ok = TRUE; Ok = TRUE;
} }
@@ -749,9 +766,9 @@ int CPSerial::ProgramPort(int Port,int Baud,char Parity,int Bits,int StopBits,in
{ {
GetCommState(m_PortHandle, &SerialDCB); GetCommState(m_PortHandle, &SerialDCB);
SerialDCB.BaudRate = Baud; // set the baud rate SerialDCB.BaudRate = Baud; // set the baud rate
SerialDCB.ByteSize = (BYTE)Bits; // data size, xmit, and rcv SerialDCB.ByteSize = static_cast<BYTE>(Bits); // data size, xmit, and rcv
SerialDCB.StopBits = (BYTE)StopBits; // one stop bit SerialDCB.StopBits = static_cast<BYTE>(StopBits); // one stop bit
switch(Parity) switch (Parity)
{ {
case 'O': case 'O':
case 'o': case 'o':
@@ -764,10 +781,9 @@ int CPSerial::ProgramPort(int Port,int Baud,char Parity,int Bits,int StopBits,in
default: default:
SerialDCB.Parity = NOPARITY; // no parity bit SerialDCB.Parity = NOPARITY; // no parity bit
break; break;
} }
// Set the handshake bits // Set the handshake bits
switch(HandShake) switch (HandShake)
{ {
case CS_HANDSHAKE_RTSCTS: case CS_HANDSHAKE_RTSCTS:
SerialDCB.fOutxCtsFlow = TRUE; SerialDCB.fOutxCtsFlow = TRUE;
@@ -787,37 +803,37 @@ int CPSerial::ProgramPort(int Port,int Baud,char Parity,int Bits,int StopBits,in
SerialDCB.fDtrControl = DTR_CONTROL_ENABLE; SerialDCB.fDtrControl = DTR_CONTROL_ENABLE;
break; break;
case CS_HANDSHAKE_FOR_SO7: case CS_HANDSHAKE_FOR_SO7:
SerialDCB.fDsrSensitivity=FALSE; SerialDCB.fDsrSensitivity = FALSE;
SerialDCB.XonChar = 17; SerialDCB.XonChar = 17;
SerialDCB.XoffChar = 19; SerialDCB.XoffChar = 19;
SerialDCB.fOutX=FALSE; SerialDCB.fOutX = FALSE;
SerialDCB.fInX=FALSE; SerialDCB.fInX = FALSE;
SerialDCB.fErrorChar=FALSE; SerialDCB.fErrorChar = FALSE;
SerialDCB.fRtsControl=RTS_CONTROL_ENABLE; SerialDCB.fRtsControl = RTS_CONTROL_ENABLE;
SerialDCB.fDtrControl = DTR_CONTROL_ENABLE; SerialDCB.fDtrControl = DTR_CONTROL_ENABLE;
SerialDCB.fOutxCtsFlow=FALSE; SerialDCB.fOutxCtsFlow = FALSE;
SerialDCB.fOutxDsrFlow=FALSE; SerialDCB.fOutxDsrFlow = FALSE;
SerialDCB.XonLim=2048; SerialDCB.XonLim = 2048;
SerialDCB.XoffLim=512; SerialDCB.XoffLim = 512;
break; break;
case CS_HANDSHAKE_FOR_TRESASTR_E: case CS_HANDSHAKE_FOR_TRESASTR_E:
SerialDCB.EofChar = 26; SerialDCB.EofChar = 26;
SerialDCB.XonChar = 17; SerialDCB.XonChar = 17;
SerialDCB.XoffChar = 19; SerialDCB.XoffChar = 19;
SerialDCB.fOutX=TRUE; SerialDCB.fOutX = TRUE;
SerialDCB.fInX=TRUE; SerialDCB.fInX = TRUE;
SerialDCB.fRtsControl=RTS_CONTROL_DISABLE; SerialDCB.fRtsControl = RTS_CONTROL_DISABLE;
SerialDCB.fDtrControl = DTR_CONTROL_ENABLE; SerialDCB.fDtrControl = DTR_CONTROL_ENABLE;
SerialDCB.fDsrSensitivity=FALSE; SerialDCB.fDsrSensitivity = FALSE;
SerialDCB.XonLim=256; SerialDCB.XonLim = 256;
SerialDCB.XoffLim=256; SerialDCB.XoffLim = 256;
break; break;
default: default:
break; break;
} }
// Finally apply the params to the port // Finally apply the params to the port
if(SetCommState( m_PortHandle, &SerialDCB ) ) if (SetCommState(m_PortHandle, &SerialDCB))
{ {
Ok = TRUE; Ok = TRUE;
} }
@@ -830,7 +846,7 @@ int CPSerial::ProgramPort(int Port,int Baud,char Parity,int Bits,int StopBits,in
Ok = TRUE; Ok = TRUE;
} }
} }
return(Ok); return (Ok);
} }
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@@ -847,7 +863,7 @@ void CPSerial::OnTransmit(int /*Item*/, DWORD /*Error*/)
// SetTimeouts() : Sets the rx and tx timeouts // SetTimeouts() : Sets the rx and tx timeouts
// //
void CPSerial::SetTimeouts( int RXTimeout, int TXTimeout ) void CPSerial::SetTimeouts(int RXTimeout, int TXTimeout)
{ {
COMMTIMEOUTS CommTimeOut; COMMTIMEOUTS CommTimeOut;
@@ -857,14 +873,14 @@ void CPSerial::SetTimeouts( int RXTimeout, int TXTimeout )
// If the port is open then configure the port also // If the port is open then configure the port also
// Currently we only use the Fixed timeouts // Currently we only use the Fixed timeouts
if( IsOpen( ) ) if (IsOpen())
{ {
CommTimeOut.ReadIntervalTimeout = 25; CommTimeOut.ReadIntervalTimeout = 25;
CommTimeOut.ReadTotalTimeoutMultiplier = 1; CommTimeOut.ReadTotalTimeoutMultiplier = 1;
CommTimeOut.ReadTotalTimeoutConstant = 0; CommTimeOut.ReadTotalTimeoutConstant = 0;
CommTimeOut.WriteTotalTimeoutMultiplier = 0; CommTimeOut.WriteTotalTimeoutMultiplier = 0;
CommTimeOut.WriteTotalTimeoutConstant = m_TXTimeout; CommTimeOut.WriteTotalTimeoutConstant = m_TXTimeout;
SetCommTimeouts( m_PortHandle, &CommTimeOut ); SetCommTimeouts(m_PortHandle, &CommTimeOut);
} }
} }
@@ -873,7 +889,7 @@ void CPSerial::SetTimeouts( int RXTimeout, int TXTimeout )
// AddToDebug() : Add the data to the debug output. State is 1 = rx 2 = tx // AddToDebug() : Add the data to the debug output. State is 1 = rx 2 = tx
// 3 = user // 3 = user
void CPSerial::AddToDebug( const char * /*Ptr*/, DWORD /*BytesToCopy*/, int /*State*/ ) void CPSerial::AddToDebug(const char* /*Ptr*/, DWORD /*BytesToCopy*/, int /*State*/)
{ {
//ZH //ZH
#if 0 #if 0
@@ -991,7 +1007,7 @@ return(BytesTotal);
int CPSerial::MaxPort() int CPSerial::MaxPort()
{ {
// return the max port, :-) // return the max port, :-)
return(8); return (8);
} }
@@ -1001,7 +1017,7 @@ int CPSerial::MaxPort()
// data sent. // data sent.
// //
int CPSerial::Transmit(const char * /*Buffer*/,DWORD /*Bytes*/) int CPSerial::Transmit(const char* /*Buffer*/, DWORD /*Bytes*/)
{ {
/* /*
struct SerialList *Ptr; struct SerialList *Ptr;
@@ -1052,7 +1068,7 @@ int CPSerial::Transmit(const char * /*Buffer*/,DWORD /*Bytes*/)
} }
*/ */
return(0); return (0);
} }
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@@ -1229,24 +1245,24 @@ return( m_RXTempPtr );
// ascii hex // ascii hex
// //
int CPSerial::HexToInt(char *Data, int Bytes) int CPSerial::HexToInt(char* Data, int Bytes)
{ {
int Byte; int Byte;
int HexChar, Value; int HexChar, Value;
Value = 0; Value = 0;
for( Byte = 0; Byte < Bytes; Byte++ ) for (Byte = 0; Byte < Bytes; Byte++)
{ {
Value <<= 4; Value <<= 4;
HexChar = *Data++ -= '0'; HexChar = *Data++ -= '0';
if( HexChar > 32 ) if (HexChar > 32)
HexChar -= 39; HexChar -= 39;
else if( HexChar > 9 ) else if (HexChar > 9)
HexChar -= 7; HexChar -= 7;
Value += HexChar; Value += HexChar;
} }
return( Value ); return (Value);
} }
@@ -1275,7 +1291,6 @@ AfxRegisterClass( &wndcls );
*/ */
#if 0 #if 0
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// SendBuffer() : Internal function, this writes the next block of data // SendBuffer() : Internal function, this writes the next block of data
+29 -29
View File
@@ -59,7 +59,6 @@ const int CS_HANDSHAKE_FOR_SO7 = 5;
const int CS_HANDSHAKE_FOR_TRESASTR_E = 6; const int CS_HANDSHAKE_FOR_TRESASTR_E = 6;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Debug constants // Debug constants
const int CS_DEBUG_SIZE = 1024; const int CS_DEBUG_SIZE = 1024;
@@ -80,69 +79,70 @@ public:
// Implementation // Implementation
public: public:
virtual ~CPSerial(); ~CPSerial() override;
// Attributes // Attributes
public: public:
// Operations // Operations
public: public:
// Open the serial port ( if possible ) using the parameters set by SetPort() // Open the serial port ( if possible ) using the parameters set by SetPort()
DWORD Open(); DWORD Open() override;
// Setup the serial port prior to opening it // Setup the serial port prior to opening it
int SetPort( int Port, int Baud = 0, char Parity = 0, int Bits = 0, int SetPort(int Port, int Baud = 0, char Parity = 0, int Bits = 0,
int StopBits = 0, int HandShake = 0 ); int StopBits = 0, int HandShake = 0);
// Set up the port timeouts // Set up the port timeouts
void SetTimeouts( int RXTimeout = CS_DEFAULT_RX_TIMEOUT, void SetTimeouts(int RXTimeout = CS_DEFAULT_RX_TIMEOUT,
int TXTimeout = CS_DEFAULT_TX_TIMEOUT ); int TXTimeout = CS_DEFAULT_TX_TIMEOUT);
// Get the serial port settings // Get the serial port settings
void GetPortData( int *Port, int *Baud, char *Parity, int *Bits, void GetPortData(int* Port, int* Baud, char* Parity, int* Bits,
int *StopBits, int *HandShake ); int* StopBits, int* HandShake);
// Test if the serial port is open // Test if the serial port is open
bool IsValid() { bool IsValid() override
return IsOpen()!=0; {
return IsOpen() != 0;
} }
int IsOpen( void );
int IsOpen(void);
// Close the serial port // Close the serial port
DWORD Close( void ); DWORD Close(void) override;
// Flush all data in any serial port buffers // Flush all data in any serial port buffers
int FlushPort( void ); int FlushPort(void);
// Attempt to read the specified number of bytes // Attempt to read the specified number of bytes
DWORD ReadPort( char *Buffer, DWORD Bytes ); DWORD ReadPort(char* Buffer, DWORD Bytes);
DWORD ReadPort( CString &Buffer, DWORD Bytes ); DWORD ReadPort(CString& Buffer, DWORD Bytes);
// Attempt to write the specified number of bytes // Attempt to write the specified number of bytes
DWORD WritePort( const char *Buffer, DWORD Bytes ); DWORD WritePort(const char* Buffer, DWORD Bytes);
DWORD SendWriteFile(const char *Buffer, DWORD Bytes); DWORD SendWriteFile(const char* Buffer, DWORD Bytes);
// Send the specifed number of bytes out when possible // Send the specifed number of bytes out when possible
int Transmit( const char *Buffer, DWORD Bytes ); int Transmit(const char* Buffer, DWORD Bytes);
// Add a block of data to the internal list of receieved blocks // Add a block of data to the internal list of receieved blocks
int AddReceived( const char *Buffer, DWORD Bytes ); int AddReceived(const char* Buffer, DWORD Bytes);
// Get the next block of data added with AddReceived() // Get the next block of data added with AddReceived()
// char *GetNextReceived( void ); // char *GetNextReceived( void );
// Find the maximum port number available // Find the maximum port number available
int MaxPort( void ); int MaxPort(void);
// Add text to the debug output // Add text to the debug output
void AddToDebug( const char *Ptr, DWORD BytesToCopy, int State ); void AddToDebug(const char* Ptr, DWORD BytesToCopy, int State);
// Attach this serial port to a debug window // Attach this serial port to a debug window
//CSerialRaw *AttachWnd( CWnd *Wnd ); //CSerialRaw *AttachWnd( CWnd *Wnd );
// Convert ascii hex into an int // Convert ascii hex into an int
int HexToInt( char *Data, int Bytes ); int HexToInt(char* Data, int Bytes);
virtual DWORD Send(LPCSTR buffer, int l, BOOL needsResponse=FALSE); DWORD Send(LPCSTR buffer, int l, BOOL needsResponse = FALSE) override;
//virtual DWORD Send(CString what); //virtual DWORD Send(CString what);
// Called when data is received on the serial port // Called when data is received on the serial port
virtual void OnReceive( void ); virtual void OnReceive(void);
// Called when data has been sent using the Transmit() function // Called when data has been sent using the Transmit() function
virtual void OnTransmit( int Item, DWORD Error ); virtual void OnTransmit(int Item, DWORD Error);
private: private:
// Private so no comment :-) // Private so no comment :-)
void RegisterDebugWindow(void); void RegisterDebugWindow(void);
void SendBuffer(int Next); void SendBuffer(int Next);
void ReceiveTask(void); void ReceiveTask(void);
int ProgramPort(int Port,int Baud,char Parity,int Bits,int StopBits,int HandShake); int ProgramPort(int Port, int Baud, char Parity, int Bits, int StopBits, int HandShake);
int ReadBlock(BYTE *abIn, int MaxLength); int ReadBlock(BYTE* abIn, int MaxLength);
// Attributes // Attributes
protected: protected:
int m_RXTimeout; int m_RXTimeout;
Binary file not shown.
+31
View File
@@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.2092
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WAI64Bit", "WAI64Bit.vcxproj", "{6936CAC7-384F-4EDC-BF1E-D549E2A37465}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{6936CAC7-384F-4EDC-BF1E-D549E2A37465}.Debug|x64.ActiveCfg = Debug|x64
{6936CAC7-384F-4EDC-BF1E-D549E2A37465}.Debug|x64.Build.0 = Debug|x64
{6936CAC7-384F-4EDC-BF1E-D549E2A37465}.Debug|x86.ActiveCfg = Debug|Win32
{6936CAC7-384F-4EDC-BF1E-D549E2A37465}.Debug|x86.Build.0 = Debug|Win32
{6936CAC7-384F-4EDC-BF1E-D549E2A37465}.Release|x64.ActiveCfg = Release|x64
{6936CAC7-384F-4EDC-BF1E-D549E2A37465}.Release|x64.Build.0 = Release|x64
{6936CAC7-384F-4EDC-BF1E-D549E2A37465}.Release|x86.ActiveCfg = Release|Win32
{6936CAC7-384F-4EDC-BF1E-D549E2A37465}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4ABC1E18-7BBA-419C-A745-5EBAF5089457}
EndGlobalSection
EndGlobal
+22 -18
View File
@@ -10,15 +10,16 @@ void CLogger::SendAtTime(const TCHAR* buffer)
{ {
m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR);
} }
if(m_File) if (m_File)
{ {
CTime _cTime=CTime::GetCurrentTime(); CTime _cTime = CTime::GetCurrentTime();
CString csTime=_cTime.Format("[%m/%d %H:%M] "); CString csTime = _cTime.Format("[%m/%d %H:%M] ");
_ftprintf(m_File,_T("%s"), csTime); _ftprintf(m_File,_T("%s"), csTime);
_ftprintf(m_File, _T("%s\r\n"), buffer); _ftprintf(m_File, _T("%s\r\n"), buffer);
} }
LeaveCriticalSection(&m_lockLogger); LeaveCriticalSection(&m_lockLogger);
} }
void CLogger::Send(LPCTSTR format, ...) void CLogger::Send(LPCTSTR format, ...)
{ {
EnterCriticalSection(&m_lockLogger); EnterCriticalSection(&m_lockLogger);
@@ -29,13 +30,14 @@ void CLogger::Send(LPCTSTR format, ...)
int length = 0; int length = 0;
va_list list; va_list list;
va_start(list, format); va_start(list, format);
length = vswprintf_s(m_Str,5000, format, list); length = vswprintf_s(m_Str, 5000, format, list);
if(m_File) if (m_File)
{ {
_ftprintf(m_File, m_Str); _ftprintf(m_File, m_Str);
} }
LeaveCriticalSection(&m_lockLogger); LeaveCriticalSection(&m_lockLogger);
} }
void CLogger::SendAndFlush(LPCTSTR format, ...) void CLogger::SendAndFlush(LPCTSTR format, ...)
{ {
EnterCriticalSection(&m_lockLogger); EnterCriticalSection(&m_lockLogger);
@@ -43,18 +45,19 @@ void CLogger::SendAndFlush(LPCTSTR format, ...)
va_list list; va_list list;
va_start(list, format); va_start(list, format);
length = vswprintf_s(m_Str2,5000, format, list); length = vswprintf_s(m_Str2, 5000, format, list);
Send(m_Str2); Send(m_Str2);
if(m_File) if (m_File)
{ {
fclose(m_File); fclose(m_File);
m_File = NULL; m_File = nullptr;
if(m_FileName.GetLength() > 0) if (m_FileName.GetLength() > 0)
m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR);
} }
LeaveCriticalSection(&m_lockLogger); LeaveCriticalSection(&m_lockLogger);
} }
void CLogger::SendAndFlushWithTime(LPCTSTR format, ...) void CLogger::SendAndFlushWithTime(LPCTSTR format, ...)
{ {
EnterCriticalSection(&m_lockLogger); EnterCriticalSection(&m_lockLogger);
@@ -66,14 +69,14 @@ void CLogger::SendAndFlushWithTime(LPCTSTR format, ...)
{ {
m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYNO); m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYNO);
} }
if(m_File) if (m_File)
{ {
int length = 0; int length = 0;
va_list list; va_list list;
va_start(list, format); va_start(list, format);
length = vswprintf_s(m_Str2,5000, format, list); length = vswprintf_s(m_Str2, 5000, format, list);
CTime _cTime=CTime::GetCurrentTime(); CTime _cTime = CTime::GetCurrentTime();
CString csTime=_cTime.Format("[%m/%d %H:%M:%S"); CString csTime = _cTime.Format("[%m/%d %H:%M:%S");
struct _timeb timebuffer; struct _timeb timebuffer;
_ftime64_s(&timebuffer); _ftime64_s(&timebuffer);
if (m_File) if (m_File)
@@ -87,11 +90,12 @@ void CLogger::SendAndFlushWithTime(LPCTSTR format, ...)
if (m_File) if (m_File)
{ {
fclose(m_File); fclose(m_File);
m_File = NULL; m_File = nullptr;
} }
} }
LeaveCriticalSection(&m_lockLogger); LeaveCriticalSection(&m_lockLogger);
} }
void CLogger::SendAndFlushPerMode(LPCTSTR format, ...) void CLogger::SendAndFlushPerMode(LPCTSTR format, ...)
{ {
EnterCriticalSection(&m_lockLogger); EnterCriticalSection(&m_lockLogger);
@@ -99,14 +103,14 @@ void CLogger::SendAndFlushPerMode(LPCTSTR format, ...)
va_list list; va_list list;
va_start(list, format); va_start(list, format);
length = vswprintf_s(m_Str2,5000, format, list); length = vswprintf_s(m_Str2, 5000, format, list);
Send(m_Str2); Send(m_Str2);
if((m_lLogMask & LOGFLUSH) && m_File) if ((m_lLogMask & LOGFLUSH) && m_File)
{ {
fclose(m_File); fclose(m_File);
m_File = NULL; m_File = nullptr;
if(m_FileName.GetLength() > 0) if (m_FileName.GetLength() > 0)
m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR); m_File = _wfsopen(m_FileName, _T("at"), _SH_DENYWR);
} }
LeaveCriticalSection(&m_lockLogger); LeaveCriticalSection(&m_lockLogger);
+11 -10
View File
@@ -17,15 +17,15 @@ const long LOGFLUSH = 0x0008;
class CLogger class CLogger
{ {
public: public:
CLogger(CString m_Name) CLogger(CString m_Name)
{ {
IsEnabledLog = false; IsEnabledLog = false;
m_File = NULL; m_File = nullptr;
CString Path=_T(""); // Speed optimization - noticed slow in GlowCode CString Path = _T(""); // Speed optimization - noticed slow in GlowCode
if (Path.IsEmpty()) { if (Path.IsEmpty())
{
CString tmpPath; CString tmpPath;
GetModuleFileName(NULL,tmpPath.GetBuffer(255),255); GetModuleFileName(nullptr, tmpPath.GetBuffer(255), 255);
tmpPath.ReleaseBuffer(); tmpPath.ReleaseBuffer();
tmpPath.TrimRight(); tmpPath.TrimRight();
int nLastSlash = tmpPath.ReverseFind('\\'); int nLastSlash = tmpPath.ReverseFind('\\');
@@ -33,12 +33,13 @@ public:
tmpPath = tmpPath.Left(nLastSlash); tmpPath = tmpPath.Left(nLastSlash);
else else
tmpPath.Empty(); tmpPath.Empty();
Path=tmpPath; Path = tmpPath;
} }
m_FileName=Path + m_Name;//_T("\\SO7_SSILog.txt"); m_FileName = Path + m_Name; //_T("\\SO7_SSILog.txt");
m_lLogMask=0; m_lLogMask = 0;
InitializeCriticalSection(&m_lockLogger); InitializeCriticalSection(&m_lockLogger);
}; };
~CLogger() ~CLogger()
{ {
if (m_File) if (m_File)
@@ -50,10 +51,10 @@ public:
void SendAndFlush(LPCTSTR, ...); void SendAndFlush(LPCTSTR, ...);
void SendAndFlushPerMode(LPCTSTR, ...); void SendAndFlushPerMode(LPCTSTR, ...);
void SendAndFlushWithTime(LPCTSTR, ...); void SendAndFlushWithTime(LPCTSTR, ...);
bool IsEnabledLog/* = false*/;//是否启用日志 bool IsEnabledLog/* = false*/; //是否启用日志
CString m_FileName; CString m_FileName;
long m_lLogMask; long m_lLogMask;
FILE *m_File; FILE* m_File;
_TCHAR m_Str[20000]; _TCHAR m_Str[20000];
_TCHAR m_Str2[20000]; _TCHAR m_Str2[20000];
CRITICAL_SECTION m_lockLogger; CRITICAL_SECTION m_lockLogger;
@@ -0,0 +1,2 @@
#TargetFrameworkVersion=:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native64Bit:WindowsTargetPlatformVersion=10.0.19041.0
Debug|x64|E:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\|
Binary file not shown.
+2 -2
View File
@@ -12,5 +12,5 @@
#define HSI_VERSION_REVNUM #define HSI_VERSION_REVNUM
#define HSI_VERSION_BUILD_DATE _T(__DATE__ ) #define HSI_VERSION_BUILD_DATE _T(__DATE__ )
#define HSI_VERSION_BUILD_TIME _T(__TIME__ ) #define HSI_VERSION_BUILD_TIME _T(__TIME__ )
#define HSI_FILE_DESCRIPTION "2022.10.10 / 11:34 " #define HSI_FILE_DESCRIPTION "2022.10.12 / 9:29 "
#define HSI_FILE_CSDESCRIPTION _T("2022.10.10 / 11:34 ") #define HSI_FILE_CSDESCRIPTION _T("2022.10.12 / 9:29 ")
@@ -1,2 +0,0 @@
#TargetFrameworkVersion=v4.0:PlatformToolSet=v141:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=10.0.19041.0
Debug|x64|E:\HexagonProjects\2022-05-直线电机平台\LM-Middleware\|
+1 -1
View File
@@ -32,7 +32,7 @@ namespace HSI_SEVENOCEAN_EF1_CsTest.HSI
public static extern Def.HSI_STATUS Shutdown(); public static extern Def.HSI_STATUS Shutdown();
// <<<< Out Interfacess // <<<< Out Interfacess
//事件回调函数
public static void EventCallback(Def.HSI_EVENT_TYPE eventType, Def.HSI_EVENT_RESPONSE_TYPE responseType, public static void EventCallback(Def.HSI_EVENT_TYPE eventType, Def.HSI_EVENT_RESPONSE_TYPE responseType,
uint eventId, string eventData, ref uint eventCallbackId) uint eventId, string eventData, ref uint eventCallbackId)
{ {
@@ -0,0 +1,86 @@
[JOG_SPEED]
JOG_SPEED_0=200.0
JOG_STARTV_0=5.0
JOG_ACC_TIME_0=0.2
JOG_DEC_TIME_0=0.2
JOG_SPEED_1=150.0
JOG_STARTV_1=5.0
JOG_ACC_TIME_1=0.2
JOG_DEC_TIME_1=0.2
JOG_SPEED_2=100.0
JOG_STARTV_2=5.0
JOG_ACC_TIME_2=0.2
JOG_DEC_TIME_2=0.2
JOG_SPEED_3=10.0
JOG_STARTV_3=5.0
JOG_ACC_TIME_3=0.2
JOG_DEC_TIME_3=0.2
JOG_SPEED_4=1.0
JOG_STARTV_4=5.0
JOG_ACC_TIME_4=0.2
JOG_DEC_TIME_4=0.2
[RESOLUTION]
SCALE_RESOLUTION_1=0.0004
SCALE_RESOLUTION_2=0.0004
SCALE_RESOLUTION_3=0.0004
SCALE_RESOLUTION_4=0.0004
[LIMIT]
NEG_WORKING_LIMIT_1=-260.0
POS_WORKING_LIMIT_1=40.0
NEG_WORKING_LIMIT_2=-40.0
POS_WORKING_LIMIT_2=160.0
NEG_WORKING_LIMIT_3=-40.0
POS_WORKING_LIMIT_3=160.0
NEG_WORKING_LIMIT_4=-40.0
POS_WORKING_LIMIT_4=200.0
[HOME]
HOME_HIGH_SPEED_1=200.0
HOME_HIGH_ACC_TIME_1=0.2
HOME_LOW_SPEED_1=180.0
HOME_LOW_ACC_TIME_1=0.2
HOME_TIME_1=1000
HOME_MACHINE_AXIS_1=1
HOME_HIGH_SPEED_2=200.0
HOME_HIGH_ACC_TIME_2=0.2
HOME_LOW_SPEED_2=180.0
HOME_LOW_ACC_TIME_2=0.2
HOME_TIME_2=1000
HOME_MACHINE_AXIS_2=1
HOME_HIGH_SPEED_3=200.0
HOME_HIGH_ACC_TIME_3=0.2
HOME_LOW_SPEED_3=180.0
HOME_LOW_ACC_TIME_3=0.2
HOME_TIME_3=1000
HOME_MACHINE_AXIS_3=1
HOME_HIGH_SPEED_4=200.0
HOME_HIGH_ACC_TIME_4=0.2
HOME_LOW_SPEED_4=180.0
HOME_LOW_ACC_TIME_4=0.2
HOME_TIME_4=1000
HOME_MACHINE_AXIS_4=0
[PRECISION]
PRECISION_COUNT_1=8
PRECISION_TIME_1=20000
PRECISION_COUNT_2=8
PRECISION_TIME_2=20000
PRECISION_COUNT_3=8
PRECISION_TIME_3=20000
PRECISION_COUNT_4=8
PRECISION_TIME_4=20000
[SET_POSITION_SPEED]
SET_POTION_SPEED_1=500.0
SET_POTION_ACC_TIME_1=0.2
SET_POTION_DEC_TIME_1=0.2
SET_POSITION_COUNT_1=240
SET_POTION_SPEED_2=500.0
SET_POTION_ACC_TIME_2=0.2
SET_POTION_DEC_TIME_2=0.2
SET_POSITION_COUNT_2=240
SET_POTION_SPEED_3=500.0
SET_POTION_ACC_TIME_3=0.2
SET_POTION_DEC_TIME_3=0.2
SET_POSITION_COUNT_3=240
SET_POTION_SPEED_4=500.0
SET_POTION_ACC_TIME_4=0.2
SET_POTION_DEC_TIME_4=0.2
SET_POSITION_COUNT_4=240
@@ -0,0 +1,337 @@
[JOG_SPEED]
JOG速度(pulse/ms)
JOG_SPEED_0=200.0
JOG_SPEED_1=150.0
JOG_SPEED_2=50
JOG_SPEED_3=10
JOG_SPEED_4=1
;JOG加速度(pulse/ms^2)
JOG_ACC_0=2.0
JOG_ACC_1=2.0
JOG_ACC_2=2.0
JOG_ACC_3=1.0
JOG_ACC_4=1.0
;JOG减速度(pulse/ms^2)
JOG_DEC_0=2.0
JOG_DEC_1=2.0
JOG_DEC_2=2.0
JOG_DEC_3=1.0
JOG_DEC_4=1.0
;JOG模式采用急停还是平滑停止,0是平滑停止1为急停,默认0
JOG_STOP_MODE_1=0
JOG_STOP_MODE_2=0
JOG_STOP_MODE_3=0
JOG_STOP_MODE_4=0
JOG_STOP_MODE_5=0
JOG_STOP_MODE_6=0
JOG_STOP_MODE_7=0
JOG_STOP_MODE_8=0
JOG_STOP_MODE=0
JOG_SPEED_GEAR0_1=200.0
JOG_ACC_GEAR0_1=2.0
JOG_DEC_GEAR0_1=2.0
JOG_SPEED_GEAR0_2=200.0
JOG_ACC_GEAR0_2=2.0
JOG_DEC_GEAR0_2=2.0
JOG_SPEED_GEAR0_3=150.0
JOG_ACC_GEAR0_3=2.0
JOG_DEC_GEAR0_3=2.0
JOG_SPEED_GEAR0_4=200.0
JOG_ACC_GEAR0_4=2.0
JOG_DEC_GEAR0_4=2.0
JOG_SPEED_GEAR1_1=100.0
JOG_ACC_GEAR1_1=2.0
JOG_DEC_GEAR1_1=2.0
JOG_SPEED_GEAR1_2=100.0
JOG_ACC_GEAR1_2=2.0
JOG_DEC_GEAR1_2=2.0
JOG_SPEED_GEAR1_3=80.0
JOG_ACC_GEAR1_3=2.0
JOG_DEC_GEAR1_3=2.0
JOG_SPEED_GEAR1_4=100.0
JOG_ACC_GEAR1_4=2.0
JOG_DEC_GEAR1_4=2.0
JOG_SPEED_GEAR2_1=50.0
JOG_ACC_GEAR2_1=2.0
JOG_DEC_GEAR2_1=2.0
JOG_SPEED_GEAR2_2=50.0
JOG_ACC_GEAR2_2=2.0
JOG_DEC_GEAR2_2=2.0
JOG_SPEED_GEAR2_3=50.0
JOG_ACC_GEAR2_3=2.0
JOG_DEC_GEAR2_3=2.0
JOG_SPEED_GEAR2_4=50.0
JOG_ACC_GEAR2_4=2.0
JOG_DEC_GEAR2_4=2.0
JOG_SPEED_GEAR3_1=10.0
JOG_ACC_GEAR3_1=1.0
JOG_DEC_GEAR3_1=1.0
JOG_SPEED_GEAR3_2=10.0
JOG_ACC_GEAR3_2=1.0
JOG_DEC_GEAR3_2=1.0
JOG_SPEED_GEAR3_3=10.0
JOG_ACC_GEAR3_3=1.0
JOG_DEC_GEAR3_3=1.0
JOG_SPEED_GEAR3_4=10.0
JOG_ACC_GEAR3_4=1.0
JOG_DEC_GEAR3_4=1.0
JOG_SPEED_GEAR4_1=1.0
JOG_ACC_GEAR4_1=1.0
JOG_DEC_GEAR4_1=1.0
JOG_SPEED_GEAR4_2=1.0
JOG_ACC_GEAR4_2=1.0
JOG_DEC_GEAR4_2=1.0
JOG_SPEED_GEAR4_3=1.0
JOG_ACC_GEAR4_3=1.0
JOG_DEC_GEAR4_3=1.0
JOG_SPEED_GEAR4_4=1.0
JOG_ACC_GEAR4_4=1.0
JOG_DEC_GEAR4_4=1.0
;0:都使用(正常情况) 1:只使用灯,而不使用控制器;默认0
[USE_LIGHT]
ONLY_USE_LIGHT=0
[RESOLUTION]
;光栅尺的分辨率(mm)
SCALE_RESOLUTION_1=0.0004
SCALE_RESOLUTION_2=0.0004
SCALE_RESOLUTION_3=0.0004
SCALE_RESOLUTION_4=0.0004
SCALE_RESOLUTION_5=0.0004
SCALE_RESOLUTION_6=0.0004
SCALE_RESOLUTION_7=0.0004
SCALE_RESOLUTION_8=0.0004
[LIMIT]
;负限位(mm),必须是负数
NEG_WORKING_LIMIT_1=-260.0
NEG_WORKING_LIMIT_2=-40.0
NEG_WORKING_LIMIT_3=-40.0
NEG_WORKING_LIMIT_4=-40.0
NEG_WORKING_LIMIT_5=-40.0
NEG_WORKING_LIMIT_6=-40.0
NEG_WORKING_LIMIT_7=-40.0
NEG_WORKING_LIMIT_8=-40.0
;正限位(mm),必须是正数
POS_WORKING_LIMIT_1=40.0
POS_WORKING_LIMIT_2=160.0
POS_WORKING_LIMIT_3=160.0
POS_WORKING_LIMIT_4=200.0
POS_WORKING_LIMIT_5=200.0
POS_WORKING_LIMIT_6=200.0
POS_WORKING_LIMIT_7=200.0
POS_WORKING_LIMIT_8=200.0
[HOME]
;选择需要回家的轴号,改为1
HOME_MACHINE_AXIS_1=1
HOME_MACHINE_AXIS_2=1
HOME_MACHINE_AXIS_3=1
HOME_MACHINE_AXIS_4=0
HOME_MACHINE_AXIS_5=0
HOME_MACHINE_AXIS_6=0
HOME_MACHINE_AXIS_7=0
HOME_MACHINE_AXIS_8=0
;是否启动实际位置判断是否回家,默认0,1启用,0关闭
IS_HOME_ENC_POS=0
;是否启动规划位置判断是否回家,默认1,1启用,0关闭
IS_HOME_PRF_POS=1
;关闭电源时记住当前的位置,用于判断是否需要回家
HOME_POS_AXIS_1=0
HOME_POS_AXIS_2=0
HOME_POS_AXIS_3=0
HOME_POS_AXIS_4=0
HOME_POS_AXIS_5=0
HOME_POS_AXIS_6=0
HOME_POS_AXIS_7=0
HOME_POS_AXIS_8=0
;回家第一段速度(pulse/ms)
HOME_HIGH_SPEED_1=200.0
HOME_HIGH_SPEED_2=200.0
HOME_HIGH_SPEED_3=200.0
HOME_HIGH_SPEED_4=200.0
HOME_HIGH_SPEED_5=200.0
HOME_HIGH_SPEED_6=200.0
HOME_HIGH_SPEED_7=200.0
HOME_HIGH_SPEED_8=200.0
;回家第一段加速度(pulse/ms^2)
HOME_HIGH_ACC_1=2.0
HOME_HIGH_ACC_2=2.0
HOME_HIGH_ACC_3=2.0
HOME_HIGH_ACC_4=2.0
HOME_HIGH_ACC_5=2.0
HOME_HIGH_ACC_6=2.0
HOME_HIGH_ACC_7=2.0
HOME_HIGH_ACC_8=2.0
;回家第二段速度(pulse/ms)
HOME_LOW_SPEED_1=180.0
HOME_LOW_SPEED_2=180.0
HOME_LOW_SPEED_3=180.0
HOME_LOW_SPEED_4=180.0
HOME_LOW_SPEED_5=180.0
HOME_LOW_SPEED_6=180.0
HOME_LOW_SPEED_7=180.0
HOME_LOW_SPEED_8=180.0
;回家第二段加速度(pulse/ms^2)
HOME_LOW_ACC_1=2.0
HOME_LOW_ACC_2=2.0
HOME_LOW_ACC_3=2.0
HOME_LOW_ACC_4=2.0
HOME_LOW_ACC_5=2.0
HOME_LOW_ACC_6=2.0
HOME_LOW_ACC_7=2.0
HOME_LOW_ACC_8=2.0
;回家延时时间(ms)
HOME_TIME_1=1000
HOME_TIME_2=1000
HOME_TIME_3=1000
HOME_TIME_4=1000
HOME_TIME_5=1000
HOME_TIME_6=1000
HOME_TIME_7=1000
HOME_TIME_8=1000
[PID]
;PID比例调节,应从0.01递增开始调试
PID_KP_1=1.20
PID_KP_2=1.20
PID_KP_3=1.20
PID_KP_4=1.20
PID_KP_5=1.20
PID_KP_6=1.20
PID_KP_7=1.20
PID_KP_8=1.20
[PRECISION]
;超时时间(0.1ms)
PRECISION_TIME_1=20000
PRECISION_TIME_2=20000
PRECISION_TIME_3=20000
PRECISION_TIME_4=20000
PRECISION_TIME_5=20000
PRECISION_TIME_6=20000
PRECISION_TIME_7=20000
PRECISION_TIME_8=20000
;回家误差脉冲个数
PRECISION_COUNT_1=8
PRECISION_COUNT_2=8
PRECISION_COUNT_3=8
PRECISION_COUNT_4=8
PRECISION_COUNT_5=8
PRECISION_COUNT_6=8
PRECISION_COUNT_7=8
PRECISION_COUNT_8=8
[SET_POSITION_SPEED]
;XYZ定位的合成速度(pulse/ms)
SET_POTION_SPEED_1=500.0
SET_POTION_SPEED_2=500.0
SET_POTION_SPEED_3=500.0
SET_POTION_SPEED_4=500.0
SET_POTION_SPEED_5=500.0
SET_POTION_SPEED_6=500.0
SET_POTION_SPEED_7=500.0
SET_POTION_SPEED_8=500.0
;XYZ定位的合成加速度(pulse/ms^2)
SET_POTION_ACC_1=2.5
SET_POTION_ACC_2=2.5
SET_POTION_ACC_3=2.5
SET_POTION_ACC_4=2.5
SET_POTION_ACC_5=2.5
SET_POTION_ACC_6=2.5
SET_POTION_ACC_7=2.5
SET_POTION_ACC_8=2.5
;XYZ定位的终点速度(pulse/ms)
SET_POTION_DEC_1=1.0
SET_POTION_DEC_2=1.0
SET_POTION_DEC_3=1.0
SET_POTION_DEC_4=1.0
SET_POTION_DEC_5=1.0
SET_POTION_DEC_6=1.0
SET_POTION_DEC_7=1.0
SET_POTION_DEC_8=1.0
;XYZ定到位判断次数
SET_POSITION_COUNT_1=240
SET_POSITION_COUNT_2=240
SET_POSITION_COUNT_3=240
SET_POSITION_COUNT_4=240
SET_POSITION_COUNT_5=240
SET_POSITION_COUNT_6=240
SET_POSITION_COUNT_7=240
SET_POSITION_COUNT_8=240
[COMPORT]
;灯光控制器类型选择
;0:启用c++调用灯光,不使用STM32 USB控制时,需要把下面的IS_STM32_USB改为0
;1:wpf直接调用;
;2:DP光源控制器;
;3:旧的6环8区为3(环形可调);
;4:新的6环8区为4(扇区可调);
;5:STM32控制器,IP地址在exe目录下的CameraNum.ini中修改
;61:OPT光源控制器网络模式(111ms),IP地址在exe目录下的CameraNum.ini中修改,串口模式62(44ms);
COM_PORT_CPP_WPF=0
;使用stm32时,是否使用USB通讯,使用该功能时,COM_PORT_CPP_WPF必须等于0
IS_STM32_USB=0
;是否打开第一个串,1为打开,0为关闭,默认0
IS_COM_PORT_A=0
COM_PORT_A=2
COM_PORT_A_LED_1=1
COM_PORT_A_LED_2=1
COM_PORT_A_LED_3=1
COM_PORT_A_LED_4=1
;是否打开第二个串,1为打开,0为关闭,默认0
IS_COM_PORT_B=0
COM_PORT_B=6
COM_PORT_B_LED_1=1
COM_PORT_B_LED_2=1
COM_PORT_B_LED_3=1
COM_PORT_B_LED_4=1
[TRRIGER]
;线性点触发的脉冲宽度
LINEAR_PULSE_WIDTH=500
;等间距触发的脉冲宽度
INTERVAL_PULSE_WIDTH=500
;手动触发
HOLD_TIME=150
[LOG]
;是否打开记录,默认0为关闭,1位打开,;LOG_IS_OPEN_0为是否打开记录功能
LOG_IS_OPEN_0=1
LOG_IS_OPEN_1=1
LOG_IS_OPEN_2=1
LOG_IS_OPEN_3=1
LOG_IS_OPEN_4=0
LOG_IS_OPEN_5=0
LOG_IS_OPEN_6=0
LOG_IS_OPEN_7=0
LOG_IS_OPEN_8=0
;是否启用统计定位函数的时间日志,1:启用,默认0关闭
LOG2_IS_OPEN=0
;定位几次后,计算这几次总共用时mm,默认4次
LOG_SUM_COUNT=0
@@ -0,0 +1,337 @@
[JOG_SPEED]
JOG速度(pulse/ms)
JOG_SPEED_0=200.0
JOG_SPEED_1=150.0
JOG_SPEED_2=50
JOG_SPEED_3=10
JOG_SPEED_4=1
;JOG加速度(pulse/ms^2)
JOG_ACC_0=2.0
JOG_ACC_1=2.0
JOG_ACC_2=2.0
JOG_ACC_3=1.0
JOG_ACC_4=1.0
;JOG减速度(pulse/ms^2)
JOG_DEC_0=2.0
JOG_DEC_1=2.0
JOG_DEC_2=2.0
JOG_DEC_3=1.0
JOG_DEC_4=1.0
;JOG模式采用急停还是平滑停止,0是平滑停止1为急停,默认0
JOG_STOP_MODE_1=0
JOG_STOP_MODE_2=0
JOG_STOP_MODE_3=0
JOG_STOP_MODE_4=0
JOG_STOP_MODE_5=0
JOG_STOP_MODE_6=0
JOG_STOP_MODE_7=0
JOG_STOP_MODE_8=0
JOG_STOP_MODE=0
JOG_SPEED_GEAR0_1=200.0
JOG_ACC_GEAR0_1=2.0
JOG_DEC_GEAR0_1=2.0
JOG_SPEED_GEAR0_2=200.0
JOG_ACC_GEAR0_2=2.0
JOG_DEC_GEAR0_2=2.0
JOG_SPEED_GEAR0_3=150.0
JOG_ACC_GEAR0_3=2.0
JOG_DEC_GEAR0_3=2.0
JOG_SPEED_GEAR0_4=200.0
JOG_ACC_GEAR0_4=2.0
JOG_DEC_GEAR0_4=2.0
JOG_SPEED_GEAR1_1=100.0
JOG_ACC_GEAR1_1=2.0
JOG_DEC_GEAR1_1=2.0
JOG_SPEED_GEAR1_2=100.0
JOG_ACC_GEAR1_2=2.0
JOG_DEC_GEAR1_2=2.0
JOG_SPEED_GEAR1_3=80.0
JOG_ACC_GEAR1_3=2.0
JOG_DEC_GEAR1_3=2.0
JOG_SPEED_GEAR1_4=100.0
JOG_ACC_GEAR1_4=2.0
JOG_DEC_GEAR1_4=2.0
JOG_SPEED_GEAR2_1=50.0
JOG_ACC_GEAR2_1=2.0
JOG_DEC_GEAR2_1=2.0
JOG_SPEED_GEAR2_2=50.0
JOG_ACC_GEAR2_2=2.0
JOG_DEC_GEAR2_2=2.0
JOG_SPEED_GEAR2_3=50.0
JOG_ACC_GEAR2_3=2.0
JOG_DEC_GEAR2_3=2.0
JOG_SPEED_GEAR2_4=50.0
JOG_ACC_GEAR2_4=2.0
JOG_DEC_GEAR2_4=2.0
JOG_SPEED_GEAR3_1=10.0
JOG_ACC_GEAR3_1=1.0
JOG_DEC_GEAR3_1=1.0
JOG_SPEED_GEAR3_2=10.0
JOG_ACC_GEAR3_2=1.0
JOG_DEC_GEAR3_2=1.0
JOG_SPEED_GEAR3_3=10.0
JOG_ACC_GEAR3_3=1.0
JOG_DEC_GEAR3_3=1.0
JOG_SPEED_GEAR3_4=10.0
JOG_ACC_GEAR3_4=1.0
JOG_DEC_GEAR3_4=1.0
JOG_SPEED_GEAR4_1=1.0
JOG_ACC_GEAR4_1=1.0
JOG_DEC_GEAR4_1=1.0
JOG_SPEED_GEAR4_2=1.0
JOG_ACC_GEAR4_2=1.0
JOG_DEC_GEAR4_2=1.0
JOG_SPEED_GEAR4_3=1.0
JOG_ACC_GEAR4_3=1.0
JOG_DEC_GEAR4_3=1.0
JOG_SPEED_GEAR4_4=1.0
JOG_ACC_GEAR4_4=1.0
JOG_DEC_GEAR4_4=1.0
;0:都使用(正常情况) 1:只使用灯,而不使用控制器;默认0
[USE_LIGHT]
ONLY_USE_LIGHT=0
[RESOLUTION]
;光栅尺的分辨率(mm)
SCALE_RESOLUTION_1=0.0004
SCALE_RESOLUTION_2=0.0004
SCALE_RESOLUTION_3=0.0004
SCALE_RESOLUTION_4=0.0004
SCALE_RESOLUTION_5=0.0004
SCALE_RESOLUTION_6=0.0004
SCALE_RESOLUTION_7=0.0004
SCALE_RESOLUTION_8=0.0004
[LIMIT]
;负限位(mm),必须是负数
NEG_WORKING_LIMIT_1=-260.0
NEG_WORKING_LIMIT_2=-40.0
NEG_WORKING_LIMIT_3=-40.0
NEG_WORKING_LIMIT_4=-40.0
NEG_WORKING_LIMIT_5=-40.0
NEG_WORKING_LIMIT_6=-40.0
NEG_WORKING_LIMIT_7=-40.0
NEG_WORKING_LIMIT_8=-40.0
;正限位(mm),必须是正数
POS_WORKING_LIMIT_1=40.0
POS_WORKING_LIMIT_2=160.0
POS_WORKING_LIMIT_3=160.0
POS_WORKING_LIMIT_4=200.0
POS_WORKING_LIMIT_5=200.0
POS_WORKING_LIMIT_6=200.0
POS_WORKING_LIMIT_7=200.0
POS_WORKING_LIMIT_8=200.0
[HOME]
;选择需要回家的轴号,改为1
HOME_MACHINE_AXIS_1=1
HOME_MACHINE_AXIS_2=1
HOME_MACHINE_AXIS_3=1
HOME_MACHINE_AXIS_4=0
HOME_MACHINE_AXIS_5=0
HOME_MACHINE_AXIS_6=0
HOME_MACHINE_AXIS_7=0
HOME_MACHINE_AXIS_8=0
;是否启动实际位置判断是否回家,默认0,1启用,0关闭
IS_HOME_ENC_POS=0
;是否启动规划位置判断是否回家,默认1,1启用,0关闭
IS_HOME_PRF_POS=1
;关闭电源时记住当前的位置,用于判断是否需要回家
HOME_POS_AXIS_1=0
HOME_POS_AXIS_2=0
HOME_POS_AXIS_3=0
HOME_POS_AXIS_4=0
HOME_POS_AXIS_5=0
HOME_POS_AXIS_6=0
HOME_POS_AXIS_7=0
HOME_POS_AXIS_8=0
;回家第一段速度(pulse/ms)
HOME_HIGH_SPEED_1=200.0
HOME_HIGH_SPEED_2=200.0
HOME_HIGH_SPEED_3=200.0
HOME_HIGH_SPEED_4=200.0
HOME_HIGH_SPEED_5=200.0
HOME_HIGH_SPEED_6=200.0
HOME_HIGH_SPEED_7=200.0
HOME_HIGH_SPEED_8=200.0
;回家第一段加速度(pulse/ms^2)
HOME_HIGH_ACC_1=2.0
HOME_HIGH_ACC_2=2.0
HOME_HIGH_ACC_3=2.0
HOME_HIGH_ACC_4=2.0
HOME_HIGH_ACC_5=2.0
HOME_HIGH_ACC_6=2.0
HOME_HIGH_ACC_7=2.0
HOME_HIGH_ACC_8=2.0
;回家第二段速度(pulse/ms)
HOME_LOW_SPEED_1=180.0
HOME_LOW_SPEED_2=180.0
HOME_LOW_SPEED_3=180.0
HOME_LOW_SPEED_4=180.0
HOME_LOW_SPEED_5=180.0
HOME_LOW_SPEED_6=180.0
HOME_LOW_SPEED_7=180.0
HOME_LOW_SPEED_8=180.0
;回家第二段加速度(pulse/ms^2)
HOME_LOW_ACC_1=2.0
HOME_LOW_ACC_2=2.0
HOME_LOW_ACC_3=2.0
HOME_LOW_ACC_4=2.0
HOME_LOW_ACC_5=2.0
HOME_LOW_ACC_6=2.0
HOME_LOW_ACC_7=2.0
HOME_LOW_ACC_8=2.0
;回家延时时间(ms)
HOME_TIME_1=1000
HOME_TIME_2=1000
HOME_TIME_3=1000
HOME_TIME_4=1000
HOME_TIME_5=1000
HOME_TIME_6=1000
HOME_TIME_7=1000
HOME_TIME_8=1000
[PID]
;PID比例调节,应从0.01递增开始调试
PID_KP_1=1.20
PID_KP_2=1.20
PID_KP_3=1.20
PID_KP_4=1.20
PID_KP_5=1.20
PID_KP_6=1.20
PID_KP_7=1.20
PID_KP_8=1.20
[PRECISION]
;超时时间(0.1ms)
PRECISION_TIME_1=20000
PRECISION_TIME_2=20000
PRECISION_TIME_3=20000
PRECISION_TIME_4=20000
PRECISION_TIME_5=20000
PRECISION_TIME_6=20000
PRECISION_TIME_7=20000
PRECISION_TIME_8=20000
;回家误差脉冲个数
PRECISION_COUNT_1=8
PRECISION_COUNT_2=8
PRECISION_COUNT_3=8
PRECISION_COUNT_4=8
PRECISION_COUNT_5=8
PRECISION_COUNT_6=8
PRECISION_COUNT_7=8
PRECISION_COUNT_8=8
[SET_POSITION_SPEED]
;XYZ定位的合成速度(pulse/ms)
SET_POTION_SPEED_1=500.0
SET_POTION_SPEED_2=500.0
SET_POTION_SPEED_3=500.0
SET_POTION_SPEED_4=500.0
SET_POTION_SPEED_5=500.0
SET_POTION_SPEED_6=500.0
SET_POTION_SPEED_7=500.0
SET_POTION_SPEED_8=500.0
;XYZ定位的合成加速度(pulse/ms^2)
SET_POTION_ACC_1=2.5
SET_POTION_ACC_2=2.5
SET_POTION_ACC_3=2.5
SET_POTION_ACC_4=2.5
SET_POTION_ACC_5=2.5
SET_POTION_ACC_6=2.5
SET_POTION_ACC_7=2.5
SET_POTION_ACC_8=2.5
;XYZ定位的终点速度(pulse/ms)
SET_POTION_DEC_1=1.0
SET_POTION_DEC_2=1.0
SET_POTION_DEC_3=1.0
SET_POTION_DEC_4=1.0
SET_POTION_DEC_5=1.0
SET_POTION_DEC_6=1.0
SET_POTION_DEC_7=1.0
SET_POTION_DEC_8=1.0
;XYZ定到位判断次数
SET_POSITION_COUNT_1=240
SET_POSITION_COUNT_2=240
SET_POSITION_COUNT_3=240
SET_POSITION_COUNT_4=240
SET_POSITION_COUNT_5=240
SET_POSITION_COUNT_6=240
SET_POSITION_COUNT_7=240
SET_POSITION_COUNT_8=240
[COMPORT]
;灯光控制器类型选择
;0:启用c++调用灯光,不使用STM32 USB控制时,需要把下面的IS_STM32_USB改为0
;1:wpf直接调用;
;2:DP光源控制器;
;3:旧的6环8区为3(环形可调);
;4:新的6环8区为4(扇区可调);
;5:STM32控制器,IP地址在exe目录下的CameraNum.ini中修改
;61:OPT光源控制器网络模式(111ms),IP地址在exe目录下的CameraNum.ini中修改,串口模式62(44ms);
COM_PORT_CPP_WPF=0
;使用stm32时,是否使用USB通讯,使用该功能时,COM_PORT_CPP_WPF必须等于0
IS_STM32_USB=0
;是否打开第一个串,1为打开,0为关闭,默认0
IS_COM_PORT_A=0
COM_PORT_A=2
COM_PORT_A_LED_1=1
COM_PORT_A_LED_2=1
COM_PORT_A_LED_3=1
COM_PORT_A_LED_4=1
;是否打开第二个串,1为打开,0为关闭,默认0
IS_COM_PORT_B=0
COM_PORT_B=6
COM_PORT_B_LED_1=1
COM_PORT_B_LED_2=1
COM_PORT_B_LED_3=1
COM_PORT_B_LED_4=1
[TRRIGER]
;线性点触发的脉冲宽度
LINEAR_PULSE_WIDTH=500
;等间距触发的脉冲宽度
INTERVAL_PULSE_WIDTH=500
;手动触发
HOLD_TIME=150
[LOG]
;是否打开记录,默认0为关闭,1位打开,;LOG_IS_OPEN_0为是否打开记录功能
LOG_IS_OPEN_0=1
LOG_IS_OPEN_1=1
LOG_IS_OPEN_2=1
LOG_IS_OPEN_3=1
LOG_IS_OPEN_4=0
LOG_IS_OPEN_5=0
LOG_IS_OPEN_6=0
LOG_IS_OPEN_7=0
LOG_IS_OPEN_8=0
;是否启用统计定位函数的时间日志,1:启用,默认0关闭
LOG2_IS_OPEN=0
;定位几次后,计算这几次总共用时mm,默认4次
LOG_SUM_COUNT=0
@@ -0,0 +1,186 @@
[IO]
;是否启用IO功能,1为启用,0为关闭,默认0
IS_IO_FUNTION=1
;是否启用脚踏开关功能,1为启用,0为关闭,默认0
IS_START_INPUT=0
;启动软件运行的输入端口号,1为EXI0,2为EXI14为EXI2,8为EXI332768为EXI15默认1
START_INPUT_PORT=1
;是否启用急停功能,1为启用,0为关闭,默认0
IS_QUICK_STOP=0
;急停的输入端口号,EXI15:32768EXI14:16384EXI13:8192EXI7:128,默认128
QUICK_STOP_IN_PORT=128
;急停对应的输出端口号,是关闭Robot的传送带使能,EXO15:EXO15:32768,,EXO14:16384EXO13:8192 默认32768
QUICK_STOP_OUT_PORT=32768
;是否启用安全光栅功能,1为启用,0为关闭,默认0
IS_SAFE_STOP=0
;安全光栅的端口号
;EXI15:32768EXI14:16384EXI13:8192EXI12:4096,默认32768
SAFE_STOP_PORT=32768
;安全光栅采用停止模式0,还是暂停模式1,默认0停止模式
SAFE_STOP_MODE=0
;是否启用外部驱动器报警输出功能,1为启用,0为关闭,默认0
IS_ALARM_OUTPUT_PORT=0
;驱动器报警输出的端口号
;EXO15:32767EXO14:49151EXO13:57343 默认32767
ALARM_OUTPUT_PORT=32767
;是否启用回家之前发信号给机械手,1为启用,0为关闭,默认0
IS_HOME_TO_ROBOT=0
;给机械手的输出端口号,获取优先启动权,不使用改为65535
;EXO15:32767EXO14:49151EXO13:57343EXO12:61439EXO11:63487EXO7:65407 默认65407
HOME_TO_ROBOT_FIRST_OUT_PORT=65535
;给机械手的输出端口号,机械手需要的复位信号,默认57343,不使用改为65535,一般只用这个输出
HOME_TO_ROBOT_RESET_OUT_PORT=57343
;给机械手的输出端口号,机械手真正启动信号,默认63487,不使用改为65535
HOME_TO_ROBOT_START_OUT_PORT=65535
;给机械手的输出端口号,机械手停止信号,默认49151,不使用改为65535
HOME_TO_ROBOT_STOP_OUT_PORT=65535
;给机械手停止信号的ON电平的时间,默认500ms,不使用改为0
HOME_TO_ROBOT_FIRST_TIME=0
;给机械手真正启动的ON时间,默认200ms,不使用改为0
HOME_TO_ROBOT_START_TIME=0
;给机械手停止信号的OFF电平的时间,默认500ms,不使用改为0
HOME_TO_ROBOT_STOP_TIME=0
;读取机械手发来的输入端口号,准许回家,不使用改为0,一般只用这个输入
;EXI15:32767EXI14:49151EXI13:57343EXI12:61439EXI11:63487,默认32767
HOME_TO_ROBOT_OK_IN_PORT=57343
;读取机械手发来的输入端口号,需要复位,默认49151,不使用改为0
HOME_TO_ROBOT_RESET_IN_PORT=0
;是否启用第四轴为传送带功能,1为启用,0为关闭,默认0
IS_TRANSPORER=0
;启动传送带输入端口号,当该端口号为低电平时启动传送带
;EXI15:32768EXI14:16384EXI15:32768EXI10:1024EXI9:512EXI8:256,默认16384
TRANSPORER_START_PORT=16384
;停止传送带输入端口号,当该端口号为低电平时停止传送带
;EXI15:32768EXI14:16384EXI15:32768EXI10:1024EXI9:512EXI8:256,默认32768
TRANSPORER_STOP_PORT=32768
;给机械手的输出端口号,当停止传送带时,该端口号为高电平,EXO15:16,默认16
TRANSPORER_TO_ROBOOT_PORT=16
;传送带运行速度JOG档位和方向,要改变方向在前面加个负号即可
;第四档:1.0,第三档:0.8,第二档:0.6,第一档:0.4,第零档:0.2,默认3档,正方向
TRANSPORER_SPEED_GEAR=0.2
;传送带使用的轴号,8表示第4轴,默认8
TRANSPORER_AXIS=8
;是否启用点击停止按钮时输出特定的端口号,可多个同时输出,1为启用,0为关闭,默认0
IS_ABORT_MOTION_OUT_PORT=0
;输出特定的端口号,默认65535(关闭所有),只关闭EXO15:32767,只关闭EXO15和EXO1416383
ABORT_MOTION_OUT_PORT=65471
;是否启用某一轴先回家,即先跑到限位的一边,最后还是一起找原点的,1为启用,0为关闭,默认0
IS_AXIS_FIRST_HOME=0
;启用的轴号,默认3:1轴,2:2轴,3:3轴,4:4轴
AXIS_NUM_FIRST_HOME=3
;是否启用XY轴插补,默认0关闭,1启用
IS_SET_POS_XY=0
;是否启用IO的顺序控制(搬运部分),默认0关闭,1启用,为1时会启动该线程
IS_IO_STEP=0
;第四轴在上面取完料位置mm,默认0.0
IO_STEP_UP_4=-62.0
;第四轴在左边下面取料位置mm,默认0.0
IO_STEP_LEFT_DOWN_4=-103.0
;第四轴在右边下面取料位置mm,默认0.0
IO_STEP_RIGHT_DOWN_4=-87.5
;第三轴左边位置mm,默认0.0
IO_STEP_LEFT_3=-3.8
;第三轴右边位置mm,默认0.0
IO_STEP_RIGHT_3=-564.2
;左边可以下去取料输出端口,端口为开时,启动4轴下去取料,信号关闭时,不下去取料,默认65531EXO265534EXO0
IO_STEP_LEFT_LOAD_OUT_PORT=65531
;左边第4轴取完料后,输出信号为开时,告诉第一台电脑可以继续出去测量,14:EXO14,自动+1
IO_STEP_LEFT_CONTINUE_OUT_PORT=14
;右边可以下去放料的输入端口,端口为开时,启动4轴下去放料,默认16384:EXI14,32768:EXI15
IO_STEP_RIGHT_UPLOAD_IN_PORT=16384
;右边第4轴放完料后,端口为开时,告诉第二台电脑可以继续出去测量的输出信号,默认15:EXO15,14EXO14,自动+1
IO_STEP_RIGHT_CONTINUE_OUT_PORT=15
;第三轴的搬运吸盘的输出端口,默认4:EXO4,5:EXO5,内部按位输出,自动+1(从1到16)
IO_STEP_SUCKER_OUT_PORT=4
;模具上是否有料的输入端口(上料感应),默认1:EXI0,8:EXI3
IO_STEP_LOADING_IN_PORT=32768
[SAFETY_LOCK]
;是否启用轴之间的安全互锁,1启用,默认0关闭
IS_SAFETY_LOCK=0
;当互锁条件成立时需要锁住的轴号A,默认3轴
SAFETY_LOCK_AXIS_A=2
;当互锁条件成立时需要锁住的轴号B,默认3轴
SAFETY_LOCK_AXIS_B=3
;当互锁条件的输入端口号A,默认32768为EXI15,1为EXI0,2为EXI14为EXI2,8为EXI3
SAFETY_LOCK_INPORT_A=32768
;当互锁条件的输入端口号B,默认32768为EXI15,1为EXI0,2为EXI14为EXI2,8为EXI3
SAFETY_LOCK_INPORT_B=32768
[SERIAL_PORT]
;是否打开串口控制器,1启用,默认0关闭
IS_SERIAL_PORT=0
;使用的端口号,默认端口号3
SERIAL_PORT_NUM=5
[PROBE]
;是否启用探针捕获功能,1启用,默认0关闭
IS_PROBE=0
;探针触发时,锁存的轴号,默认3表示锁存XYZ共3轴,4表示XYZA共4轴
PROBE_ALL_AXIS=3
;探针触发时,调试时返回的距离mm,点击启动按钮时不起作用,默认10.0mm
PROBE_RETURN_POS=5.0
[OK_NG]
;是否启用软件内部OK/NG判断功能,1启用,默认0关闭
IS_OK_NG=0
;工位1输出端口号,EXO0:65534EXO1:65533EXO2:65531EXO3:65527,不输出为65535,默认65535
OK_NG_OUT_PORT1=65533
;工位2输出端口号,EXO0:65534EXO1:65533EXO2:65531EXO3:65527,不输出为65535,默认65535
OK_NG_OUT_PORT2=65534
[HOME]
;回家精度判断,默认4个脉冲
HOME_PULSE_1=4
HOME_PULSE_2=4
HOME_PULSE_3=4
HOME_PULSE_4=4
HOME_PULSE_5=4
HOME_PULSE_6=4
HOME_PULSE_7=4
HOME_PULSE_8=4
[JOG]
;是否启用Z轴JOG速度独立,1启用,默认0关闭
IS_JOG_AXIS_3=0
;Z轴JOG速度是XY的几倍,默认1.0
JOG_AXIS_3_GEAR=0.5
[SPECIAL_MOTOR]
;是否启用第4轴步进电机控制,该电机没有编码器和光栅尺反馈,回家采用限位当做原点,1启用,默认0关闭
IS_SPECIAL_MOTOR=0
[DOUBLE_SWITCH]
;是否启用2个脚踏开关,1启用,默认0关闭
IS_DOUBLE_SWITCH=0
;2个开关的间隔时间ms,超过间隔时间,即使2个开关都已按下也无效,默认500ms
DOUBLE_SWITCH_TIME=500
;第一个开关的输入端口号,1为EXI0,2为EXI14为EXI2,8为EXI332768为EXI15,默认1
DOUBLE_SWITCH_INPUT_PORT_A=1
;第二个开关的输入端口号,1为EXI0,2为EXI14为EXI2,8为EXI332768为EXI15,默认2
DOUBLE_SWITCH_INPUT_PORT_B=2
[SEND_OUTPUT]
;是否启用满足输出信号和位置高度时,输出对应端口,1启用,默认0关闭
IS_OUTPUT_HIGH=0
;判断是否满足条件的输出端口号,1为EXO0,2为EXO14为EXO2,8为EXO332768为EXO15,默认1
OUTPUT_HIGH_ENABLE_OUT=1
;轴号,默认11轴
OUTPUT_HIGH_AXIS=1
;位置,默认0.0,单位mm
OUTPUT_HIGH_POS=0.0
;输出对应的端口号,EXO0:0EXO1:1EXO2:2EXO3:3,默认0
OUTPUT_HIGH_OUTPORT=0
@@ -0,0 +1,839 @@
[profile1]
active=1
decSmoothStop=3.000000
decAbruptStop=1000.000000
[profile2]
active=1
decSmoothStop=5.000000
decAbruptStop=1000.000000
[profile3]
active=1
decSmoothStop=5.000000
decAbruptStop=1000.000000
[profile4]
active=1
decSmoothStop=1.000000
decAbruptStop=1000.000000
[profile5]
active=1
decSmoothStop=1.000000
decAbruptStop=1000.000000
[profile6]
active=1
decSmoothStop=1.000000
decAbruptStop=1000.000000
[profile7]
active=1
decSmoothStop=1.000000
decAbruptStop=1000.000000
[profile8]
active=1
decSmoothStop=1.000000
decAbruptStop=1000.000000
[axis1]
active=1
alarmType=2
alarmIndex=1
limitPositiveType=0
limitPositiveIndex=1
limitNegativeType=1
limitNegativeIndex=1
smoothStopType=4
smoothStopIndex=-1
abruptStopType=4
abruptStopIndex=-1
prfMap=0x1
encMap=0x1
prfMapAlpha1=1
prfMapBeta1=1
prfMapAlpha2=1
prfMapBeta2=1
encMapAlpha1=1
encMapBeta1=1
encMapAlpha2=1
encMapBeta2=1
[axis2]
active=1
alarmType=2
alarmIndex=-1
limitPositiveType=0
limitPositiveIndex=2
limitNegativeType=1
limitNegativeIndex=2
smoothStopType=4
smoothStopIndex=-1
abruptStopType=4
abruptStopIndex=-1
prfMap=0x2
encMap=0x2
prfMapAlpha1=1
prfMapBeta1=1
prfMapAlpha2=1
prfMapBeta2=1
encMapAlpha1=1
encMapBeta1=1
encMapAlpha2=1
encMapBeta2=1
[axis3]
active=1
alarmType=2
alarmIndex=3
limitPositiveType=1
limitPositiveIndex=3
limitNegativeType=0
limitNegativeIndex=3
smoothStopType=4
smoothStopIndex=-1
abruptStopType=4
abruptStopIndex=-1
prfMap=0x4
encMap=0x4
prfMapAlpha1=1
prfMapBeta1=1
prfMapAlpha2=1
prfMapBeta2=1
encMapAlpha1=1
encMapBeta1=1
encMapAlpha2=1
encMapBeta2=1
[axis4]
active=1
alarmType=2
alarmIndex=-1
limitPositiveType=0
limitPositiveIndex=4
limitNegativeType=1
limitNegativeIndex=4
smoothStopType=4
smoothStopIndex=-1
abruptStopType=4
abruptStopIndex=-1
prfMap=0x8
encMap=0x8
prfMapAlpha1=1
prfMapBeta1=1
prfMapAlpha2=1
prfMapBeta2=1
encMapAlpha1=1
encMapBeta1=1
encMapAlpha2=1
encMapBeta2=1
[axis5]
active=1
alarmType=2
alarmIndex=-1
limitPositiveType=0
limitPositiveIndex=5
limitNegativeType=1
limitNegativeIndex=5
smoothStopType=4
smoothStopIndex=-1
abruptStopType=4
abruptStopIndex=-1
prfMap=0x10
encMap=0x10
prfMapAlpha1=1
prfMapBeta1=1
prfMapAlpha2=1
prfMapBeta2=1
encMapAlpha1=1
encMapBeta1=1
encMapAlpha2=1
encMapBeta2=1
[axis6]
active=1
alarmType=2
alarmIndex=-1
limitPositiveType=0
limitPositiveIndex=6
limitNegativeType=1
limitNegativeIndex=6
smoothStopType=4
smoothStopIndex=-1
abruptStopType=4
abruptStopIndex=-1
prfMap=0x20
encMap=0x20
prfMapAlpha1=1
prfMapBeta1=1
prfMapAlpha2=1
prfMapBeta2=1
encMapAlpha1=1
encMapBeta1=1
encMapAlpha2=1
encMapBeta2=1
[axis7]
active=1
alarmType=2
alarmIndex=-1
limitPositiveType=0
limitPositiveIndex=7
limitNegativeType=1
limitNegativeIndex=7
smoothStopType=4
smoothStopIndex=-1
abruptStopType=4
abruptStopIndex=-1
prfMap=0x40
encMap=0x40
prfMapAlpha1=1
prfMapBeta1=1
prfMapAlpha2=1
prfMapBeta2=1
encMapAlpha1=1
encMapBeta1=1
encMapAlpha2=1
encMapBeta2=1
[axis8]
active=1
alarmType=2
alarmIndex=-1
limitPositiveType=0
limitPositiveIndex=8
limitNegativeType=1
limitNegativeIndex=8
smoothStopType=4
smoothStopIndex=-1
abruptStopType=4
abruptStopIndex=-1
prfMap=0x80
encMap=0x80
prfMapAlpha1=1
prfMapBeta1=1
prfMapAlpha2=1
prfMapBeta2=1
encMapAlpha1=1
encMapBeta1=1
encMapAlpha2=1
encMapBeta2=1
[control1]
active=0
axis=-1
encoder1=-1
encoder2=-1
errorLimit=2000
filterType1=0
filterType2=0
filterType3=0
encoderSmooth=8
controlSmooth=8
[control2]
active=0
axis=-1
encoder1=-1
encoder2=-1
errorLimit=32767
filterType1=0
filterType2=0
filterType3=0
encoderSmooth=8
controlSmooth=8
[control3]
active=0
axis=-1
encoder1=-1
encoder2=-1
errorLimit=52767
filterType1=0
filterType2=0
filterType3=0
encoderSmooth=8
controlSmooth=8
[control4]
active=0
axis=-1
encoder1=-1
encoder2=-1
errorLimit=32767
filterType1=0
filterType2=0
filterType3=0
encoderSmooth=8
controlSmooth=8
[control5]
active=0
axis=-1
encoder1=-1
encoder2=-1
errorLimit=32767
filterType1=0
filterType2=0
filterType3=0
encoderSmooth=8
controlSmooth=8
[control6]
active=0
axis=-1
encoder1=-1
encoder2=-1
errorLimit=32767
filterType1=0
filterType2=0
filterType3=0
encoderSmooth=8
controlSmooth=8
[control7]
active=0
axis=-1
encoder1=-1
encoder2=-1
errorLimit=32767
filterType1=0
filterType2=0
filterType3=0
encoderSmooth=8
controlSmooth=8
[control8]
active=0
axis=-1
encoder1=-1
encoder2=-1
errorLimit=32767
filterType1=0
filterType2=0
filterType3=0
encoderSmooth=8
controlSmooth=8
[dac1]
active=0
control=-1
reverse=1
bias=0
limit=32767
[dac2]
active=0
control=-1
reverse=0
bias=0
limit=32767
[dac3]
active=0
control=-1
reverse=1
bias=0
limit=32767
[dac4]
active=0
control=-1
reverse=0
bias=0
limit=32767
[dac5]
active=0
control=-1
reverse=1
bias=0
limit=32767
[dac6]
active=0
control=-1
reverse=0
bias=0
limit=32767
[dac7]
active=0
control=-1
reverse=1
bias=0
limit=32767
[dac8]
active=0
control=-1
reverse=1
bias=0
limit=32767
[step1]
active=1
axis=1
mode=0
parameter=0
reverse=0
[step2]
active=1
axis=2
mode=0
parameter=0
reverse=0
[step3]
active=1
axis=3
mode=0
parameter=0
reverse=0
[step4]
active=1
axis=4
mode=0
parameter=0
reverse=0
[step5]
active=1
axis=5
mode=0
parameter=0
reverse=0
[step6]
active=1
axis=6
mode=0
parameter=0
reverse=0
[step7]
active=1
axis=7
mode=0
parameter=0
reverse=0
[step8]
active=1
axis=8
mode=0
parameter=0
reverse=0
[encoder1]
active=1
reverse=0
filterType=0
captureSource=0
captureHomeSense=0
captureIndexSense=0
[encoder2]
active=1
reverse=1
filterType=0
captureSource=0
captureHomeSense=0
captureIndexSense=0
[encoder3]
active=1
reverse=0
filterType=0
captureSource=0
captureHomeSense=0
captureIndexSense=0
[encoder4]
active=1
reverse=1
filterType=0
captureSource=0
captureHomeSense=0
captureIndexSense=0
[encoder5]
active=1
reverse=0
filterType=0
captureSource=0
captureHomeSense=0
captureIndexSense=0
[encoder6]
active=1
reverse=1
filterType=0
captureSource=0
captureHomeSense=0
captureIndexSense=0
[encoder7]
active=1
reverse=0
filterType=0
captureSource=0
captureHomeSense=0
captureIndexSense=0
[encoder8]
active=1
reverse=0
filterType=0
captureSource=0
captureHomeSense=0
captureIndexSense=0
[encoder9]
active=1
reverse=1
filterType=0
captureSource=0
captureHomeSense=0
captureIndexSense=0
[enable1]
active=1
axis=1
axisItem=-1
reverse=1
[enable2]
active=1
axis=2
axisItem=-1
reverse=1
[enable3]
active=1
axis=3
axisItem=-1
reverse=1
[enable4]
active=1
axis=4
axisItem=-1
reverse=1
[enable5]
active=1
axis=5
axisItem=-1
reverse=1
[enable6]
active=1
axis=6
axisItem=-1
reverse=1
[enable7]
active=1
axis=7
axisItem=-1
reverse=1
[enable8]
active=1
axis=8
axisItem=-1
reverse=1
[clear1]
active=1
axis=-1
axisItem=-1
reverse=0
[clear2]
active=1
axis=-1
axisItem=-1
reverse=0
[clear3]
active=1
axis=-1
axisItem=-1
reverse=0
[clear4]
active=1
axis=-1
axisItem=-1
reverse=0
[clear5]
active=1
axis=-1
axisItem=-1
reverse=0
[clear6]
active=1
axis=-1
axisItem=-1
reverse=0
[clear7]
active=1
axis=-1
axisItem=-1
reverse=0
[clear8]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo1]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo2]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo3]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo4]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo5]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo6]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo7]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo8]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo9]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo10]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo11]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo12]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo13]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo14]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo15]
active=1
axis=-1
axisItem=-1
reverse=0
[gpo16]
active=1
axis=-1
axisItem=-1
reverse=0
[limitPositive1]
active=1
reverse=1
filterTime=3
[limitPositive2]
active=1
reverse=1
filterTime=3
[limitPositive3]
active=1
reverse=1
filterTime=3
[limitPositive4]
active=1
reverse=1
filterTime=3
[limitPositive5]
active=1
reverse=1
filterTime=3
[limitPositive6]
active=1
reverse=1
filterTime=3
[limitPositive7]
active=1
reverse=1
filterTime=3
[limitPositive8]
active=1
reverse=1
filterTime=3
[limitNegative1]
active=1
reverse=1
filterTime=3
[limitNegative2]
active=1
reverse=1
filterTime=3
[limitNegative3]
active=1
reverse=1
filterTime=3
[limitNegative4]
active=1
reverse=1
filterTime=3
[limitNegative5]
active=1
reverse=1
filterTime=3
[limitNegative6]
active=1
reverse=1
filterTime=3
[limitNegative7]
active=1
reverse=1
filterTime=3
[limitNegative8]
active=1
reverse=1
filterTime=3
[alarm1]
active=1
reverse=0
filterTime=3
[alarm2]
active=1
reverse=0
filterTime=3
[alarm3]
active=1
reverse=0
filterTime=3
[alarm4]
active=1
reverse=1
filterTime=3
[alarm5]
active=1
reverse=1
filterTime=3
[alarm6]
active=1
reverse=1
filterTime=3
[alarm7]
active=1
reverse=1
filterTime=3
[alarm8]
active=1
reverse=1
filterTime=3
[home1]
active=1
reverse=1
filterTime=3
[home2]
active=1
reverse=1
filterTime=3
[home3]
active=1
reverse=1
filterTime=3
[home4]
active=1
reverse=1
filterTime=3
[home5]
active=1
reverse=1
filterTime=3
[home6]
active=1
reverse=1
filterTime=3
[home7]
active=1
reverse=1
filterTime=3
[home8]
active=1
reverse=1
filterTime=3
[gpi1]
active=1
reverse=0
filterTime=3
[gpi2]
active=1
reverse=0
filterTime=3
[gpi3]
active=1
reverse=0
filterTime=3
[gpi4]
active=1
reverse=0
filterTime=3
[gpi5]
active=1
reverse=0
filterTime=3
[gpi6]
active=1
reverse=0
filterTime=3
[gpi7]
active=1
reverse=0
filterTime=3
[gpi8]
active=1
reverse=0
filterTime=3
[gpi9]
active=1
reverse=0
filterTime=3
[gpi10]
active=1
reverse=0
filterTime=3
[gpi11]
active=1
reverse=0
filterTime=3
[gpi12]
active=1
reverse=0
filterTime=3
[gpi13]
active=1
reverse=0
filterTime=3
[gpi14]
active=1
reverse=0
filterTime=3
[gpi15]
active=1
reverse=0
filterTime=3
[gpi16]
active=1
reverse=0
filterTime=3
[arrive1]
active=1
reverse=1
filterTime=8
[arrive2]
active=1
reverse=1
filterTime=8
[arrive3]
active=1
reverse=1
filterTime=8
[arrive4]
active=1
reverse=1
filterTime=9
[arrive5]
active=1
reverse=1
filterTime=8
[arrive6]
active=1
reverse=0
filterTime=3
[arrive7]
active=1
reverse=1
filterTime=8
[arrive8]
active=1
reverse=1
filterTime=8
@@ -0,0 +1,337 @@
[JOG_SPEED]
JOG速度(pulse/ms)
JOG_SPEED_0=200.0
JOG_SPEED_1=150.0
JOG_SPEED_2=50
JOG_SPEED_3=10
JOG_SPEED_4=1
;JOG加速度(pulse/ms^2)
JOG_ACC_0=2.0
JOG_ACC_1=2.0
JOG_ACC_2=2.0
JOG_ACC_3=1.0
JOG_ACC_4=1.0
;JOG减速度(pulse/ms^2)
JOG_DEC_0=2.0
JOG_DEC_1=2.0
JOG_DEC_2=2.0
JOG_DEC_3=1.0
JOG_DEC_4=1.0
;JOG模式采用急停还是平滑停止,0是平滑停止1为急停,默认0
JOG_STOP_MODE_1=0
JOG_STOP_MODE_2=0
JOG_STOP_MODE_3=0
JOG_STOP_MODE_4=0
JOG_STOP_MODE_5=0
JOG_STOP_MODE_6=0
JOG_STOP_MODE_7=0
JOG_STOP_MODE_8=0
JOG_STOP_MODE=0
JOG_SPEED_GEAR0_1=200.0
JOG_ACC_GEAR0_1=2.0
JOG_DEC_GEAR0_1=2.0
JOG_SPEED_GEAR0_2=200.0
JOG_ACC_GEAR0_2=2.0
JOG_DEC_GEAR0_2=2.0
JOG_SPEED_GEAR0_3=150.0
JOG_ACC_GEAR0_3=2.0
JOG_DEC_GEAR0_3=2.0
JOG_SPEED_GEAR0_4=200.0
JOG_ACC_GEAR0_4=2.0
JOG_DEC_GEAR0_4=2.0
JOG_SPEED_GEAR1_1=100.0
JOG_ACC_GEAR1_1=2.0
JOG_DEC_GEAR1_1=2.0
JOG_SPEED_GEAR1_2=100.0
JOG_ACC_GEAR1_2=2.0
JOG_DEC_GEAR1_2=2.0
JOG_SPEED_GEAR1_3=80.0
JOG_ACC_GEAR1_3=2.0
JOG_DEC_GEAR1_3=2.0
JOG_SPEED_GEAR1_4=100.0
JOG_ACC_GEAR1_4=2.0
JOG_DEC_GEAR1_4=2.0
JOG_SPEED_GEAR2_1=50.0
JOG_ACC_GEAR2_1=2.0
JOG_DEC_GEAR2_1=2.0
JOG_SPEED_GEAR2_2=50.0
JOG_ACC_GEAR2_2=2.0
JOG_DEC_GEAR2_2=2.0
JOG_SPEED_GEAR2_3=50.0
JOG_ACC_GEAR2_3=2.0
JOG_DEC_GEAR2_3=2.0
JOG_SPEED_GEAR2_4=50.0
JOG_ACC_GEAR2_4=2.0
JOG_DEC_GEAR2_4=2.0
JOG_SPEED_GEAR3_1=10.0
JOG_ACC_GEAR3_1=1.0
JOG_DEC_GEAR3_1=1.0
JOG_SPEED_GEAR3_2=10.0
JOG_ACC_GEAR3_2=1.0
JOG_DEC_GEAR3_2=1.0
JOG_SPEED_GEAR3_3=10.0
JOG_ACC_GEAR3_3=1.0
JOG_DEC_GEAR3_3=1.0
JOG_SPEED_GEAR3_4=10.0
JOG_ACC_GEAR3_4=1.0
JOG_DEC_GEAR3_4=1.0
JOG_SPEED_GEAR4_1=1.0
JOG_ACC_GEAR4_1=1.0
JOG_DEC_GEAR4_1=1.0
JOG_SPEED_GEAR4_2=1.0
JOG_ACC_GEAR4_2=1.0
JOG_DEC_GEAR4_2=1.0
JOG_SPEED_GEAR4_3=1.0
JOG_ACC_GEAR4_3=1.0
JOG_DEC_GEAR4_3=1.0
JOG_SPEED_GEAR4_4=1.0
JOG_ACC_GEAR4_4=1.0
JOG_DEC_GEAR4_4=1.0
;0:都使用(正常情况) 1:只使用灯,而不使用控制器;默认0
[USE_LIGHT]
ONLY_USE_LIGHT=0
[RESOLUTION]
;光栅尺的分辨率(mm)
SCALE_RESOLUTION_1=0.0004
SCALE_RESOLUTION_2=0.0004
SCALE_RESOLUTION_3=0.0004
SCALE_RESOLUTION_4=0.0004
SCALE_RESOLUTION_5=0.0004
SCALE_RESOLUTION_6=0.0004
SCALE_RESOLUTION_7=0.0004
SCALE_RESOLUTION_8=0.0004
[LIMIT]
;负限位(mm),必须是负数
NEG_WORKING_LIMIT_1=-260.0
NEG_WORKING_LIMIT_2=-40.0
NEG_WORKING_LIMIT_3=-40.0
NEG_WORKING_LIMIT_4=-40.0
NEG_WORKING_LIMIT_5=-40.0
NEG_WORKING_LIMIT_6=-40.0
NEG_WORKING_LIMIT_7=-40.0
NEG_WORKING_LIMIT_8=-40.0
;正限位(mm),必须是正数
POS_WORKING_LIMIT_1=40.0
POS_WORKING_LIMIT_2=160.0
POS_WORKING_LIMIT_3=160.0
POS_WORKING_LIMIT_4=200.0
POS_WORKING_LIMIT_5=200.0
POS_WORKING_LIMIT_6=200.0
POS_WORKING_LIMIT_7=200.0
POS_WORKING_LIMIT_8=200.0
[HOME]
;选择需要回家的轴号,改为1
HOME_MACHINE_AXIS_1=1
HOME_MACHINE_AXIS_2=1
HOME_MACHINE_AXIS_3=1
HOME_MACHINE_AXIS_4=0
HOME_MACHINE_AXIS_5=0
HOME_MACHINE_AXIS_6=0
HOME_MACHINE_AXIS_7=0
HOME_MACHINE_AXIS_8=0
;是否启动实际位置判断是否回家,默认0,1启用,0关闭
IS_HOME_ENC_POS=0
;是否启动规划位置判断是否回家,默认1,1启用,0关闭
IS_HOME_PRF_POS=1
;关闭电源时记住当前的位置,用于判断是否需要回家
HOME_POS_AXIS_1=0
HOME_POS_AXIS_2=0
HOME_POS_AXIS_3=0
HOME_POS_AXIS_4=0
HOME_POS_AXIS_5=0
HOME_POS_AXIS_6=0
HOME_POS_AXIS_7=0
HOME_POS_AXIS_8=0
;回家第一段速度(pulse/ms)
HOME_HIGH_SPEED_1=200.0
HOME_HIGH_SPEED_2=200.0
HOME_HIGH_SPEED_3=200.0
HOME_HIGH_SPEED_4=200.0
HOME_HIGH_SPEED_5=200.0
HOME_HIGH_SPEED_6=200.0
HOME_HIGH_SPEED_7=200.0
HOME_HIGH_SPEED_8=200.0
;回家第一段加速度(pulse/ms^2)
HOME_HIGH_ACC_1=2.0
HOME_HIGH_ACC_2=2.0
HOME_HIGH_ACC_3=2.0
HOME_HIGH_ACC_4=2.0
HOME_HIGH_ACC_5=2.0
HOME_HIGH_ACC_6=2.0
HOME_HIGH_ACC_7=2.0
HOME_HIGH_ACC_8=2.0
;回家第二段速度(pulse/ms)
HOME_LOW_SPEED_1=180.0
HOME_LOW_SPEED_2=180.0
HOME_LOW_SPEED_3=180.0
HOME_LOW_SPEED_4=180.0
HOME_LOW_SPEED_5=180.0
HOME_LOW_SPEED_6=180.0
HOME_LOW_SPEED_7=180.0
HOME_LOW_SPEED_8=180.0
;回家第二段加速度(pulse/ms^2)
HOME_LOW_ACC_1=2.0
HOME_LOW_ACC_2=2.0
HOME_LOW_ACC_3=2.0
HOME_LOW_ACC_4=2.0
HOME_LOW_ACC_5=2.0
HOME_LOW_ACC_6=2.0
HOME_LOW_ACC_7=2.0
HOME_LOW_ACC_8=2.0
;回家延时时间(ms)
HOME_TIME_1=1000
HOME_TIME_2=1000
HOME_TIME_3=1000
HOME_TIME_4=1000
HOME_TIME_5=1000
HOME_TIME_6=1000
HOME_TIME_7=1000
HOME_TIME_8=1000
[PID]
;PID比例调节,应从0.01递增开始调试
PID_KP_1=1.20
PID_KP_2=1.20
PID_KP_3=1.20
PID_KP_4=1.20
PID_KP_5=1.20
PID_KP_6=1.20
PID_KP_7=1.20
PID_KP_8=1.20
[PRECISION]
;超时时间(0.1ms)
PRECISION_TIME_1=20000
PRECISION_TIME_2=20000
PRECISION_TIME_3=20000
PRECISION_TIME_4=20000
PRECISION_TIME_5=20000
PRECISION_TIME_6=20000
PRECISION_TIME_7=20000
PRECISION_TIME_8=20000
;回家误差脉冲个数
PRECISION_COUNT_1=8
PRECISION_COUNT_2=8
PRECISION_COUNT_3=8
PRECISION_COUNT_4=8
PRECISION_COUNT_5=8
PRECISION_COUNT_6=8
PRECISION_COUNT_7=8
PRECISION_COUNT_8=8
[SET_POSITION_SPEED]
;XYZ定位的合成速度(pulse/ms)
SET_POTION_SPEED_1=500.0
SET_POTION_SPEED_2=500.0
SET_POTION_SPEED_3=500.0
SET_POTION_SPEED_4=500.0
SET_POTION_SPEED_5=500.0
SET_POTION_SPEED_6=500.0
SET_POTION_SPEED_7=500.0
SET_POTION_SPEED_8=500.0
;XYZ定位的合成加速度(pulse/ms^2)
SET_POTION_ACC_1=2.5
SET_POTION_ACC_2=2.5
SET_POTION_ACC_3=2.5
SET_POTION_ACC_4=2.5
SET_POTION_ACC_5=2.5
SET_POTION_ACC_6=2.5
SET_POTION_ACC_7=2.5
SET_POTION_ACC_8=2.5
;XYZ定位的终点速度(pulse/ms)
SET_POTION_DEC_1=1.0
SET_POTION_DEC_2=1.0
SET_POTION_DEC_3=1.0
SET_POTION_DEC_4=1.0
SET_POTION_DEC_5=1.0
SET_POTION_DEC_6=1.0
SET_POTION_DEC_7=1.0
SET_POTION_DEC_8=1.0
;XYZ定到位判断次数
SET_POSITION_COUNT_1=240
SET_POSITION_COUNT_2=240
SET_POSITION_COUNT_3=240
SET_POSITION_COUNT_4=240
SET_POSITION_COUNT_5=240
SET_POSITION_COUNT_6=240
SET_POSITION_COUNT_7=240
SET_POSITION_COUNT_8=240
[COMPORT]
;灯光控制器类型选择
;0:启用c++调用灯光,不使用STM32 USB控制时,需要把下面的IS_STM32_USB改为0
;1:wpf直接调用;
;2:DP光源控制器;
;3:旧的6环8区为3(环形可调);
;4:新的6环8区为4(扇区可调);
;5:STM32控制器,IP地址在exe目录下的CameraNum.ini中修改
;61:OPT光源控制器网络模式(111ms),IP地址在exe目录下的CameraNum.ini中修改,串口模式62(44ms);
COM_PORT_CPP_WPF=0
;使用stm32时,是否使用USB通讯,使用该功能时,COM_PORT_CPP_WPF必须等于0
IS_STM32_USB=0
;是否打开第一个串,1为打开,0为关闭,默认0
IS_COM_PORT_A=0
COM_PORT_A=2
COM_PORT_A_LED_1=1
COM_PORT_A_LED_2=1
COM_PORT_A_LED_3=1
COM_PORT_A_LED_4=1
;是否打开第二个串,1为打开,0为关闭,默认0
IS_COM_PORT_B=0
COM_PORT_B=6
COM_PORT_B_LED_1=1
COM_PORT_B_LED_2=1
COM_PORT_B_LED_3=1
COM_PORT_B_LED_4=1
[TRRIGER]
;线性点触发的脉冲宽度
LINEAR_PULSE_WIDTH=500
;等间距触发的脉冲宽度
INTERVAL_PULSE_WIDTH=500
;手动触发
HOLD_TIME=150
[LOG]
;是否打开记录,默认0为关闭,1位打开,;LOG_IS_OPEN_0为是否打开记录功能
LOG_IS_OPEN_0=1
LOG_IS_OPEN_1=1
LOG_IS_OPEN_2=1
LOG_IS_OPEN_3=1
LOG_IS_OPEN_4=0
LOG_IS_OPEN_5=0
LOG_IS_OPEN_6=0
LOG_IS_OPEN_7=0
LOG_IS_OPEN_8=0
;是否启用统计定位函数的时间日志,1:启用,默认0关闭
LOG2_IS_OPEN=0
;定位几次后,计算这几次总共用时mm,默认4次
LOG_SUM_COUNT=0
@@ -0,0 +1,3 @@
[Default]
MotionControlSpeed=1
ControllerType=1