Files

100 lines
3.0 KiB
C++

// 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;
}