CCOS.Dev.FPD.SyncUnit.cpp 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. // CCOS.Dev.FPD.DEMO.cpp : 定义 DLL 应用程序的导出函数。
  2. //
  3. #include "CCOS.Dev.FPDDeviceMould.hpp"
  4. using namespace CCOS::Dev;
  5. using namespace CCOS::Dev::Detail::Detector;
  6. namespace nsFPD = CCOS::Dev::Detail::Detector;
  7. //extern Log4CPP::Logger* ////mLog::gLogger;
  8. //-----------------------------------------------------------------------------
  9. // SyncUnit
  10. //-----------------------------------------------------------------------------
  11. nsFPD::SyncUnit::SyncUnit()
  12. {
  13. m_strReady4EXP = "";
  14. m_strXwindowStatus = "";
  15. m_strXrayON = "";
  16. m_strConnectStatus = "";
  17. m_strImageReadingStatus = "";
  18. m_strSupportSyncMode = "";
  19. }
  20. nsFPD::SyncUnit:: ~SyncUnit()
  21. {
  22. }
  23. void OEM_IF nsFPD::SyncUnit::SetEventCenter(std::shared_ptr <CCOS::Dev::IOEventCenter> EventCenter)
  24. {
  25. m_EventCenter = EventCenter;
  26. }
  27. RET_STATUS nsFPD::SyncUnit::JSSetXwindowSize(std::string in, std::string & out)
  28. {
  29. ////mLog::FINFO("JSSetXwindowSize. {$}",in.c_str());
  30. ResDataObject json;
  31. json.decode(in.c_str());
  32. string strXwindow = (string)json[0];
  33. float XwindowSize = stof(strXwindow.c_str());
  34. return SetXwindow(XwindowSize);
  35. }
  36. RET_STATUS nsFPD::SyncUnit::JSSetFrameRate(std::string in, std::string& out)
  37. {
  38. ////mLog::FINFO("JSSetFrameRate. {$}",in.c_str());
  39. ResDataObject json;
  40. json.decode(in.c_str());
  41. string strFrameRate = (string)json[0];
  42. float FrameRate = stof(strFrameRate.c_str());
  43. return SetFrameRate(FrameRate);
  44. }
  45. RET_STATUS nsFPD::SyncUnit::JSSetSyncMode(std::string in, std::string & out)
  46. {
  47. ////mLog::FINFO("JSSetSyncMode. {$}",in.c_str());
  48. ResDataObject json;
  49. json.decode(in.c_str());
  50. int mode = json[0];
  51. int trigger = json[1];
  52. SYNC_MODE syncMode;
  53. HARDWARE_TRIGGER_MODE HWtrigger;
  54. if (mode == SYNC_SOFTWARE)
  55. {
  56. syncMode = SYNC_SOFTWARE;
  57. }
  58. else if (mode == SYNC_HARDWARE)
  59. {
  60. syncMode = SYNC_HARDWARE;
  61. }
  62. else if (mode == SYNC_AED)
  63. {
  64. syncMode = SYNC_AED;
  65. }
  66. else if (mode == SYNC_HARDWARE_DIRECT)
  67. {
  68. syncMode = SYNC_HARDWARE_DIRECT;
  69. }
  70. else
  71. {
  72. return RET_STATUS::RET_INVALID;
  73. }
  74. if (trigger == HW_TRIGGER_NONE || trigger == HW_TRIGGER_MAX)
  75. {
  76. if (mode == SYNC_HARDWARE)
  77. {
  78. return RET_STATUS::RET_INVALID;
  79. }
  80. HWtrigger = HW_TRIGGER_NONE;
  81. }
  82. else if (trigger == HW_TRIGGER_INTERNAL)
  83. {
  84. HWtrigger = HW_TRIGGER_INTERNAL;
  85. }
  86. else if (trigger == HW_TRIGGER_EXTERNAL)
  87. {
  88. HWtrigger = HW_TRIGGER_EXTERNAL;
  89. }
  90. else
  91. {
  92. return RET_STATUS::RET_INVALID;
  93. }
  94. return SetSyncMode(syncMode, HWtrigger);
  95. }
  96. RET_STATUS nsFPD::SyncUnit::JSGetSyncMode(std::string& out)
  97. {
  98. SYNC_MODE syncMode = SYNC_MAX;
  99. GetSyncMode(syncMode);
  100. auto str = std::to_string(syncMode);
  101. out = str;
  102. return RET_STATUS::RET_SUCCEED;
  103. }
  104. RET_STATUS nsFPD::SyncUnit::JSPrepareAcquisition(std::string in, std::string& out)
  105. {
  106. ////mLog::FINFO("JSPrepareAcquisition.");
  107. return PrepareAcquisition();
  108. }
  109. RET_STATUS nsFPD::SyncUnit::JSStartAcquisition(std::string in, std::string& out)
  110. {
  111. ////mLog::FINFO("JSStartAcquisition.");
  112. ResDataObject json;
  113. json.decode(in.c_str());
  114. if (json.GetFirstOf("P0") >= 0)
  115. {
  116. string strAcqMode = (string)json["P0"];
  117. return StartAcquisition(strAcqMode);
  118. }
  119. else
  120. {
  121. ////mLog::FINFO("JSStartAcquisition param in is null but it's not error!");
  122. return StartAcquisition();
  123. }
  124. }
  125. RET_STATUS nsFPD::SyncUnit::JSStopAcquisition(std::string in, std::string& out)
  126. {
  127. ////mLog::FINFO("JSStopAcquisition.");
  128. return StopAcquisition();
  129. }
  130. RET_STATUS nsFPD::SyncUnit::JSGetFPDReady(std::string & out)
  131. {
  132. out = m_strReady4EXP;
  133. return RET_STATUS::RET_SUCCEED;
  134. }
  135. RET_STATUS nsFPD::SyncUnit::JSSetFPDReady(std::string in)
  136. {
  137. ////mLog::FINFO("JSSetFPDReady in:{$}", in);
  138. if (in == "")
  139. {
  140. return RET_STATUS::RET_FAILED;
  141. }
  142. m_strReady4EXP = in;
  143. return RET_STATUS::RET_SUCCEED;
  144. }
  145. RET_STATUS nsFPD::SyncUnit::JSGetConnectStatus(std::string& out)
  146. {
  147. out = m_strConnectStatus;
  148. return RET_STATUS::RET_SUCCEED;
  149. }
  150. RET_STATUS nsFPD::SyncUnit::JSGetXrayON(std::string& out)
  151. {
  152. out = m_strXrayON;
  153. return RET_STATUS::RET_SUCCEED;
  154. }
  155. void OEM_NOTIFY nsFPD::SyncUnit::FPDReadyNotify(bool bReady)
  156. {
  157. if (bReady)
  158. {
  159. m_strReady4EXP = "1";
  160. m_EventCenter->OnNotify((int)ATTRACTION_SET, AttrKey::FPDReadyStatus, m_strReady4EXP);
  161. }
  162. else
  163. {
  164. m_strReady4EXP = "0";
  165. m_EventCenter->OnNotify((int)ATTRACTION_SET, AttrKey::FPDReadyStatus, m_strReady4EXP);
  166. }
  167. }
  168. void OEM_NOTIFY nsFPD::SyncUnit::FPDConnectStatusNotify(bool bConnect)
  169. {
  170. if (bConnect)
  171. {
  172. m_strConnectStatus = "2";
  173. m_EventCenter->OnNotify((int)ATTRACTION_SET, AttrKey::DetectorConnectStatus, m_strConnectStatus);
  174. }
  175. else
  176. {
  177. m_strConnectStatus = "0";
  178. m_EventCenter->OnNotify((int)ATTRACTION_SET, AttrKey::DetectorConnectStatus, m_strConnectStatus);
  179. }
  180. }
  181. RET_STATUS nsFPD::SyncUnit::JSGetXWindowStatus(std::string & out)
  182. {
  183. out = m_strXwindowStatus;
  184. return RET_STATUS::RET_SUCCEED;
  185. }
  186. RET_STATUS nsFPD::SyncUnit::JSSetXWindowStatus(std::string in)
  187. {
  188. ////mLog::FINFO("JSSetXWindowStatus in:{$}", in);
  189. if (in == "")
  190. {
  191. return RET_STATUS::RET_FAILED;
  192. }
  193. m_strXwindowStatus = in;
  194. return RET_STATUS::RET_SUCCEED;
  195. }
  196. void OEM_NOTIFY nsFPD::SyncUnit::XWindowOnNotify()
  197. {
  198. ////mLog::FINFO("XWindowOnNotify");
  199. auto szFDinfo = std::to_string(XWINDOW_ON);
  200. m_strXwindowStatus = szFDinfo;
  201. m_EventCenter->OnNotify((int)ATTRACTION_SET, AttrKey::XwindowStatus, m_strXwindowStatus);
  202. }
  203. void OEM_NOTIFY nsFPD::SyncUnit::XWindowOffNotify()
  204. {
  205. ////mLog::FINFO("XWindowOffNotify");
  206. auto szFDinfo = std::to_string(XWINDOW_OFF);
  207. m_strXwindowStatus = szFDinfo;
  208. m_EventCenter->OnNotify((int)ATTRACTION_SET, AttrKey::XwindowStatus, m_strXwindowStatus);
  209. }
  210. void OEM_NOTIFY nsFPD::SyncUnit::FakeEIPONNotify()
  211. {
  212. m_EventCenter->OnNotify((int)ATTRACTION_SET, "FakeEIPON", "1");
  213. }
  214. void OEM_NOTIFY nsFPD::SyncUnit::XrayOnNotify()
  215. {
  216. m_strXrayON = "1";
  217. m_EventCenter->OnNotify((int)ATTRACTION_SET, AttrKey::XrayON, "1");
  218. }
  219. void OEM_NOTIFY nsFPD::SyncUnit::XrayOffNotify()
  220. {
  221. m_strXrayON = "0";
  222. m_EventCenter->OnNotify((int)ATTRACTION_SET, AttrKey::XrayON, "0");
  223. }
  224. RET_STATUS nsFPD::SyncUnit::JSGetImageReadingStatus(std::string & out)
  225. {
  226. out = m_strImageReadingStatus;
  227. return RET_STATUS::RET_SUCCEED;
  228. }
  229. RET_STATUS nsFPD::SyncUnit::JSSetImageReadingStatus(std::string in)
  230. {
  231. ////mLog::FINFO("JSSetImageReadingStatus in:{$}", in);
  232. if (in == "")
  233. {
  234. return RET_STATUS::RET_FAILED;
  235. }
  236. m_strImageReadingStatus = in;
  237. return RET_STATUS::RET_SUCCEED;
  238. }
  239. void OEM_NOTIFY nsFPD::SyncUnit::ImageReadingNotify()
  240. {
  241. std::string str = "0";
  242. m_EventCenter->OnNotify((int)ATTRACTION_SET, AttrKey::ImageReadingStatus, str);
  243. }
  244. RET_STATUS nsFPD::SyncUnit::GetSyncMode(SYNC_MODE& nSyncMode)
  245. {
  246. return RET_STATUS::RET_SUCCEED;
  247. }
  248. RET_STATUS nsFPD::SyncUnit::JSGetExpReadyStatus(std::string& out)
  249. {
  250. out = m_strFPDExpReady;
  251. ////mLog::FINFO("JSGetExpReadyStatus {$}", out);
  252. return RET_STATUS::RET_SUCCEED;
  253. }
  254. void OEM_NOTIFY nsFPD::SyncUnit::ExpReadyNotify(int nMillisecond)
  255. {
  256. auto szFDinfo = std::to_string(nMillisecond);
  257. m_strFPDExpReady = szFDinfo;
  258. m_EventCenter->OnNotify((int)ATTRACTION_MSG, AttrKey::FPDExpReady, m_strFPDExpReady);
  259. }
  260. RET_STATUS nsFPD::SyncUnit::SetFrameRate(float fFrameRate)
  261. {
  262. return RET_STATUS::RET_SUCCEED;
  263. }
  264. RET_STATUS nsFPD::SyncUnit::JSGetSupportSyncMode(std::string& out)
  265. {
  266. out = m_strSupportSyncMode;
  267. ////mLog::FINFO("JSGetSupportSyncMode {$}", out);
  268. return RET_STATUS::RET_SUCCEED;
  269. }
  270. RET_STATUS nsFPD::SyncUnit::JSUpdateGENERATORSYNCSTATE(std::string in, std::string& out)
  271. {
  272. cout << "JSUpdateGENERATORSYNCSTATE: " << in << endl;
  273. return RET_STATUS::RET_SUCCEED;
  274. }
  275. RET_STATUS nsFPD::SyncUnit::SetSupportSyncMode(string in)
  276. {
  277. ////mLog::FINFO("SetSupportSyncMode {$}", in);
  278. m_strSupportSyncMode = in;
  279. return RET_STATUS::RET_SUCCEED;
  280. }
  281. RET_STATUS nsFPD::SyncUnit::JSActiveSyncMode(std::string in, std::string& out)
  282. {
  283. ////mLog::FINFO("JSActiveSyncMode in:{$}", in);
  284. ResDataObject json;
  285. json.decode(in.c_str());
  286. if (json.GetFirstOf("SyncMode") >= 0)
  287. {
  288. string strSyncMode = json["SyncMode"].encode();
  289. int nSyncMode = 1;
  290. if (strSyncMode == "CMD")
  291. {
  292. nSyncMode = 1;
  293. }
  294. else if (strSyncMode == "HWS")
  295. {
  296. nSyncMode = 2;
  297. }
  298. else if (strSyncMode == "AED")
  299. {
  300. nSyncMode = 3;
  301. }
  302. else
  303. {
  304. ////mLog::FERROR("not support this sync mode!");
  305. return RET_STATUS::RET_FAILED;
  306. }
  307. ////mLog::FINFO("nSyncMode:{$}", nSyncMode);
  308. return ActiveSyncMode(nSyncMode);
  309. }
  310. else
  311. {
  312. ////mLog::FERROR("JSActiveSyncMode param is invalid!");
  313. return RET_STATUS::RET_FAILED;
  314. }
  315. }
  316. RET_STATUS nsFPD::SyncUnit::ActiveSyncMode(int nSyncMode)
  317. {
  318. return RET_STATUS::RET_SUCCEED;
  319. }