// HSI_Sevenocean_EF3.cpp : 定义 DLL 的初始化例程。 // #include "stdafx.h" #include "HSI.h" #include "HSI_Sevenocean_EF3.h" #include "HSI_Motion.h" #ifdef _DEBUG #define new DEBUG_NEW #endif //=========================================================================== HSI_Sevenocean_EF3* g_pHSI_Sevenocean_EF3 = nullptr; pEventCallback HSI_Sevenocean_EF3::m_pEventCallback = nullptr; //=========================================================================== HSI_Sevenocean_EF3::HSI_Sevenocean_EF3() { hWnd = nullptr; bOfflineOnly = false; TRACE0("HSI_Sevenocean_EF3 Constructor!\n"); } //=========================================================================== HSI_Sevenocean_EF3::~HSI_Sevenocean_EF3() { TRACE0("HSI_Sevenocean_EF3 Destructor!\n"); } //=========================================================================== /** * HSI 初始化 * * \param _hWnd :消息传输句柄 * \param _bOfflineOnly :暂无用,默认 False * \return */ HSI_STATUS HSI_Sevenocean_EF3::Startup(HWND _hWnd, bool _bOfflineOnly) { auto rStatus = HSI_STATUS_NORMAL; hWnd = _hWnd; bOfflineOnly = _bOfflineOnly; return rStatus; } //=========================================================================== HSI_STATUS HSI_Sevenocean_EF3::GetMachineInfo(int& _NumMachineTypes) { auto rStatus = HSI_STATUS_NORMAL; _NumMachineTypes = HSI_MACHINE_EF3; //机器类型EF3 return rStatus; } //=========================================================================== HSI_STATUS HSI_Sevenocean_EF3::SetEventCallback(pEventCallback _pCallback) { auto rStatus = HSI_STATUS_NORMAL; if (_pCallback) { m_pEventCallback = _pCallback; //sEvenProp.EventType = HSI_EVENT_FUNCTION; //sEvenProp.EventID = HSI_EVENT_DEBUG_LOG; //sEvenProp.EventCallbackID = 0; //sEvenProp.EventResponse = HSI_EVENT_FUNCTION_OK; //strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "Set callback succeed!"); //EventCallback(sEvenProp); // 2024.7.17 询问急停逻辑,metus层面不参与急停逻辑,只负责通知,具体逻辑由电气层决定 // 通过事件通知急停状态,metus层面没有弹窗,改由 中间件层面当运动急停后弹窗通知 //sEvenProp.Init(); //sEvenProp.EventType = HSI_EVENT_NOTIFY; //sEvenProp.EventID = HSI_NOTIFY_EMERGENCY_STATE; //sEvenProp.EventResponse = HSI_EVENT_RESPONSE_OK; //strcpy_s(sEvenProp.EventData, HSI_MaxStringLength, "急停已触发!!!"); //EventCallback(sEvenProp); //AfxMessageBox(_T("急停或安全门或安全光幕触发!")); } return rStatus; } //=========================================================================== VOID HSI_Sevenocean_EF3::EventCallback(sHSIEventProperties& _sEventProp) { if (m_pEventCallback) { m_pEventCallback(_sEventProp.EventType, _sEventProp.EventResponse, _sEventProp.EventID, _sEventProp.EventData, _sEventProp.EventCallbackID); } } //=========================================================================== HSI_STATUS HSI_Sevenocean_EF3::Shutdown() { auto rStatus = HSI_STATUS_NORMAL; return rStatus; }