剥离第一阶段需要做的函数,梳理关系,新增测试dll工程

This commit is contained in:
wio
2022-10-10 11:52:53 +08:00
parent 698e1223fa
commit 6d2b284f36
44 changed files with 1500 additions and 302 deletions
+14 -13
View File
@@ -7,8 +7,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HSI_Sevenocean_EF1", "..\EF
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HSI_Sevenocean_EF1_WPFTest", "..\EF3-Interfac\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\HSI_Sevenocean_EF1_WPFTest\HSI_Sevenocean_EF1_WPFTest.csproj", "{B8B35406-6406-424C-94B4-C6BB4A481413}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HSI_SEVENOCEAN_EF1_CsTest", "..\EF3-Interfac\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\HSI_SEVENOCEAN_EF1_CsTest\HSI_SEVENOCEAN_EF1_CsTest.csproj", "{7ED499CB-651C-4154-9741-EEF347BDBFB5}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HSI_Sevenocean_EF3", "..\EF3-Interfac\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\HSI_Sevenocean_EF3\HSI_Sevenocean_EF3.vcxproj", "{3B731938-04B1-46FE-9EEA-CBDD1D3B522A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HSI_HexagonMI_EF3", "HSI_HexagonMI_EF3\HSI_HexagonMI_EF3.vcxproj", "{ECCF081D-DDA4-49D5-A03F-9DD5AB8B666B}"
@@ -19,6 +17,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HSI_CONTROLLER_WPFTest", ".
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WPFSerialAssistant", "SerialAssistant\WPFSerialAssistant\WPFSerialAssistant.csproj", "{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}"
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}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -49,17 +49,6 @@ Global
{B8B35406-6406-424C-94B4-C6BB4A481413}.Release|x64.Build.0 = Release|x64
{B8B35406-6406-424C-94B4-C6BB4A481413}.Release|x86.ActiveCfg = Release|Any CPU
{B8B35406-6406-424C-94B4-C6BB4A481413}.Release|x86.Build.0 = Release|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|x64.ActiveCfg = Debug|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|x86.ActiveCfg = Debug|x86
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|x86.Build.0 = Debug|x86
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|Any CPU.Build.0 = Release|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|x64.ActiveCfg = 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.Build.0 = Release|x86
{3B731938-04B1-46FE-9EEA-CBDD1D3B522A}.Debug|Any CPU.ActiveCfg = Debug|Win32
{3B731938-04B1-46FE-9EEA-CBDD1D3B522A}.Debug|x64.ActiveCfg = Debug|x64
{3B731938-04B1-46FE-9EEA-CBDD1D3B522A}.Debug|x86.ActiveCfg = Debug|Win32
@@ -110,6 +99,18 @@ Global
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Release|x64.Build.0 = Release|Any CPU
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Release|x86.ActiveCfg = Release|Any CPU
{DA01B86D-5BC1-4863-BAAC-71B309B09CC0}.Release|x86.Build.0 = Release|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|x64.ActiveCfg = Debug|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|x64.Build.0 = Debug|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|x86.ActiveCfg = Debug|x86
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Debug|x86.Build.0 = Debug|x86
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|Any CPU.Build.0 = Release|Any CPU
{7ED499CB-651C-4154-9741-EEF347BDBFB5}.Release|x64.ActiveCfg = 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.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
+193 -189
View File
@@ -3,9 +3,9 @@
#include "HSI_Motion.h"
#include "HSI_Sevenocean_EF3.h"
#include "SevenOcean\CMMIO_SERIAL.h"
#include "HSI_Illumination.h"
#include "HSI_Function.h"
#include "HSI_JoyStick.h"
//#include "HSI_Illumination.h"
//#include "HSI_Function.h"
//#include "HSI_JoyStick.h"
#ifdef _DEBUG
#define new DEBUG_NEW
@@ -42,7 +42,7 @@ HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly)
g_bOfflineOnly = _bOfflineOnly;
return rStatus;
}
//===========================================================================
//==========================获取机器控制器信息,3代表EF3=================================================
HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int &_NumMachineTypes)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -62,7 +62,7 @@ HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback)
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Sevenocean_EF3)
{
rStatus = g_pHSI_Sevenocean_EF3->SetEventCallback(_pCallback);
rStatus = g_pHSI_Sevenocean_EF3->SetEventCallback(_pCallback); //设置事件
}
else
{
@@ -114,33 +114,50 @@ HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM()
#pragma endregion
////////////////////////////////////////////////////////////////////////////////
// MOTION API
// MOTION API 运动相关API
///////////////////////////////////////////////////////////////////////////////
#pragma region Motion API
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types)
#pragma region 第一阶段实现的API功能
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_bOfflineOnly == 0)
{
if (!g_pHSI_Motion)
{
g_pHSI_Motion = new HSI_Motion();
}
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->IsSupported(Types);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
}
return rStatus;
auto rStatus = HSI_STATUS_NORMAL;
if (g_bOfflineOnly == 0)
{
if (!g_pHSI_Motion)
{
g_pHSI_Motion = new HSI_Motion();
}
if (g_pHSI_Motion && g_pHSI_Sevenocean_EF3)
{
rStatus = g_pHSI_Motion->Startup(g_hWnd, g_bOfflineOnly);
if (rStatus == HSI_STATUS_FAILED)
{
return HSI_STATUS_FAILED;
}
rStatus = g_pHSI_Motion->HomeMachine(bHome);
switch (g_pHSI_Motion->m_iJoyStick)
{
case 0:
break;
case 1:
//if (!g_pHSI_JoyStick)
//{
// g_pHSI_JoyStick = new HSI_Joystick(g_pHSI_Motion);
// g_pHSI_JoyStick->ResumeJoyStickThread();
//}
break;
default:
break;
}
}
else
{
rStatus = HSI_STATUS_FAILED;
}
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte *verion)
@@ -157,58 +174,130 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte *verion)
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome)
HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN()
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_bOfflineOnly == 0)
{
if (!g_pHSI_Motion)
{
g_pHSI_Motion = new HSI_Motion();
}
if (g_pHSI_Motion && g_pHSI_Sevenocean_EF3)
{
rStatus = g_pHSI_Motion->Startup(g_hWnd, g_bOfflineOnly);
if (rStatus == HSI_STATUS_FAILED)
{
return HSI_STATUS_FAILED;
}
rStatus = g_pHSI_Motion->HomeMachine(bHome);
switch (g_pHSI_Motion->m_iJoyStick)
{
case 0:
break;
case 1:
//if (!g_pHSI_JoyStick)
//{
// g_pHSI_JoyStick = new HSI_Joystick(g_pHSI_Motion);
// g_pHSI_JoyStick->ResumeJoyStickThread();
//}
break;
default:
break;
}
}
else
{
rStatus = HSI_STATUS_FAILED;
}
}
return rStatus;
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->Shutdown();
delete g_pHSI_Motion;
g_pHSI_Motion = nullptr;
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->Jog(AxisTypes, Speed);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG()
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->StopJog();
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
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;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->GetPositionXyz(AxisTypes, PositionX, PositionY, PositionZ, Time);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
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)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->SetPositionXyz(AxisTypes, PositionX, PositionY, PositionZ, eType, dSpeedGear);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION()
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->AbortMotion();
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->IsHomed(bHomed);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->IsHomed(bHomed);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
#pragma endregion
#ifdef USE_Motion_API
#pragma region 后续考虑
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_bOfflineOnly == 0)
{
if (!g_pHSI_Motion)
{
g_pHSI_Motion = new HSI_Motion();
}
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->IsSupported(Types);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis,double &Speed)
@@ -364,34 +453,6 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband)
return HSI_STATUS_NOT_SUPPORTED;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->Jog(AxisTypes, Speed);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG()
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->StopJog();
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCPRF_MULTI(UINT AxisTypes, double *EncPos, double *PrfPos, int Count)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -406,20 +467,6 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCPRF_MULTI(UINT AxisTypes, double *En
return rStatus;
}
//===========================================================================
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;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->GetPositionXyz(AxisTypes, PositionX, PositionY, PositionZ, Time);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long *lEncVal)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -461,20 +508,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG_PROBE(UINT AxisTypes, double speed)
}
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)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->SetPositionXyz(AxisTypes, PositionX, PositionY, PositionZ, eType, dSpeedGear);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZA(UINT AxisTypes, double PositionX, double PositionY, double PositionZ, double PositionA, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear)
{
@@ -535,20 +569,6 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double Posi
return HSI_STATUS_NOT_SUPPORTED;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION()
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->AbortMotion();
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -950,22 +970,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_TRIGGLECOUNT(int* nCount, int& nArea)
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN()
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->Shutdown();
delete g_pHSI_Motion;
g_pHSI_Motion = nullptr;
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_FINDORIGINTEST(bool type)
{
@@ -981,15 +986,31 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_FINDORIGINTEST(bool type)
return rStatus;
}
HSI_API HSI_STATUS WINAPI HSI_MOTION_COLLECTPOS(bool isEnable, MOTOR_AXISCHOOES_CMD axis, short cycle)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->CollectPos(isEnable, axis, cycle);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
#pragma endregion
#endif // DEBUG
#pragma endregion
//²¹¹âµÆ
#ifdef USE_ILLUMINATION_API
////////////////////////////////////////////////////////////////////////////////
// ILLUMINATION API
// ILLUMINATION API 补光灯
///////////////////////////////////////////////////////////////////////////////
#ifdef USE_ILLUMINATION_API
#pragma region // ILLUMINATION API
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_IS_SUPPORTED(UINT &Types)
@@ -1161,11 +1182,12 @@ HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_TESTLIGHT(bool flag)
#endif // USE_ILLUMINATION_API
//̽Õë
///////////////////////////////////////////////////////////////////////////////
// Probe API 探针
///////////////////////////////////////////////////////////////////////////////
#ifdef USE_Probe_API
///////////////////////////////////////////////////////////////////////////////
// Probe API
///////////////////////////////////////////////////////////////////////////////
#pragma region probe
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_TP_STARTUP()
@@ -1358,25 +1380,7 @@ HSI_API HSI_STATUS WINAPI HSI_TP_SHUTDOWN()
#endif // USE_Probe_API
//²âÊÔ
#ifdef Test
///////////////////////////////////////////////////////////////////////////////
// 测试功能
///////////////////////////////////////////////////////////////////////////////
#pragma region Test
//===========================================================================
HSI_API HSI_STATUS WINAPI HSI_MOTION_COLLECTPOS(bool isEnable, MOTOR_AXISCHOOES_CMD axis, short cycle)
{
auto rStatus = HSI_STATUS_NORMAL;
if (g_pHSI_Motion)
{
rStatus = g_pHSI_Motion->CollectPos(isEnable, axis, cycle);
}
else
{
rStatus = HSI_STATUS_FAILED;
}
return rStatus;
}
//===========================================================================
#pragma endregion
#endif // Test
+40 -39
View File
@@ -21,8 +21,8 @@
#define HSI_API extern "C" __declspec(dllimport)
#endif
const int HSI_APIVersionMajor = 1;
const int HSI_APIVersionMinor = 9;
const int HSI_APIVersionMajor = 0;
const int HSI_APIVersionMinor = 1;
const int HSI_MaxStringLength = 255; // Maximum string length (buffer size - 1)
///////////////////////////////////////////////////////////////////////////////
@@ -82,9 +82,9 @@ enum HSI_STATUS
};
enum HSI_MACHINE_TYPE
{
HSI_MACHINE_UNKNOWN = 0,
HSI_MACHINE_SO7 = 1,
HSI_MACHINE_NAVITAR_AUTOZOOM = 2,
HSI_MACHINE_UNKNOWN = 0,
HSI_MACHINE_SO7 = 1,
HSI_MACHINE_NAVITAR_AUTOZOOM = 2,
HSI_MACHINE_EF3 = 3,
HSI_MACHINE_GOOGOL = 4,
HSI_MACHINE_TYPE_TOTAL,
@@ -347,47 +347,48 @@ typedef struct
const int HSI_MAX_POSITIONS_STORED = 500;
// >>>> In Interfaces
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types);
// 第一阶段需要重写的API 函数
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome);
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double &Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte *verion);
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_MOTION_SET_SPEED_XYZ(double Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double &AccelX, double &AccelY, double &AccelZ);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double &Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double &AccelR);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double &ScaleX, double &ScaleY, double &ScaleZ);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION(double ScaleX, double ScaleY, double ScaleZ);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DEADBAND(double &DeadbandX, double &DeadbandY, double &DeadbandZ, double &DeadbandR);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband);
HSI_API HSI_STATUS WINAPI HSI_MOTION_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_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_POSITIONPROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &PositionA);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long *lEncVal);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ(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_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point *CacheData);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double &PositionR, double &Time);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait);
HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION();
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_PLAN_SCAN(double *pdStartPosX, double *pdStartPosY, double *pdStartPosZ, double *pdEndPosX, double *pdEndPosY, double *pdEndPosZ, double *pdStepDis, bool *pbTrig, int iCount);
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status);
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis);
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START();
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP();
//HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double &Speed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double &AccelX, double &AccelY, double &AccelZ);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double &Speed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double &AccelR);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double &ScaleX, double &ScaleY, double &ScaleZ);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION(double ScaleX, double ScaleY, double ScaleZ);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DEADBAND(double &DeadbandX, double &DeadbandY, double &DeadbandZ, double &DeadbandR);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITIONPROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &PositionA);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long *lEncVal);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point *CacheData);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double &PositionR, double &Time);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_PLAN_SCAN(double *pdStartPosX, double *pdStartPosY, double *pdStartPosZ, double *pdEndPosX, double *pdEndPosY, double *pdEndPosZ, double *pdStepDis, bool *pbTrig, int iCount);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START();
//HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP();
@@ -398,10 +399,10 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP();
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_EX(UINT AxisTypes, double &Position, double &Time);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_EX(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double &Speed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_EX(UINT AxisTypes, double Speed);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double &Accel);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_EX(UINT AxisTypes, double Accel);
//暂未实现
//HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_MAGNIFICATION(UINT AxisTypes, double mag, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_MAGNIFICATION(UINT AxisTypes, double &mag);
@@ -412,7 +413,7 @@ HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP();
//HSI_API HSI_STATUS WINAPI HSI_MOTION_TOUCH_MOVE(double dSpeed, double dEndPosX, double dEndPosY, double dEndPosZ, double dI, double dJ, double dK);
//HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZA_PROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &dI, double &dJ, double &dK, double &PositionA);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN();
// <<<< Out Interfaces
+1 -2
View File
@@ -104,8 +104,7 @@
</ModuleDefinitionFile>
</Link>
<PostBuildEvent>
<Command>
</Command>
<Command>copy "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)HSI_SEVENOCEAN_EF1_CsTest\bin\Debug\HSI.dll"</Command>
</PostBuildEvent>
<PreBuildEvent>
<Command>version.cmd</Command>
+21 -44
View File
@@ -602,8 +602,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly)
}
return rStatus;
}
//获取EF3固件版本
//=============================获取EF3固件版本===============================
HSI_STATUS HSI_Motion::GetFirmwareVersion(byte *version)
{
m_Thread_StateData = HSI_THREAD_PAUSED;
@@ -658,12 +657,10 @@ HSI_STATUS HSI_Motion::GetFirmwareVersion(byte *version)
}
}
m_Thread_StateData = HSI_THREAD_RUNNING;
SetEvent(m_hTriggerEventData);
SetEvent(m_hTriggerEventData); //触发事件,其中hEvent表示句柄,返回值:如果操作成功,则返回非零值,否则为0。
return HSI_STATUS_NORMAL;
}
//回家
//===========================================================================
//================================回家=======================================
HSI_STATUS HSI_Motion::HomeMachine(bool bHomed)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -1175,8 +1172,7 @@ HSI_STATUS HSI_Motion::ZeroPos(bool bZeroPos)
return rStatus;
}
//JOG模式
//===========================================================================
//===============================JOG模式============================================
HSI_STATUS HSI_Motion::Jog(UINT AxisTypes, double Speed)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -1847,7 +1843,7 @@ int HSI_Motion::P2P(short AxisNumber, long Pos, double Speed, double Acc)
}
return 0;
}
//===========================================================================
//运动控制部分
//===========================================================================
HSI_STATUS HSI_Motion::GetPositionEncPrfMulti(UINT AxisTypes, double *EncPos, double *PrfPos, int Count)
@@ -2563,7 +2559,7 @@ HSI_STATUS HSI_Motion::SetPositionXyz(UINT AxisTypes, double PositionX, double
ReleaseMutex(g_WR_ToMove_Mutex);
return rStatus;
}
//===========================================================================
int HSI_Motion::CaculateStepMotorACC(int pos, int maxacc, int minacc)
{
double mpos = (double)abs(pos) / 1000;
@@ -2574,7 +2570,6 @@ int HSI_Motion::CaculateStepMotorACC(int pos, int maxacc, int minacc)
acc = maxacc;
return acc;
}
//===========================================================================
HSI_STATUS HSI_Motion::SetPositionXyza(UINT AxisTypes, double PositionX, double PositionY, double PositionZ, double PositionA, HSI_MOTION_MOVE_TYPE eType, double dFlyRadius)
{
@@ -2600,7 +2595,7 @@ HSI_STATUS HSI_Motion::SetPositionXyzCache(UINT AxisTypes, HSI_MOTION_MOVE_TYPE
}
return rStatus;
}
//===========================================================================
HSI_STATUS HSI_Motion::SetCircleInterpolate(double PositionX, double PositionY, double PositionZ)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -2615,9 +2610,7 @@ HSI_STATUS HSI_Motion::SetCircleInterpolate(double PositionX, double PositionY
}
return rStatus;
}
//探针接口
//===========================================================================
//===========================探针接口================================================
void HSI_Motion::ProbeRetractManDist(int RetractManDist)
{
if (g_pHSI_Motion)
@@ -2748,9 +2741,7 @@ HSI_STATUS HSI_Motion::JogProbe(UINT AxisTypes, double Speed)
}
return rStatus;
}
//读取配置
//===========================================================================
//=============================读取配置==============================================
HSI_STATUS HSI_Motion::Load_EF3_Motion_Inifile(CString GoogolIniFile)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -2975,9 +2966,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile)
}
return rStatus;
}
//读取/设置光栅尺精度
//===========================================================================
//===============================读取/设置光栅尺精度============================================
HSI_STATUS HSI_Motion::GetScaleResolution(double &_ScaleX, double &_ScaleY, double &_ScaleZ)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -3001,9 +2990,7 @@ HSI_STATUS HSI_Motion::SetScaleResolution(double _ScaleX, double _ScaleY, double
}
return rStatus;
}
//回调定位完成
//===========================================================================
//============================回调定位完成===============================================
void HSI_Motion::SendMsgMotionFinished()
{
sEvenProp.Init();
@@ -3013,8 +3000,7 @@ void HSI_Motion::SendMsgMotionFinished()
EventCallback(sEvenProp);
}
//回调探针运行
//===========================================================================
//=============================回调探针运行==============================================
void HSI_Motion::SendMsgProbeFinished()
{
sEvenProp.Init();
@@ -3023,7 +3009,6 @@ void HSI_Motion::SendMsgProbeFinished()
sEvenProp.EventResponse = HSI_EVENT_FUNCTION_OK;
EventCallback(sEvenProp);
}
//===========================================================================
void HSI_Motion::UpdateMotionState()
{
@@ -3427,8 +3412,7 @@ HSI_STATUS HSI_Motion::SpecialMotorMove(short AxisNumber, double Position)
return rStatus;
}
//IO
//===========================================================================
//========================IO===================================================
HSI_STATUS HSI_Motion::GetDIO(UINT IOChannel, UINT& _Status)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -3546,9 +3530,8 @@ HSI_STATUS HSI_Motion::GetAxisStatus(int* _Status)
}
return rStatus;
}
//===========================================================================
//暂停和关闭
//=============================暂停和关闭==============================================
HSI_STATUS HSI_Motion::AbortMotion()
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -3587,7 +3570,7 @@ HSI_STATUS HSI_Motion::AbortMotion()
}
return rStatus;
}
//===========================================================================
//===============================关闭============================================
HSI_STATUS HSI_Motion::Shutdown()
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -3650,9 +3633,8 @@ HSI_STATUS HSI_Motion::Shutdown()
}
return rStatus;
}
//===========================================================================
//触发灯光
//==============================触发灯光=============================================
HSI_STATUS HSI_Motion::SetTriggerLight(int triggleNum, int delayLighting, int delayLightBefor, int triggleMode, double* Intensities)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -3714,8 +3696,7 @@ HSI_STATUS HSI_Motion::SetTriggerLight(int triggleNum, int delayLighting, int de
return rStatus;
}
//硬件触发拍照
//===========================================================================
//=============================硬件触发拍照==============================================
HSI_STATUS HSI_Motion::DCCPPStartPoint(double *startPoint)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -4271,8 +4252,7 @@ HSI_STATUS HSI_Motion::DCCForLightPlate()
return rStatus;
}
//转盘
//===========================================================================
//===============================转盘============================================
HSI_STATUS HSI_Motion::StartPlcJob(int* CamerasDis, int* BinsDis, int SubArea, int filterTime1, int filterTime2, int pluseSumDis)
{
g_pLogger->SendAndFlushWithTime(L"[StartPlcJob] In\n");
@@ -4387,6 +4367,7 @@ HSI_STATUS HSI_Motion::GetTriggleCount(int *nCount, int& nArea)
}
//===========================================================================
//点胶
//===========================================================================
HSI_STATUS HSI_Motion::GluePPSpnts(int* ppsDir, double* gluePPSPos, int* delayLightBefore, int* lightTime, double* lightData, int num)
{
auto rStatus = HSI_STATUS_NORMAL;
@@ -5272,9 +5253,7 @@ HSI_STATUS HSI_Motion::GetPntsDistance(double& pDistance, int& spTimeCount)
}
return rStatus;
}
//===========================================================================
//运动控制参数读取及设置
//===========================================================================
//========================运动控制参数读取及设置===================================================
int HSI_Motion::SpeedPercent(int AxisNum, double &Speed, int &DirveSpeed, int &StartSpeed, int &AccLine, int &DecLine, int &AccCurve, int &DecCurve)
{
int MovetoSpeedGear = 0;
@@ -5336,9 +5315,7 @@ int HSI_Motion::SpeedPercent(int AxisNum, double &Speed, int &DirveSpeed, int &S
Speed = MovetoSpeedGear * flag;
return (int)Speed;
}
//===========================================================================
//JoyStick运动控制参数读取及设置
//===========================================================================
//==========================JoyStick运动控制参数读取及设置=================================================
bool HSI_Motion::SpeedPercentJoyStick(int AxisNum, long &Speed, int &DirveSpeed, int &StartSpeed, int &AccLine, int &DecLine, int &AccCurve, int &DecCurve)
{
Speed = Speed > 1000 ? 1000 : Speed;
+3 -4
View File
@@ -125,7 +125,6 @@ enum E_SO7_MOTION_READ_TYPE
typedef enum {
TCPIP_CONNECT_OK = 0,
TCPIP_INIT_WINSOCK_ERROR,
TCPIP_INVAILD_SOCKET,
TCPIP_INVAILD_IP_ADDRESS,
@@ -256,7 +255,7 @@ public:
//点胶运行状态
static int bRunGlueDispenser;
//读取EF3的JOG stop的状态
//读取EF3的JOG stop 的状态
static int m_Thread_StateJOGStop;
static HANDLE m_Thread_IdJOGStop;
static HANDLE m_Thread_MutexJOGStop;
@@ -290,7 +289,7 @@ public:
int m_stepPosition_acc[10];
double m_PositionA;//第四轴的地位位置
//jog参数
//jog 参数
int m_JogDriveSpeed[5][5];//5:轴号,从1开始;5:档位
int m_JogStartSpeed[5][5];
int m_JogAccLine[5][5];
@@ -366,7 +365,7 @@ public:
long m_ProbeCapturePos[5];//锁存各轴的位置
double m_ProbeReturnPos;//探针触发时,调试时返回的距离mm,点击启动按钮时不起作用,默认10.0mm
int m_ProbeReturnSpeed;//探针触发后,轴的回退速度
int m_isOKGlint; //是否开启ok/ng闪烁
int m_isOKGlint; //是否开启ok/ng 闪烁
int m_ETIPort;//外部触发拍照输入端口号
int m_axisStatus;//运动各轴的状态
int m_axisAlarmStatus;//轴报警状态
+1 -1
View File
@@ -50,7 +50,7 @@ public:
void SendAndFlush(LPCTSTR, ...);
void SendAndFlushPerMode(LPCTSTR, ...);
void SendAndFlushWithTime(LPCTSTR, ...);
bool IsEnabledLog/* = false*/;//Ƿ־
bool IsEnabledLog/* = false*/;//是否启用日志
CString m_FileName;
long m_lLogMask;
FILE *m_File;
+2 -2
View File
@@ -3,9 +3,9 @@
echo Generate release version
::需要人工设置的版本号----------------------------------------------------------------------------------
set major_ver=1
set major_ver=0
set minor_ver=0
set revsion_ver=0
set revsion_ver=1
::------------------------------------------------------------------------------------------------------
set revfile="%~dp0version.h"
+6 -6
View File
@@ -4,13 +4,13 @@
#define HSI_VERSION_NUM
#define HSI_VERSION_SET _T("")
///
#define HSI_VERSION "1.0.0"
#define HSI_VERSION_CSTRING _T("1.0.0")
#define HSI_VERSION_MAJOR 1
#define HSI_VERSION "0.0.1"
#define HSI_VERSION_CSTRING _T("0.0.1")
#define HSI_VERSION_MAJOR 0
#define HSI_VERSION_MINOR 0
#define HSI_VERSION_REVISION 0
#define HSI_VERSION_REVISION 1
#define HSI_VERSION_REVNUM
#define HSI_VERSION_BUILD_DATE _T(__DATE__ )
#define HSI_VERSION_BUILD_TIME _T(__TIME__ )
#define HSI_FILE_DESCRIPTION "2022.10.10 / 9:43 "
#define HSI_FILE_CSDESCRIPTION _T("2022.10.10 / 9:43 ")
#define HSI_FILE_DESCRIPTION "2022.10.10 / 11:34 "
#define HSI_FILE_CSDESCRIPTION _T("2022.10.10 / 11:34 ")
@@ -1,2 +0,0 @@
#TargetFrameworkVersion=v4.0:PlatformToolSet=v140:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=8.1
Release|x64|D:\Metus_git\2020_R1\HG_EF7_HSI_EF1\PcDmis\Base\Interfac\Msi\Hsi\Tools\UsbUtility\|
Binary file not shown.
Binary file not shown.
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
+587
View File
@@ -0,0 +1,587 @@
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace HSI_SEVENOCEAN_EF1_CsTest.HSI
{
internal class Interface
{
// >>>> In Interfaces
public delegate void PEventCallback(
Def.HSI_EVENT_TYPE eventType, Def.HSI_EVENT_RESPONSE_TYPE responseType, uint eventId, string eventData,
ref uint eventCallbackId);
public static PEventCallback HsiCallback;
[DllImport("HSI.dll", EntryPoint = "HSI_GET_INTERFACE_VERSION", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS GetInterfaceVersion(ref uint apiVersionMajor, ref uint apiVersionMinor);
[DllImport("HSI.dll", EntryPoint = "HSI_STARTUP", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS Startup(IntPtr hWnd, bool bOfflineOnly);
[DllImport("HSI.dll", EntryPoint = "HSI_GET_INTERFACE_VERSION", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS GetInterfaceVersion();
[DllImport("HSI.dll", EntryPoint = "HSI_GET_MACHINE_INFO", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS GetMachineInfo(ref int numMachineTypes);
[DllImport("HSI.dll", EntryPoint = "HSI_SET_EVENT_CALLBACK", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS SetEventCallback(PEventCallback pCallback);
[DllImport("HSI.dll", EntryPoint = "HSI_SHUTDOWM", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS Shutdown();
// <<<< Out Interfacess
public static void EventCallback(Def.HSI_EVENT_TYPE eventType, Def.HSI_EVENT_RESPONSE_TYPE responseType,
uint eventId, string eventData, ref uint eventCallbackId)
{
var msgBtn = MessageBoxButtons.OK;
switch (responseType)
{
case Def.HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_RESPONSE_OK:
msgBtn = MessageBoxButtons.OK;
break;
case Def.HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_RESPONSE_RETRY:
msgBtn = MessageBoxButtons.RetryCancel;
break;
case Def.HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_RESPONSE_CANCEL:
msgBtn = MessageBoxButtons.OKCancel;
break;
case Def.HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_RESPONSE_YES:
msgBtn = MessageBoxButtons.YesNo;
break;
}
switch (eventType)
{
case Def.HSI_EVENT_TYPE.HSI_EVENT_NONE:
break;
case Def.HSI_EVENT_TYPE.HSI_EVENT_ERROR:
break;
case Def.HSI_EVENT_TYPE.HSI_EVENT_FUNCTION:
var eventFunctionId = (Def.HSI_EVENT_FUNCTION_ID) eventId;
switch (eventFunctionId)
{
case Def.HSI_EVENT_FUNCTION_ID.HSI_EVENT_MOTION_DCC_HOME:
{
System.Windows.Forms.MessageBox.Show(Resources.Interface_Tips_Home_Machine, Resources.Interface_Tips,
msgBtn, MessageBoxIcon.Information);
break;
}
case Def.HSI_EVENT_FUNCTION_ID.HSI_EVENT_DEBUG_LOG:
{
System.Windows.Forms.MessageBox.Show(eventData, Resources.Interface_Tips,
msgBtn, MessageBoxIcon.Information);
break;
}
case Def.HSI_EVENT_FUNCTION_ID.HSI_EVENT_MOVE_POINT:
{
System.Windows.Forms.MessageBox.Show(Resources.Interface_Tips_Motion_Finished, Resources.Interface_Tips,
msgBtn, MessageBoxIcon.Information);
; //Motion completed
break;
}
}
break;
}
}
}
internal class Motion
{
// >>>> In Interfaces
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS IsSupported(ref uint types);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_STARTUP", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS Startup(bool bHome);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_HOMED", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS IsHomed(ref bool bHomed);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_SPEED_XYZ", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS GetSpeedXyz(ref double speed);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_SPEED_XYZ", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS SetSpeedXyz(double speed);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_SPEED_R", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS GetSpeedR(ref double speed);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_SPEED_R", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS SetSpeedR(double speed);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_SCALE_RESOLUTION", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS GetScaleResolution(
// ref double scaleX, ref double scaleY, ref double scaleZ);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_SCALE_RESOLUTION", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS SetScaleResolution(double scaleX, double scaleY, double scaleZ);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_DEADBAND", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS GetDeadBand(
// ref double deadbandX, ref double deadbandY, ref double deadbandZ, ref double deadbandR);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_REFRESH_DEADBAND", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS GetRefreshDeadBand(ref double deadband);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_JOG", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS Jog(uint axisTypes, double speed);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_STOP_JOG", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS StopJog();
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_POSITION_XYZ", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS GetPositionXyz(
uint axisTypes, ref double positionX, ref double positionY, ref double positionZ, ref double time);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_POSITION_XYZ", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS SetPositionXyz(
uint axisTypes, double positionX, double positionY, double positionZ, Def.HSI_MOTION_MOVE_TYPE eType,
double dFlyRadius);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_POSITION_R", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS GetPositionR(uint axisTypes, ref double positionR, ref double time);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_POSITION_R", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS SetPositionR(
// uint axisTypes, double positionR, Def.HSI_MOTION_AXIS_R_MOVE_TYPE directionType, bool bWait);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_ABORT_MOTION", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS AbortMotion();
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_DIO", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS GetDIO(uint ioChannel, ref uint status);
//[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_DIO", CharSet = CharSet.Unicode)]
//public static extern Def.HSI_STATUS SetDIO(uint ioChannel, uint status);
[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SHUTDOWN", CharSet = CharSet.Unicode)]
public static extern Def.HSI_STATUS Shutdown();
// <<<< Out Interfaces
public Motion()
{
_supported = 0;
_bFirst = true;
}
//public static bool IsActive(bool bForce = false)
//{
// if (_bFirst || bForce)
// {
// IsSupported(ref _supported);
// _bFirst = false;
// }
// return (_supported != 0);
//}
private static bool _bFirst;
private static uint _supported;
}
//internal class Illumination
// {
// // >>>> In Interfaces
// [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
// public static extern Def.HSI_STATUS IsSupported(ref uint types);
// [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
// public static extern Def.HSI_STATUS HSI_ILLUMINATION_STARTUP();
// [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
// public static extern Def.HSI_STATUS HSI_ILLUMINATION_GET_LAMP_COUNT(ref int nLamps);
// [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
// public static extern Def.HSI_STATUS HSI_ILLUMINATION_GET_LAMP_INFO(ref int lampInfo, ref int numLamps,
// int[] lampsType,
// int[] numRings, int[] numSectors, int[] color, double[] angle, ref bool bCanBeCalibrated);
// [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
// public static extern Def.HSI_STATUS HSI_ILLUMINATION_GET_LAMP_STATE(
// int nLamp, bool[] bBulbStates, double[] intensities, ref int color, ref double angle);
// [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
// public static extern Def.HSI_STATUS HSI_ILLUMINATION_SET_LAMP_STATE(
// int nLamp, bool[] bBulbStates, double[] intensities, int color, double angle, bool bWait);
// [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
// public static extern Def.HSI_STATUS HSI_ILLUMINATION_GET_LAMP_STATE_ALL(
// int lampInfo, int numLamps, int[] lampsType, int[,] bBulbStates, double[,] intensities);
// [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
// public static extern Def.HSI_STATUS HSI_ILLUMINATION_SET_LAMP_STATE_ALL(
// int lampInfo, int numLamps, int[] lampsType, int[,] bBulbStates, double[,] intensities, bool bWait);
// [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)]
// public static extern Def.HSI_STATUS HSI_ILLUMINATION_SHUTDOWN();
// // <<<< Out Interfaces
// public Illumination()
// {
// _supported = 0;
// _bFirst = true;
// }
// public static bool IsActive(bool bForce = false)
// {
// if (_bFirst || bForce)
// {
// IsSupported(ref _supported);
// _bFirst = false;
// }
// return (_supported != 0);
// }
// private static bool _bFirst;
// private static uint _supported;
// }
internal class Def
{
public const int HSI_APIVersionMajor = 1;
public const int HSI_APIVersionMinor = 3;
public const int HSI_MaxStringLength = 255; // Maximum string length (buffer size - 1)
///////////////////////////////////////////////////////////////////////////////
// Interface API
///////////////////////////////////////////////////////////////////////////////
public enum HSI_STATUS
{
HSI_STATUS_NOT_SUPPORTED = -1,
HSI_STATUS_NORMAL = 0,
HSI_STATUS_FAILED,
HSI_FAILED_DLL_LOAD,
HSI_STATUS_PORTLOCK_HSI_MISMATCH,
HSI_STATUS_FILE_NOT_FOUND,
HSI_STATUS_HARDWARE_NOT_FOUND,
HSI_STATUS_INVALID_PARAMETERS,
HSI_STATUS_INVALID_POINTS,
HSI_STATUS_PART_NOT_DETECTED,
HSI_STATUS_MEASURE_ERROR,
HSI_STATUS_TEMPERATURE_ERROR,
HSI_STATUS_ILLUMINATION_COMM = 50,
HSI_STATUS_OPTICS_COMM = 100,
HSI_STATUS_OPTICS_HOMING,
HSI_STATUS_OPTICS_TIMEOUT,
HSI_STATUS_OPTICS_CALIBRATIONDATA,
HSI_STATUS_OPTICS_CALIBRATIONDATADEFAULT,
HSI_STATUS_OPTICS_CALFILEDATACOUNTMISMATCH,
HSI_STATUS_MOTION_COMM = 150,
HSI_STATUS_MOTION_HOMING,
HSI_STATUS_MOTION_TIMEOUT,
HSI_STATUS_MOTION_EMERGENCY_STOP,
HSI_STATUS_MOTION_EXCEED_LIMIT,
HSI_STATUS_MOTION_UNKNOWN_ERROR,
HSI_STATUS_MOTION_EXCEED_SW_LIMIT,
HSI_STATUS_MOTION_POSITION_ERROR,
HSI_STATUS_MOTION_MOVING,
HSI_STATUS_TP_UNEXPECTED_HIT = 200,
HSI_STATUS_TP_TIMEOUT = 201,
HSI_STATUS_TP_APPROACH_TIMEOUT = 202,
HSI_STATUS_TP_WRIST_ERROR,
HSI_STATUS_FG_COMM = 250,
HSI_STATUS_FG_TIMEOUT,
HSI_STATUS_FG_DIRECTX,
HSI_STATUS_FG_COLORDEPTH,
HSI_STATUS_LP_TIMEOUT = 300,
HSI_STATUS_LP_EXCEED_LIMIT = 301,
HSI_STATUS_VP_TIMEOUT = 350,
HSI_STATUS_VP_IMAGEPROCESS_FAIL
};
public enum HSI_MACHINE_TYPE
{
HSI_MACHINE_UNKNOWN = 0,
HSI_MACHINE_SO7 = 1,
HSI_MACHINE_TYPE_TOTAL,
};
public enum HSI_EVENT_TYPE
{
HSI_EVENT_NONE = 0,
HSI_EVENT_ERROR = 1,
HSI_EVENT_FUNCTION = 2
};
public enum HSI_EVENT_FUNCTION_ID //EventData
{
//SendReceive
// V4.2 & V4.3 +
HSI_EVENT_DONE = 0, //N/A N/A
HSI_EVENT_TAKE_HIT = 1, //N/A N/A
HSI_EVENT_ERASE_HIT = 2, //N/AN/A
HSI_EVENT_TIME_CRITICAL = 3, //"ON", or "OFF" N/A
HSI_EVENT_ZOOM_IN = 4, //"MAX", "COARSE", or "FINE" N/A
HSI_EVENT_ZOOM_OUT = 5, //"MAX", "COARSE", or "FINE" N/A
HSI_EVENT_REFRESH_LIVE_VIEW = 6, //N/AN/A
HSI_EVENT_UPDATE_READOUTS = 7, //"AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}"N/A
HSI_EVENT_READ_MC_POSITION = 8, //"AxisFlags""AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}"
HSI_EVENT_MOVE_MC_POSITION = 9, //"AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed},%1d{bWait}"N/A
HSI_EVENT_CONVERT_MC_TO_GLOBAL = 10, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
HSI_EVENT_UPDATE_STATUS_MESSAGE = 11, //N/AN/A
HSI_EVENT_OPENFILE_DLG = 12, //N/A"FileName"
HSI_EVENT_DISPLAY_YESNO_MESSAGE = 13, //N/AN/A
HSI_EVENT_DISPLAY_OKCANCEL_MESSAGE = 14, //N/AN/A
HSI_EVENT_DISPLAY_OK_MESSAGE = 15, //N/AN/A
// V4.3 + Only
HSI_EVENT_DEBUG_LOG = 20, //"%s" N/A
HSI_EVENT_MOVE_MC_POSITION_AND_SETTLE = 21, //"AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed}" N/A
HSI_EVENT_CONVERT_GLOBAL_TO_MM = 22, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
HSI_EVENT_CONVERT_ROT_TO_TABLE_POINT = 23, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
HSI_EVENT_CONVERT_ROT_OUT_TABLE_POINT = 24, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
HSI_EVENT_CONVERT_ROT_TO_TABLE_VECTOR = 25, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
HSI_EVENT_CONVERT_ROT_OUT_TABLE_VECTOR = 26, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}"
HSI_EVENT_ILLUMINATION_REFRESH = 27,
HSI_EVENT_ILLUMINATION_LOCK = 28,
HSI_EVENT_ILLUMINATION_STORE_SET = 29,
HSI_EVENT_ILLUMINATION_RESTORE_SET = 30,
HSI_EVENT_ILLUMINATION_DECREASE_ACTIVE = 31, // "%d"
HSI_EVENT_ILLUMINATION_INCREASE_ACTIVE = 32, // "%d"
HSI_EVENT_ILLUMINATION_DECREASE_ALL = 33, // "%d"
HSI_EVENT_ILLUMINATION_INCREASE_ALL = 34, // "%d"
HSI_EVENT_ILLUMINATION_SELECT_LAMP = 35, // "%d"
HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY = 36, // "%d"
HSI_EVENT_ILLUMINATION_GET_LAMP_INTENSITY = 37, // "%d"
HSI_EVENT_ILLUMINATION_SET_LAMP_CALIBRATION_OVERRIDE = 38, // "%d"
HSI_EVENT_ILLUMINATION_NEXT_RING = 39,
HSI_EVENT_ILLUMINATION_PREV_RING = 40,
HSI_EVENT_ILLUMINATION_NEXT_SECTOR = 41,
HSI_EVENT_ILLUMINATION_PREV_SECTOR = 42,
HSI_EVENT_ILLUMINATION_NUM_LAMPS_INSTALLED = 43,
HSI_EVENT_ILLUMINATION_IS_LAMP_INSTALLED = 44,
HSI_EVENT_ILLUMINATION_APPLY = 45,
HSI_EVENT_ILLUMINATION_ALLOFF = 46,
HSI_EVENT_ILLUMINATION_ALLON = 47,
HSI_EVENT_ILLUMINATION_UNLOCK = 48,
HSI_EVENT_IS_PROGRAMMING_MODE = 49, //1/0
HSI_EVENT_IS_PORTLOCK_DCC = 50, //1/0
HSI_EVENT_IS_ROTAB_ENABLED = 51, //1/0
HSI_EVENT_IS_TIME_CRITICAL = 52, // 1/0
HSI_EVENT_CONVERT_MM_TO_GLOBAL = 53,
HSI_EVENT_CONVERT_GLOBAL_TO_MC = 54,
HSI_EVENT_LASER_FOCUS_ENABLE = 55, // "%d" 0 = not available, 1 = available
HSI_EVENT_MOVE_POINT = 56, //N/AN/A
HSI_EVENT_MAG_CHANGED = 57,
HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY_IN_MACHINE_LEVELx100 = 58,
// "%d" //PR251359-- Instructed to "Please focus on slide" but it's rather unhelpfully turned the lights off for us.
HSI_EVENT_DCC_SCAN_POINTS_AVAILABLE = 59, //"%d"= more to come, 1 = last set N/A
HSI_EVENT_ILLUMINATION_IS_ALL_OFF = 60,
//1/0//PR253777-- Sensilight does not work if the target has 'ALL OFF' for illum setting--4/16/2008
HSI_EVENT_ILLUMINATION_DECREASE_ALL_NONZERO = 61,
// Sensilight command that wont change a lamp currently set to zero
HSI_EVENT_ILLUMINATION_INCREASE_ALL_NONZERO = 62,
// Sensilight command that wont change a lamp currently set to zero22
HSI_EVENT_LP_QUALITY = 63, //"%d" 0-100%
HSI_EVENT_TP_QUALITY = 64, //"%d" 0-100%
HSI_EVENT_VP_QUALITY = 65, //"%d" 0-100%
HSI_EVENT_FLYMODE_MOVE_COMPLETE = 66, // A queued flymode move has completed
HSI_EVENT_PENDANT_SPEED_PERCENT = 67, // 108336 HMV : Add calls to HSI.H for Speed
HSI_EVENT_PENDANT_AXES_SELECTED = 68, // 108335 HMV : Need to add calls to the HSI.H for Stacked Rotary
HSI_EVENT_MOTION = 500,
HSI_EVENT_MOTION_DCC_HOME = 501,
HSI_EVENT_SHUTDOWN_ = 999 //N/AN/A
};
public enum HSI_NOTIFY_TYPE
{
HSI_NOTIFY_PROGRAM_EXECUTION_START = 0,
HSI_NOTIFY_PROGRAM_EXECUTION_STOP = 1,
HSI_NOTIFY_TIME_CRITICAL_EVENT_START = 2,
HSI_NOTIFY_TIME_CRITICAL_EVENT_STOP = 3,
HSI_NOTIFY_PROGRAM_OPEN = 4,
HSI_NOTIFY_PROGRAM_CLOSE = 5,
HSI_NOTIFY_PCDMIS_SHUTDOWN = 6
};
public enum HSI_EVENT_RESPONSE_TYPE
{
HSI_EVENT_CALLBACK = 0,
HSI_EVENT_RESPONSE_OK = 1,
HSI_EVENT_RESPONSE_RETRY = 2,
HSI_EVENT_RESPONSE_CANCEL = 3,
HSI_EVENT_RESPONSE_YES = 4,
HSI_EVENT_RESPONSE_NO = 5,
HSI_EVENT_FUNCTION_OK = 6,
HSI_EVENT_FUNCTION_FAILED = 7
};
public struct SHsiEventProperties
{
public uint EventId;
public uint EventCallbackId;
public HSI_EVENT_TYPE EventType;
public HSI_EVENT_RESPONSE_TYPE EventResponse;
public char[] EventData;
public void Init()
{
EventId = (uint) HSI_EVENT_FUNCTION_ID.HSI_EVENT_DONE;
EventCallbackId = 0;
EventType = HSI_EVENT_TYPE.HSI_EVENT_NONE;
EventResponse = HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_CALLBACK;
EventData = new char[HSI_MaxStringLength + 1];
}
};
///////////////////////////////////////////////////////////////////////////////
// Motion API
///////////////////////////////////////////////////////////////////////////////
public enum HSI_MOTION_TYPE
{
HSI_MOTION_SUPPORTS_DCC_CONTROL = 0x0001,
HSI_MOTION_SUPPORTS_MANUAL_CONTROL = 0x0002,
HSI_MOTION_SUPPORTS_HOMING = 0x0004,
HSI_MOTION_SUPPORTS_CIRCULAR_MOVES = 0x0008,
HSI_MOTION_SUPPORTS_CMM_WRIST = 0x0010,
HSI_MOTION_SUPPORTS_BUFFERED_MOVES = 0x0020,
HSI_MOTION_SUPPORTS_FLY_MOVES = 0x0040,
HSI_MOTION_SUPPORTS_SCAN = 0x0080,
HSI_MOTION_SUPPORTS_ALL_AXIS_MOVE = 0x0100,
HSI_MOTION_SUPPORTS_MEASPOINT_VW = 0x0200
};
public enum HSI_MOTION_AXIS_TYPE
{
HSI_MOTION_AXIS_X = 0x0001, // This is the default "Sensor level" X Axis - use on single X axis machines
HSI_MOTION_AXIS_Y = 0x0002, // This is the default "Sensor level" Y Axis - use on single Y axis machines
HSI_MOTION_AXIS_Z = 0x0004, // This is the default "Sensor level" Z Axis - use on single Z axis machines
HSI_MOTION_AXIS_R = 0x0008, // This is the default "Sensor level" R Axis - use on single R axis machines
HSI_MOTION_AXIS_X1 = 0x0010, // This is the 1st X Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_Y1 = 0x0020, // This is the 1st Y Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_Z1 = 0x0040, // This is the 1st Z Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_R1 = 0x0080, // This is the 1st R Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_X2 = 0x0100, // This is the 2nd X Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_Y2 = 0x0200, // This is the 2nd Y Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_Z2 = 0x0400, // This is the 2nd Z Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_R2 = 0x0800, // This is the 2nd R Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_X3 = 0x1000, // This is the 3rd X Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_Y3 = 0x2000, // This is the 3rd Y Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_Z3 = 0x4000, // This is the 3rd Z Axis - use on multiple axis machines when specific axis needed
HSI_MOTION_AXIS_R3 = 0x8000 // This is the 3rd R Axis - use on multiple axis machines when specific axis needed
};
public enum HSI_MOTION_IO_TYPE
{
HSI_MOTION_INPUT1 = 0x0001,
HSI_MOTION_INPUT2,
HSI_MOTION_OUTPUT1 = 0x0100,
HSI_MOTION_OUTPUT2
};
public const uint HSI_MOTION_AXIS_ALL =
(uint)
(HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_X | HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_Y |
HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_Z);
public enum HSI_MOTION_MOVE_TYPE
{
HSI_MOTION_MOVE_WAIT = 1,
HSI_MOTION_MOVE_NOWAIT = 2,
HSI_MOTION_MOVE_INTERMEDIATE_POSITION = 3,
HSI_MOTION_MOVE_FINAL_POSITION = 4,
HSI_MOTION_IN_POSITION_EVENT = 5,
HSI_MOTION_MOVE_FLYMODE = 6,
HSI_MOTION_MOVE_START_POSITION = 7,
HSI_MOTION_MOVE_START_FINAL_POSITION = 8
};
public enum HSI_MOTION_AXIS_R_MOVE_TYPE
{
HSI_MOTION_AXIS_R_CLOCKWISE = 1,
HSI_MOTION_AXIS_R_ANTICLOCKWISE = 2,
HSI_MOTION_AXIS_R_FASTEST = 3
};
public const int HSI_MAX_POSITIONS_STORED = 500;
///////////////////////////////////////////////////////////////////////////////
//Illumination API
///////////////////////////////////////////////////////////////////////////////
public enum HSI_ILLUMINATION_INFO
{
HSI_ILLUMINATION_INFO_UNKNOWN = 0,
HSI_ILLUMINATION_INFO_HSI = 0x01,
HSI_ILLUMINATION_INFO_HSI_II = 0x02, //lvgang
HSI_ILLUMINATION_INFO_HSI_III = 0x04, //shixuyong
HSI_ILLUMINATION_INFO_TOTAL
};
public enum HSI_ILLUMINATION_BULB_TYPE
{
HSI_ILLUMINATION_BULB_ROUND = 1,
HSI_ILLUMINATION_BULB_SQUARE = 2,
HSI_ILLUMINATION_BULB_RING = 3,
HSI_ILLUMINATION_BULB_GRID = 4
};
public enum HSI_ILLUMINATION_LAMP_TYPE
{
HSI_ILLUMINATION_LAMP_NONE = 0,
HSI_ILLUMINATION_LAMP_COAXIAL = 1,
HSI_ILLUMINATION_LAMP_SURFACE = 2,
HSI_ILLUMINATION_LAMP_PROFILE = 3,
HSI_ILLUMINATION_LAMP_PROFILE_OUTER = 4
};
public enum HSI_ILLUMINATION_LAMP_CONTROL_TYPE
{
HSI_ILLUMINATION_LAMP_CONTROL_NONE = 0x0000,
HSI_ILLUMINATION_LAMP_CONTROL_BY_WHOLE_LAMP = 0x0001,
HSI_ILLUMINATION_LAMP_CONTROL_BY_RINGS = 0x0002,
HSI_ILLUMINATION_LAMP_CONTROL_BY_OCTANTS = 0x0004,
HSI_ILLUMINATION_LAMP_CONTROL_BY_SEGMENTS = 0x0008,
HSI_ILLUMINATION_LAMP_CONTROL_BY_OTHER
};
public enum HSI_ILLUMINATION_BULB_STATE
{
HSI_ILLUMINATION_BULB_STATE_TURN_ON = 0,
HSI_ILLUMINATION_BULB_STATE_TURN_OFF = 1,
HSI_ILLUMINATION_BULB_STATE_TOTAL
};
public enum HSI_ILLUMINATION_TYPE
{
HSI_ILLUMINATION_SUPPORTS_DCC_CONTROL = 0x0001,
HSI_ILLUMINATION_SUPPORTS_MANUAL_CONTROL = 0x0002
};
public enum HSI_ILLUMINATION_LAMP_LOCATION_TYPE
{
HSI_ILLUMINATION_LAMP_LOCATION_NONE = 0,
HSI_ILLUMINATION_LAMP_LOCATION_TOP_ON_AXIS = 1,
HSI_ILLUMINATION_LAMP_LOCATION_TOP_ANGLED = 2,
HSI_ILLUMINATION_LAMP_LOCATION_BOTTOM = 3,
HSI_ILLUMINATION_LAMP_LOCATION_MOVABLE = 4
};
public const int HSI_ILLUMINATION_MAX_LAMPS = 6;
public const int HSI_ILLUMINATION_MAX_BULB_COLORS = 3;
public const int HSI_ILLUMINATION_MAX_RINGS = 12;
public const int HSI_ILLUMINATION_MAX_SECTORS = 16;
public const int HSI_ILLUMINATION_MAX_BULBS = HSI_ILLUMINATION_MAX_RINGS*HSI_ILLUMINATION_MAX_SECTORS;
public const int HSI_MaxLampNameLength = 29, HSI_MaxLampDescriptionLength = 255;
// Maximum string length (buffer size - 1)
}
}
@@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{7ED499CB-651C-4154-9741-EEF347BDBFB5}</ProjectGuid>
<OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>HSI_SEVENOCEAN_EF1_CsTest</RootNamespace>
<AssemblyName>HSI_SEVENOCEAN_EF1_CsTest</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<PublishUrl>发布\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>MainIcon.ico</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="HSI\HSI.cs" />
<Compile Include="Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="User32API.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Icon.bmp" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.5">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.5 %28x86 和 x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Content Include="MainIcon.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
@@ -0,0 +1,2 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp60</s:String></wpf:ResourceDictionary>
Binary file not shown.

After

Width:  |  Height:  |  Size: 643 KiB

+134
View File
@@ -0,0 +1,134 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using HSI_SEVENOCEAN_EF1_CsTest;
using HSI_SEVENOCEAN_EF1_CsTest.HSI;
namespace HSI_SEVENOCEAN_EF1_CsTest
{
class Program
{
private static Interface.PEventCallback _eventCallback;
static void Main(string[] args)
{
uint major = Def.HSI_APIVersionMajor;
uint minjor = Def.HSI_APIVersionMinor;
var rStatus = Interface.GetInterfaceVersion(ref major, ref minjor);
Console.WriteLine("Interface.GetInterfaceVersion:{0}", rStatus);
Console.WriteLine("Version:{0}.{1}", major, minjor);
var mainIntPtr = User32Api.GetCurrentWindowHandle();
rStatus = Interface.Startup(mainIntPtr, false);
Console.WriteLine("Interface.Startup:{0}", rStatus);
Interface.HsiCallback=new Interface.PEventCallback(Interface.EventCallback);
rStatus = Interface.SetEventCallback(Interface.HsiCallback);
Console.WriteLine("SetEventCallback:{0}", rStatus);
//if (Motion.IsActive(true))
{
rStatus = Motion.Startup(true);
Console.WriteLine("Motion.Startup:{0}", rStatus);
var bHomed = true;
rStatus = Motion.IsHomed(ref bHomed);
Console.WriteLine("Motion.IsHomed:{0}", rStatus);
var bexit = false;
double SpeedGear = 1.0;
var dPos = new double[3];
do
{
var info = Console.ReadKey();
double dTime = 0;
switch (info.Key)
{
case ConsoleKey.P:
dPos[0] += 10.0;
dPos[1] += 10.0;
rStatus = Motion.SetPositionXyz(Def.HSI_MOTION_AXIS_ALL, dPos[0], dPos[1], dPos[2], Def.HSI_MOTION_MOVE_TYPE.HSI_MOTION_MOVE_NOWAIT, 0.0);
break;
case ConsoleKey.Enter:
rStatus = Motion.GetPositionXyz(Def.HSI_MOTION_AXIS_ALL, ref dPos[0], ref dPos[1], ref dPos[2], ref dTime);
Console.WriteLine("Motion.GetPositionXyz:{0}", rStatus);
Console.WriteLine("Motion.XYZ:{0},{1},{2}", dPos[0], dPos[1], dPos[2]);
break;
case ConsoleKey.Escape:
bexit = true;
break;
case ConsoleKey.Spacebar:
rStatus = Motion.StopJog();
Console.WriteLine("Motion.StopJog:{0}", rStatus);
break;
case ConsoleKey.NumPad1:
case ConsoleKey.D1:
SpeedGear = 1.0;
Console.WriteLine("Motion.SpeedGera:{0}", SpeedGear);
break;
case ConsoleKey.NumPad2:
case ConsoleKey.D2:
SpeedGear = 2.0;
Console.WriteLine("Motion.SpeedGera:{0}", SpeedGear);
break;
case ConsoleKey.NumPad3:
case ConsoleKey.D3:
SpeedGear = 3.0;
Console.WriteLine("Motion.SpeedGera:{0}", SpeedGear);
break;
case ConsoleKey.NumPad4:
case ConsoleKey.D4:
SpeedGear = 4.0;
Console.WriteLine("Motion.SpeedGera:{0}", SpeedGear);
break;
case ConsoleKey.LeftArrow:
rStatus = Motion.Jog((uint)Def.HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_X, -SpeedGear);
Console.WriteLine("Motion.Jog(X,{1}):{0}", rStatus, SpeedGear);
break;
case ConsoleKey.RightArrow:
rStatus = Motion.Jog((uint)Def.HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_X, SpeedGear);
Console.WriteLine("Motion.Jog(X,{1}):{0}", rStatus, SpeedGear);
break;
case ConsoleKey.DownArrow:
rStatus = Motion.Jog((uint)Def.HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_Y, -SpeedGear);
Console.WriteLine("Motion.Jog(Y,{1}):{0}", rStatus, SpeedGear);
break;
case ConsoleKey.UpArrow:
rStatus = Motion.Jog((uint)Def.HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_Y, SpeedGear);
Console.WriteLine("Motion.Jog(Y,{1}):{0}", rStatus, SpeedGear);
break;
case ConsoleKey.PageUp:
rStatus = Motion.Jog((uint)Def.HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_Z, SpeedGear);
Console.WriteLine("Motion.Jog(Z,{1}):{0}", rStatus, SpeedGear);
break;
case ConsoleKey.PageDown:
rStatus = Motion.Jog((uint)Def.HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_Z, -SpeedGear);
Console.WriteLine("Motion.Jog(Z,{1}):{0}", rStatus, SpeedGear);
break;
default:
Console.WriteLine("Invalid");
break;
}
} while (!bexit);
rStatus = Motion.Shutdown();
Console.WriteLine("Motion.Startup:{0}", rStatus);
}
rStatus = Interface.Shutdown();
Console.WriteLine("Interface.Shutdown:{0}", rStatus);
Console.WriteLine();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的常规信息通过以下
// 特性集控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("HSI_SEVENOCEAN_EF1_CsTest")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HSI_SEVENOCEAN_EF1_CsTest")]
[assembly: AssemblyCopyright("Copyright © 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 使此程序集中的类型
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
// 则将该类型上的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("eef743e0-3721-4c9e-9744-7d8002c9f7bf")]
// 程序集的版本信息由下面四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
// 方法是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+90
View File
@@ -0,0 +1,90 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18408
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace HSI_SEVENOCEAN_EF1_CsTest {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HSI_SEVENOCEAN_EF1_CsTest.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to 提示.
/// </summary>
internal static string Interface_Tips {
get {
return ResourceManager.GetString("Interface_Tips", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 准备回家.
/// </summary>
internal static string Interface_Tips_Home_Machine {
get {
return ResourceManager.GetString("Interface_Tips_Home_Machine", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to 定位完成.
/// </summary>
internal static string Interface_Tips_Motion_Finished {
get {
return ResourceManager.GetString("Interface_Tips_Motion_Finished", resourceCulture);
}
}
}
}
+129
View File
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Interface_Tips" xml:space="preserve">
<value>提示</value>
</data>
<data name="Interface_Tips_Home_Machine" xml:space="preserve">
<value>准备回家</value>
</data>
<data name="Interface_Tips_Motion_Finished" xml:space="preserve">
<value>定位完成</value>
</data>
</root>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 643 KiB

+88
View File
@@ -0,0 +1,88 @@
using System;
using System.Runtime.InteropServices;
using System.Collections;
namespace HSI_SEVENOCEAN_EF1_CsTest
{
class User32Api
{
private static readonly Hashtable ProcessWnd = null;
public delegate bool Wndenumproc(IntPtr hwnd, uint lParam);
static User32Api()
{
if (ProcessWnd == null)
{
ProcessWnd = new Hashtable();
}
}
[DllImport("user32.dll", EntryPoint = "EnumWindows", SetLastError = true)]
public static extern bool EnumWindows(Wndenumproc lpEnumFunc, uint lParam);
[DllImport("user32.dll", EntryPoint = "GetParent", SetLastError = true)]
public static extern IntPtr GetParent(IntPtr hWnd);
[DllImport("user32.dll", EntryPoint = "GetWindowThreadProcessId")]
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, ref uint lpdwProcessId);
[DllImport("user32.dll", EntryPoint = "IsWindow")]
public static extern bool IsWindow(IntPtr hWnd);
[DllImport("kernel32.dll", EntryPoint = "SetLastError")]
public static extern void SetLastError(uint dwErrCode);
public static IntPtr GetCurrentWindowHandle()
{
IntPtr ptrWnd = IntPtr.Zero;
uint uiPid = (uint)System.Diagnostics.Process.GetCurrentProcess().Id; // 当前进程 ID
object objWnd = ProcessWnd[uiPid];
if (objWnd != null)
{
ptrWnd = (IntPtr)objWnd;
if (ptrWnd != IntPtr.Zero && IsWindow(ptrWnd)) // 从缓存中获取句柄
{
return ptrWnd;
}
else
{
ptrWnd = IntPtr.Zero;
}
}
bool bResult = EnumWindows(new Wndenumproc(EnumWindowsProc), uiPid);
// 枚举窗口返回 false 并且没有错误号时表明获取成功
if (!bResult && Marshal.GetLastWin32Error() == 0)
{
objWnd = ProcessWnd[uiPid];
if (objWnd != null)
{
ptrWnd = (IntPtr)objWnd;
}
}
return ptrWnd;
}
private static bool EnumWindowsProc(IntPtr hwnd, uint lParam)
{
uint uiPid = 0;
if (GetParent(hwnd) == IntPtr.Zero)
{
GetWindowThreadProcessId(hwnd, ref uiPid);
if (uiPid == lParam) // 找到进程对应的主窗口句柄
{
ProcessWnd[uiPid] = hwnd; // 把句柄缓存起来
SetLastError(0); // 设置无错误
return false; // 返回 false 以终止枚举窗口
}
}
return true;
}
}
}
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
@@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]