DIOS.Dev.Generator.Salmon.h 59 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577
  1. #pragma once
  2. #include "CCOS.Dev.Generator.Mould.hpp"
  3. #include "DAP.BasicMoulds.hpp"
  4. #include "CCOS.Dev.MSGMould.hpp"
  5. #include "CCOS.Dev.UIClient.Mould.hpp"
  6. #include "CCOS.Dev.FPD2OtherDevice.hpp"
  7. #include "AXIMDataParam.h"
  8. #include "CCOS.Dev.Collimator.Mould.hpp"
  9. #include "gbl\axnclientifcreator.h"
  10. #include "gbl\AxnClientIFCreator.h"
  11. #include "gbl\libclientrecv.h"
  12. #include "gbl\axcs_flrad_enum.h"
  13. #include <queue>
  14. #include <sstream>
  15. #include <vector>
  16. #include "Base64.h"
  17. #include "SystemLogger.h"
  18. #define GEN_SiemensSalmon_CMD_LEN 64
  19. #define GEN_SiemensSalmon_FUN_LEN 12
  20. #define VALUEMAX 100
  21. #define FDC_MESSAGE_NUM (18) //FDC功能报文的个数
  22. #define XCS_MESSAGE_NUM (60) //XCS需要解析报文的个数
  23. #define Clientmode (0x01) /* mode */
  24. #define Clienttarget (0xF0) //XCU报文节点
  25. #define Clientgroup_index (0x01) //报文直接发送
  26. #define Clientsender (0xF3) //FLC发送节点,在这里指DROC节点
  27. #define ClientPMS (0x61) //PMS节点
  28. #define SFServer (0x65) //PMS节点
  29. #define Gentarget (0x50) //切换工作模式的目标节点
  30. #define TUI_IFtarget (0x5D) //TUI报文节点(Patient Size)
  31. #define TUItarget (0x5A) //TUI报文节点(Patient Name/ID)
  32. #define FDC_Controlsender (0xF4) //just test 临时测试使用
  33. //#define PAT_SIZE_SELECTION_ECOM (150) //Siemens 协议定义病人体型
  34. //系统信息
  35. #define ALLVERSIONIN (0) //All system information
  36. #define VERSIONINFOR_SOFTWARE (1) //Software Version Information
  37. #define HOSTPCID (2) //HostID
  38. #define SOFTWAREDONGLEID (3) //Software Dongle ID
  39. #define FREESPACEOFHARDDISK (4) //Free Space of Hard Disk
  40. #define FREESPACEOFMEMORY (5) //Free Space of Memory
  41. #define CONFIGFILEISSUE (6) //configuration file issue
  42. //软件版本信息
  43. #define VERSIONINFOR_SOFTWARE (1) //Software Version Information
  44. #define VERSIONINFOR_PIXRAD (2) //Pixrad Version Information
  45. #define VERSIONINFOR_VISUALIZOR (3) //Visualizor Version Information
  46. #define MODULENAME_SOFTWARE ("droc") //Software name
  47. #define MODULENAME_PIXRAD ("Pixrad") //Pixrad Version name
  48. #define MODULENAME_VISUALIZOR ("Visualizor") //Visualizor Version name
  49. #ifdef CCOSDEVGENDEMO_EXPORTS
  50. #define _CCOSDEVGENDEMO_API __declspec(dllexport)
  51. #else
  52. #define _CCOSDEVGENDEMO_API __declspec(dllimport)
  53. #endif
  54. namespace CCOS::Dev::Detail::Generator
  55. {
  56. static const int TIMEOUTVALUE = 100;
  57. //-----------------------------------------------------------------------------
  58. // SMZ Salmon Device
  59. //-----------------------------------------------------------------------------
  60. namespace nDev = CCOS::Dev;
  61. namespace DevDAP = CCOS::Dev::Detail::DAP;
  62. namespace DevUIClient = CCOS::Dev::Detail::UIClient;
  63. namespace DevFPDClient = CCOS::Dev::Detail::Detector;
  64. namespace DevCollimator = CCOS::Dev::Detail::Collimator;
  65. class _CCOSDEVGENDEMO_API SMZDevice : public IODeviceDetail,public GeneratorMould, public DevUIClient::UIClientMould,public DevCollimator::ColliamtorMould/*,public DevFPDClient::CFPDCommunicateWithOtherDevice*/
  66. {
  67. using super = IODeviceDetail;
  68. using superGen = GeneratorMould;
  69. using superUIClient = UIClientMould;
  70. using superCollimatorClient = ColliamtorMould;
  71. //using superFPDClient = CFPDCommunicateWithOtherDevice;
  72. public:
  73. SMZDevice (std::shared_ptr <IOEventCenter> center, string ConfigPath);
  74. ~SMZDevice ();
  75. virtual std::string GetGUID() const override;
  76. virtual bool Prepare() override;
  77. acs_obj_header_t m_stGenCommand; //the telegram header
  78. axn_byte* m_pBuffer;
  79. CAxnClientIF* m_pAxnClient; //the pointer to the Axn Client
  80. CRITICAL_SECTION m_csXCUData;
  81. deque<axn_byte*> m_sCallbackData;
  82. APRpram AprParamBackup;
  83. string m_strConfigPath;
  84. ResDataObject m_GenConfig;
  85. void* m_pGenNotify;
  86. void* m_pGenDataDealNotify;
  87. HANDLE m_hBeginConnect;
  88. HANDLE m_hConnection;
  89. HANDLE m_hXCUToggleEvent;
  90. HANDLE m_hXCUDataRevThread; //XCU数据接收线程
  91. HANDLE m_hXCUDataRevEvent; //XCU接收线程
  92. HANDLE m_hXCUDataRevExitEvent; //退出XCU接收线程
  93. HANDLE m_hXCUDataThread; //XCU数据处理线程
  94. HANDLE m_hXCUDataEvent; //XCU数据处理事件
  95. HANDLE m_hXCUDataExitEvent; //退出XCU数据处理线程
  96. HANDLE m_hFDCDataRevThread; //FDC数据接收线程
  97. HANDLE m_hFDCDataRevEvent; //FDC接收线程
  98. HANDLE m_hFDCDataRevExitEvent; //退出FDC接收线程
  99. HANDLE m_hFDCDataDealThread; //FDC数据处理线程
  100. HANDLE m_hFDCDataDealEvent; //FDC数据处理事件
  101. HANDLE m_hFDCDataDealExitEvent; //FDC退出数据处理线程
  102. HANDLE m_hOGPWorkThread; //workThread instead of Timer
  103. HANDLE m_hGenSelectOGPEvent; //select OGP
  104. HANDLE m_hWaitForDummyThread; //workThread instead of Timer
  105. HANDLE m_hDUMMYEvent; //check Dummy
  106. HANDLE m_hWaitForDapThread; //workThread instead of Timer
  107. HANDLE m_hWaitForDapEvent; //check Dummy
  108. ACS_WORD m_wHeaderLength; //Length of the telegram header.
  109. bool m_bExited;
  110. bool m_bExitXCUThread;
  111. bool m_bIdentStatus;
  112. bool m_bReGetTurnOn; //20171012 recover the communication with XCU
  113. bool m_bCalibMode; //校正模式
  114. bool m_bSelectORG; //选择OGP view
  115. bool m_bExposureStatus; //曝光过程
  116. bool m_bInExam; //是否在检查界面
  117. bool m_bSetAPR; //设置APR参数
  118. bool m_bGetIGENANZ; //m_bGetIGENANZ,可以设置enable指令
  119. bool m_bSetEnable; //设置Enable
  120. int m_nStatus;
  121. int m_nLostConnectNumber; //XCU节点断线次数
  122. int m_nTimeoutCount; //XCU节点超时次数 配置文件
  123. int m_nCurrentViewNumber;
  124. int m_nTargetViewNumber;
  125. int m_nLastErrorCount; //记录上次关机时记录的Error数目;
  126. int m_nErrorCount; //记录当前的Error数目;
  127. int m_nSettingWS;
  128. int m_bGenService; //在服务模式下,当处于Exam界面时,需要在设置APR时,需要同时设置到PMS中; True:是; False:不是
  129. int m_nGenSTMode; //当前所处的模式(set the mode of the system)目前仅判断是否为ACS_SERVICE(2)
  130. int m_nScreenSaver; //记录屏保状态
  131. int m_nIdfrstatus; //记录当前系统状态
  132. int m_nDAPUnit; //DAP unit 0:uGym2,1:mGycm2
  133. int m_nSetViewNumber; //预设View值
  134. int m_nSelectOGPWaitingTime; //Select OGP time; ms
  135. int m_nAPRCommandSynFlag; //0,nothing, 1, Slect Org, 2 APR command request arrive(from XCS) 3, APR command arrive,
  136. int m_nBackup_Restre_Identifier; //(backup or restore) Identifier of data transfer
  137. int m_nTUICOMMANDSENDWAITTIME;
  138. vector<int> g_KV_List;
  139. vector<int> g_MAS_List;
  140. vector<int> g_MS_List;
  141. vector<int> g_AECDensity_List;
  142. vector<int> g_AECDOSE_List;
  143. vector<int> g_AECFILM_List;
  144. vector<int> g_FILTER_List;
  145. ResDataObject* m_KVList;
  146. ResDataObject* m_MASList;
  147. float m_fKVmax;
  148. float m_fKVmin;
  149. float m_fMASmax;
  150. float m_fMASmin;
  151. float m_fMSmax;
  152. float m_fMSmin;
  153. float m_fAECDensitymax;
  154. float m_fAECDensitymin;
  155. float m_fAECDOSEmax;
  156. float m_fAECDOSEmin;
  157. float m_fAECFILMmax;
  158. float m_fAECFILMmin;
  159. float m_fFILTERmax;
  160. float m_fFILTERmin;
  161. string m_strPanelSN;
  162. bool m_bAutoHandSwitch; //校正下 自动手闸
  163. ACS_DWORD m_nExposureIndex; //曝光次数
  164. //=======================================与FDC 通讯相关参数================================================================
  165. acs_obj_header_t m_stGenCommandFDC; //the telegram header for PMS
  166. CAxnClientIF* m_pFDCAxnClient;
  167. axn_byte* m_pFDCBuffer;
  168. deque<axn_byte*> m_sFDCCallbackData;
  169. CRITICAL_SECTION m_csFDCData;
  170. HANDLE m_hFDCToggleEvent;
  171. HANDLE m_hFDCDataThread;
  172. HANDLE m_hFDCDataEvent;
  173. void* m_pFDCNotify;
  174. void* m_pFDCDataDealNotify;
  175. bool m_bFDCIdentStatus;
  176. bool m_bExitFDCThread;
  177. int m_nFDCLostConnectNumber; //FDC节点断线次数
  178. int m_nFDCTimeoutCount; //FDC节点超时次数 配置文件
  179. DWORD m_tmDetectorStart; //探测器开窗时间
  180. unsigned int m_nXwindowTime; //从开窗到允许曝光之间间隔时间 默认100ms
  181. HANDLE m_hExposureThread;
  182. DWORD m_ExposureThreadID;
  183. static DWORD WINAPI ExposureThread(LPVOID pParam);
  184. HANDLE m_hEventExposure;
  185. HANDLE m_hEventExitExposureThread;
  186. HANDLE m_hExposureEventArray[2];
  187. bool m_bAlreadyExposure;
  188. //==============================================公共参数================================================================
  189. CRITICAL_SECTION m_csStatus;
  190. private:
  191. std::unique_ptr<DevDAP::DOSEMould> m_DAP;
  192. std::unique_ptr<nsDetail::MSGUnit> m_MSGUnit;
  193. //std::unique_ptr<DevUIClient::UIClientMould> m_UIClientUnit;
  194. std::unique_ptr<DevFPDClient::CFPDCommunicateWithOtherDevice > m_FPDGUnit;
  195. // class CGenSiemensSalmon_Dose* m_pGenDose;
  196. // class CGenSiemensSalmon_FPDCommunicatie* m_pFPDCommunication;
  197. // class CGenSiemensSalmon_DAP* m_pGenSiemensSalmon_DAP;
  198. // class CGenSiemensSalmon_UIClientUnitLogic* m_pGenSiemensSalmon_UI;
  199. // class CGenSiemensSalmon_Mech* m_pGenSiemensSalmon_Mech;
  200. // class CGenSiemensSalmon_Battery* m_pGenSiemensSalmon_Battery;
  201. private:
  202. void Register();
  203. public:
  204. virtual RET_STATUS IncKV() override;
  205. virtual RET_STATUS DecKV() override;
  206. virtual RET_STATUS SetKV(float value) override;
  207. virtual RET_STATUS IncMA() override;
  208. virtual RET_STATUS DecMA() override;
  209. virtual RET_STATUS SetMA(float value) override;
  210. virtual RET_STATUS IncMS() override;
  211. virtual RET_STATUS DecMS() override;
  212. virtual RET_STATUS SetMS(float value) override;
  213. virtual RET_STATUS IncMAS() override;
  214. virtual RET_STATUS DecMAS() override;
  215. virtual RET_STATUS SetMAS(float value) override;
  216. virtual RET_STATUS SetTechmode(int value) override;
  217. virtual RET_STATUS SetFocus(int value) override;
  218. virtual RET_STATUS SetAECDensity(int value) override;
  219. virtual RET_STATUS SetAECField(int value) override;
  220. virtual RET_STATUS SetAECFilm(int value) override;
  221. virtual RET_STATUS SetWS(const std::string value) override;
  222. virtual RET_STATUS SetAPR(const _tAPRArgs& t) override;
  223. virtual RET_STATUS QueryHE(int& value) override;
  224. virtual RET_STATUS QueryPostKV(float& value) override;
  225. virtual RET_STATUS QueryPostMA(float& value) override;
  226. virtual RET_STATUS QueryPostMS(float& value) override;
  227. virtual RET_STATUS QueryPostMAS(float& value) override;
  228. virtual RET_STATUS SetGenSynState(int value) override;
  229. virtual RET_STATUS SetGenState(int value) override;
  230. virtual RET_STATUS SetExpEnable() override;
  231. virtual RET_STATUS SetExpDisable()override;
  232. virtual RET_STATUS Reset()override;
  233. virtual RET_STATUS SetExpMode(std::string value) override;
  234. virtual RET_STATUS SetFrameRate(FLOAT frameRate) override;
  235. virtual RET_STATUS SetFLFMode(std::string value) override;
  236. virtual RET_STATUS SetEXAMMode(std::string value) override;
  237. virtual RET_STATUS SetHET(); //模拟测试热容量
  238. virtual RET_STATUS SetSHO(bool state);//设置检查名称是否正确
  239. virtual RET_STATUS SetSTA(int state);//设置软件状态
  240. virtual RET_STATUS SetPIM(const char* viewname);//设置当前view名称到TUI
  241. virtual RET_STATUS SetSSI(const char* key, const char* value);//设置系统信息
  242. virtual RET_STATUS SetSMV(const char* key, const char* value);//设置组件版本信息
  243. virtual RET_STATUS SetCFM(const char* key, const char* value);//设置处理配置文件结果
  244. virtual RET_STATUS SetBRM(int state);//设置backup结果
  245. virtual RET_STATUS SetERA(int state);//检查最后错误数目
  246. virtual RET_STATUS SetPNS(int state);//病人属性
  247. virtual RET_STATUS SetScreenLockState(int state);//1锁屏,0解锁
  248. virtual RET_STATUS SetFDSerialNumber(const char* key, const char* value);//设置处理配置文件结果
  249. virtual RET_STATUS SetUIDoing(void);//设置界面操作
  250. virtual RET_STATUS SetCollimatorSize(unsigned short xsize, unsigned short ysize);
  251. virtual RET_STATUS SetCollimatorSID(unsigned short sid);
  252. virtual RET_STATUS SetCollimatorFilter(unsigned short pParams);
  253. virtual RET_STATUS SetCollimatorAngle(float pParams);
  254. virtual RET_STATUS SetCollimatorMode(unsigned short pParams);
  255. virtual RET_STATUS SetCollimatorLight(unsigned short pParams);
  256. RET_STATUS JSSetFPDCalibrationStatus(std::string in, std::string& out);
  257. RET_STATUS JSSetPanelSN(std::string in, std::string& out);
  258. RET_STATUS JSSendFPDError(std::string in, std::string& out);
  259. RET_STATUS JSClearFPDError(std::string in, std::string& out);
  260. RET_STATUS JSSendFPDWarn(std::string in, std::string& out);
  261. RET_STATUS JSSendFPDStatus(std::string in, std::string& out);
  262. RET_STATUS JSFPDXWindowOpen(std::string in, std::string& out);
  263. RET_STATUS Clear_DAP();
  264. RET_STATUS GetValue_DAP(float& value);
  265. RET_STATUS EnterExam();
  266. RET_STATUS ExitExam();
  267. RET_STATUS RefreshParameterList(const char* ParamType, float* List, int ListCount, float maxvalue, float minvalue);
  268. RET_STATUS AuditMessage(const char* strTime, const char* strMessage); //Send AuditMessage
  269. //=====================================================XCU实现================================================================================
  270. /////*********************************************************************************
  271. //函数名称:SerialPortOpen
  272. //功能描述:建立通讯(AXIM 与FDC)
  273. //修改记录:
  274. //2021-04-20 创建
  275. //*******************************************************************************/
  276. bool SerialPortOpen();
  277. ///*********************************************************************************
  278. //函数名称:SerialPortClose
  279. //功能描述:关闭通讯(AXIM 与FDC)
  280. //修改记录:
  281. //2021-04-20 创建
  282. //*******************************************************************************/
  283. bool SerialPortClose();
  284. ///*********************************************************************************
  285. //函数名称:ConnectXCS
  286. //功能描述:连接XCS服务器
  287. //修改记录:
  288. //2021-04-20 创建
  289. //*******************************************************************************/
  290. bool ConnectXCS(void);
  291. ///*********************************************************************************
  292. //函数名称:DisconnectAxn
  293. //功能描述:断开XCS服务器
  294. //修改记录:
  295. //2021-04-20 创建
  296. //*******************************************************************************/
  297. void DisconnectAxn();
  298. ///*********************************************************************************
  299. //函数名称:XCUDataThread
  300. //功能描述: FLC报文接收线程函数
  301. //修改记录:
  302. //2021-04-20 创建
  303. //*******************************************************************************/
  304. static DWORD __stdcall ReveiveXCUData(LPVOID pParam);
  305. ///*********************************************************************************
  306. //函数名称:XCUDataThread
  307. //功能描述: FLC报文接收线程函数
  308. //修改记录:
  309. //2021-04-20 创建
  310. //*******************************************************************************/
  311. static DWORD __stdcall XCUDataThread(LPVOID pParam);
  312. /*********************************************************************************
  313. 函数名称:SendList
  314. 功能描述:设置DROC端需要从SCU端接收的报文清单
  315. 修改记录:
  316. 2021-04-22 创建
  317. *******************************************************************************/
  318. bool SendList(void);
  319. /*********************************************************************************
  320. 函数名称:SendiISTWERTE
  321. 功能描述:设置ISTWERTE状态-- 初始化流程
  322. 修改记录:
  323. 2021-04-20 创建
  324. *******************************************************************************/
  325. bool SendiISTWERTE(void);
  326. //*********************************************************************************
  327. //函数名称:SendTelegramLog
  328. //功能描述: 设置SendTelegramLog
  329. //修改记录:
  330. //2017-06-26 创建
  331. //*******************************************************************************/
  332. //void SendTelegramLog(const char* strTelegramKey, const char* strTelegramLog = "", int nMode = 1, const char* strTelegramType = "Telegram");
  333. void SendTelegramLog(const char* strTelegramKey, const char* strTelegramLog = "", int nSender = 0xF0, int nMode = 1, int strTelegramType = SYS_LOG_LEVEL_Telegram, const char* nCode = "");
  334. //*********************************************************************************
  335. //函数名称:SendIdent
  336. //功能描述:设置与XCU交互的第一条报文
  337. //
  338. //修改记录:
  339. //2015-04-20 创建
  340. //*******************************************************************************/
  341. bool SendIdent(void);
  342. ///*********************************************************************************
  343. //函数名称:SendDate
  344. //功能描述:设置当前时间到XCU端,保持时间同步
  345. //修改记录:
  346. //2021-04-22 创建
  347. //*******************************************************************************/
  348. bool SendDate(void);
  349. ///*********************************************************************************
  350. //函数名称:SendErrorLog
  351. //功能描述:设置当前DROC保存的错误个数到XCU端
  352. //修改记录:
  353. //2021-04-21 创建
  354. //*******************************************************************************/
  355. bool SendErrorLog(void);
  356. ///*********************************************************************************
  357. //函数名称:QueryExposureNumber
  358. //功能描述: 查询当前曝光的次数(ASERVBETRIEB )
  359. //修改记录:
  360. //2021-04-20 创建
  361. //*******************************************************************************/
  362. bool QueryExposureNumber();
  363. ///*********************************************************************************
  364. //函数名称:SendIfeStatus
  365. //功能描述:设置组件状态
  366. //修改记录:
  367. //2021-04-20 创建
  368. //*******************************************************************************/
  369. bool SendIfeStatus(int IfStatusValue);
  370. ///*********************************************************************************
  371. //函数名称:SetSH_Mode
  372. //功能描述: 返回SH_mode报文,对应ST_mode
  373. //修改记录:
  374. //2021-04-23 创建
  375. //*******************************************************************************/
  376. bool SetSH_Mode(int nMode);
  377. ///*********************************************************************************
  378. //函数名称:SendIdfrnahbed
  379. //功能描述:对iDfrBed报文的确认
  380. //修改记录:
  381. //2021-04-20 创建
  382. //*******************************************************************************/
  383. bool SendIdfrnahbed(int nCode, int nData);
  384. ///*********************************************************************************
  385. //函数名称:SendAdjust
  386. //功能描述:发送AP的读写结果到PMS
  387. //修改记录:
  388. //2021-04-23 创建
  389. //*******************************************************************************/
  390. bool SendAdjust(int);
  391. ///*********************************************************************************
  392. //函数名称:SetSystemStatusInformation
  393. //功能描述:设置当前软件系统的状态信息
  394. //参数描述:
  395. //nStatusIndex:
  396. //VERSIONINFOR_SOFTWARE (1) //Software Version Information
  397. //HOSTID (2) //HostID
  398. //SOFTWAREDONGLEID (3) //Software Dongle ID
  399. //FREESPACEOFHARDDISK (4) //Free Space of Hard Disk
  400. //FREESPACEOFMEMORY (5) //Free Space of Memory
  401. //CONFIGFILEISSUE (6) //configuration file issue
  402. //修改记录:
  403. //2021-04-23 创建
  404. //*******************************************************************************/
  405. bool SetSystemStatusInformation(int nStatusIndex, const char* strInforint, ACS_ENUM nDealStatus = ACS_DIAG_COMPLETED);
  406. ///*********************************************************************************
  407. //函数名称:SelectORG
  408. //功能描述:设置当前UI端选中的view到UI端
  409. //修改记录:
  410. //2021-04-22 创建
  411. //*******************************************************************************/
  412. bool SelectORG(int nCode, int nParam, int nNeedOGP = true);
  413. ///*********************************************************************************
  414. //函数名称:TurnOffRequest
  415. //功能描述: 设置FLC关闭请求确认到XCU端
  416. //修改记录:
  417. //2015-04-20 创建
  418. //*******************************************************************************/
  419. void TurnOffRequest();
  420. ///*********************************************************************************
  421. //函数名称:TimeOutWaring
  422. //功能描述: 连接超时判断
  423. //修改记录:
  424. //2021-04-20 创建
  425. //*******************************************************************************/
  426. bool TimeOutWaring(void);
  427. /*********************************************************************************
  428. 函数名称:SendIdfrStatus
  429. 功能描述:设置当前系统曝光状态到XCU端
  430. 修改记录:
  431. 2015-04-20 创建
  432. *******************************************************************************/
  433. bool SendIdfrStatus(int nDRStatus, int nRFStatus, int bSaveParm = 1);
  434. ///*********************************************************************************
  435. //函数名称:EnableExposure
  436. //功能描述:接收到DROC允许曝光消息,通知XCU
  437. //修改记录:
  438. //2015-04-20 创建
  439. //2017-01-04 改进代码风格
  440. //*******************************************************************************/
  441. bool EnableExposure(int nEnable); //enable the exposure function; 0:disable; 1:enable
  442. ///*********************************************************************************
  443. //函数名称:mb2wc
  444. //功能描述: 字符转换函数:宽字符转多字节
  445. //修改记录:
  446. //2021-04-20 创建
  447. //*******************************************************************************/
  448. string wc2mb(const wchar_t* pwcstr);
  449. ///*********************************************************************************
  450. //函数名称:SwitchLogLevel
  451. //功能描述:切换日志属性类型
  452. //对应需求:
  453. //修改记录:
  454. //2021-4-23 创建
  455. //*******************************************************************************/
  456. string SwitchCategory2Str(ACS_ENUM nCatrgoryNumber);
  457. int SwitchCategory2ECOM(ACS_ENUM nCatrgoryNumber); //将AXIM的错误属性转换成IS属性
  458. ///*********************************************************************************
  459. //函数名称:SendTUIButton
  460. //功能描述:设置TUI上Button按钮状态
  461. //修改记录:
  462. //2021-04-25 创建
  463. //*******************************************************************************/
  464. bool SendTUIButtonStatus(int nButtonType, int nStatus = NORMAL);
  465. ///*********************************************************************************
  466. //函数名称:SetPatientStatus
  467. //功能描述:进入检查时通知XCU进入检查;退出时,通知XCU退出检查;
  468. //nExamStatus:
  469. ///* ACS_NO_INFORMATION 0 */
  470. ///* ACS_EMERGENCY_PAT 1 patient registered in an emergency mode */
  471. ///* ACS_PAT_EXAM 2 patient has been registered for examination */
  472. ///* ACS_PAT_CLOSED 3 patient has been closed */
  473. ///* ACS_PAT_SERVICE 4 service patient has been opened for examination
  474. //修改记录:
  475. //2021-04-25 创建 bug7206
  476. //*******************************************************************************/
  477. bool SetPatientStatus(int nPatientStatus);
  478. ///*********************************************************************************
  479. //函数名称:WSGen2UI
  480. //功能描述:切换workstations从UI到XCU,用于映射对应的workstation值
  481. //修改记录:
  482. //2021-04-20 创建
  483. //*******************************************************************************/
  484. void WSGen2UI(int nGenWS, int& nUIWS);
  485. /*********************************************************************************
  486. 函数名称:OGPWorkThread
  487. 功能描述: 等待OGP(VIEW)确认返回线程
  488. 修改记录:
  489. 2021-04-23 创建
  490. *******************************************************************************/
  491. static DWORD __stdcall OGPWorkThread(LPVOID pParam);
  492. ///*********************************************************************************
  493. //函数名称:TurnOffFDCRequest
  494. //功能描述: 确认探测器Turnoff请求
  495. //修改记录:
  496. //2021-04-25 创建
  497. //*******************************************************************************/
  498. void TurnOffFDCRequest();
  499. ///*********************************************************************************
  500. //函数名称:SendIasuStatus
  501. //功能描述:设置当前系统状态到XCU端
  502. //修改记录:
  503. //2021-04-20 创建
  504. //*******************************************************************************/
  505. bool SendIasuStatus(int nDRStatus, int nRFStatus);
  506. /*********************************************************************************
  507. 函数名称:SendSAUSLBED
  508. 功能描述:设置手闸状态模式(主要设置到自动校正)
  509. 对应需求:IS_Service_xrayrelease
  510. 修改记录:
  511. 2015-04-20 创建
  512. 2017-01-04 改进代码风格
  513. *******************************************************************************/
  514. bool SendSAUSLBED(bool bEnable);
  515. ///*********************************************************************************
  516. //函数名称:SendIDETEKTORSTATUS
  517. //功能描述: 设置探测器Ready状态到XCU
  518. //修改记录:
  519. //2021-04-20 创建
  520. //*******************************************************************************/
  521. bool SendIDETEKTORSTATUS(int nDetectorStatus);//Detector ready to generator 20150929
  522. ///*********************************************************************************
  523. //函数名称:SetProgramList
  524. //功能描述:设置view到XCU端
  525. //修改记录:
  526. //2021-04-20 创建
  527. //*******************************************************************************/
  528. bool SetProgramList(int nCount, int nOrganIndex, string& OrginName, int nDefaultWS);
  529. ///*********************************************************************************
  530. //函数名称:SetOrgNameStatus
  531. //功能描述:设置OrgName状态
  532. //修改记录:
  533. //2021-04-20 创建
  534. //*******************************************************************************/
  535. bool SetOrgNameStatus(float fOrgStatus);
  536. ///*********************************************************************************
  537. //函数名称:SetVersionInfor
  538. //功能描述:设置版本信息
  539. //参数描述:
  540. //nModuleIndex:
  541. //VERSIONINFOR_VISUALIZOR (1)
  542. //VERSIONINFOR_PIXRAD (2)
  543. //VERSIONINFOR_SOFTWARE (3)
  544. //修改记录:
  545. //2021-04-25 创建
  546. //*******************************************************************************/
  547. bool SetVersionInfor(const char* strModuleName, const char* strVersionInfor);
  548. ///*********************************************************************************
  549. //函数名称:SetSH_DATA_TRANS
  550. //功能描述:设置配置文件Backup/Resort状态
  551. //修改记录:
  552. //2021-04-25 创建
  553. //*******************************************************************************/
  554. bool SetSH_DATA_TRANS(float fResult,int nIdent);
  555. /*********************************************************************************
  556. 函数名称:SetSatetySwitch
  557. 功能描述:设置当前工作模式(主要设置到自动校正)
  558. 修改记录:
  559. 2021-04-22 创建
  560. *******************************************************************************/
  561. bool SetSatetySwitch();
  562. /*********************************************************************************
  563. 函数名称:SendIDFRABSCHALTUNG
  564. 功能描述:通知SCU当前view结束
  565. 修改记录:
  566. 2021-04-22 创建
  567. *******************************************************************************/
  568. bool SendIDFRABSCHALTUNG();
  569. /*********************************************************************************
  570. 函数名称:GetSwitchState
  571. 功能描述:获取当前工作模式
  572. 修改记录:
  573. 2021-04-22 创建
  574. *******************************************************************************/
  575. bool GetSwitchState();//TODO: AutoCalibration
  576. ///*********************************************************************************
  577. //函数名称:SetErrorCode
  578. //功能描述:设置ErrorCode
  579. //修改记录:
  580. //2021-04-20 创建
  581. //*******************************************************************************/
  582. bool SetFDErrorCode(int nErrorCode, int nErrorType, string& strSN);
  583. ///*********************************************************************************
  584. //函数名称:SendPatientSize
  585. //功能描述: 设置病人体型到XCU
  586. //修改记录:
  587. //2021-04-25 创建
  588. //*******************************************************************************/
  589. bool SendPatientSize(int nPatientSize); //set Patient Size to XCU
  590. ///*********************************************************************************
  591. //函数名称:SendPositionImageName
  592. //功能描述: 设置当前选中的View的缩略图名称到TUI
  593. //修改记录:
  594. //2021-04-25 创建
  595. //*******************************************************************************/
  596. bool SendPositionImageName(string& strPatientPositionImageName); //Position Image Name
  597. ///*********************************************************************************
  598. //函数名称:SendPatientInfor
  599. //功能描述: 设置病人名及病人ID
  600. //修改记录:
  601. //2021-04-25 创建
  602. //*******************************************************************************/
  603. bool SendPatientInfor(wstring& wstrPatientName, wstring& wstrPatientID); //set Patient Information to XCU
  604. ///*********************************************************************************
  605. //函数名称:SendFPDSerialNumber
  606. //功能描述: 设置探测器序列号到PMS端
  607. //修改记录:
  608. //2021-04-25 创建
  609. //*******************************************************************************/
  610. bool SendFPDSerialNumber(int nFPDType, const char* strFPDNumber);
  611. ///*********************************************************************************
  612. //函数名称:TubeHeatTest
  613. //功能描述: 模拟测试球管热容量
  614. //修改记录:
  615. //2021-04-25 创建
  616. //*******************************************************************************/
  617. bool TubeHeatTest(void); //TubeHeat Test
  618. ///*********************************************************************************
  619. //函数名称:SetSHCONFIG
  620. //功能描述:配置文件结果处理,对应ST_CONFIG
  621. //修改记录:
  622. //2021-04-25 创建
  623. //*******************************************************************************/
  624. bool SetSHCONFIG(float fResult);
  625. ///*********************************************************************************
  626. //函数名称:SetPanelRotate
  627. //功能描述:设置探测器旋转方向
  628. //修改记录:
  629. //2021-04-25 创建
  630. //*******************************************************************************/
  631. bool SetPanelRotate(int nPanelRotate);
  632. ///*********************************************************************************
  633. //函数名称:SetST_SYSTEM_STATE
  634. //功能描述:设置ST_SYSTEM_STATE报文
  635. //修改记录:
  636. //2021-07-21 创建
  637. //*******************************************************************************/
  638. bool SetST_SYSTEM_STATE(int nStatus);
  639. ///*********************************************************************************
  640. //函数名称:SetScreenSaver
  641. //功能描述:控制锁屏功能(1:锁屏启动;0:锁屏关闭)
  642. //对应需求:
  643. //修改记录:
  644. //2021-4-25 创建
  645. //*******************************************************************************/
  646. bool SetScreenSaver(int nScreenSaver);
  647. ///*********************************************************************************
  648. //函数名称:GetLastErrorAmount
  649. //功能描述:获取当前的错误数量
  650. //对应需求:
  651. //修改记录:
  652. //2021-4-25 创建
  653. //*******************************************************************************/
  654. bool GetLastErrorAmount(void);
  655. ///*********************************************************************************
  656. //函数名称:SendOrthoLocalParam
  657. //功能描述:本地设置拼接协议,包括曝光参数及位置信息
  658. //修改记录:
  659. //2021-4-21 创建
  660. //*******************************************************************************/
  661. bool SendOrthoLocalParam(int nWS, float fKV, float fMA, float fMS, float fMAS, int nFO, int nET, int nAECFieldSel, int nAECFilmSel,
  662. float fAECDensity, ACS_BYTE nTarget = Clienttarget,float fCollimatorWidth = 43.0f, float fCollimatorHeight = 43.0f, float fAECDose = 2.5f, int nFilter = 0,
  663. 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,
  664. int nPatientSize = PAT_THN_M, int nOperationMode = OPM_NORMAL, int nAlignmentMode = ACS_ALIGNMENT_TOP,
  665. int nTracking = ACS_TRACK_NOT_ACTIVE, int nSidTracking = ACS_TRACK_NOT_ACTIVE);
  666. ///*********************************************************************************
  667. //函数名称:SendGenData
  668. //功能描述:调节参数指令(增加或减少)
  669. //修改记录:
  670. //2021-04-20 创建
  671. //*******************************************************************************/
  672. bool SendGenData(int interfaceType, int AdjustMode, int nFunctionID, int nGenData, int nUnitChange = 0);
  673. ///*********************************************************************************
  674. //函数名称:SendsBEDSP
  675. //功能描述:调节参数指令(增加或减少)for Dose
  676. //修改记录:
  677. //2021-04-20 创建
  678. //*******************************************************************************/
  679. bool SendsBEDSP(int interfaceType, int AdjustMode, int nFunctionID, int nGenData); //adjust parameter
  680. ///*********************************************************************************
  681. //函数名称:SetTubeLoad
  682. //功能描述:设置TubeLoad参数
  683. //修改记录:
  684. //2021-04-20 创建
  685. //*******************************************************************************/
  686. bool SetTubeLoad(int nTubeLoad);
  687. ///*********************************************************************************
  688. //函数名称:SetFilter
  689. //功能描述:设置Filter参数
  690. //修改记录:
  691. //2021-04-21 创建
  692. //*******************************************************************************/
  693. bool SetFilter(int nFilterType);
  694. /*********************************************************************************
  695. 函数名称:WaitForDummyThread
  696. 功能描述: 等待Dummy线程
  697. 修改记录:
  698. 2021-04-23 创建
  699. *******************************************************************************/
  700. static DWORD __stdcall WaitForDummyThread(LPVOID pParam);
  701. /*********************************************************************************
  702. 函数名称:WaitForDapThread
  703. 功能描述: 等待DAP返回线程
  704. 修改记录:
  705. 2022-10-11 创建
  706. *******************************************************************************/
  707. static DWORD __stdcall WaitForDapThread(LPVOID pParam);
  708. //======================================================================================公用函数==========================================================================
  709. ///*********************************************************************************
  710. //函数名称:WSUI2TUI
  711. //功能描述:切换workstations从UI到XCU,用于映射对应的workstation值
  712. //修改记录:
  713. //20121-04-22 创建
  714. //*******************************************************************************/
  715. void WSUI2TUI(int nUIWS, int& nGenWS);
  716. ///*********************************************************************************
  717. //函数名称:mb2wc
  718. //功能描述: 字符转换函数
  719. //修改记录:
  720. //2021-04-20 创建
  721. //*******************************************************************************/
  722. wstring mb2wc(const char* pszStr);
  723. /*********************************************************************************
  724. 函数名称:DecodeBase64
  725. 功能描述:对收到的信息进行解码
  726. 修改记录:
  727. 2021-5-11 创建
  728. *******************************************************************************/
  729. void DecodeBase64(string strMessageIn, wstring& strMessageOut);
  730. wstring GetWString(vector<unsigned char>& listdata);
  731. /*********************************************************************************
  732. 函数名称:OrthoWSUI2Gen
  733. 功能描述:Ortho切换workstations从UI到XCU,用于映射对应的workstation值
  734. 修改记录:
  735. 2021-04-21 创建
  736. *******************************************************************************/
  737. void OrthoWSUI2Gen(int nUIWS, int& nGenWS);
  738. /*********************************************************************************
  739. 函数名称:SwitchGridFocusECOM2SIEMENSORTHO
  740. 功能描述:切换ORTHO GridType 从ECOM版本切换到siemens版本
  741. nECOMGridType:ECOM版本的Grid Type定义
  742. nWS:ECOM版本的workstations类型;
  743. 函数输出;输出Siemens版本的GridType;
  744. 修改记录:
  745. 2021-4-21 创建
  746. *******************************************************************************/
  747. int SwitchGridFocusECOM2SIEMENSORTHO(int nWS, int nECOMGridType);
  748. ///*********************************************************************************
  749. //函数名称:GetFacKvValue
  750. //功能描述:将设置的KV值映射到当前KV参数列表的位置
  751. //修改记录:
  752. //2021-04-20 创建
  753. //*******************************************************************************/
  754. int GetFacKvValue(int& nkv);
  755. ///*********************************************************************************
  756. //函数名称:GetFacmASValue
  757. //功能描述:将设置的MAS值映射到当前MA参数列表的位置
  758. //修改记录:
  759. //2021-04-20 创建
  760. //*******************************************************************************/
  761. int GetFacmAsValue(int& nmAs);
  762. ///*********************************************************************************
  763. //函数名称:GetFacmSValue
  764. //功能描述:将设置的MS值映射到当前MS参数列表的位置
  765. //修改记录:
  766. //2021-04-20 创建
  767. //*******************************************************************************/
  768. int GetFacmSValue(int& nms);
  769. ///*********************************************************************************
  770. //函数名称:GetFacDensityValue
  771. //功能描述:将设置的AECDensity值映射到当前AECDensity参数列表的位置
  772. //修改记录:
  773. //2021-04-20 创建
  774. //*******************************************************************************/
  775. int GetFacDensityValue(int& nDensity);
  776. ///*********************************************************************************
  777. //函数名称:GetFacAECDoseValue
  778. //功能描述:将设置的AECDOSE值映射到当前AECDOSE参数列表的位置
  779. //参数内容:实际值*100
  780. //修改记录:
  781. //2021-04-20 创建
  782. //*******************************************************************************/
  783. int GetFacAECDoseValue(int& nAECDose);
  784. ///*********************************************************************************
  785. //函数名称:GetFacFilterValue
  786. //功能描述:将设置的Filter值映射到当前Filter参数列表的位置
  787. //参数内容:实际值*10
  788. //修改记录:
  789. //2021-04-20 创建
  790. //*******************************************************************************/
  791. int GetFacFilterValue(int& nFilter);
  792. //======================================================================================XCU通讯报文处理==========================================================================
  793. ///*********************************************************************************
  794. //函数名称:CallbackXCU
  795. //功能描述:对XCU报文进行反馈处理
  796. //修改记录:
  797. //2021-4-20 创建
  798. //*******************************************************************************/
  799. bool CallbackXCU(const acs_obj_header_t* pCommand);
  800. ///*********************************************************************************
  801. //函数名称:CallbackTurnOn
  802. //功能描述:对TurnOn消息进行反馈处理
  803. //修改记录:
  804. //2021-4-20 创建
  805. //*******************************************************************************/
  806. bool CallbackTurnOn(ACS_BYTE* pCommand);
  807. ///*********************************************************************************
  808. //函数名称:CallBackTurnOff
  809. //功能描述: 解析当前关闭状态信息(turn off message)
  810. //修改记录:
  811. //2021-04-20 创建
  812. //*******************************************************************************/
  813. bool CallBackTurnOff(ACS_BYTE* pCommand); //code 20140312 for version of all component
  814. ///*********************************************************************************
  815. //函数名称:CallbackGenParam
  816. //功能描述: 解析当前系统的曝光参数
  817. //修改记录:
  818. //2021-04-20 创建
  819. //*******************************************************************************/
  820. int CallbackGenParam(ACS_BYTE* pCommand);
  821. ///*********************************************************************************
  822. //函数名称:CallbackIFILTERANZParam
  823. //功能描述: 解析现场的Filter信息
  824. //修改记录:
  825. //2021-04-20 创建
  826. //*******************************************************************************/
  827. bool CallbackIFILTERANZParam(ACS_BYTE* pCommand); //for filter
  828. ///*********************************************************************************
  829. //函数名称:CallbackErrorParam
  830. //功能描述: 解析错误信息,目前仅用作记录
  831. //修改记录:
  832. //2021-04-23 创建
  833. //*******************************************************************************/
  834. bool CallbackErrorParam(ACS_BYTE* pCommand);
  835. ///*********************************************************************************
  836. //函数名称:CallbackWorkstationFromXCU
  837. //功能描述: 解析当前workstation设置状态(是否成功,from XCU)
  838. //修改记录:
  839. //2021-04-20 创建
  840. //*******************************************************************************/
  841. bool CallbackWorkstationFromXCU(ACS_BYTE* pCommand); //for OGP
  842. ///*********************************************************************************
  843. //函数名称:CallbackAufnAusl
  844. //功能描述: 解析当前的手闸状态信息
  845. //修改记录:
  846. //2021-04-20 创建
  847. //*******************************************************************************/
  848. bool CallbackAufnAusl(ACS_BYTE* pCommand); //saufnausl_t1_tag
  849. ///*********************************************************************************
  850. //函数名称:CallbackSBILD
  851. //功能描述: image display on imaging system, sent from XCU to DFR or camera
  852. //修改记录:
  853. //2021-04-23 创建
  854. //*******************************************************************************/
  855. bool CallbackSBILD(ACS_BYTE* pCommand); //saufnausl_t1_tag
  856. /*********************************************************************************
  857. 函数名称:CallbackSORGANSELECT
  858. 功能描述: 解析当前SORGANSELECT报文,当前选中view
  859. 修改记录:
  860. 2021-04-20 创建
  861. *******************************************************************************/
  862. bool CallbackSORGANSELECT(ACS_BYTE* pCommand);
  863. ///*********************************************************************************
  864. //函数名称:CallBackShowList
  865. //功能描述: 解析当前的参数范围信息
  866. //修改记录:
  867. //2021-04-20 创建
  868. //*******************************************************************************/
  869. bool CallBackShowList(const ACS_BYTE* pCommand);
  870. ///*********************************************************************************
  871. //函数名称:CallbackGetField
  872. //功能描述: 解析AEC Field信息
  873. //修改记录:
  874. //2021-04-20 创建
  875. //*******************************************************************************/
  876. bool CallbackGetField(const ACS_BYTE* pCommand);
  877. ///*********************************************************************************
  878. //函数名称:CallbackPostGenParam
  879. //功能描述: 解析曝光Post参数
  880. //修改记录:
  881. //2021-04-20 创建
  882. //*******************************************************************************/
  883. int CallbackPostGenParam(ACS_BYTE* pCommand);
  884. ///*********************************************************************************
  885. //函数名称:CallBackIdrallganz2
  886. //功能描述: 解析错误信息,并发给UI进行显示
  887. //修改记录:
  888. //2021-04-23 创建
  889. //*******************************************************************************/
  890. bool CallBackIdrallganz2(const ACS_BYTE* pCommand);
  891. ///*********************************************************************************
  892. //函数名称:CallBackIfehleranz2
  893. //功能描述: 获取当前的错误信息,并发给UI进行显示
  894. //修改记录:
  895. //2021-04-23 创建
  896. //*******************************************************************************/
  897. bool CallBackIfehleranz2(const ACS_BYTE* pCommand);
  898. ///*********************************************************************************
  899. //函数名称:CallBackIINFOCOMP
  900. //功能描述: 收集当前组件的版本信息(collected SW/FW-versions of all components)
  901. //修改记录:
  902. //2021-04-23 创建
  903. //*******************************************************************************/
  904. bool CallBackIINFOCOMP(ACS_BYTE* pCommand); //code 20130903 for version of all component
  905. ///*********************************************************************************
  906. //函数名称:CallBackST_MODE
  907. //功能描述: 解析当前的工作模式(Use or service)
  908. //修改记录:
  909. //2021-04-23 创建
  910. //*******************************************************************************/
  911. bool CallBackST_MODE(ACS_BYTE* pCommand);
  912. ///*********************************************************************************
  913. //函数名称:CallBackSDFRNAHBED2
  914. //功能描述: 解析当前的病人信息(体型)
  915. //修改记录:
  916. //2021-04-21 创建
  917. //*******************************************************************************/
  918. bool CallBackSDFRNAHBED2(ACS_BYTE* pCommand);
  919. /*********************************************************************************
  920. 函数名称:CallBackST_ORGAN_PROG
  921. 功能描述: 返回当前使用的view名称
  922. 修改记录:
  923. 2021-04-23 创建
  924. *******************************************************************************/
  925. bool CallBackST_ORGAN_PROG(ACS_BYTE* pCommand);
  926. ///*********************************************************************************
  927. //函数名称:CallBackSRESETFEHLER
  928. //功能描述: reset当前DROC错误状态
  929. //修改记录:
  930. //2021-04-23 创建
  931. //*******************************************************************************/
  932. bool CallBackSRESETFEHLER(ACS_BYTE* pCommand); //reset error //此报文可能不会使用
  933. ///*********************************************************************************
  934. //函数名称:CallBackSID
  935. //功能描述: 解析SID信息
  936. //修改记录:
  937. //2015-04-20 创建
  938. //*******************************************************************************/
  939. bool CallBackSID(ACS_BYTE* pCommand); //receive SID "IFFA", unit: mm
  940. ///*********************************************************************************
  941. //函数名称:CallBackWorkStationFromTUI
  942. //功能描述:获取当前探测器对应的Workstation信息 from TUI
  943. //修改记录:
  944. //2021-04-20 创建
  945. //*******************************************************************************/
  946. bool CallBackWorkStationFromTUI(ACS_BYTE* pCommand); //receive System workstation
  947. ///*********************************************************************************
  948. //函数名称:CallBackCollimator
  949. //功能描述: 获取遮光器尺寸信息
  950. //修改记录:
  951. //2021-04-23 创建
  952. //*******************************************************************************/
  953. bool CallBackCollimator(ACS_BYTE* pCommand); //receive collimator "IBLENDEANZ"
  954. //
  955. ///*********************************************************************************
  956. //函数名称:CallBackGrid
  957. //功能描述: 获取滤线栅信息
  958. //修改记录:
  959. //2021-04-23 创建
  960. //*******************************************************************************/
  961. bool CallBackGrid(ACS_BYTE* pCommand); //receive Grid
  962. ///*********************************************************************************
  963. //函数名称:CallBackRQ_FDR_DATA
  964. //功能描述: 获取对应探测器的workstation信息
  965. //修改记录:
  966. //2023-04-23 创建
  967. //*******************************************************************************/
  968. bool CallBackRQ_FDR_DATA(ACS_BYTE* pCommand); //Request FPD serial Number
  969. /////*********************************************************************************
  970. //函数名称:CallBackAdjust
  971. //功能描述: PMS请求AP的读取或写入信息
  972. //修改记录:
  973. //2021-04-23 创建
  974. //*******************************************************************************/
  975. bool CallBackAdjust(ACS_BYTE* pCommand);
  976. ///*********************************************************************************
  977. //函数名称:CallBackIGGANZ2
  978. //功能描述: 获取遮光器平移和探测器旋转状态
  979. //修改记录:
  980. //2021-04-23 创建
  981. //*******************************************************************************/
  982. bool CallBackIGGANZ2(ACS_BYTE* pCommand);
  983. ///*********************************************************************************
  984. //函数名称:CallBackTubeHeat
  985. //功能描述: 获取当前设备热容量
  986. //修改记录:
  987. //2021-04-22 创建
  988. //*******************************************************************************/
  989. bool CallBackTubeHeat(ACS_BYTE* pCommand);
  990. ///*********************************************************************************
  991. //函数名称:CallBackSHDIAG
  992. //功能描述: 接受当前系统需要查询的内容
  993. //修改记录:
  994. //2021-04-23 创建
  995. //*******************************************************************************/
  996. bool CallBackSTDIAG(ACS_BYTE* pCommand);
  997. ///*********************************************************************************
  998. //函数名称:CallBackRQOBJECT
  999. //功能描述: 接受当前系统需要查询的版本内容
  1000. //修改记录:
  1001. //2021-04-23 创建
  1002. //*******************************************************************************/
  1003. bool CallBackRQOBJECT(ACS_BYTE* pCommand);
  1004. ///*********************************************************************************
  1005. //函数名称:CallBackDoorStatus
  1006. //功能描述: 解析门的开关状态
  1007. //修改记录:
  1008. //2021-04-23 创建
  1009. //*******************************************************************************/
  1010. bool CallBackDoorStatus(ACS_BYTE* pCommand); //System Status
  1011. ///*********************************************************************************
  1012. //函数名称:CallBackSTCONFIG
  1013. //功能描述: 获取并解析ST_CONFIG报文
  1014. //修改记录:
  1015. //2021-04-23 创建
  1016. //*******************************************************************************/
  1017. bool CallBackSTCONFIG(ACS_BYTE* pCommand);
  1018. ///*********************************************************************************
  1019. //函数名称:CallBackST_DATA_TRANS
  1020. //功能描述: 获取并解析ST_DATA_TRANS报文
  1021. //修改记录:
  1022. //2021-04-23 创建
  1023. //*******************************************************************************/
  1024. bool CallBackST_DATA_TRANS(ACS_BYTE* pCommand);
  1025. /*********************************************************************************
  1026. 函数名称:CallbackST_PWR_OFF
  1027. 功能描述:接收到关机报文
  1028. 参数:Full_image_size、image_size、overlap、Image number
  1029. 修改记录:
  1030. 2021-4-21 创建
  1031. *******************************************************************************/
  1032. bool CallbackST_PWR_OFF(ACS_BYTE* pCommand);
  1033. ///*********************************************************************************
  1034. //函数名称:CallBackSystemStatus
  1035. //功能描述: 获取当前PMS状态
  1036. //修改记录:
  1037. //2021-04-21 创建
  1038. //*******************************************************************************/
  1039. bool CallBackPMSSystemStatus(ACS_BYTE* pCommand);
  1040. ///*********************************************************************************
  1041. //函数名称:CallbackIXRAY
  1042. //功能描述:对IXRAY消息进行反馈处理
  1043. //修改记录:
  1044. //2021-10-16 创建
  1045. //*******************************************************************************/
  1046. bool CallbackIXRAY(ACS_BYTE* pCommand);
  1047. ///*********************************************************************************
  1048. //函数名称:CallBackIANLBEREIT
  1049. //功能描述: 解析发生器状态是否ready
  1050. //修改记录:
  1051. //2021-04-23 创建
  1052. //*******************************************************************************/
  1053. bool CallBackIANLBEREIT(ACS_BYTE* pCommand); //System Status
  1054. ///*********************************************************************************
  1055. //函数名称:CallbackIWATERVALACQ
  1056. //功能描述: 解析DAP报文(IWATERVALACQ)
  1057. //修改记录:
  1058. //2021-09-25 创建
  1059. //*******************************************************************************/
  1060. bool CallbackIWATERVALACQ(ACS_BYTE* pCommand);
  1061. ///*********************************************************************************
  1062. //函数名称:CallbackExposureNumber
  1063. //功能描述: 解析曝光的次数报文(ISERVBETRIEB)
  1064. //修改记录:
  1065. //2021-04-23 创建
  1066. //*******************************************************************************/
  1067. bool CallbackExposureNumber(ACS_BYTE* pCommand);
  1068. ///*********************************************************************************
  1069. //函数名称:CallBackSOD
  1070. //功能描述: 解析SOD信息
  1071. //修改记录:
  1072. //2021-04-23 创建
  1073. //*******************************************************************************/
  1074. bool CallBackSOD(ACS_BYTE* pCommand); //receive S0D "ISOD", unit: mm
  1075. ///*********************************************************************************
  1076. //函数名称:CallbackIACSS
  1077. //功能描述: 解析IACSS报文(硬裁剪条件)
  1078. //修改记录:
  1079. //2021-04-23 创建
  1080. //*******************************************************************************/
  1081. bool CallbackIACSS(ACS_BYTE* pCommand);
  1082. ///*********************************************************************************
  1083. //函数名称:CallBackSFANZLOESCHEN
  1084. //功能描述: 获取SFANZLOESCHEN报文,表示错误被清除
  1085. //修改记录:
  1086. //2021-04-23 创建
  1087. //*******************************************************************************/
  1088. bool CallBackSFANZLOESCHEN(ACS_BYTE* pCommand);
  1089. ///*********************************************************************************
  1090. //函数名称:CallbackIERWALLGANZ
  1091. //功能描述:对IERWALLGANZ消息进行反馈处理,获取在屏保状态下的按下手闸的状态,用于激活屏保登录框;
  1092. //修改记录:
  1093. //2021-4-23 创建
  1094. //*******************************************************************************/
  1095. bool CallbackIERWALLGANZ(ACS_BYTE* pCommand);
  1096. ///*********************************************************************************
  1097. //函数名称:CallBackSORTHO
  1098. //功能描述:接收到拼接图像信息
  1099. //参数:Full_image_size、image_size、overlap、Image number
  1100. //修改记录:
  1101. //2021-04-23 创建
  1102. //*******************************************************************************/
  1103. bool CallbackSORTHO(ACS_BYTE* pCommand);
  1104. ///*********************************************************************************
  1105. //函数名称:CallbackSH_STPAR_REP
  1106. //功能描述:接收到拼接图像信息
  1107. //参数:Full_image_size、image_size、overlap、Image number
  1108. //修改记录:
  1109. //2021-4-23 创建
  1110. //*******************************************************************************/
  1111. bool CallbackSH_STPAR_RFP(ACS_BYTE* pCommand);
  1112. //====================================================================================FDC 通讯报文处理======================================================================
  1113. /*********************************************************************************
  1114. 函数名称:SendListFDC
  1115. 功能描述:设置DROC端需要从PMS端接收的报文清单
  1116. 修改记录:
  1117. 2021-04-20 创建
  1118. *******************************************************************************/
  1119. bool SendListFDC(void);
  1120. /*********************************************************************************
  1121. 函数名称:SendIdentFDC
  1122. 功能描述: 设置PMS状态
  1123. 修改记录:
  1124. 2021-04-20 创建
  1125. *******************************************************************************/
  1126. bool SendIdentFDC(void);
  1127. ///*********************************************************************************
  1128. //函数名称:CallBackSHRA
  1129. //功能描述: 记录状态信息,仅为记录( confirm start/stop of xray,
  1130. //released by software and hands free movement controlled by software )
  1131. //修改记录:
  1132. //2021-04-20 创建
  1133. //*******************************************************************************/
  1134. bool CallBackSHRA(ACS_BYTE* pCommand);
  1135. //*******************************************************************************/
  1136. //函数名称:FDCDataThread
  1137. //功能描述:FDC数据处理线程
  1138. //修改记录:
  1139. //2021-04-20 创建
  1140. //*******************************************************************************/
  1141. //static DWORD __stdcall FDCDataThread(LPVOID pParam);
  1142. static DWORD __stdcall FDCDataThread(LPVOID pParam);
  1143. ///*********************************************************************************
  1144. //函数名称:FDCConnectXCS
  1145. //功能描述: FDC节点连接到XCU节点
  1146. //修改记录:
  1147. //2021-04-20 创建
  1148. //*******************************************************************************/
  1149. bool FDCConnectXCS();
  1150. ///*********************************************************************************
  1151. //函数名称:DisconnectFDCAxn
  1152. //功能描述: 断开FDC节点连接
  1153. //修改记录:
  1154. //2021-04-20 创建
  1155. //*******************************************************************************/
  1156. void DisconnectFDCAxn();
  1157. ///*********************************************************************************
  1158. //函数名称:XCUDataThread
  1159. //功能描述: FLC报文接收线程函数
  1160. //修改记录:
  1161. //2021-04-20 创建
  1162. //*******************************************************************************/
  1163. static DWORD __stdcall ReveiveFDCData(LPVOID pParam);
  1164. //*******************************************************************************/
  1165. //函数名称:FDCCallback
  1166. //功能描述:FDC报文解析
  1167. //修改记录:
  1168. //2021-04-20 创建
  1169. //*******************************************************************************/
  1170. bool FDCCallback(const acs_obj_header_t* pCommand);
  1171. /*********************************************************************************
  1172. 函数名称:CallbackFDCTurnOn
  1173. 功能描述:对FDC TurnOn消息进行反馈处理
  1174. 修改记录:
  1175. 2021-4-19 创建
  1176. *******************************************************************************/
  1177. bool CallbackFDCTurnOn(ACS_BYTE* pCommand);
  1178. ///*********************************************************************************
  1179. //函数名称:CallBackFDCTurnOff
  1180. //功能描述: 解析当前F4节点关闭状态信息(turn off message)
  1181. //修改记录:
  1182. //2021-04-20 创建
  1183. //*******************************************************************************/
  1184. bool CallBackFDCTurnOff(ACS_BYTE* pCommand);
  1185. ///*********************************************************************************
  1186. //函数名称:CallBackSHSS
  1187. //功能描述: 用来切换DROC当前是否要处于服务模式;
  1188. //修改记录:
  1189. //2020-04-20 创建
  1190. //*******************************************************************************/
  1191. bool CallBackSHSS(ACS_BYTE* pCommand);
  1192. /*********************************************************************************
  1193. 函数名称:DoExposure()
  1194. 功能描述:响应探测器的开窗(FRM 2)指令,辅助GEN的FRM 1处理曝光流程
  1195. 修改记录:
  1196. 2020-11-03 创建
  1197. *******************************************************************************/
  1198. bool DoExposure(void); //应对ebus超时影响曝光
  1199. protected:
  1200. RET_STATUS RefreshData ();
  1201. private:
  1202. void FireNotify (std::string key, std::string context);
  1203. void FireDataNotify (std::string key, std::string context);
  1204. HANDLE m_hGenPostEvent;
  1205. HANDLE m_hGenPostDAPEvent;
  1206. };
  1207. }
  1208. //-----------------------------------------------------------------------------
  1209. // SDCDriver
  1210. //-----------------------------------------------------------------------------
  1211. namespace CCOS::Dev::Detail::Generator
  1212. {
  1213. class _CCOSDEVGENDEMO_API SMZDriver : public DriverMould
  1214. {
  1215. using super = /*IODriverWithSCF <*/DriverMould;
  1216. ResDataObject m_DeviceConfig;
  1217. public:
  1218. SMZDriver ();
  1219. virtual ~SMZDriver ();
  1220. public:
  1221. virtual void Prepare () override;
  1222. virtual bool DATA_ACTION Connect () override;
  1223. virtual void Disconnect() override;
  1224. virtual bool isConnected() const override;
  1225. virtual void Dequeue (const char * Packet, DWORD Length) /*override*/;
  1226. virtual void FireNotify (int code, std::string key, std::string content) /*override*/;
  1227. virtual auto CreateDevice (int index)->std::unique_ptr <IODevice> override;
  1228. virtual std::string DriverProbe () override;
  1229. virtual std::string GetResource () override;
  1230. virtual std::string DeviceProbe () override;
  1231. virtual bool GetDeviceConfig(std::string& Cfg) override;
  1232. private:
  1233. //static PACKET_RET callbackPackageProcess (const char* RecData, DWORD nLength, DWORD& PacketLength);
  1234. int m_nLastErrorCount; //记录上次关机时记录的Error数目;
  1235. int m_nSelectOGPWaitingTime; //记录当前的Error数目;
  1236. bool m_bConnect;
  1237. };
  1238. }