CSynBoxDlg.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481
  1. // CSynBoxDlg.cpp: 实现文件
  2. //
  3. #include "pch.h"
  4. #include "resource.h" // 主符号
  5. #include "CSynBoxDlg.h"
  6. #include "afxdialogex.h"
  7. #include "CConfigDlg.h"
  8. // CSynBoxDlg 对话框
  9. IMPLEMENT_DYNAMIC(CSynBoxDlg, CDiosBasicDlg)
  10. CSynBoxDlg::CSynBoxDlg(CWnd* pParent /*=nullptr*/)
  11. : CDiosBasicDlg(Dev_SynBox, IDD_DIALOG4, pParent)
  12. {
  13. }
  14. CSynBoxDlg::~CSynBoxDlg()
  15. {
  16. }
  17. void CSynBoxDlg::DoDataExchange(CDataExchange* pDX)
  18. {
  19. CDialogEx::DoDataExchange(pDX);
  20. DDX_Control(pDX, IDC_EDIT1, m_Edit_expmode);
  21. DDX_Control(pDX, IDC_EDIT2, m_Edit_workstation);
  22. DDX_Control(pDX, IDC_EDIT3, m_Edit_gensynstate);
  23. DDX_Control(pDX, IDC_EDIT4, m_Edit_AECsignal);
  24. DDX_Control(pDX, IDC_EDIT5, m_Edit_FrameRate);
  25. DDX_Control(pDX, IDC_EDIT6, m_Edit_EXPTimes);
  26. }
  27. BEGIN_MESSAGE_MAP(CSynBoxDlg, CDialogEx)
  28. ON_BN_CLICKED(IDC_BUTTON3, &CSynBoxDlg::OnBnClickedButton3)
  29. ON_BN_CLICKED(IDC_BUTTON1, &CSynBoxDlg::OnBnClickedButton1)
  30. ON_BN_CLICKED(IDC_BUTTON2, &CSynBoxDlg::OnBnClickedButton2)
  31. ON_BN_CLICKED(IDC_BUTTON4, &CSynBoxDlg::OnBnClickedButton4)
  32. ON_BN_CLICKED(IDC_BUTTON5, &CSynBoxDlg::OnBnClickedButton5)
  33. ON_BN_CLICKED(IDC_BUTTON6, &CSynBoxDlg::OnBnClickedButton6)
  34. ON_BN_CLICKED(IDC_BUTTON7, &CSynBoxDlg::OnBnClickedButton7)
  35. ON_BN_CLICKED(IDC_BUTTON8, &CSynBoxDlg::OnBnClickedButton8)
  36. ON_BN_CLICKED(IDC_BUTTON9, &CSynBoxDlg::OnBnClickedButton9)
  37. ON_BN_CLICKED(IDC_BUTTON10, &CSynBoxDlg::OnBnClickedButton10)
  38. ON_BN_CLICKED(IDC_BUTTON11, &CSynBoxDlg::OnBnClickedButton11)
  39. ON_BN_CLICKED(IDC_BUTTON12, &CSynBoxDlg::OnBnClickedButton12)
  40. ON_BN_CLICKED(IDC_BUTTON13, &CSynBoxDlg::OnBnClickedButton13)
  41. ON_BN_CLICKED(IDC_BUTTON14, &CSynBoxDlg::OnBnClickedButton14)
  42. ON_BN_CLICKED(IDC_BUTTON15, &CSynBoxDlg::OnBnClickedButton15)
  43. ON_BN_CLICKED(IDC_BUTTON16, &CSynBoxDlg::OnBnClickedButton16)
  44. ON_BN_CLICKED(IDC_BUTTON17, &CSynBoxDlg::OnBnClickedButton17)
  45. ON_BN_CLICKED(IDC_BUTTON18, &CSynBoxDlg::OnBnClickedButton18)
  46. ON_BN_CLICKED(IDC_BUTTON19, &CSynBoxDlg::OnBnClickedButton19)
  47. ON_BN_CLICKED(IDC_BUTTON20, &CSynBoxDlg::OnBnClickedButton20)
  48. ON_BN_CLICKED(IDC_BUTTON21, &CSynBoxDlg::OnBnClickedButton21)
  49. ON_BN_CLICKED(IDC_BUTTON22, &CSynBoxDlg::OnBnClickedButton22)
  50. ON_EN_KILLFOCUS(IDC_EDIT1, &CSynBoxDlg::OnEnKillfocusEdit1)
  51. ON_EN_KILLFOCUS(IDC_EDIT2, &CSynBoxDlg::OnEnKillfocusEdit2)
  52. ON_EN_KILLFOCUS(IDC_EDIT3, &CSynBoxDlg::OnEnKillfocusEdit3)
  53. ON_EN_KILLFOCUS(IDC_EDIT4, &CSynBoxDlg::OnEnKillfocusEdit4)
  54. ON_EN_KILLFOCUS(IDC_EDIT5, &CSynBoxDlg::OnEnKillfocusEdit5)
  55. ON_EN_KILLFOCUS(IDC_EDIT6, &CSynBoxDlg::OnEnKillfocusEdit6)
  56. END_MESSAGE_MAP()
  57. // CSynBoxDlg 消息处理程序
  58. //初始化配置
  59. BOOL CSynBoxDlg::OnInitDialog()
  60. {
  61. CDiosBasicDlg::OnInitDialog();
  62. return TRUE;
  63. }
  64. //设备初始化
  65. bool CSynBoxDlg::AppInitial(bool act)
  66. {
  67. CString log;
  68. return CreatMode(act);
  69. }
  70. //获取初始值
  71. bool CSynBoxDlg::GetInitData()
  72. {
  73. CString log;
  74. CString tempStr;
  75. string strTempValue;
  76. if (m_pDevice != nullptr)
  77. {
  78. m_nWS = atoi(DevGetValue(nsSYN::AttrKey::WORKSTATION).c_str());
  79. tempStr.Format("%d", m_nWS);
  80. m_Edit_workstation.SetWindowText(tempStr);
  81. m_nExpMode = DevGetValue(nsSYN::AttrKey::EXPMODE).c_str();
  82. tempStr.Format("%s", m_nExpMode.c_str());
  83. m_Edit_expmode.SetWindowText(tempStr);
  84. m_nGenSynStatus = atoi(DevGetValue(nsSYN::AttrKey::DiosGeneratorSync).c_str());
  85. tempStr.Format("%d", m_nGenSynStatus);
  86. m_Edit_gensynstate.SetWindowText(tempStr);
  87. GetDlgItem(IDC_BUTTON9)->SetWindowText("ExpDisable");
  88. GetDlgItem(IDC_BUTTON12)->SetWindowText("stopWinReq");
  89. }
  90. return true;
  91. }
  92. //设置消息对照表
  93. void CSynBoxDlg::SetMagMap()
  94. {
  95. auto HW_UNKNOWN = [this](int NotifyCode, string key, string context)
  96. {
  97. CString strNotify;
  98. strNotify.Format("SYN can not deal with Attribute[%s] \n", key.c_str());
  99. ToolsDlgLog(strNotify);
  100. };
  101. auto HW_WORKSTATION = [this](int NotifyCode, string key, string context)//WORKSTATION
  102. {
  103. m_nWS = atoi(context.c_str());
  104. m_Edit_workstation.SetWindowText(context.c_str());
  105. };
  106. auto HW_GENSYNSTATE = [this](int NotifyCode, string key, string context)//GENSYNSTATE
  107. {
  108. m_nGenSynStatus = atoi(context.c_str());
  109. m_Edit_gensynstate.SetWindowText(context.c_str());
  110. };
  111. auto HW_EXPMODE = [this](int NotifyCode, string key, string context)//EXPMODE
  112. {
  113. m_nExpMode = context;
  114. m_Edit_expmode.SetWindowText(context.c_str());
  115. };
  116. //SYN Box
  117. m_mapFrame["UnKnown"] = tFrameMapItem(HW_UNKNOWN);
  118. m_mapFrame[nsSYN::AttrKey::WORKSTATION] = tFrameMapItem(HW_WORKSTATION);
  119. m_mapFrame[nsSYN::AttrKey::DiosGeneratorSync] = tFrameMapItem(HW_GENSYNSTATE);
  120. m_mapFrame[nsSYN::AttrKey::EXPMODE] = tFrameMapItem(HW_EXPMODE);
  121. }
  122. void CSynBoxDlg::InitPageElements(bool act)
  123. {
  124. if (act)
  125. {
  126. ShowPageElements(FALSE, TRUE, FALSE, FALSE);
  127. SetMagMap();
  128. GetInitData();
  129. }
  130. else
  131. {
  132. ShowPageElements(TRUE, FALSE, TRUE, FALSE);
  133. }
  134. }
  135. //设置窗口元素显示
  136. void CSynBoxDlg::ShowPageElements(bool init, bool exit, bool cfg, bool general)
  137. {
  138. __super::ShowPageElements(init, exit, cfg, general);
  139. bool temp = exit;
  140. //SetFrameRate
  141. GetDlgItem(IDC_BUTTON4)->EnableWindow(temp);
  142. GetDlgItem(IDC_EDIT5)->EnableWindow(temp);
  143. //SetExpMode
  144. GetDlgItem(IDC_BUTTON5)->EnableWindow(temp);
  145. GetDlgItem(IDC_EDIT1)->EnableWindow(temp);
  146. //SetWS
  147. GetDlgItem(IDC_BUTTON6)->EnableWindow(temp);
  148. GetDlgItem(IDC_EDIT2)->EnableWindow(temp);
  149. //SetGenSyn
  150. GetDlgItem(IDC_BUTTON7)->EnableWindow(temp);
  151. GetDlgItem(IDC_EDIT3)->EnableWindow(temp);
  152. //SetExpTimes
  153. GetDlgItem(IDC_BUTTON8)->EnableWindow(temp);
  154. GetDlgItem(IDC_EDIT6)->EnableWindow(temp);
  155. //SetExp
  156. GetDlgItem(IDC_BUTTON9)->EnableWindow(temp);
  157. //SetAECSignal
  158. GetDlgItem(IDC_BUTTON10)->EnableWindow(temp);
  159. GetDlgItem(IDC_EDIT4)->EnableWindow(temp);
  160. //PrepareAcq
  161. GetDlgItem(IDC_BUTTON11)->EnableWindow(temp);
  162. //StartWinReq or StopWinReq
  163. GetDlgItem(IDC_BUTTON12)->EnableWindow(temp);
  164. //Recv Signal
  165. GetDlgItem(IDC_BUTTON14)->EnableWindow(temp);
  166. }
  167. //选择配置
  168. void CSynBoxDlg::OnBnClickedButton3()
  169. {
  170. CString log;
  171. nsCFG::CConfigDlg dlgcfg(Dev_SynBox,
  172. m_strCfgLib,
  173. m_strCfgFile);
  174. dlgcfg.DoModal();
  175. if (m_strCfgFile.empty())
  176. {
  177. log.Format("(SYN)- SYN m_strCfgFile is empty");
  178. mLog::Warn(log);
  179. ToolsDlgLog(log);
  180. }
  181. else
  182. {
  183. ShowPageElements(TRUE, FALSE, TRUE, FALSE);
  184. }
  185. }
  186. //初始化
  187. void CSynBoxDlg::OnBnClickedButton1()
  188. {
  189. CString log;
  190. if (m_pDriver == nullptr)
  191. if (!m_pDevice)
  192. {
  193. if (AppInitial(true))
  194. {
  195. ShowPageElements(FALSE, TRUE, FALSE, FALSE);
  196. SetMagMap();
  197. GetInitData();
  198. mLog::Debug("(SYN)- SYN Initial success");
  199. }
  200. else
  201. {
  202. log.Format("(SYN)- SYN Initial fail");
  203. mLog::Error(log);
  204. ToolsDlgLog(log);
  205. }
  206. }
  207. else
  208. {
  209. log.Format("(SYN)- m_pDevice not empty");
  210. mLog::Warn(log);
  211. ToolsDlgLog(log);
  212. }
  213. else
  214. {
  215. log.Format("(SYN)- m_pDriver not empty");
  216. mLog::Warn(log);
  217. ToolsDlgLog(log);
  218. }
  219. }
  220. //退出
  221. void CSynBoxDlg::OnBnClickedButton2()
  222. {
  223. if (AppInitial(false))
  224. {
  225. ShowPageElements(TRUE, FALSE, TRUE, FALSE);
  226. }
  227. }
  228. //SetFrameRate
  229. void CSynBoxDlg::OnBnClickedButton4()
  230. {
  231. DevActionValue(nsSYN::ActionKey::SetFrameRate, { to_string(m_nFrameRate) });
  232. }
  233. //SetExpMode
  234. void CSynBoxDlg::OnBnClickedButton5()
  235. {
  236. char data[20]{ 0 };
  237. strncpy_s(data, m_nExpMode.c_str(), 19);
  238. DevActionValue(nsSYN::ActionKey::SetExpMode, { data });
  239. }
  240. //SetWS
  241. void CSynBoxDlg::OnBnClickedButton6()
  242. {
  243. DevActionValue(nsSYN::ActionKey::SetValue_WORKSTATION, { to_string(m_nWS) });
  244. }
  245. //SetGenSyn
  246. void CSynBoxDlg::OnBnClickedButton7()
  247. {
  248. DevActionValue(nsSYN::ActionKey::SetGeneratortoSyncStatus, { to_string(m_nGenSynStatus) });
  249. }
  250. //SetExpTimes
  251. void CSynBoxDlg::OnBnClickedButton8()
  252. {
  253. DevActionValue(nsSYN::ActionKey::SetExposureTimes, { to_string(m_nEXPTimes) });
  254. }
  255. //SetExp?
  256. void CSynBoxDlg::OnBnClickedButton9()
  257. {
  258. if (m_bExpEnable)
  259. {
  260. GetDlgItem(IDC_BUTTON9)->SetWindowText("ExpDisable");
  261. m_bExpEnable = false;
  262. DevAction(nsSYN::ActionKey::SetExpDisable);
  263. }
  264. else
  265. {
  266. m_bExpEnable = true;
  267. GetDlgItem(IDC_BUTTON9)->SetWindowText("ExpEnable");
  268. DevAction(nsSYN::ActionKey::SetExpEnable);
  269. }
  270. }
  271. //SetAECSignal
  272. void CSynBoxDlg::OnBnClickedButton10()
  273. {
  274. DevActionValue(nsSYN::ActionKey::SetGenAECSignal, { to_string(m_nAECSignal) });
  275. }
  276. //PrepareAcq
  277. void CSynBoxDlg::OnBnClickedButton11()
  278. {
  279. DevAction(nsSYN::ActionKey::PrepareAcquisition);
  280. }
  281. //StartWinReq or StopWinReq
  282. void CSynBoxDlg::OnBnClickedButton12()
  283. {
  284. if (m_bStartWinReq)
  285. {
  286. GetDlgItem(IDC_BUTTON12)->SetWindowText("StopWinReq");
  287. m_bStartWinReq = false;
  288. DevAction(nsSYN::ActionKey::StopWindowRequest);
  289. }
  290. else
  291. {
  292. m_bStartWinReq = true;
  293. GetDlgItem(IDC_BUTTON12)->SetWindowText("StartWinReq");
  294. DevAction(nsSYN::ActionKey::StartWindowRequest);
  295. }
  296. }
  297. //
  298. void CSynBoxDlg::OnBnClickedButton13()
  299. {
  300. // TODO: 在此添加控件通知处理程序代码
  301. }
  302. //Recv Signal
  303. void CSynBoxDlg::OnBnClickedButton14()
  304. {
  305. if (m_bDebugSignal)
  306. {
  307. m_bDebugSignal = false;
  308. DevActionValue("DebugSignal", { to_string(m_bDebugSignal) });
  309. }
  310. else
  311. {
  312. m_bDebugSignal = true;
  313. DevActionValue("DebugSignal", { to_string(m_bDebugSignal) });
  314. }
  315. GetDlgItem(IDC_BUTTON15)->EnableWindow(m_bDebugSignal);
  316. GetDlgItem(IDC_EDIT8)->EnableWindow(m_bDebugSignal);
  317. GetDlgItem(IDC_BUTTON16)->EnableWindow(m_bDebugSignal);
  318. GetDlgItem(IDC_EDIT9)->EnableWindow(m_bDebugSignal);
  319. GetDlgItem(IDC_BUTTON17)->EnableWindow(m_bDebugSignal);
  320. GetDlgItem(IDC_EDIT10)->EnableWindow(m_bDebugSignal);
  321. GetDlgItem(IDC_BUTTON18)->EnableWindow(m_bDebugSignal);
  322. GetDlgItem(IDC_EDIT11)->EnableWindow(m_bDebugSignal);
  323. GetDlgItem(IDC_BUTTON19)->EnableWindow(m_bDebugSignal);
  324. GetDlgItem(IDC_EDIT12)->EnableWindow(m_bDebugSignal);
  325. GetDlgItem(IDC_BUTTON20)->EnableWindow(m_bDebugSignal);
  326. GetDlgItem(IDC_EDIT13)->EnableWindow(m_bDebugSignal);
  327. GetDlgItem(IDC_BUTTON21)->EnableWindow(m_bDebugSignal);
  328. GetDlgItem(IDC_EDIT14)->EnableWindow(m_bDebugSignal);
  329. GetDlgItem(IDC_BUTTON22)->EnableWindow(m_bDebugSignal);
  330. GetDlgItem(IDC_EDIT15)->EnableWindow(m_bDebugSignal);
  331. }
  332. //SendSignal_1
  333. void CSynBoxDlg::OnBnClickedButton15()
  334. {
  335. CString tempStr;
  336. GetDlgItem(IDC_EDIT8)->GetWindowText(tempStr);
  337. string param = tempStr.GetBuffer();
  338. DevActionValue("SendSignal", { param });
  339. }
  340. //SendSignal_2
  341. void CSynBoxDlg::OnBnClickedButton16()
  342. {
  343. CString tempStr;
  344. GetDlgItem(IDC_EDIT9)->GetWindowText(tempStr);
  345. string param = tempStr.GetBuffer();
  346. DevActionValue("SendSignal", { param });
  347. }
  348. //SendSignal_3
  349. void CSynBoxDlg::OnBnClickedButton17()
  350. {
  351. CString tempStr;
  352. GetDlgItem(IDC_EDIT10)->GetWindowText(tempStr);
  353. string param = tempStr.GetBuffer();
  354. DevActionValue("SendSignal", { param });
  355. }
  356. //SendSignal_4
  357. void CSynBoxDlg::OnBnClickedButton18()
  358. {
  359. CString tempStr;
  360. GetDlgItem(IDC_EDIT11)->GetWindowText(tempStr);
  361. string param = tempStr.GetBuffer();
  362. DevActionValue("SendSignal", { param });
  363. }
  364. //SendSignal_5
  365. void CSynBoxDlg::OnBnClickedButton19()
  366. {
  367. CString tempStr;
  368. GetDlgItem(IDC_EDIT12)->GetWindowText(tempStr);
  369. string param = tempStr.GetBuffer();
  370. DevActionValue("SendSignal", { param });
  371. }
  372. //SendSignal_6
  373. void CSynBoxDlg::OnBnClickedButton20()
  374. {
  375. CString tempStr;
  376. GetDlgItem(IDC_EDIT13)->GetWindowText(tempStr);
  377. string param = tempStr.GetBuffer();
  378. DevActionValue("SendSignal", { param });
  379. }
  380. //SendSignal_7
  381. void CSynBoxDlg::OnBnClickedButton21()
  382. {
  383. CString tempStr;
  384. GetDlgItem(IDC_EDIT14)->GetWindowText(tempStr);
  385. string param = tempStr.GetBuffer();
  386. DevActionValue("SendSignal", { param });
  387. }
  388. //SendSignal_8
  389. void CSynBoxDlg::OnBnClickedButton22()
  390. {
  391. CString tempStr;
  392. GetDlgItem(IDC_EDIT15)->GetWindowText(tempStr);
  393. string param = tempStr.GetBuffer();
  394. DevActionValue("SendSignal", { param });
  395. }
  396. //ExpMode_Value
  397. void CSynBoxDlg::OnEnKillfocusEdit1()
  398. {
  399. CString tempStr;
  400. m_Edit_expmode.GetWindowText(tempStr);
  401. m_nExpMode = tempStr;
  402. }
  403. //WS_Value
  404. void CSynBoxDlg::OnEnKillfocusEdit2()
  405. {
  406. CString tempStr;
  407. m_Edit_workstation.GetWindowText(tempStr);
  408. m_nWS = atoi(tempStr);
  409. }
  410. //GenSyn_Value
  411. void CSynBoxDlg::OnEnKillfocusEdit3()
  412. {
  413. CString tempStr;
  414. m_Edit_gensynstate.GetWindowText(tempStr);
  415. m_nGenSynStatus = atoi(tempStr);
  416. }
  417. //AECSignal_Value
  418. void CSynBoxDlg::OnEnKillfocusEdit4()
  419. {
  420. CString tempStr;
  421. m_Edit_AECsignal.GetWindowText(tempStr);
  422. m_nAECSignal = atoi(tempStr);
  423. }
  424. //FrameRate_Value
  425. void CSynBoxDlg::OnEnKillfocusEdit5()
  426. {
  427. CString tempStr;
  428. m_Edit_FrameRate.GetWindowText(tempStr);
  429. m_nFrameRate = atoi(tempStr);
  430. }
  431. void CSynBoxDlg::OnEnKillfocusEdit6()
  432. {
  433. CString tempStr;
  434. m_Edit_EXPTimes.GetWindowText(tempStr);
  435. m_nEXPTimes = atoi(tempStr);
  436. }