diff --git a/HSI_HexagonMI_EF3.sln b/HSI_HexagonMI_EF3.sln index 88ffb57..01077a4 100644 --- a/HSI_HexagonMI_EF3.sln +++ b/HSI_HexagonMI_EF3.sln @@ -119,7 +119,6 @@ Global {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 diff --git a/HSI_HexagonMI_EF3/HSI.h b/HSI_HexagonMI_EF3/HSI.h index c20cb8f..aad3d5c 100644 --- a/HSI_HexagonMI_EF3/HSI.h +++ b/HSI_HexagonMI_EF3/HSI.h @@ -21,7 +21,7 @@ #endif const int HSI_APIVersionMajor = 0; -const int HSI_APIVersionMinor = 1; +const int HSI_APIVersionMinor = 0; const int HSI_MaxStringLength = 255; // Maximum string length (buffer size - 1) /////////////////////////////////////////////////////////////////////////////// diff --git a/HSI_HexagonMI_EF3/HSI_Motion.cpp b/HSI_HexagonMI_EF3/HSI_Motion.cpp index 6456909..6ca56fd 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.cpp +++ b/HSI_HexagonMI_EF3/HSI_Motion.cpp @@ -64,6 +64,15 @@ SOCKET m_socket[4] = {0}; //=========================================================================== //运动类构造函数,涉及 运动控制参数、插补、回家、摇杆、日志等配置信息的加载 +void ErrorsHandler(const char* ErrorMessage, BOOL fCloseComm) +{ + printf(ErrorMessage); + printf("press any key to exit.\n"); + if (fCloseComm) acsc_CloseComm(handleACS); + _getch(); +}; + + HSI_Motion::HSI_Motion() { TRACE0("HSI_Motion Constructor!\n"); @@ -97,6 +106,7 @@ HSI_Motion::HSI_Motion() m_IsUseSixRingEightArea = 0; //是否启用六环八区灯功能 0为不启用 1为启用 2为二环八区灯 默认为0 m_IsUseTwentySixLight = 0; //是否启用26路灯光 0为不启用 1位启用 默认为0 m_IsUseEF3 = 0; //是否启用EF3 + m_IsUseACS = 0; //是否启用ACS m_IsUseRocker = 0; //是否启用摇杆 0为不启用 1为启用旧摇杆,2为新摇杆, 默认为0 m_IsCloseRocker = 0; m_DeviceType = 0; //设备类型,0为通用设备,1为三激光, 2为大视野,3为转盘设备 默认为0 @@ -264,6 +274,7 @@ HSI_Motion::HSI_Motion() m_cSendData[4] = 4; m_cSendData[6] = 4; m_bConnected = false; + m_bACSConnected = false; //初始化,默认打开失败 first = true; LightSend = 0; @@ -370,6 +381,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) Load_EF3_Config_Inifile(GoogolMotionConfigFile); //加载 EF3_Config.ini 配置项 GoogolMotionConfigFile = m_AppPath + _T("\\Config\\EF3_Motion.ini"); Load_EF3_Motion_Inifile(GoogolMotionConfigFile); // 加载 EF3_Motion.ini 配置项 + if (m_IsUseEF3 == 1) //如果使用 EF3 { if (!m_bConnected) @@ -389,12 +401,50 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) } m_SO7_Serial.SetTimeouts(1000, 1000); m_bConnected = true; + g_pLogger->SendAndFlushWithTime(L"[Startup] Serial is open success\n"); } else { g_pLogger->SendAndFlushWithTime(L"[Startup] Serial is opened\n"); } } + + if (m_IsUseACS == 1) //如果启用ACS + { + if (!m_bACSConnected) + { + //尝试打开ACS控制器 + g_pLogger->SendAndFlushWithTime(L"[ACS Motion] In\n"); + g_pLogger->SendAndFlushWithTime( + L"[ACS Motion] Wait for opening of communication with the controller... \n"); + + // 10.0.0.100 - default IP address of the controller + + handleACS = acsc_OpenCommEthernet("10.0.0.100", ACSC_SOCKET_DGRAM_PORT); + // for the connection to the controller via local network or Internet + // hComm = acsc_OpenCommEthernet("10.0.0.100", ACSC_SOCKET_STREAM_PORT); + + if (handleACS == ACSC_INVALID) //打开失败 + { + ErrorsHandler("error while opening communication.\n", FALSE); + g_pLogger->SendAndFlushWithTime(L"[ACS Motion] error while opening communication.\n"); + sEvenProp.Init(); + sEvenProp.EventType = HSI_EVENT_ERROR; + sEvenProp.EventID = HSI_EVENT_MOTION; + sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; + strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "ACS控制器打开失败"); + EventCallback(sEvenProp); + return HSI_STATUS_FAILED; + } + m_bACSConnected = true; + g_pLogger->SendAndFlushWithTime(L"[ACS Motion] Communication with the controller established success\n"); + } + else + { + g_pLogger->SendAndFlushWithTime(L"[ACS Motion] Communication with the controller is already established successfully!\n"); + } + } + // 04 05 0F 4A 04 00 04 00 00 00 00 00 00 00 00 00 // //01 01 0F 04 00 00 00 00 00 00 00 00 00 00 00 00 @@ -420,17 +470,17 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) //01 06 07 53 01 0F 00 00 F4 01 00 00 F4 01 00 00 //AbortMotion(); - m_cSendData[0] = CT_ORDER; - m_cSendData[1] = CT_STOP; - m_cSendData[2] = AXIS_XYZU; - m_StopJogMode[1] == 0 ? m_cSendData[3] = 0X4A : m_cSendData[3] = 0X05; - m_StopJogMode[2] == 0 ? m_cSendData[3] = 0X4A : m_cSendData[3] = 0X05; - m_StopJogMode[3] == 0 ? m_cSendData[3] = 0X4A : m_cSendData[3] = 0X05; - m_StopJogMode[4] == 0 ? m_cSendData[3] = 0X4A : m_cSendData[3] = 0X05; - m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); - Sleep(5); + //m_cSendData[0] = CT_ORDER;//停止运动 + //m_cSendData[1] = CT_STOP; + //m_cSendData[2] = AXIS_XYZU; + //m_StopJogMode[1] == 0 ? m_cSendData[3] = 0X4A : m_cSendData[3] = 0X05; + //m_StopJogMode[2] == 0 ? m_cSendData[3] = 0X4A : m_cSendData[3] = 0X05; + //m_StopJogMode[3] == 0 ? m_cSendData[3] = 0X4A : m_cSendData[3] = 0X05; + //m_StopJogMode[4] == 0 ? m_cSendData[3] = 0X4A : m_cSendData[3] = 0X05; + //m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); + //Sleep(5); - if (m_DeviceType == 3) + if (m_DeviceType == 3) //转盘设备,当前未使用 { m_cSendData[0] = CT_TURNTABLE; m_cSendData[1] = CT_RTSTOP; @@ -439,7 +489,8 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) m_Thread_StateData = HSI_THREAD_RUNNING; SetEvent(m_hTriggerEventData); } - if (bUseGlueDispenser) + + if (bUseGlueDispenser) //点胶,当前未使用 { bUseGlueDispenser = false; m_cSendData[0] = CT_MOTOR; @@ -455,56 +506,57 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) g_pLogger->SendAndFlushWithTime(L"[Startup] DriverAlarmStatus HSI_STATUS_FAILED\n"); //return HSI_STATUS_FAILED; } - //无效软限位 - m_cSendData[0] = CT_MOTOR; - m_cSendData[1] = CT_MOTOR_SET; - m_cSendData[2] = AXIS_XYZU; - m_cSendData[3] = SOFT_LIMIT_POS_NEG; - m_cSendData[4] = 0; - m_cSendData[5] = 0; - m_cSendData[6] = 0; - m_cSendData[7] = 0; - m_cSendData[8] = 0; - m_cSendData[9] = 0; - m_cSendData[10] = 0; - m_cSendData[11] = 0; - m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); //初始化防止第一次无效 - Sleep(5); - m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); - g_pLogger->SendAndFlushWithTime(L"[Startup] Limit no Enable\n"); + + //无效软限位,当前未使用 + //m_cSendData[0] = CT_MOTOR; + //m_cSendData[1] = CT_MOTOR_SET; + //m_cSendData[2] = AXIS_XYZU; + //m_cSendData[3] = SOFT_LIMIT_POS_NEG; + //m_cSendData[4] = 0; + //m_cSendData[5] = 0; + //m_cSendData[6] = 0; + //m_cSendData[7] = 0; + //m_cSendData[8] = 0; + //m_cSendData[9] = 0; + //m_cSendData[10] = 0; + //m_cSendData[11] = 0; + //m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); //初始化防止第一次无效 + //Sleep(5); + //m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); + //g_pLogger->SendAndFlushWithTime(L"[Startup] Limit no Enable\n"); //设置方向4个轴的方向,按位 - m_cSendData[0] = CT_MOTOR; - m_cSendData[1] = CT_MOTOR_SET; - m_cSendData[2] = AXIS_X; - m_cSendData[3] = ENC_POS_DIR; - m_cSendData[4] = m_Set_XYZA_Reserve; - m_cSendData[5] = m_setPositionDelay; - m_cSendData[6] = m_setPositionPrecision; - m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); - Sleep(10); - m_cSendData[0] = CT_MOTOR; - m_cSendData[1] = CT_MDATA_INIT; - m_cSendData[2] = m_motorType & 0xff; //电机类型(步进电机或伺服电机) - m_cSendData[3] = m_IsUseExternalTrigger; //是否启用外触发功能 - m_cSendData[4] = m_IsUseSixRingEightArea; //是否启用六环八区灯功能 - m_cSendData[5] = m_IsHardLimit; - m_cSendData[6] = m_IsEnableAxis; - m_cSendData[7] = m_IsProbe; //是否启用探针 - m_cSendData[8] = m_EF3LightType; //5V高频灯光配置 - m_cSendData[9] = m_IsUseRocker; //是否启用摇杆 - m_cSendData[10] = m_IsHavePattern; //光栅 - m_cSendData[11] = m_AxisHomeDirection; //轴回家方向 - m_cSendData[12] = m_IsCollectPos; //是否从串口打印位置 - m_cSendData[16] = m_IsLightDebug; //是否不回家也能调试灯光 + //m_cSendData[0] = CT_MOTOR; + //m_cSendData[1] = CT_MOTOR_SET; + //m_cSendData[2] = AXIS_X; + //m_cSendData[3] = ENC_POS_DIR; + //m_cSendData[4] = m_Set_XYZA_Reserve; + //m_cSendData[5] = m_setPositionDelay; + //m_cSendData[6] = m_setPositionPrecision; + //m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); + //Sleep(10); + //m_cSendData[0] = CT_MOTOR; + //m_cSendData[1] = CT_MDATA_INIT; + //m_cSendData[2] = m_motorType & 0xff; //电机类型(步进电机或伺服电机) + //m_cSendData[3] = m_IsUseExternalTrigger; //是否启用外触发功能 + //m_cSendData[4] = m_IsUseSixRingEightArea; //是否启用六环八区灯功能 + //m_cSendData[5] = m_IsHardLimit; + //m_cSendData[6] = m_IsEnableAxis; + //m_cSendData[7] = m_IsProbe; //是否启用探针 + //m_cSendData[8] = m_EF3LightType; //5V高频灯光配置 + //m_cSendData[9] = m_IsUseRocker; //是否启用摇杆 + //m_cSendData[10] = m_IsHavePattern; //光栅 + //m_cSendData[11] = m_AxisHomeDirection; //轴回家方向 + //m_cSendData[12] = m_IsCollectPos; //是否从串口打印位置 + //m_cSendData[16] = m_IsLightDebug; //是否不回家也能调试灯光 - if (m_IsStartInput == 1 && m_IsUseRocker == 2) - { - m_cSendData[14] = m_StartInputPort >> 8 & 0xff; //外部启动端口号 H - m_cSendData[15] = m_StartInputPort & 0xff; //外部启动端口号 L - } - m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); - Sleep(10); + //if (m_IsStartInput == 1 && m_IsUseRocker == 2) //新摇杆,并启动脚踏功能 + //{ + // m_cSendData[14] = m_StartInputPort >> 8 & 0xff; //外部启动端口号 H + // m_cSendData[15] = m_StartInputPort & 0xff; //外部启动端口号 L + //} + //m_WriteByte = Send_Command(0, (const char*)m_cSendData, m_SendDataLength); + //Sleep(10); ////步进电机补偿值设定 //if (m_motorType == 0) @@ -603,23 +655,24 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) g_pLogger->SendAndFlushWithTime(L"[Startup] Set Gears Success\n"); } - CreateThread(); //刷新位置状态 - SetEvent(m_hTriggerEvent); - m_Thread_State = HSI_THREAD_PAUSED; - g_pLogger->SendAndFlushWithTime(L"[Startup] SetpositionXyz Enable\n"); + //CreateThread(); //刷新位置状态线程 + //SetEvent(m_hTriggerEvent); + //m_Thread_State = HSI_THREAD_PAUSED; + //g_pLogger->SendAndFlushWithTime(L"[Startup] SetpositionXyz Enable\n"); - CreateThreadData(); //读取EF3的数据状态 - SetEvent(m_hTriggerEventData); - m_Thread_StateData = HSI_THREAD_RUNNING; - g_pLogger->SendAndFlushWithTime(L"[Startup] Read EF3 Status Run\n"); + //CreateThreadData(); //读取EF3数据状态线程 + //SetEvent(m_hTriggerEventData); + //m_Thread_StateData = HSI_THREAD_RUNNING; + //g_pLogger->SendAndFlushWithTime(L"[Startup] Read EF3 Status Run\n"); - if (m_DeviceType != 3) - { - CreateThreadJOGStop(); ////JOG运行到软限位的运动调节 - SetEvent(m_hTriggerEventJOGStop); - m_Thread_StateJOGStop = HSI_THREAD_PAUSED; - } - if (m_IsIOFuntion == 1) //是否启用IO功能,通过配置文件启用 + //if (m_DeviceType != 3) + //{ + // CreateThreadJOGStop(); ////JOG运行到软限位的运动调节线程 + // SetEvent(m_hTriggerEventJOGStop); + // m_Thread_StateJOGStop = HSI_THREAD_PAUSED; + //} + + if (m_IsIOFuntion == 1) //是否启用IO功能线程,通过配置文件启用 { m_Thread_StateIO = HSI_THREAD_RUNNING; CreateThreadIO(); //IO发消息使用 @@ -627,6 +680,7 @@ HSI_STATUS HSI_Motion::Startup(HWND _hWnd, bool _bOfflineOnly) g_pLogger->SendAndFlushWithTime(L"[Startup] m_IsIOFuntion Enable\n"); SetDIO(HSI_MOTION_OUTPUT_CH1, 0xfffff); } + if (m_IsProbe == 1) //是否启用探针捕获功能,通过配置文件启用 { CreateThreadProbe(); //探针捕获功能 @@ -651,17 +705,21 @@ HSI_STATUS HSI_Motion::GetFirmwareVersion(byte* version) Sleep(3); int waite_count = 0; unsigned char senddata[64] = {0}; - senddata[0] = 0x04; - senddata[1] = 0x03; + //senddata[0] = 0x04; + //senddata[1] = 0x03; + + senddata[0] = 0x01; + senddata[1] = 0x08; m_SO7_Serial.m_RecvData[0] = 0; - m_WriteByte = Send_Command(0, (const char*)senddata, m_SendDataLength); + m_WriteByte = Send_Command(0, (const char*)senddata, sizeof(senddata)); Sleep(30); m_SO7_Serial.m_RecvData[0] = 0; - m_WriteByte = Send_Command(0, (const char*)senddata, m_SendDataLength); + m_WriteByte = Send_Command(0, (const char*)senddata, sizeof(senddata)); Sleep(30); m_SO7_Serial.m_RecvData[0] = 0; - m_WriteByte = Send_Command(0, (const char*)senddata, m_SendDataLength); + m_WriteByte = Send_Command(0, (const char*)senddata, sizeof(senddata)); Sleep(30); + while ((m_SO7_Serial.m_RecvData[0] != 3) && (m_SO7_Serial.m_RecvData[0] != 2)) { waite_count++; @@ -672,7 +730,7 @@ HSI_STATUS HSI_Motion::GetFirmwareVersion(byte* version) if (waite_count > 100) { waite_count = 0; - m_WriteByte = Send_Command(0, (const char*)senddata, m_SendDataLength); + m_WriteByte = Send_Command(0, (const char*)senddata, sizeof(senddata)); while ((m_SO7_Serial.m_RecvData[0] != 3) && (m_SO7_Serial.m_RecvData[0] != 2)) { waite_count++; @@ -3107,7 +3165,7 @@ HSI_STATUS HSI_Motion::Load_EF3_Config_Inifile(CString GoogolIniFile) return HSI_STATUS_FAILED; } m_IsUseEF3 = GetPrivateProfileInt(L"EF3", L"IS_USEEF3", 0, csAppPath); - + m_IsUseACS = GetPrivateProfileInt(L"EF3", L"IS_USEACS", 0, csAppPath); m_ForSoft = GetPrivateProfileInt(L"SOFTWARE", L"USE_SOFTWARE", 0, csAppPath); m_IsUse_HSICompensation = GetPrivateProfileInt(L"ASIX", L"IS_USE_HSICOMPENSATION", 0, csAppPath); @@ -6884,7 +6942,6 @@ unsigned __stdcall HSI_Motion::m_ThreadSendTCP(LPVOID pThis) } } - TCPIP_RETURN_CODE HSI_Motion::TCPSend() { if (m_tcpCntFlag[m_selectedIndex]) @@ -7047,7 +7104,6 @@ TCPIP_RETURN_CODE HSI_Motion::TCPSend() return TCPIP_CONNECT_OK; } - void HSI_Motion::Create_Thread() { if (!m_ThreadTCP_Id) diff --git a/HSI_HexagonMI_EF3/HSI_Motion.h b/HSI_HexagonMI_EF3/HSI_Motion.h index ed509bf..16876ff 100644 --- a/HSI_HexagonMI_EF3/HSI_Motion.h +++ b/HSI_HexagonMI_EF3/HSI_Motion.h @@ -355,6 +355,7 @@ public: int m_SixEightSubArea[8]; //六环八区分区功能 int m_IsUseTwentySixLight; //是否启用26路灯光 0为不启用 1位启用 默认为0 int m_IsUseEF3; //是否启用EF3 + int m_IsUseACS; //是否用ACS运动控制 int m_DeviceType; //设备类型,0为通用设备,1为三激光, 2为大视野,3为转盘设备 默认为0 int m_UseAxisNum; //转盘设备使用轴号 int m_IbinCount; //记录获取到的分bin数 @@ -444,6 +445,7 @@ public: double m_PrfPos[5]; double m_PosForAllAxis[5]; //记录4轴位置 bool m_bConnected; + bool m_bACSConnected;// ACS是否连接成功 int m_SendDataLength; unsigned char m_cSendData[64]; unsigned char m_direct_pos; @@ -550,4 +552,8 @@ private: }; extern HSI_Motion* g_pHSI_Motion; + + +extern void ErrorsHandler(const char* ErrorMessage, BOOL fCloseComm); //ACS 错误打印 + #endif diff --git a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP index 7642e67..3ce88c7 100644 --- a/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP +++ b/HSI_HexagonMI_EF3/SevenOcean/CMMIO_SERIAL.CPP @@ -175,6 +175,7 @@ DWORD CPSerial::Open() // Setup the port according to the stored parameters if (ProgramPort(m_Port, m_Baud, m_Parity, m_Bits, m_StopBits, m_HandShake)) { + TRACE(_T("CmmIO> Port OPEN %s\n", m_Port), Ok); // Setup the timeouts CommTimeOut.ReadIntervalTimeout = 25; CommTimeOut.ReadTotalTimeoutMultiplier = 1; diff --git a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/CL.command.1.tlog b/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/CL.command.1.tlog deleted file mode 100644 index f05a9d5..0000000 Binary files a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/CL.command.1.tlog and /dev/null differ diff --git a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/CL.read.1.tlog b/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/CL.read.1.tlog deleted file mode 100644 index 99c0c8f..0000000 Binary files a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/CL.read.1.tlog and /dev/null differ diff --git a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/CL.write.1.tlog b/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/CL.write.1.tlog deleted file mode 100644 index e5b7a19..0000000 Binary files a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/CL.write.1.tlog and /dev/null differ diff --git a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/HSI_HexagonMI_EF3.write.1u.tlog b/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/HSI_HexagonMI_EF3.write.1u.tlog deleted file mode 100644 index 0d1108a..0000000 Binary files a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/HSI_HexagonMI_EF3.write.1u.tlog and /dev/null differ diff --git a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/link.command.1.tlog b/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/link.command.1.tlog deleted file mode 100644 index e7281bf..0000000 Binary files a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/link.command.1.tlog and /dev/null differ diff --git a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/link.read.1.tlog b/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/link.read.1.tlog deleted file mode 100644 index 54d6b15..0000000 Binary files a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/link.read.1.tlog and /dev/null differ diff --git a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/link.write.1.tlog b/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/link.write.1.tlog deleted file mode 100644 index 32b5c55..0000000 Binary files a/HSI_HexagonMI_EF3/obj/HSI_Hexa.ECCF081D.tlog/link.write.1.tlog and /dev/null differ diff --git a/HSI_HexagonMI_EF3/obj/vc141.idb b/HSI_HexagonMI_EF3/obj/vc141.idb deleted file mode 100644 index 4ac666a..0000000 Binary files a/HSI_HexagonMI_EF3/obj/vc141.idb and /dev/null differ diff --git a/HSI_HexagonMI_EF3/version.h b/HSI_HexagonMI_EF3/version.h index 3138bf7..0b15520 100644 --- a/HSI_HexagonMI_EF3/version.h +++ b/HSI_HexagonMI_EF3/version.h @@ -12,5 +12,5 @@ #define HSI_VERSION_REVNUM #define HSI_VERSION_BUILD_DATE _T(__DATE__ ) #define HSI_VERSION_BUILD_TIME _T(__TIME__ ) -#define HSI_FILE_DESCRIPTION "2022.10.12 / 9:29 " -#define HSI_FILE_CSDESCRIPTION _T("2022.10.12 / 9:29 ") +#define HSI_FILE_DESCRIPTION "2022.10.12 / 13:49 " +#define HSI_FILE_CSDESCRIPTION _T("2022.10.12 / 13:49 ") diff --git a/HSI_SEVENOCEAN_EF1_CsTest/HSI/HSI.cs b/HSI_SEVENOCEAN_EF1_CsTest/HSI/HSI.cs index f74b6b6..e11b415 100644 --- a/HSI_SEVENOCEAN_EF1_CsTest/HSI/HSI.cs +++ b/HSI_SEVENOCEAN_EF1_CsTest/HSI/HSI.cs @@ -4,584 +4,595 @@ 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); + 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; + 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_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_MACHINE_INFO", CharSet = CharSet.Unicode)] + public static extern Def.HSI_STATUS GetMachineInfo(ref int numMachineTypes); - [DllImport("HSI.dll", EntryPoint = "HSI_GET_INTERFACE_VERSION", CharSet = CharSet.Unicode)] - public static extern Def.HSI_STATUS GetInterfaceVersion(); + //引用返回值表示一个方法的返回值是一个引用,而不是值类型对象的副本或者引用类型的地址, + //而一个方法要实现引用返回值,需要满足两个条件: + //1、返回值不能为void,且需要使用ref关键字(或者ref readonly表示只读)修饰返回类型 + //2、方法的每一个return语句需要是一个ref引用 + [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_FIREWAREVERION", CharSet = CharSet.Unicode)] + public static extern Def.HSI_STATUS MotionGetFirewareVerion( IntPtr firewareVerion); - [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_STARTUP", CharSet = CharSet.Unicode)] + public static extern Def.HSI_STATUS Startup(IntPtr hWnd, bool bOfflineOnly); - [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_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(); + [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; - } - } - } + // <<<< 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; + } - 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); + 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: + { + MessageBox.Show(Resources.Interface_Tips_Home_Machine, Resources.Interface_Tips, + msgBtn, MessageBoxIcon.Information); + break; + } + case Def.HSI_EVENT_FUNCTION_ID.HSI_EVENT_DEBUG_LOG: + { + MessageBox.Show(eventData, Resources.Interface_Tips, + msgBtn, MessageBoxIcon.Information); + break; + } + case Def.HSI_EVENT_FUNCTION_ID.HSI_EVENT_MOVE_POINT: + { + MessageBox.Show(Resources.Interface_Tips_Motion_Finished, Resources.Interface_Tips, + msgBtn, MessageBoxIcon.Information); + ; //Motion completed + break; + } + } - [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_STARTUP", CharSet = CharSet.Unicode)] - public static extern Def.HSI_STATUS Startup(bool bHome); + break; + } + } + } - [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_HOMED", CharSet = CharSet.Unicode)] - public static extern Def.HSI_STATUS IsHomed(ref bool bHomed); + internal class Motion + { + //public static bool IsActive(bool bForce = false) + //{ + // if (_bFirst || bForce) + // { + // IsSupported(ref _supported); + // _bFirst = false; + // } + // return (_supported != 0); + //} - [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_SPEED_XYZ", CharSet = CharSet.Unicode)] - public static extern Def.HSI_STATUS GetSpeedXyz(ref double speed); + private static bool _bFirst; + private static uint _supported; - [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_SPEED_XYZ", CharSet = CharSet.Unicode)] - public static extern Def.HSI_STATUS SetSpeedXyz(double speed); + // <<<< Out Interfaces + public Motion() + { + _supported = 0; + _bFirst = true; + } + // >>>> 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_GET_SPEED_R", CharSet = CharSet.Unicode)] - //public static extern Def.HSI_STATUS GetSpeedR(ref double speed); + [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_SET_SPEED_R", CharSet = CharSet.Unicode)] - //public static extern Def.HSI_STATUS SetSpeedR(double speed); + [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_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_GET_SPEED_XYZ", CharSet = CharSet.Unicode)] + public static extern Def.HSI_STATUS GetSpeedXyz(ref double speed); - //[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_SET_SPEED_XYZ", CharSet = CharSet.Unicode)] + public static extern Def.HSI_STATUS SetSpeedXyz(double speed); - //[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_SPEED_R", CharSet = CharSet.Unicode)] + //public static extern Def.HSI_STATUS GetSpeedR(ref double speed); - //[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_SET_SPEED_R", CharSet = CharSet.Unicode)] + //public static extern Def.HSI_STATUS SetSpeedR(double speed); - [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_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_STOP_JOG", CharSet = CharSet.Unicode)] - public static extern Def.HSI_STATUS StopJog(); + //[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_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_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_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_REFRESH_DEADBAND", CharSet = CharSet.Unicode)] + //public static extern Def.HSI_STATUS GetRefreshDeadBand(ref double deadband); - //[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_JOG", CharSet = CharSet.Unicode)] + public static extern Def.HSI_STATUS Jog(uint axisTypes, double speed); - //[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_STOP_JOG", CharSet = CharSet.Unicode)] + public static extern Def.HSI_STATUS StopJog(); - [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_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_GET_DIO", CharSet = CharSet.Unicode)] - //public static extern Def.HSI_STATUS GetDIO(uint ioChannel, ref uint status); + [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_SET_DIO", CharSet = CharSet.Unicode)] - //public static extern Def.HSI_STATUS SetDIO(uint ioChannel, uint status); + //[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_SHUTDOWN", CharSet = CharSet.Unicode)] - public static extern Def.HSI_STATUS Shutdown(); + //[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); - // <<<< Out Interfaces - public Motion() - { - _supported = 0; - _bFirst = true; - } + [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_ABORT_MOTION", CharSet = CharSet.Unicode)] + public static extern Def.HSI_STATUS AbortMotion(); - //public static bool IsActive(bool bForce = false) - //{ - // if (_bFirst || bForce) - // { - // IsSupported(ref _supported); - // _bFirst = false; - // } - // return (_supported != 0); - //} + //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_DIO", CharSet = CharSet.Unicode)] + //public static extern Def.HSI_STATUS GetDIO(uint ioChannel, ref uint status); - private static bool _bFirst; - private static uint _supported; - } + //[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(); + } //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); + // { + // // >>>> 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_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_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_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_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_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_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_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(); + // [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; - // } + // // <<<< 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); - // } + // 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; - // } + // private static bool _bFirst; + // private static uint _supported; + // } - internal class Def - { - public const int HSI_APIVersionMajor = 1; - public const int HSI_APIVersionMinor = 3; + internal class Def + { + 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 - 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, + // 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, - HSI_STATUS_PORTLOCK_HSI_MISMATCH, + // "%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, - 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, + //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, - HSI_STATUS_ILLUMINATION_COMM = 50, + // 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_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_EVENT_LP_QUALITY = 63, //"%d" 0-100% + HSI_EVENT_TP_QUALITY = 64, //"%d" 0-100% + HSI_EVENT_VP_QUALITY = 65, //"%d" 0-100% - 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_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_STATUS_TP_UNEXPECTED_HIT = 200, - HSI_STATUS_TP_TIMEOUT = 201, - HSI_STATUS_TP_APPROACH_TIMEOUT = 202, - HSI_STATUS_TP_WRIST_ERROR, + HSI_EVENT_MOTION = 500, + HSI_EVENT_MOTION_DCC_HOME = 501, + HSI_EVENT_SHUTDOWN_ = 999 //N/AN/A + } - HSI_STATUS_FG_COMM = 250, - HSI_STATUS_FG_TIMEOUT, - HSI_STATUS_FG_DIRECTX, - HSI_STATUS_FG_COLORDEPTH, + 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 + } - HSI_STATUS_LP_TIMEOUT = 300, - HSI_STATUS_LP_EXCEED_LIMIT = 301, + public enum HSI_EVENT_TYPE + { + HSI_EVENT_NONE = 0, + HSI_EVENT_ERROR = 1, + HSI_EVENT_FUNCTION = 2 + } - HSI_STATUS_VP_TIMEOUT = 350, - HSI_STATUS_VP_IMAGEPROCESS_FAIL - }; + 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_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]; - } - }; + 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 + } - /////////////////////////////////////////////////////////////////////////////// - // Motion API - /////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////// + //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_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_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_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_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 enum HSI_MOTION_IO_TYPE - { - HSI_MOTION_INPUT1 = 0x0001, - HSI_MOTION_INPUT2, + 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 + } - HSI_MOTION_OUTPUT1 = 0x0100, - HSI_MOTION_OUTPUT2 - }; + public enum HSI_ILLUMINATION_TYPE + { + HSI_ILLUMINATION_SUPPORTS_DCC_CONTROL = 0x0001, + HSI_ILLUMINATION_SUPPORTS_MANUAL_CONTROL = 0x0002 + } - 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_MACHINE_TYPE + { + HSI_MACHINE_UNKNOWN = 0, + HSI_MACHINE_SO7 = 1, + HSI_MACHINE_TYPE_TOTAL + } - 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 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 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 const int HSI_MAX_POSITIONS_STORED = 500; + public enum HSI_MOTION_IO_TYPE + { + HSI_MOTION_INPUT1 = 0x0001, + HSI_MOTION_INPUT2, + + HSI_MOTION_OUTPUT1 = 0x0100, + HSI_MOTION_OUTPUT2 + } + + 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 + } - /////////////////////////////////////////////////////////////////////////////// - //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 - }; + /////////////////////////////////////////////////////////////////////////////// + // Motion API + /////////////////////////////////////////////////////////////////////////////// - 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_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_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_NOTIFY_TYPE + { + HSI_NOTIFY_PROGRAM_EXECUTION_START = 0, + HSI_NOTIFY_PROGRAM_EXECUTION_STOP = 1, - 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 - }; + 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_ILLUMINATION_BULB_STATE - { - HSI_ILLUMINATION_BULB_STATE_TURN_ON = 0, - HSI_ILLUMINATION_BULB_STATE_TURN_OFF = 1, - HSI_ILLUMINATION_BULB_STATE_TOTAL - }; + /////////////////////////////////////////////////////////////////////////////// + // Interface API + /////////////////////////////////////////////////////////////////////////////// + public enum HSI_STATUS + { + HSI_STATUS_NOT_SUPPORTED = -1, + HSI_STATUS_NORMAL = 0, + HSI_STATUS_FAILED, + HSI_FAILED_DLL_LOAD, - public enum HSI_ILLUMINATION_TYPE - { - HSI_ILLUMINATION_SUPPORTS_DCC_CONTROL = 0x0001, - HSI_ILLUMINATION_SUPPORTS_MANUAL_CONTROL = 0x0002 - }; + HSI_STATUS_PORTLOCK_HSI_MISMATCH, - 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 - }; + 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, - 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; + HSI_STATUS_ILLUMINATION_COMM = 50, - public const int HSI_MaxLampNameLength = 29, HSI_MaxLampDescriptionLength = 255; - // Maximum string length (buffer size - 1) - } + 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 const int HSI_APIVersionMajor = 1; + public const int HSI_APIVersionMinor = 3; + public const int HSI_MaxStringLength = 255; // Maximum string length (buffer size - 1) + + public const int HSI_EF3Version = 0; //默认EF3版本号 + + 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 const int HSI_MAX_POSITIONS_STORED = 500; + + 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; + + 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]; + } + } + // Maximum string length (buffer size - 1) + } } \ No newline at end of file diff --git a/HSI_SEVENOCEAN_EF1_CsTest/Program.cs b/HSI_SEVENOCEAN_EF1_CsTest/Program.cs index 5b6b0d9..6aa4c76 100644 --- a/HSI_SEVENOCEAN_EF1_CsTest/Program.cs +++ b/HSI_SEVENOCEAN_EF1_CsTest/Program.cs @@ -1,134 +1,150 @@ 锘縰sing 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; + internal class Program + { + private static Interface.PEventCallback _eventCallback; + private static void Main(string[] args) + { + //鑾峰彇HSI Dll鐗堟湰 + 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("HSI.dll Version: {0}.{1}", major, minjor); - 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); + //HSI 鍒濆鍖 + 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); + //鑾峰彇鏈哄櫒绫诲瀷 + var machineVersion = Def.HSI_EF3Version; + rStatus = Interface.GetMachineInfo(ref machineVersion); + Console.WriteLine("Interface.GetMachineInfo: {0}", rStatus); + Console.WriteLine("HSI EF3 Version: {0}", machineVersion); - //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); + //璁剧疆鍥炶皟锛屾柟渚挎牴鎹洖璋冪粨鏋滆繘琛屾彁閱 + Interface.HsiCallback = Interface.EventCallback; + rStatus = Interface.SetEventCallback(Interface.HsiCallback); + Console.WriteLine("SetEventCallback:{0}", rStatus); //浜嬩欢鍥炶皟鎴愬姛 - 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); + //if (Motion.IsActive(true)) + { + rStatus = Motion.Startup(true); //杩愬姩鍒濆鍖 + Console.WriteLine("Motion.Startup:{0}", rStatus); + + //鑾峰彇EF3鍥轰欢鐗堟湰鍙,寰呮祴璇 + var EF3Version = new byte[20]; + //IntPtr intPtrEF3Version = IntPtr.Zero; + IntPtr intPtrEF3Version = Marshal.StringToHGlobalAnsi(""); + rStatus = Interface.MotionGetFirewareVerion(intPtrEF3Version); + Console.WriteLine("Interface.MotionGetFirewareVerion: {0}", rStatus); + Marshal.Copy(intPtrEF3Version, EF3Version, 0, EF3Version.Length); + Console.WriteLine("EF3 FirewareVerion Version: {0}", Encoding.Unicode.GetString(EF3Version)); + + var bHomed = true; + rStatus = Motion.IsHomed(ref bHomed); + Console.WriteLine("Motion.IsHomed:{0}", rStatus); + var bexit = false; + var 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 = Motion.Shutdown(); - Console.WriteLine("Motion.Startup:{0}", rStatus); - } + rStatus = Interface.Shutdown(); + Console.WriteLine("Interface.Shutdown:{0}", rStatus); - - rStatus = Interface.Shutdown(); - Console.WriteLine("Interface.Shutdown:{0}", rStatus); - - Console.WriteLine(); - Console.WriteLine("Press any key to exit..."); - Console.ReadKey(); - } - } -} + Console.WriteLine(); + Console.WriteLine("Press any key to exit..."); + Console.ReadKey(); + } + } +} \ No newline at end of file diff --git a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini index fca8a99..f143dae 100644 Binary files a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini and b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Config/EF3_Config.ini differ diff --git a/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Log/2022-10-11_16 b/HSI_SEVENOCEAN_EF1_CsTest/bin/Debug/Log/2022-10-11_16 deleted file mode 100644 index e69de29..0000000