#pragma once #include "CCOS.Dev.Generator.Mould.hpp" #include "DAP.BasicMoulds.hpp" #include "CCOS.Dev.MSGMould.hpp" #include "CCOS.Dev.UIClient.Mould.hpp" #include "CCOS.Dev.FPD2OtherDevice.hpp" #include "AXIMDataParam.h" #include "CCOS.Dev.Collimator.Mould.hpp" #include "gbl\axnclientifcreator.h" #include "gbl\AxnClientIFCreator.h" #include "gbl\libclientrecv.h" #include "gbl\axcs_flrad_enum.h" #include #include #include #include "Base64.h" #include "SystemLogger.h" #define GEN_SiemensSalmon_CMD_LEN 64 #define GEN_SiemensSalmon_FUN_LEN 12 #define VALUEMAX 100 #define FDC_MESSAGE_NUM (18) //FDC功能报文的个数 #define XCS_MESSAGE_NUM (60) //XCS需要解析报文的个数 #define Clientmode (0x01) /* mode */ #define Clienttarget (0xF0) //XCU报文节点 #define Clientgroup_index (0x01) //报文直接发送 #define Clientsender (0xF3) //FLC发送节点,在这里指DROC节点 #define ClientPMS (0x61) //PMS节点 #define SFServer (0x65) //PMS节点 #define Gentarget (0x50) //切换工作模式的目标节点 #define TUI_IFtarget (0x5D) //TUI报文节点(Patient Size) #define TUItarget (0x5A) //TUI报文节点(Patient Name/ID) #define FDC_Controlsender (0xF4) //just test 临时测试使用 //#define PAT_SIZE_SELECTION_ECOM (150) //Siemens 协议定义病人体型 //系统信息 #define ALLVERSIONIN (0) //All system information #define VERSIONINFOR_SOFTWARE (1) //Software Version Information #define HOSTPCID (2) //HostID #define SOFTWAREDONGLEID (3) //Software Dongle ID #define FREESPACEOFHARDDISK (4) //Free Space of Hard Disk #define FREESPACEOFMEMORY (5) //Free Space of Memory #define CONFIGFILEISSUE (6) //configuration file issue //软件版本信息 #define VERSIONINFOR_SOFTWARE (1) //Software Version Information #define VERSIONINFOR_PIXRAD (2) //Pixrad Version Information #define VERSIONINFOR_VISUALIZOR (3) //Visualizor Version Information #define MODULENAME_SOFTWARE ("droc") //Software name #define MODULENAME_PIXRAD ("Pixrad") //Pixrad Version name #define MODULENAME_VISUALIZOR ("Visualizor") //Visualizor Version name #ifdef CCOSDEVGENDEMO_EXPORTS #define _CCOSDEVGENDEMO_API __declspec(dllexport) #else #define _CCOSDEVGENDEMO_API __declspec(dllimport) #endif namespace CCOS::Dev::Detail::Generator { static const int TIMEOUTVALUE = 100; //----------------------------------------------------------------------------- // SMZ Salmon Device //----------------------------------------------------------------------------- namespace nDev = CCOS::Dev; namespace DevDAP = CCOS::Dev::Detail::DAP; namespace DevUIClient = CCOS::Dev::Detail::UIClient; namespace DevFPDClient = CCOS::Dev::Detail::Detector; namespace DevCollimator = CCOS::Dev::Detail::Collimator; class _CCOSDEVGENDEMO_API SMZDevice : public IODeviceDetail,public GeneratorMould, public DevUIClient::UIClientMould,public DevCollimator::ColliamtorMould/*,public DevFPDClient::CFPDCommunicateWithOtherDevice*/ { using super = IODeviceDetail; using superGen = GeneratorMould; using superUIClient = UIClientMould; using superCollimatorClient = ColliamtorMould; //using superFPDClient = CFPDCommunicateWithOtherDevice; public: SMZDevice (std::shared_ptr center, string ConfigPath); ~SMZDevice (); virtual std::string GetGUID() const override; virtual bool Prepare() override; acs_obj_header_t m_stGenCommand; //the telegram header axn_byte* m_pBuffer; CAxnClientIF* m_pAxnClient; //the pointer to the Axn Client CRITICAL_SECTION m_csXCUData; deque m_sCallbackData; APRpram AprParamBackup; string m_strConfigPath; ResDataObject m_GenConfig; void* m_pGenNotify; void* m_pGenDataDealNotify; HANDLE m_hBeginConnect; HANDLE m_hConnection; HANDLE m_hXCUToggleEvent; HANDLE m_hXCUDataRevThread; //XCU数据接收线程 HANDLE m_hXCUDataRevEvent; //XCU接收线程 HANDLE m_hXCUDataRevExitEvent; //退出XCU接收线程 HANDLE m_hXCUDataThread; //XCU数据处理线程 HANDLE m_hXCUDataEvent; //XCU数据处理事件 HANDLE m_hXCUDataExitEvent; //退出XCU数据处理线程 HANDLE m_hFDCDataRevThread; //FDC数据接收线程 HANDLE m_hFDCDataRevEvent; //FDC接收线程 HANDLE m_hFDCDataRevExitEvent; //退出FDC接收线程 HANDLE m_hFDCDataDealThread; //FDC数据处理线程 HANDLE m_hFDCDataDealEvent; //FDC数据处理事件 HANDLE m_hFDCDataDealExitEvent; //FDC退出数据处理线程 HANDLE m_hOGPWorkThread; //workThread instead of Timer HANDLE m_hGenSelectOGPEvent; //select OGP HANDLE m_hWaitForDummyThread; //workThread instead of Timer HANDLE m_hDUMMYEvent; //check Dummy HANDLE m_hWaitForDapThread; //workThread instead of Timer HANDLE m_hWaitForDapEvent; //check Dummy ACS_WORD m_wHeaderLength; //Length of the telegram header. bool m_bExited; bool m_bExitXCUThread; bool m_bIdentStatus; bool m_bReGetTurnOn; //20171012 recover the communication with XCU bool m_bCalibMode; //校正模式 bool m_bSelectORG; //选择OGP view bool m_bExposureStatus; //曝光过程 bool m_bInExam; //是否在检查界面 bool m_bSetAPR; //设置APR参数 bool m_bGetIGENANZ; //m_bGetIGENANZ,可以设置enable指令 bool m_bSetEnable; //设置Enable int m_nStatus; int m_nLostConnectNumber; //XCU节点断线次数 int m_nTimeoutCount; //XCU节点超时次数 配置文件 int m_nCurrentViewNumber; int m_nTargetViewNumber; int m_nLastErrorCount; //记录上次关机时记录的Error数目; int m_nErrorCount; //记录当前的Error数目; int m_nSettingWS; int m_bGenService; //在服务模式下,当处于Exam界面时,需要在设置APR时,需要同时设置到PMS中; True:是; False:不是 int m_nGenSTMode; //当前所处的模式(set the mode of the system)目前仅判断是否为ACS_SERVICE(2) int m_nScreenSaver; //记录屏保状态 int m_nIdfrstatus; //记录当前系统状态 int m_nDAPUnit; //DAP unit 0:uGym2,1:mGycm2 int m_nSetViewNumber; //预设View值 int m_nSelectOGPWaitingTime; //Select OGP time; ms int m_nAPRCommandSynFlag; //0,nothing, 1, Slect Org, 2 APR command request arrive(from XCS) 3, APR command arrive, int m_nBackup_Restre_Identifier; //(backup or restore) Identifier of data transfer int m_nTUICOMMANDSENDWAITTIME; vector g_KV_List; vector g_MAS_List; vector g_MS_List; vector g_AECDensity_List; vector g_AECDOSE_List; vector g_AECFILM_List; vector g_FILTER_List; ResDataObject* m_KVList; ResDataObject* m_MASList; float m_fKVmax; float m_fKVmin; float m_fMASmax; float m_fMASmin; float m_fMSmax; float m_fMSmin; float m_fAECDensitymax; float m_fAECDensitymin; float m_fAECDOSEmax; float m_fAECDOSEmin; float m_fAECFILMmax; float m_fAECFILMmin; float m_fFILTERmax; float m_fFILTERmin; string m_strPanelSN; bool m_bAutoHandSwitch; //校正下 自动手闸 ACS_DWORD m_nExposureIndex; //曝光次数 //=======================================与FDC 通讯相关参数================================================================ acs_obj_header_t m_stGenCommandFDC; //the telegram header for PMS CAxnClientIF* m_pFDCAxnClient; axn_byte* m_pFDCBuffer; deque m_sFDCCallbackData; CRITICAL_SECTION m_csFDCData; HANDLE m_hFDCToggleEvent; HANDLE m_hFDCDataThread; HANDLE m_hFDCDataEvent; void* m_pFDCNotify; void* m_pFDCDataDealNotify; bool m_bFDCIdentStatus; bool m_bExitFDCThread; int m_nFDCLostConnectNumber; //FDC节点断线次数 int m_nFDCTimeoutCount; //FDC节点超时次数 配置文件 DWORD m_tmDetectorStart; //探测器开窗时间 unsigned int m_nXwindowTime; //从开窗到允许曝光之间间隔时间 默认100ms HANDLE m_hExposureThread; DWORD m_ExposureThreadID; static DWORD WINAPI ExposureThread(LPVOID pParam); HANDLE m_hEventExposure; HANDLE m_hEventExitExposureThread; HANDLE m_hExposureEventArray[2]; bool m_bAlreadyExposure; //==============================================公共参数================================================================ CRITICAL_SECTION m_csStatus; private: std::unique_ptr m_DAP; std::unique_ptr m_MSGUnit; //std::unique_ptr m_UIClientUnit; std::unique_ptr m_FPDGUnit; // class CGenSiemensSalmon_Dose* m_pGenDose; // class CGenSiemensSalmon_FPDCommunicatie* m_pFPDCommunication; // class CGenSiemensSalmon_DAP* m_pGenSiemensSalmon_DAP; // class CGenSiemensSalmon_UIClientUnitLogic* m_pGenSiemensSalmon_UI; // class CGenSiemensSalmon_Mech* m_pGenSiemensSalmon_Mech; // class CGenSiemensSalmon_Battery* m_pGenSiemensSalmon_Battery; private: void Register(); public: virtual RET_STATUS IncKV() override; virtual RET_STATUS DecKV() override; virtual RET_STATUS SetKV(float value) override; virtual RET_STATUS IncMA() override; virtual RET_STATUS DecMA() override; virtual RET_STATUS SetMA(float value) override; virtual RET_STATUS IncMS() override; virtual RET_STATUS DecMS() override; virtual RET_STATUS SetMS(float value) override; virtual RET_STATUS IncMAS() override; virtual RET_STATUS DecMAS() override; virtual RET_STATUS SetMAS(float value) override; virtual RET_STATUS SetTechmode(int value) override; virtual RET_STATUS SetFocus(int value) override; virtual RET_STATUS SetAECDensity(int value) override; virtual RET_STATUS SetAECField(int value) override; virtual RET_STATUS SetAECFilm(int value) override; virtual RET_STATUS SetWS(const std::string value) override; virtual RET_STATUS SetAPR(const _tAPRArgs& t) override; virtual RET_STATUS QueryHE(int& value) override; virtual RET_STATUS QueryPostKV(float& value) override; virtual RET_STATUS QueryPostMA(float& value) override; virtual RET_STATUS QueryPostMS(float& value) override; virtual RET_STATUS QueryPostMAS(float& value) override; virtual RET_STATUS SetGenSynState(int value) override; virtual RET_STATUS SetGenState(int value) override; virtual RET_STATUS SetExpEnable() override; virtual RET_STATUS SetExpDisable()override; virtual RET_STATUS Reset()override; virtual RET_STATUS SetExpMode(std::string value) override; virtual RET_STATUS SetFrameRate(FLOAT frameRate) override; virtual RET_STATUS SetFLFMode(std::string value) override; virtual RET_STATUS SetEXAMMode(std::string value) override; virtual RET_STATUS SetHET(); //模拟测试热容量 virtual RET_STATUS SetSHO(bool state);//设置检查名称是否正确 virtual RET_STATUS SetSTA(int state);//设置软件状态 virtual RET_STATUS SetPIM(const char* viewname);//设置当前view名称到TUI virtual RET_STATUS SetSSI(const char* key, const char* value);//设置系统信息 virtual RET_STATUS SetSMV(const char* key, const char* value);//设置组件版本信息 virtual RET_STATUS SetCFM(const char* key, const char* value);//设置处理配置文件结果 virtual RET_STATUS SetBRM(int state);//设置backup结果 virtual RET_STATUS SetERA(int state);//检查最后错误数目 virtual RET_STATUS SetPNS(int state);//病人属性 virtual RET_STATUS SetScreenLockState(int state);//1锁屏,0解锁 virtual RET_STATUS SetFDSerialNumber(const char* key, const char* value);//设置处理配置文件结果 virtual RET_STATUS SetUIDoing(void);//设置界面操作 virtual RET_STATUS SetCollimatorSize(unsigned short xsize, unsigned short ysize); virtual RET_STATUS SetCollimatorSID(unsigned short sid); virtual RET_STATUS SetCollimatorFilter(unsigned short pParams); virtual RET_STATUS SetCollimatorAngle(float pParams); virtual RET_STATUS SetCollimatorMode(unsigned short pParams); virtual RET_STATUS SetCollimatorLight(unsigned short pParams); RET_STATUS JSSetFPDCalibrationStatus(std::string in, std::string& out); RET_STATUS JSSetPanelSN(std::string in, std::string& out); RET_STATUS JSSendFPDError(std::string in, std::string& out); RET_STATUS JSClearFPDError(std::string in, std::string& out); RET_STATUS JSSendFPDWarn(std::string in, std::string& out); RET_STATUS JSSendFPDStatus(std::string in, std::string& out); RET_STATUS JSFPDXWindowOpen(std::string in, std::string& out); RET_STATUS Clear_DAP(); RET_STATUS GetValue_DAP(float& value); RET_STATUS EnterExam(); RET_STATUS ExitExam(); RET_STATUS RefreshParameterList(const char* ParamType, float* List, int ListCount, float maxvalue, float minvalue); RET_STATUS AuditMessage(const char* strTime, const char* strMessage); //Send AuditMessage //=====================================================XCU实现================================================================================ /////********************************************************************************* //函数名称:SerialPortOpen //功能描述:建立通讯(AXIM 与FDC) //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SerialPortOpen(); ///********************************************************************************* //函数名称:SerialPortClose //功能描述:关闭通讯(AXIM 与FDC) //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SerialPortClose(); ///********************************************************************************* //函数名称:ConnectXCS //功能描述:连接XCS服务器 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool ConnectXCS(void); ///********************************************************************************* //函数名称:DisconnectAxn //功能描述:断开XCS服务器 //修改记录: //2021-04-20 创建 //*******************************************************************************/ void DisconnectAxn(); ///********************************************************************************* //函数名称:XCUDataThread //功能描述: FLC报文接收线程函数 //修改记录: //2021-04-20 创建 //*******************************************************************************/ static DWORD __stdcall ReveiveXCUData(LPVOID pParam); ///********************************************************************************* //函数名称:XCUDataThread //功能描述: FLC报文接收线程函数 //修改记录: //2021-04-20 创建 //*******************************************************************************/ static DWORD __stdcall XCUDataThread(LPVOID pParam); /********************************************************************************* 函数名称:SendList 功能描述:设置DROC端需要从SCU端接收的报文清单 修改记录: 2021-04-22 创建 *******************************************************************************/ bool SendList(void); /********************************************************************************* 函数名称:SendiISTWERTE 功能描述:设置ISTWERTE状态-- 初始化流程 修改记录: 2021-04-20 创建 *******************************************************************************/ bool SendiISTWERTE(void); //********************************************************************************* //函数名称:SendTelegramLog //功能描述: 设置SendTelegramLog //修改记录: //2017-06-26 创建 //*******************************************************************************/ //void SendTelegramLog(const char* strTelegramKey, const char* strTelegramLog = "", int nMode = 1, const char* strTelegramType = "Telegram"); void SendTelegramLog(const char* strTelegramKey, const char* strTelegramLog = "", int nSender = 0xF0, int nMode = 1, int strTelegramType = SYS_LOG_LEVEL_Telegram, const char* nCode = ""); //********************************************************************************* //函数名称:SendIdent //功能描述:设置与XCU交互的第一条报文 // //修改记录: //2015-04-20 创建 //*******************************************************************************/ bool SendIdent(void); ///********************************************************************************* //函数名称:SendDate //功能描述:设置当前时间到XCU端,保持时间同步 //修改记录: //2021-04-22 创建 //*******************************************************************************/ bool SendDate(void); ///********************************************************************************* //函数名称:SendErrorLog //功能描述:设置当前DROC保存的错误个数到XCU端 //修改记录: //2021-04-21 创建 //*******************************************************************************/ bool SendErrorLog(void); ///********************************************************************************* //函数名称:QueryExposureNumber //功能描述: 查询当前曝光的次数(ASERVBETRIEB ) //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool QueryExposureNumber(); ///********************************************************************************* //函数名称:SendIfeStatus //功能描述:设置组件状态 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SendIfeStatus(int IfStatusValue); ///********************************************************************************* //函数名称:SetSH_Mode //功能描述: 返回SH_mode报文,对应ST_mode //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool SetSH_Mode(int nMode); ///********************************************************************************* //函数名称:SendIdfrnahbed //功能描述:对iDfrBed报文的确认 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SendIdfrnahbed(int nCode, int nData); ///********************************************************************************* //函数名称:SendAdjust //功能描述:发送AP的读写结果到PMS //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool SendAdjust(int); ///********************************************************************************* //函数名称:SetSystemStatusInformation //功能描述:设置当前软件系统的状态信息 //参数描述: //nStatusIndex: //VERSIONINFOR_SOFTWARE (1) //Software Version Information //HOSTID (2) //HostID //SOFTWAREDONGLEID (3) //Software Dongle ID //FREESPACEOFHARDDISK (4) //Free Space of Hard Disk //FREESPACEOFMEMORY (5) //Free Space of Memory //CONFIGFILEISSUE (6) //configuration file issue //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool SetSystemStatusInformation(int nStatusIndex, const char* strInforint, ACS_ENUM nDealStatus = ACS_DIAG_COMPLETED); ///********************************************************************************* //函数名称:SelectORG //功能描述:设置当前UI端选中的view到UI端 //修改记录: //2021-04-22 创建 //*******************************************************************************/ bool SelectORG(int nCode, int nParam, int nNeedOGP = true); ///********************************************************************************* //函数名称:TurnOffRequest //功能描述: 设置FLC关闭请求确认到XCU端 //修改记录: //2015-04-20 创建 //*******************************************************************************/ void TurnOffRequest(); ///********************************************************************************* //函数名称:TimeOutWaring //功能描述: 连接超时判断 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool TimeOutWaring(void); /********************************************************************************* 函数名称:SendIdfrStatus 功能描述:设置当前系统曝光状态到XCU端 修改记录: 2015-04-20 创建 *******************************************************************************/ bool SendIdfrStatus(int nDRStatus, int nRFStatus, int bSaveParm = 1); ///********************************************************************************* //函数名称:EnableExposure //功能描述:接收到DROC允许曝光消息,通知XCU //修改记录: //2015-04-20 创建 //2017-01-04 改进代码风格 //*******************************************************************************/ bool EnableExposure(int nEnable); //enable the exposure function; 0:disable; 1:enable ///********************************************************************************* //函数名称:mb2wc //功能描述: 字符转换函数:宽字符转多字节 //修改记录: //2021-04-20 创建 //*******************************************************************************/ string wc2mb(const wchar_t* pwcstr); ///********************************************************************************* //函数名称:SwitchLogLevel //功能描述:切换日志属性类型 //对应需求: //修改记录: //2021-4-23 创建 //*******************************************************************************/ string SwitchCategory2Str(ACS_ENUM nCatrgoryNumber); int SwitchCategory2ECOM(ACS_ENUM nCatrgoryNumber); //将AXIM的错误属性转换成IS属性 ///********************************************************************************* //函数名称:SendTUIButton //功能描述:设置TUI上Button按钮状态 //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool SendTUIButtonStatus(int nButtonType, int nStatus = NORMAL); ///********************************************************************************* //函数名称:SetPatientStatus //功能描述:进入检查时通知XCU进入检查;退出时,通知XCU退出检查; //nExamStatus: ///* ACS_NO_INFORMATION 0 */ ///* ACS_EMERGENCY_PAT 1 patient registered in an emergency mode */ ///* ACS_PAT_EXAM 2 patient has been registered for examination */ ///* ACS_PAT_CLOSED 3 patient has been closed */ ///* ACS_PAT_SERVICE 4 service patient has been opened for examination //修改记录: //2021-04-25 创建 bug7206 //*******************************************************************************/ bool SetPatientStatus(int nPatientStatus); ///********************************************************************************* //函数名称:WSGen2UI //功能描述:切换workstations从UI到XCU,用于映射对应的workstation值 //修改记录: //2021-04-20 创建 //*******************************************************************************/ void WSGen2UI(int nGenWS, int& nUIWS); /********************************************************************************* 函数名称:OGPWorkThread 功能描述: 等待OGP(VIEW)确认返回线程 修改记录: 2021-04-23 创建 *******************************************************************************/ static DWORD __stdcall OGPWorkThread(LPVOID pParam); ///********************************************************************************* //函数名称:TurnOffFDCRequest //功能描述: 确认探测器Turnoff请求 //修改记录: //2021-04-25 创建 //*******************************************************************************/ void TurnOffFDCRequest(); ///********************************************************************************* //函数名称:SendIasuStatus //功能描述:设置当前系统状态到XCU端 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SendIasuStatus(int nDRStatus, int nRFStatus); /********************************************************************************* 函数名称:SendSAUSLBED 功能描述:设置手闸状态模式(主要设置到自动校正) 对应需求:IS_Service_xrayrelease 修改记录: 2015-04-20 创建 2017-01-04 改进代码风格 *******************************************************************************/ bool SendSAUSLBED(bool bEnable); ///********************************************************************************* //函数名称:SendIDETEKTORSTATUS //功能描述: 设置探测器Ready状态到XCU //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SendIDETEKTORSTATUS(int nDetectorStatus);//Detector ready to generator 20150929 ///********************************************************************************* //函数名称:SetProgramList //功能描述:设置view到XCU端 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SetProgramList(int nCount, int nOrganIndex, string& OrginName, int nDefaultWS); ///********************************************************************************* //函数名称:SetOrgNameStatus //功能描述:设置OrgName状态 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SetOrgNameStatus(float fOrgStatus); ///********************************************************************************* //函数名称:SetVersionInfor //功能描述:设置版本信息 //参数描述: //nModuleIndex: //VERSIONINFOR_VISUALIZOR (1) //VERSIONINFOR_PIXRAD (2) //VERSIONINFOR_SOFTWARE (3) //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool SetVersionInfor(const char* strModuleName, const char* strVersionInfor); ///********************************************************************************* //函数名称:SetSH_DATA_TRANS //功能描述:设置配置文件Backup/Resort状态 //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool SetSH_DATA_TRANS(float fResult,int nIdent); /********************************************************************************* 函数名称:SetSatetySwitch 功能描述:设置当前工作模式(主要设置到自动校正) 修改记录: 2021-04-22 创建 *******************************************************************************/ bool SetSatetySwitch(); /********************************************************************************* 函数名称:SendIDFRABSCHALTUNG 功能描述:通知SCU当前view结束 修改记录: 2021-04-22 创建 *******************************************************************************/ bool SendIDFRABSCHALTUNG(); /********************************************************************************* 函数名称:GetSwitchState 功能描述:获取当前工作模式 修改记录: 2021-04-22 创建 *******************************************************************************/ bool GetSwitchState();//TODO: AutoCalibration ///********************************************************************************* //函数名称:SetErrorCode //功能描述:设置ErrorCode //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SetFDErrorCode(int nErrorCode, int nErrorType, string& strSN); ///********************************************************************************* //函数名称:SendPatientSize //功能描述: 设置病人体型到XCU //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool SendPatientSize(int nPatientSize); //set Patient Size to XCU ///********************************************************************************* //函数名称:SendPositionImageName //功能描述: 设置当前选中的View的缩略图名称到TUI //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool SendPositionImageName(string& strPatientPositionImageName); //Position Image Name ///********************************************************************************* //函数名称:SendPatientInfor //功能描述: 设置病人名及病人ID //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool SendPatientInfor(wstring& wstrPatientName, wstring& wstrPatientID); //set Patient Information to XCU ///********************************************************************************* //函数名称:SendFPDSerialNumber //功能描述: 设置探测器序列号到PMS端 //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool SendFPDSerialNumber(int nFPDType, const char* strFPDNumber); ///********************************************************************************* //函数名称:TubeHeatTest //功能描述: 模拟测试球管热容量 //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool TubeHeatTest(void); //TubeHeat Test ///********************************************************************************* //函数名称:SetSHCONFIG //功能描述:配置文件结果处理,对应ST_CONFIG //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool SetSHCONFIG(float fResult); ///********************************************************************************* //函数名称:SetPanelRotate //功能描述:设置探测器旋转方向 //修改记录: //2021-04-25 创建 //*******************************************************************************/ bool SetPanelRotate(int nPanelRotate); ///********************************************************************************* //函数名称:SetST_SYSTEM_STATE //功能描述:设置ST_SYSTEM_STATE报文 //修改记录: //2021-07-21 创建 //*******************************************************************************/ bool SetST_SYSTEM_STATE(int nStatus); ///********************************************************************************* //函数名称:SetScreenSaver //功能描述:控制锁屏功能(1:锁屏启动;0:锁屏关闭) //对应需求: //修改记录: //2021-4-25 创建 //*******************************************************************************/ bool SetScreenSaver(int nScreenSaver); ///********************************************************************************* //函数名称:GetLastErrorAmount //功能描述:获取当前的错误数量 //对应需求: //修改记录: //2021-4-25 创建 //*******************************************************************************/ bool GetLastErrorAmount(void); ///********************************************************************************* //函数名称:SendOrthoLocalParam //功能描述:本地设置拼接协议,包括曝光参数及位置信息 //修改记录: //2021-4-21 创建 //*******************************************************************************/ bool SendOrthoLocalParam(int nWS, float fKV, float fMA, float fMS, float fMAS, int nFO, int nET, int nAECFieldSel, int nAECFilmSel, float fAECDensity, ACS_BYTE nTarget = Clienttarget,float fCollimatorWidth = 43.0f, float fCollimatorHeight = 43.0f, float fAECDose = 2.5f, int nFilter = 0, int nTubeLoad = 0, int nGridType = 0, int nOrthoType = ACS_ORTHO_RANGE_TUBE_ANGLE, float fRelativePosition = 0, float fSID = 150, float fBeamAngle = 0, int nOrthoDir = ACS_HEAD_TO_FEET, int nPartialCP = ACS_CP_NORMAL, int nPatientSize = PAT_THN_M, int nOperationMode = OPM_NORMAL, int nAlignmentMode = ACS_ALIGNMENT_TOP, int nTracking = ACS_TRACK_NOT_ACTIVE, int nSidTracking = ACS_TRACK_NOT_ACTIVE); ///********************************************************************************* //函数名称:SendGenData //功能描述:调节参数指令(增加或减少) //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SendGenData(int interfaceType, int AdjustMode, int nFunctionID, int nGenData, int nUnitChange = 0); ///********************************************************************************* //函数名称:SendsBEDSP //功能描述:调节参数指令(增加或减少)for Dose //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SendsBEDSP(int interfaceType, int AdjustMode, int nFunctionID, int nGenData); //adjust parameter ///********************************************************************************* //函数名称:SetTubeLoad //功能描述:设置TubeLoad参数 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool SetTubeLoad(int nTubeLoad); ///********************************************************************************* //函数名称:SetFilter //功能描述:设置Filter参数 //修改记录: //2021-04-21 创建 //*******************************************************************************/ bool SetFilter(int nFilterType); /********************************************************************************* 函数名称:WaitForDummyThread 功能描述: 等待Dummy线程 修改记录: 2021-04-23 创建 *******************************************************************************/ static DWORD __stdcall WaitForDummyThread(LPVOID pParam); /********************************************************************************* 函数名称:WaitForDapThread 功能描述: 等待DAP返回线程 修改记录: 2022-10-11 创建 *******************************************************************************/ static DWORD __stdcall WaitForDapThread(LPVOID pParam); //======================================================================================公用函数========================================================================== ///********************************************************************************* //函数名称:WSUI2TUI //功能描述:切换workstations从UI到XCU,用于映射对应的workstation值 //修改记录: //20121-04-22 创建 //*******************************************************************************/ void WSUI2TUI(int nUIWS, int& nGenWS); ///********************************************************************************* //函数名称:mb2wc //功能描述: 字符转换函数 //修改记录: //2021-04-20 创建 //*******************************************************************************/ wstring mb2wc(const char* pszStr); /********************************************************************************* 函数名称:DecodeBase64 功能描述:对收到的信息进行解码 修改记录: 2021-5-11 创建 *******************************************************************************/ void DecodeBase64(string strMessageIn, wstring& strMessageOut); wstring GetWString(vector& listdata); /********************************************************************************* 函数名称:OrthoWSUI2Gen 功能描述:Ortho切换workstations从UI到XCU,用于映射对应的workstation值 修改记录: 2021-04-21 创建 *******************************************************************************/ void OrthoWSUI2Gen(int nUIWS, int& nGenWS); /********************************************************************************* 函数名称:SwitchGridFocusECOM2SIEMENSORTHO 功能描述:切换ORTHO GridType 从ECOM版本切换到siemens版本 nECOMGridType:ECOM版本的Grid Type定义 nWS:ECOM版本的workstations类型; 函数输出;输出Siemens版本的GridType; 修改记录: 2021-4-21 创建 *******************************************************************************/ int SwitchGridFocusECOM2SIEMENSORTHO(int nWS, int nECOMGridType); ///********************************************************************************* //函数名称:GetFacKvValue //功能描述:将设置的KV值映射到当前KV参数列表的位置 //修改记录: //2021-04-20 创建 //*******************************************************************************/ int GetFacKvValue(int& nkv); ///********************************************************************************* //函数名称:GetFacmASValue //功能描述:将设置的MAS值映射到当前MA参数列表的位置 //修改记录: //2021-04-20 创建 //*******************************************************************************/ int GetFacmAsValue(int& nmAs); ///********************************************************************************* //函数名称:GetFacmSValue //功能描述:将设置的MS值映射到当前MS参数列表的位置 //修改记录: //2021-04-20 创建 //*******************************************************************************/ int GetFacmSValue(int& nms); ///********************************************************************************* //函数名称:GetFacDensityValue //功能描述:将设置的AECDensity值映射到当前AECDensity参数列表的位置 //修改记录: //2021-04-20 创建 //*******************************************************************************/ int GetFacDensityValue(int& nDensity); ///********************************************************************************* //函数名称:GetFacAECDoseValue //功能描述:将设置的AECDOSE值映射到当前AECDOSE参数列表的位置 //参数内容:实际值*100 //修改记录: //2021-04-20 创建 //*******************************************************************************/ int GetFacAECDoseValue(int& nAECDose); ///********************************************************************************* //函数名称:GetFacFilterValue //功能描述:将设置的Filter值映射到当前Filter参数列表的位置 //参数内容:实际值*10 //修改记录: //2021-04-20 创建 //*******************************************************************************/ int GetFacFilterValue(int& nFilter); //======================================================================================XCU通讯报文处理========================================================================== ///********************************************************************************* //函数名称:CallbackXCU //功能描述:对XCU报文进行反馈处理 //修改记录: //2021-4-20 创建 //*******************************************************************************/ bool CallbackXCU(const acs_obj_header_t* pCommand); ///********************************************************************************* //函数名称:CallbackTurnOn //功能描述:对TurnOn消息进行反馈处理 //修改记录: //2021-4-20 创建 //*******************************************************************************/ bool CallbackTurnOn(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackTurnOff //功能描述: 解析当前关闭状态信息(turn off message) //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool CallBackTurnOff(ACS_BYTE* pCommand); //code 20140312 for version of all component ///********************************************************************************* //函数名称:CallbackGenParam //功能描述: 解析当前系统的曝光参数 //修改记录: //2021-04-20 创建 //*******************************************************************************/ int CallbackGenParam(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallbackIFILTERANZParam //功能描述: 解析现场的Filter信息 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool CallbackIFILTERANZParam(ACS_BYTE* pCommand); //for filter ///********************************************************************************* //函数名称:CallbackErrorParam //功能描述: 解析错误信息,目前仅用作记录 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallbackErrorParam(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallbackWorkstationFromXCU //功能描述: 解析当前workstation设置状态(是否成功,from XCU) //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool CallbackWorkstationFromXCU(ACS_BYTE* pCommand); //for OGP ///********************************************************************************* //函数名称:CallbackAufnAusl //功能描述: 解析当前的手闸状态信息 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool CallbackAufnAusl(ACS_BYTE* pCommand); //saufnausl_t1_tag ///********************************************************************************* //函数名称:CallbackSBILD //功能描述: image display on imaging system, sent from XCU to DFR or camera //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallbackSBILD(ACS_BYTE* pCommand); //saufnausl_t1_tag /********************************************************************************* 函数名称:CallbackSORGANSELECT 功能描述: 解析当前SORGANSELECT报文,当前选中view 修改记录: 2021-04-20 创建 *******************************************************************************/ bool CallbackSORGANSELECT(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackShowList //功能描述: 解析当前的参数范围信息 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool CallBackShowList(const ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallbackGetField //功能描述: 解析AEC Field信息 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool CallbackGetField(const ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallbackPostGenParam //功能描述: 解析曝光Post参数 //修改记录: //2021-04-20 创建 //*******************************************************************************/ int CallbackPostGenParam(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackIdrallganz2 //功能描述: 解析错误信息,并发给UI进行显示 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackIdrallganz2(const ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackIfehleranz2 //功能描述: 获取当前的错误信息,并发给UI进行显示 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackIfehleranz2(const ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackIINFOCOMP //功能描述: 收集当前组件的版本信息(collected SW/FW-versions of all components) //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackIINFOCOMP(ACS_BYTE* pCommand); //code 20130903 for version of all component ///********************************************************************************* //函数名称:CallBackST_MODE //功能描述: 解析当前的工作模式(Use or service) //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackST_MODE(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackSDFRNAHBED2 //功能描述: 解析当前的病人信息(体型) //修改记录: //2021-04-21 创建 //*******************************************************************************/ bool CallBackSDFRNAHBED2(ACS_BYTE* pCommand); /********************************************************************************* 函数名称:CallBackST_ORGAN_PROG 功能描述: 返回当前使用的view名称 修改记录: 2021-04-23 创建 *******************************************************************************/ bool CallBackST_ORGAN_PROG(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackSRESETFEHLER //功能描述: reset当前DROC错误状态 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackSRESETFEHLER(ACS_BYTE* pCommand); //reset error //此报文可能不会使用 ///********************************************************************************* //函数名称:CallBackSID //功能描述: 解析SID信息 //修改记录: //2015-04-20 创建 //*******************************************************************************/ bool CallBackSID(ACS_BYTE* pCommand); //receive SID "IFFA", unit: mm ///********************************************************************************* //函数名称:CallBackWorkStationFromTUI //功能描述:获取当前探测器对应的Workstation信息 from TUI //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool CallBackWorkStationFromTUI(ACS_BYTE* pCommand); //receive System workstation ///********************************************************************************* //函数名称:CallBackCollimator //功能描述: 获取遮光器尺寸信息 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackCollimator(ACS_BYTE* pCommand); //receive collimator "IBLENDEANZ" // ///********************************************************************************* //函数名称:CallBackGrid //功能描述: 获取滤线栅信息 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackGrid(ACS_BYTE* pCommand); //receive Grid ///********************************************************************************* //函数名称:CallBackRQ_FDR_DATA //功能描述: 获取对应探测器的workstation信息 //修改记录: //2023-04-23 创建 //*******************************************************************************/ bool CallBackRQ_FDR_DATA(ACS_BYTE* pCommand); //Request FPD serial Number /////********************************************************************************* //函数名称:CallBackAdjust //功能描述: PMS请求AP的读取或写入信息 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackAdjust(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackIGGANZ2 //功能描述: 获取遮光器平移和探测器旋转状态 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackIGGANZ2(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackTubeHeat //功能描述: 获取当前设备热容量 //修改记录: //2021-04-22 创建 //*******************************************************************************/ bool CallBackTubeHeat(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackSHDIAG //功能描述: 接受当前系统需要查询的内容 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackSTDIAG(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackRQOBJECT //功能描述: 接受当前系统需要查询的版本内容 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackRQOBJECT(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackDoorStatus //功能描述: 解析门的开关状态 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackDoorStatus(ACS_BYTE* pCommand); //System Status ///********************************************************************************* //函数名称:CallBackSTCONFIG //功能描述: 获取并解析ST_CONFIG报文 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackSTCONFIG(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackST_DATA_TRANS //功能描述: 获取并解析ST_DATA_TRANS报文 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackST_DATA_TRANS(ACS_BYTE* pCommand); /********************************************************************************* 函数名称:CallbackST_PWR_OFF 功能描述:接收到关机报文 参数:Full_image_size、image_size、overlap、Image number 修改记录: 2021-4-21 创建 *******************************************************************************/ bool CallbackST_PWR_OFF(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackSystemStatus //功能描述: 获取当前PMS状态 //修改记录: //2021-04-21 创建 //*******************************************************************************/ bool CallBackPMSSystemStatus(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallbackIXRAY //功能描述:对IXRAY消息进行反馈处理 //修改记录: //2021-10-16 创建 //*******************************************************************************/ bool CallbackIXRAY(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackIANLBEREIT //功能描述: 解析发生器状态是否ready //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackIANLBEREIT(ACS_BYTE* pCommand); //System Status ///********************************************************************************* //函数名称:CallbackIWATERVALACQ //功能描述: 解析DAP报文(IWATERVALACQ) //修改记录: //2021-09-25 创建 //*******************************************************************************/ bool CallbackIWATERVALACQ(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallbackExposureNumber //功能描述: 解析曝光的次数报文(ISERVBETRIEB) //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallbackExposureNumber(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackSOD //功能描述: 解析SOD信息 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackSOD(ACS_BYTE* pCommand); //receive S0D "ISOD", unit: mm ///********************************************************************************* //函数名称:CallbackIACSS //功能描述: 解析IACSS报文(硬裁剪条件) //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallbackIACSS(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackSFANZLOESCHEN //功能描述: 获取SFANZLOESCHEN报文,表示错误被清除 //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallBackSFANZLOESCHEN(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallbackIERWALLGANZ //功能描述:对IERWALLGANZ消息进行反馈处理,获取在屏保状态下的按下手闸的状态,用于激活屏保登录框; //修改记录: //2021-4-23 创建 //*******************************************************************************/ bool CallbackIERWALLGANZ(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackSORTHO //功能描述:接收到拼接图像信息 //参数:Full_image_size、image_size、overlap、Image number //修改记录: //2021-04-23 创建 //*******************************************************************************/ bool CallbackSORTHO(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallbackSH_STPAR_REP //功能描述:接收到拼接图像信息 //参数:Full_image_size、image_size、overlap、Image number //修改记录: //2021-4-23 创建 //*******************************************************************************/ bool CallbackSH_STPAR_RFP(ACS_BYTE* pCommand); //====================================================================================FDC 通讯报文处理====================================================================== /********************************************************************************* 函数名称:SendListFDC 功能描述:设置DROC端需要从PMS端接收的报文清单 修改记录: 2021-04-20 创建 *******************************************************************************/ bool SendListFDC(void); /********************************************************************************* 函数名称:SendIdentFDC 功能描述: 设置PMS状态 修改记录: 2021-04-20 创建 *******************************************************************************/ bool SendIdentFDC(void); ///********************************************************************************* //函数名称:CallBackSHRA //功能描述: 记录状态信息,仅为记录( confirm start/stop of xray, //released by software and hands free movement controlled by software ) //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool CallBackSHRA(ACS_BYTE* pCommand); //*******************************************************************************/ //函数名称:FDCDataThread //功能描述:FDC数据处理线程 //修改记录: //2021-04-20 创建 //*******************************************************************************/ //static DWORD __stdcall FDCDataThread(LPVOID pParam); static DWORD __stdcall FDCDataThread(LPVOID pParam); ///********************************************************************************* //函数名称:FDCConnectXCS //功能描述: FDC节点连接到XCU节点 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool FDCConnectXCS(); ///********************************************************************************* //函数名称:DisconnectFDCAxn //功能描述: 断开FDC节点连接 //修改记录: //2021-04-20 创建 //*******************************************************************************/ void DisconnectFDCAxn(); ///********************************************************************************* //函数名称:XCUDataThread //功能描述: FLC报文接收线程函数 //修改记录: //2021-04-20 创建 //*******************************************************************************/ static DWORD __stdcall ReveiveFDCData(LPVOID pParam); //*******************************************************************************/ //函数名称:FDCCallback //功能描述:FDC报文解析 //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool FDCCallback(const acs_obj_header_t* pCommand); /********************************************************************************* 函数名称:CallbackFDCTurnOn 功能描述:对FDC TurnOn消息进行反馈处理 修改记录: 2021-4-19 创建 *******************************************************************************/ bool CallbackFDCTurnOn(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackFDCTurnOff //功能描述: 解析当前F4节点关闭状态信息(turn off message) //修改记录: //2021-04-20 创建 //*******************************************************************************/ bool CallBackFDCTurnOff(ACS_BYTE* pCommand); ///********************************************************************************* //函数名称:CallBackSHSS //功能描述: 用来切换DROC当前是否要处于服务模式; //修改记录: //2020-04-20 创建 //*******************************************************************************/ bool CallBackSHSS(ACS_BYTE* pCommand); /********************************************************************************* 函数名称:DoExposure() 功能描述:响应探测器的开窗(FRM 2)指令,辅助GEN的FRM 1处理曝光流程 修改记录: 2020-11-03 创建 *******************************************************************************/ bool DoExposure(void); //应对ebus超时影响曝光 protected: RET_STATUS RefreshData (); private: void FireNotify (std::string key, std::string context); void FireDataNotify (std::string key, std::string context); HANDLE m_hGenPostEvent; HANDLE m_hGenPostDAPEvent; }; } //----------------------------------------------------------------------------- // SDCDriver //----------------------------------------------------------------------------- namespace CCOS::Dev::Detail::Generator { class _CCOSDEVGENDEMO_API SMZDriver : public DriverMould { using super = /*IODriverWithSCF <*/DriverMould; ResDataObject m_DeviceConfig; public: SMZDriver (); virtual ~SMZDriver (); public: virtual void Prepare () override; virtual bool DATA_ACTION Connect () override; virtual void Disconnect() override; virtual bool isConnected() const override; virtual void Dequeue (const char * Packet, DWORD Length) /*override*/; virtual void FireNotify (int code, std::string key, std::string content) /*override*/; virtual auto CreateDevice (int index)->std::unique_ptr override; virtual std::string DriverProbe () override; virtual std::string GetResource () override; virtual std::string DeviceProbe () override; virtual bool GetDeviceConfig(std::string& Cfg) override; private: //static PACKET_RET callbackPackageProcess (const char* RecData, DWORD nLength, DWORD& PacketLength); int m_nLastErrorCount; //记录上次关机时记录的Error数目; int m_nSelectOGPWaitingTime; //记录当前的Error数目; bool m_bConnect; }; }