#pragma once #ifndef ACQUSDEMOLOGIC_EXPORTS #ifdef WIN_64BIT #ifdef _DEBUG #pragma comment(lib, "AcqUSDemoLogicX64D.lib") #else #pragma comment(lib, "AcqUSDemoLogicX64.lib") #endif #else #ifdef _DEBUG #pragma comment(lib, "AcqUSDemoLogicD.lib") #else #pragma comment(lib, "AcqUSDemoLogic.lib") #endif #endif #endif #define MEMORY_MAX_COUNT 15 #define PARAM_IN_TYPE #ifdef ACQUSDEMOLOGIC_EXPORTS #define ACQUNITLOGIC_API __declspec(dllexport) #else #define ACQUNITLOGIC_API __declspec(dllimport) #endif #include"LogicDevice.h" #include"DIOSLogiceDeviceStructure.h" #include"ShareMemClientInterface.h" class ACQUNITLOGIC_API AcqUSDemoLogic : public LogicDevice { private: BaseJsonDataObject m_AppMode; BaseJsonDataObject m_ExamMode; BaseJsonDataObject m_ImgId; ImgInfoDef m_FullImg; ImgDataInfo m_ImgDataInfo; CShareMemClient m_shareMemclient; unsigned __int64 m_ShareNameId[MEMORY_MAX_COUNT]; C2DGrayImageData *m_pImg2DGrayFull; CRGBImageData *m_pImgRGBFull; CBaseFunctionDataElement *m_pElement; int m_Memo_Index; BYTE*m_pDataPtr; unsigned long long m_nFrameId; char* m_chLog; public: AcqUSDemoLogic(void); virtual ~AcqUSDemoLogic(void); //get device type virtual bool SYSTEM_CALL GetDeviceType(GUID &DevType); //get device resource virtual RET_STATUS SYSTEM_CALL GetDeviceResource(ResDataObject PARAM_OUT *pDeviceResource); //ResourceCommand Request In and Response Out 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); //errors,warnings void SetErrorInfo(int errCode, char *pErrInfo); void SetWarningInfo(int warningCode, char *pWarningInfo); private://data层内部使用 int RegShareMem(); bool UnRegShareMem(); bool GetShareMemBuf(US_IMAGE_VIEW_TYPE eType, std::wstring strBufName, UINT32 nWidth, UINT32 nHeight, UINT32 nBit, UINT32 nFrameId); int WriteImageToShareMem(unsigned long long &dwShareMemId); bool PostImageDataNotify(US_IMAGE_VIEW_TYPE eType, unsigned long long dwShareMemId, unsigned long long nImageId); void LogInfo(string str); private://Data层实现,Owner bool Support_DTL_GetImgDimension(); bool Support_GetAppMode(); bool Support_SetAppMode(); bool Support_GetExamMode(); bool Support_SetExamMode(); bool Support_SetImgID(); bool Support_GetImgID(); bool Support_GetSEQResource(); bool Support_FramePostState(); bool Support_SeqPrepState(); RET_STATUS DATA_ACTION FramePostState(); RET_STATUS DATA_ACTION SeqPrepState(); RET_STATUS DATA_ACTION GetSEQResource(ResDataObject*res); RET_STATUS DATA_ACTION DTL_GetImgDimension(ImgInfoDef PARAM_OUT& ImgSt); RET_STATUS DATA_ACTION GetAppMode(unsigned int PARAM_OUT&AppMode); RET_STATUS DATA_ACTION SetAppMode(unsigned int PARAM_IN AppMode); RET_STATUS DATA_ACTION GetExamMode(unsigned int PARAM_OUT&ExamMode); RET_STATUS DATA_ACTION SetImgID(unsigned long long PARAM_IN ImgId); RET_STATUS DATA_ACTION GetImgID(unsigned long long PARAM_IN &ImgId); public://OEM重写,需要调用基类对应的函数 virtual bool DATA_ACTION Support_GetImgDimension(); virtual bool DEVICE_SUPPORT Support_GetFrame(); virtual bool DEVICE_SUPPORT Support_Run(); virtual bool DEVICE_SUPPORT Support_Stop(); virtual RET_STATUS DATA_ACTION GetImgDimension(unsigned int PARAM_OUT &nWidth, unsigned int PARAM_OUT &nHeight, unsigned int PARAM_OUT &nBit); virtual RET_STATUS DEVICE_ACTION GetFrame(US_IMAGE_VIEW_TYPE nType, void PARAM_IN PARAM_OUT* pOemImage , unsigned int PARAM_OUT &nWidth, unsigned int PARAM_OUT &nHeight, unsigned int PARAM_IN &nBit); virtual RET_STATUS DATA_ACTION SetExamMode(unsigned int PARAM_IN ExamMode); virtual RET_STATUS DEVICE_SUPPORT Run(); virtual RET_STATUS DEVICE_SUPPORT Stop(); };