#pragma once // 下列 ifdef 块是创建使从 DLL 导出更简单的 // 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 USDRIVER_EXPORTS // 符号编译的。在使用此 DLL 的 // 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将 // USDRIVER_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的 // 符号视为是被导出的。 #ifndef USDRIVER_EXPORTS #ifdef _WIN64 #ifdef _DEBUG #pragma comment(lib, "UsDriverX64D.lib") #else #pragma comment(lib, "UsDriverX64.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "UsDriverD.lib") #else #pragma comment(lib, "UsDriver.lib") #endif #endif #endif #include "LogicDriver.h" #include "Us_Model_Def.h" #ifdef USDRIVER_EXPORTS #define USDRIVER_API __declspec(dllexport) #define USDRIVER_C_API extern "C" __declspec(dllexport) #else #define USDRIVER_API __declspec(dllimport) #define USDRIVER_C_API extern "C" __declspec(dllimport) #endif class USDRIVER_API UsDriver :public LogicDriver { ModelBeanFormer *m_pResource; public: UsDriver(void); virtual ~UsDriver(void); //基本接口 ResDataObject& SYSTEM_CALL GetResource(); virtual bool SYSTEM_CALL GetDeviceType(GUID &DevType); //get device resource virtual RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource); virtual RET_STATUS SYSTEM_CALL GetSEQResource(ResDataObject PARAM_OUT *pDeviceResource); //ResourceCommand Request In and Response Out RET_STATUS SYSTEM_CALL GetRequest(ResDataObject PARAM_IN *pKey, ResDataObject PARAM_OUT *pResponse); virtual RET_STATUS SYSTEM_CALL Request(ResDataObject PARAM_IN *pRequest, ResDataObject PARAM_OUT *pResponse); //notify to lower layer virtual RET_STATUS SYSTEM_CALL CmdToLogicDev(ResDataObject PARAM_IN *pCmd); //对象接口 virtual bool SYSTEM_CALL DriverEntry(ResDataObject& PARAM_IN Configuration); //Actions virtual RET_STATUS DATA_ACTION SelectTR(const char *pTRName); virtual RET_STATUS DATA_ACTION StartAcq(); virtual RET_STATUS DATA_ACTION StopAcq(); virtual RET_STATUS DATA_ACTION Freeze(USFREEZESTATUS On); bool SYSTEM_CALL GetModeActiveStatus(DWORD Mode); //rule No1.只要激活状态,B模式 always on Active. //rule No2.Active B,C,D情况下,三个都有激活 virtual RET_STATUS SYSTEM_CALL MakeModeActiveNotify(DWORD Mode, bool Active); virtual RET_STATUS DATA_ACTION ActiveMode(DWORD Mode); virtual RET_STATUS DATA_ACTION DeActiveMode(DWORD Mode); //OEM层必须实现 virtual bool OEM_IF SetReadyWorkStatus(BFWORKSTATUS WorkStatus); virtual bool OEM_IF SetBFStatus(BF_STATUS Status); virtual RET_STATUS OEM_IF UpdateResourcePath(ResDataObject PARAM_IN *pkeyRes, ResDataObject PARAM_IN *pResource, ResDataObject PARAM_IN *pContext, DWORD NestedCallLimit); };