DeviceView.cpp 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. // CDeviceView.cpp: 实现文件
  2. //
  3. #include "stdafx.h"
  4. #include "SATHelper.h"
  5. #include "DeviceView.h"
  6. #include "MainFrm.h"
  7. #include <filehelper.h>
  8. extern CMainFrame* g_pMainFrame;
  9. // CDeviceView
  10. IMPLEMENT_DYNCREATE(CDeviceView, CFormView)
  11. CDeviceView::CDeviceView()
  12. : CFormView(DLG_DEVICEMANAGER)
  13. {
  14. ReadBaiduCfg(m_bdcfg);
  15. ReadRsRunCfg(m_rscfg);
  16. ReadTreePath();
  17. }
  18. CDeviceView::~CDeviceView()
  19. {
  20. }
  21. void CDeviceView::DoDataExchange(CDataExchange* pDX)
  22. {
  23. CFormView::DoDataExchange(pDX);
  24. DDX_Control(pDX, IDC_COMBO1, m_cb_chroma1);
  25. DDX_Control(pDX, IDC_COMBO2, m_cb_chroma2);
  26. DDX_Control(pDX, IDC_CHECK1, m_ck_chroma1);
  27. DDX_Control(pDX, IDC_CHECK2, m_ck_chroma2);
  28. }
  29. BEGIN_MESSAGE_MAP(CDeviceView, CFormView)
  30. ON_WM_PAINT()
  31. ON_WM_CTLCOLOR()
  32. ON_WM_DEVICECHANGE()
  33. ON_COMMAND(ID_CHECK_FULL_CUT, &CDeviceView::OnCheckFullCut)
  34. ON_COMMAND(BTN_HAD_SOUND, &CDeviceView::OnHadSound)
  35. ON_COMMAND(ID_COMBOX_OCR, &CDeviceView::OnComboxOcr)
  36. ON_UPDATE_COMMAND_UI(ID_CHECK_FULL_CUT, &CDeviceView::OnUpdateCheckFullCut)
  37. ON_UPDATE_COMMAND_UI(BTN_HAD_SOUND, &CDeviceView::OnUpdateHadSound)
  38. ON_UPDATE_COMMAND_UI(ID_COMBOX_OCR, &CDeviceView::OnUpdateComboxOcr)
  39. ON_UPDATE_COMMAND_UI(ID_COMBO_PRODUCT, &CDeviceView::OnUpdateComboProduct)
  40. ON_UPDATE_COMMAND_UI(ID_COMBO_UI, &CDeviceView::OnUpdateComboUi)
  41. ON_UPDATE_COMMAND_UI(BTN_DEF_SOUND, &CDeviceView::OnUpdateDefSound)
  42. ON_COMMAND(BTN_DEF_SOUND, &CDeviceView::OnDefSound)
  43. ON_COMMAND(ID_COMBO_PRODUCT, &CDeviceView::OnComboProduct)
  44. ON_COMMAND(ID_COMBO_UI, &CDeviceView::OnComboUi)
  45. ON_BN_CLICKED(IDC_BUTTON1, &CDeviceView::OnBnClickedButton1)
  46. ON_BN_CLICKED(IDC_BUTTON2, &CDeviceView::OnBnClickedButton2)
  47. ON_BN_CLICKED(IDC_CHECK1, &CDeviceView::OnBnClickedCheck1)
  48. ON_BN_CLICKED(IDC_CHECK2, &CDeviceView::OnBnClickedCheck2)
  49. ON_CBN_SELCHANGE(IDC_COMBO1, &CDeviceView::OnCbnSelchangeCombo1)
  50. ON_CBN_SELCHANGE(IDC_COMBO2, &CDeviceView::OnCbnSelchangeCombo2)
  51. ON_WM_CREATE()
  52. END_MESSAGE_MAP()
  53. // CDeviceView 诊断
  54. #ifdef _DEBUG
  55. void CDeviceView::AssertValid() const
  56. {
  57. CFormView::AssertValid();
  58. }
  59. #ifndef _WIN32_WCE
  60. void CDeviceView::Dump(CDumpContext& dc) const
  61. {
  62. CFormView::Dump(dc);
  63. }
  64. #endif
  65. #endif //_DEBUG
  66. // CDeviceView 消息处理程序
  67. void CDeviceView::ReadBaiduCfg(BaiduCfg& bdcfg)
  68. {
  69. TCHAR szValue[MAX_PATH] = {0};
  70. TCHAR szBuffer[1024] = { 0 };
  71. _stprintf_s(m_szBaiduCfgPath, _T("%s%s"), Global::g_szPython27Dir, _T("Lib\\site-packages\\ssat_sdk\\config\\baidu.cfg"));
  72. GetPrivateProfileString(_T("CurStatus"), _T("Cur_Count"), NULL, szValue, MAX_PATH, m_szBaiduCfgPath);
  73. bdcfg.cur_count = szValue;
  74. GetPrivateProfileString(_T("CurStatus"), _T("Reset_Time"), NULL, szValue, MAX_PATH, m_szBaiduCfgPath);
  75. bdcfg.reset_time = szValue;
  76. // 读取所有Section值;
  77. DWORD dwLen = GetPrivateProfileString(NULL, NULL, NULL, szBuffer, 1024, m_szBaiduCfgPath);
  78. for ( int i = 0, j = 0; i < dwLen; i++ )
  79. {
  80. if ( szBuffer[i] == '\0' )
  81. {
  82. TCHAR szData[MAX_PATH] = {0};
  83. memcpy(szData, &szBuffer[j], i-j);
  84. if ( _tcsicmp(szData, _T("CurStatus")) )
  85. {
  86. CountInfo countInfo;
  87. GetPrivateProfileString(szData, _T("APP_ID"), NULL, szValue, MAX_PATH, m_szBaiduCfgPath);
  88. countInfo.app_id = szValue;
  89. GetPrivateProfileString(szData, _T("API_KEY"), NULL, szValue, MAX_PATH, m_szBaiduCfgPath);
  90. countInfo.api_key = szValue;
  91. GetPrivateProfileString(szData, _T("SECRET_KEY"), NULL, szValue, MAX_PATH, m_szBaiduCfgPath);
  92. countInfo.secret_key = szValue;
  93. GetPrivateProfileString(szData, _T("Ret_Count"), NULL, szValue, MAX_PATH, m_szBaiduCfgPath);
  94. countInfo.ret_count = szValue;
  95. bdcfg.list_count.insert(std::pair<std::string, CountInfo>(szData, countInfo));
  96. }
  97. OutputDebugString(szData);
  98. OutputDebugString("\n");
  99. j = i+1;
  100. }
  101. }
  102. }
  103. void CDeviceView::ReadRsRunCfg(RsRunCfg& rscfg)
  104. {
  105. TCHAR szValue[MAX_PATH] = { 0 };
  106. TCHAR szBuffer[1024] = { 0 };
  107. _stprintf_s(m_szRsCfgPath, _T("%s%s"), Global::g_szPython27Dir, _T("Lib\\site-packages\\ssat_sdk\\config\\resource_run.cfg"));
  108. GetPrivateProfileString(_T("Sound"), _T("sound_list"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  109. rscfg.sound_list = szValue;
  110. GetPrivateProfileString(_T("COMM"), _T("issendkeytakepicture_tester"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  111. rscfg.full_cut = szValue;
  112. GetPrivateProfileString(_T("COMM"), _T("tg39_port"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  113. rscfg.tg39_port = szValue;
  114. GetPrivateProfileString(_T("COMM"), _T("sat_home"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  115. rscfg.sat_home = szValue;
  116. GetPrivateProfileString(_T("COMM"), _T("sat_result_dir"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  117. rscfg.sat_result_dir = szValue;
  118. GetPrivateProfileString(_T("COMM"), _T("chroma22293"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  119. rscfg.chroma22293 = szValue;
  120. //...
  121. GetPrivateProfileString(_T("MenuTree"), _T("menutreeselectedchip"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  122. rscfg.menutree_chip = szValue;
  123. GetPrivateProfileString(_T("MenuTree"), _T("menutreeselectedstyle"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  124. rscfg.menutree_style = szValue;
  125. GetPrivateProfileString(_T("MenuTree"), _T("menutreeselectedchannel"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  126. rscfg.menutree_channel = szValue;
  127. // SATHelper
  128. GetPrivateProfileString(_T("SATHelper"), _T("chroma1"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  129. rscfg.chroma1 = szValue;
  130. GetPrivateProfileString(_T("SATHelper"), _T("chroma2"), NULL, szValue, MAX_PATH, m_szRsCfgPath);
  131. rscfg.chroma2 = szValue;
  132. }
  133. void CDeviceView::ReadTreePath()
  134. {
  135. // 必须在ReadRsRunCfg之后调用;
  136. TCHAR szRootDir[MAX_PATH] = {0};
  137. _stprintf_s(szRootDir, _T("%s%s"), m_rscfg.sat_home.c_str(), _T("resource\\MenuTree\\") );
  138. auto _get_dir = [](std::string dir){
  139. int nIndex = dir.find_last_of('\\');
  140. if (nIndex != std::string::npos)
  141. {
  142. return dir.substr(nIndex+1);
  143. }
  144. return dir;
  145. };
  146. // 查找根目录下的目录;
  147. filehelper fh;
  148. STR_VEC vt_dir;
  149. fh.getsubfolder(szRootDir, &vt_dir);
  150. for (auto it : vt_dir )
  151. {
  152. STR_VEC vt_subdir;
  153. fh.getsubfolder(it.c_str(), &vt_subdir);
  154. m_map_tree.insert(std::pair<std::string, std::vector<std::string>>(_get_dir(it), vt_subdir));
  155. }
  156. // 去除目录级;
  157. for (std::map<std::string, std::vector<std::string>>::iterator it = m_map_tree.begin(); it != m_map_tree.end(); it++ )
  158. {
  159. for (std::vector<std::string>::iterator itd = it->second.begin(); itd != it->second.end(); itd++ )
  160. {
  161. *itd = _get_dir(*itd);
  162. }
  163. }
  164. }
  165. void CDeviceView::ParseJson()
  166. {
  167. if ( m_rscfg.chroma1.size() == 0 )
  168. {
  169. cJSON* pJson = cJSON_Parse(m_rscfg.chroma22293.c_str());
  170. if (pJson)
  171. {
  172. cJSON* pArray = cJSON_GetObjectItem(pJson, "devices");
  173. if (pArray)
  174. {
  175. int nCount = cJSON_GetArraySize(pArray);
  176. for ( int i = 0; i < nCount; i++ )
  177. {
  178. cJSON *pItem = cJSON_GetArrayItem(pArray, i);
  179. if ( pItem )
  180. {
  181. if (i == 0)
  182. m_rscfg.chroma1 = cJSON_GetObjectItem(pItem, "port") ? cJSON_GetObjectItem(pItem, "port")->valuestring : _T("");
  183. if (i == 1)
  184. m_rscfg.chroma2 = cJSON_GetObjectItem(pItem, "port") ? cJSON_GetObjectItem(pItem, "port")->valuestring : _T("");
  185. }
  186. }
  187. }
  188. }
  189. // 保存;
  190. WritePrivateProfileString(_T("SATHelper"), _T("chroma1"), m_rscfg.chroma1.c_str(), m_szRsCfgPath);
  191. WritePrivateProfileString(_T("SATHelper"), _T("chroma2"), m_rscfg.chroma2.c_str(), m_szRsCfgPath);
  192. }
  193. }
  194. void CDeviceView::RunDevice()
  195. {
  196. if ( m_rscfg.chroma1.size() )
  197. {
  198. CDevice* pdev = new CDevice();
  199. pdev->m_iBaudrate = 115200;
  200. pdev->m_iDatabit = 8;
  201. pdev->m_iPort = atoi(m_rscfg.chroma1.substr(3).c_str());
  202. pdev->m_iParitybit = 0;
  203. pdev->m_iStopbit = 1;
  204. pdev->m_iID = 1;
  205. pdev->m_strDeviceName = "Chroma22293";
  206. pdev->m_iDeviceType = 1;
  207. if (pdev->Open())
  208. {
  209. g_dmap.insert(std::pair<int, CDevice*>(pdev->m_iID, pdev));
  210. m_ck_chroma1.SetCheck(TRUE);
  211. }
  212. else
  213. {
  214. delete pdev;
  215. m_ck_chroma1.SetCheck(FALSE);
  216. }
  217. }
  218. if (m_rscfg.chroma2.size())
  219. {
  220. CDevice* pdev = new CDevice();
  221. pdev->m_iBaudrate = 115200;
  222. pdev->m_iDatabit = 8;
  223. pdev->m_iPort = atoi(m_rscfg.chroma2.substr(3).c_str());
  224. pdev->m_iParitybit = 0;
  225. pdev->m_iStopbit = 1;
  226. pdev->m_iID = 2;
  227. pdev->m_strDeviceName = "Chroma22293";
  228. pdev->m_iDeviceType = 1;
  229. if (pdev->Open())
  230. {
  231. g_dmap.insert(std::pair<int, CDevice*>(pdev->m_iID, pdev));
  232. m_ck_chroma2.SetCheck(TRUE);
  233. }
  234. else
  235. {
  236. delete pdev;
  237. m_ck_chroma2.SetCheck(FALSE);
  238. }
  239. }
  240. UpdateData(FALSE);
  241. }
  242. void CDeviceView::InitCombobox_port()
  243. {
  244. CComboBox* pCommbox1 = ((CComboBox*)GetDlgItem(IDC_COMBO1));
  245. CComboBox* pCommbox2 = ((CComboBox*)GetDlgItem(IDC_COMBO2));
  246. for (std::vector<std::string>::iterator it = m_vtCOM.begin(); it != m_vtCOM.end(); it++)
  247. {
  248. if (!IsPortInserted(pCommbox1, it->c_str()))
  249. pCommbox1->AddString(it->c_str());
  250. if (!IsPortInserted(pCommbox2, it->c_str()))
  251. pCommbox2->AddString(it->c_str());
  252. }
  253. if ( m_rscfg.chroma1.size())
  254. pCommbox1->SelectString(0, m_rscfg.chroma1.c_str());
  255. if (m_rscfg.chroma2.size())
  256. pCommbox2->SelectString(0, m_rscfg.chroma2.c_str());
  257. }
  258. BOOL CDeviceView::IsPortInserted(CComboBox* pCommbox, LPCTSTR lpPort)
  259. {
  260. BOOL bInserted = FALSE;
  261. CString strCommPort = _T("");
  262. int nCount = pCommbox->GetCount();
  263. for (int i = 0; i < nCount; i++)
  264. {
  265. pCommbox->GetLBText(i, strCommPort);
  266. if (strCommPort.CompareNoCase(lpPort) == 0)
  267. {
  268. bInserted = TRUE;
  269. break;
  270. }
  271. }
  272. return bInserted;
  273. }
  274. //实现串口热插拔
  275. BOOL CDeviceView::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
  276. {
  277. switch (nEventType)
  278. {
  279. // 串口拨掉;
  280. case DBT_DEVICEREMOVECOMPLETE:
  281. break;
  282. // 串口插入;
  283. case DBT_DEVICEARRIVAL:
  284. {
  285. Global::GetSysSerialPort(m_vtCOM);
  286. InitCombobox_port();
  287. }
  288. break;
  289. default:
  290. break;
  291. }
  292. return TRUE;
  293. }
  294. void CDeviceView::OnInitialUpdate()
  295. {
  296. CFormView::OnInitialUpdate();
  297. // TODO: 在此添加您专用的创建代码
  298. ParseJson();
  299. // Ribbon Combobox添加默认项;
  300. CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
  301. ASSERT_VALID(pRibbon);
  302. CMFCRibbonComboBox* pOcrCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBOX_OCR));
  303. if (pOcrCombo)
  304. {
  305. for (auto it : m_bdcfg.list_count)
  306. {
  307. pOcrCombo->AddItem(it.first.c_str());
  308. }
  309. // 选择默认项;
  310. pOcrCombo->SetEditText(m_bdcfg.cur_count.c_str());
  311. }
  312. // 剩余次数;
  313. CMFCRibbonEdit* pOcrCount = DYNAMIC_DOWNCAST(CMFCRibbonEdit, pRibbon->FindByID(ID_EDIT_COUNT));
  314. if (pOcrCount)
  315. {
  316. pOcrCount->SetEditText(m_bdcfg.reset_time.c_str());
  317. }
  318. // 声音等级;
  319. CMFCRibbonEdit* pSoundLevel = DYNAMIC_DOWNCAST(CMFCRibbonEdit, pRibbon->FindByID(ID_EDIT_SOUND_LEVEL));
  320. if (pSoundLevel)
  321. {
  322. pSoundLevel->SetEditText(m_bdcfg.reset_time.c_str());
  323. }
  324. // 全步骤截图;
  325. // CMFCRibbonCheckBox* pCheckFullCut = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_CHECK_FULL_CUT));
  326. // if (pCheckFullCut)
  327. // {
  328. // pCheckFullCut->SetCheck();
  329. // }
  330. // MenuTree;
  331. CMFCRibbonComboBox* pChipCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_PRODUCT));
  332. if (pChipCombo)
  333. {
  334. for (auto it : m_map_tree)
  335. {
  336. pChipCombo->AddItem(it.first.c_str());
  337. }
  338. // 选择默认项;
  339. pChipCombo->SetEditText(m_rscfg.menutree_chip.c_str());
  340. // UI下拉框;
  341. CString curText = pChipCombo->GetEditText();
  342. CMFCRibbonComboBox* pStyleCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_UI));
  343. for (auto it : m_map_tree.find(curText.GetString())->second)
  344. {
  345. pStyleCombo->AddItem(it.c_str());
  346. }
  347. pStyleCombo->SetEditText(m_rscfg.menutree_style.c_str());
  348. }
  349. // 启动设备;
  350. Global::GetSysSerialPort(m_vtCOM);
  351. InitCombobox_port();
  352. RunDevice();
  353. }
  354. void CDeviceView::OnDraw(CDC* /*pDC*/)
  355. {
  356. // TODO: 在此添加专用代码和/或调用基类
  357. }
  358. void CDeviceView::OnPaint()
  359. {
  360. CPaintDC dc(this); // device context for painting
  361. // TODO: 在此处添加消息处理程序代码
  362. // 不为绘图消息调用 CFormView::OnPaint()
  363. CRect rc;
  364. GetWindowRect(&rc);
  365. static CImage mImage;
  366. static BOOL bLoad = FALSE;
  367. if (!bLoad)
  368. {
  369. bLoad = mImage.Load(_T("bk.jpg")) == S_OK;
  370. }
  371. else
  372. {
  373. // 缩放到最小后再拉大,区域为Null;
  374. if (rc.IsRectEmpty() || rc.IsRectNull())
  375. return;
  376. //...BUG,当出现滚动条时,绘制的内容出错;
  377. //这里让图片绘制区域和窗口大小一致
  378. mImage.Draw(GetDC()->GetSafeHdc(), CRect(0, 0, rc.Width(), rc.Height()));
  379. }
  380. }
  381. HBRUSH CDeviceView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  382. {
  383. HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
  384. // TODO: 在此更改 DC 的任何特性
  385. if (nCtlColor == CTLCOLOR_STATIC)
  386. {
  387. pDC->SetBkMode(TRANSPARENT);//<设置背景透明
  388. return (HBRUSH)::GetStockObject(NULL_BRUSH);
  389. }
  390. // TODO: 如果默认的不是所需画笔,则返回另一个画笔
  391. return hbr;
  392. }
  393. void CDeviceView::OnCheckFullCut()
  394. {
  395. // TODO: 在此添加命令处理程序代码
  396. CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
  397. ASSERT_VALID(pRibbon);
  398. CMFCRibbonButton* pFullCutCheck = DYNAMIC_DOWNCAST(CMFCRibbonButton, pRibbon->FindByID(ID_CHECK_FULL_CUT));
  399. if (pFullCutCheck)
  400. {
  401. WritePrivateProfileString(_T("COMM"), _T("issendkeytakepicture_tester"), !pFullCutCheck->IsChecked() ? _T("True") : _T("False"), m_szRsCfgPath);
  402. m_rscfg.full_cut = !pFullCutCheck->IsChecked() ? _T("True") : _T("False");
  403. }
  404. }
  405. void CDeviceView::OnHadSound()
  406. {
  407. // TODO: 在此添加命令处理程序代码
  408. }
  409. void CDeviceView::OnComboxOcr()
  410. {
  411. // TODO: 在此添加命令处理程序代码
  412. CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
  413. ASSERT_VALID(pRibbon);
  414. CMFCRibbonComboBox* pOcrCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBOX_OCR));
  415. if (pOcrCombo)
  416. {
  417. // 获取当前文本项;
  418. CString strOcr = pOcrCombo->GetEditText();
  419. WritePrivateProfileString(_T("CurStatus"), _T("Cur_Count"), strOcr, m_szBaiduCfgPath);
  420. }
  421. }
  422. void CDeviceView::OnUpdateCheckFullCut(CCmdUI* pCmdUI)
  423. {
  424. // TODO: 在此添加命令更新用户界面处理程序代码
  425. pCmdUI->SetCheck(!_tcsicmp(m_rscfg.full_cut.c_str(), _T("True")));
  426. }
  427. void CDeviceView::OnUpdateHadSound(CCmdUI* pCmdUI)
  428. {
  429. // TODO: 在此添加命令更新用户界面处理程序代码
  430. }
  431. void CDeviceView::OnUpdateComboxOcr(CCmdUI* pCmdUI)
  432. {
  433. // TODO: 在此添加命令更新用户界面处理程序代码
  434. }
  435. void CDeviceView::OnUpdateComboProduct(CCmdUI* pCmdUI)
  436. {
  437. // TODO: 在此添加命令更新用户界面处理程序代码
  438. }
  439. void CDeviceView::OnUpdateComboUi(CCmdUI* pCmdUI)
  440. {
  441. // TODO: 在此添加命令更新用户界面处理程序代码
  442. }
  443. void CDeviceView::OnUpdateDefSound(CCmdUI* pCmdUI)
  444. {
  445. // TODO: 在此添加命令更新用户界面处理程序代码
  446. }
  447. void CDeviceView::OnDefSound()
  448. {
  449. // TODO: 在此添加命令处理程序代码
  450. }
  451. void CDeviceView::OnComboProduct()
  452. {
  453. // TODO: 在此添加命令处理程序代码
  454. CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
  455. ASSERT_VALID(pRibbon);
  456. CMFCRibbonComboBox* pChipCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_PRODUCT));
  457. if (pChipCombo)
  458. {
  459. // UI下拉框;
  460. CString curText = pChipCombo->GetEditText();
  461. CMFCRibbonComboBox* pStyleCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_UI));
  462. pStyleCombo->RemoveAllItems();
  463. for (auto it : m_map_tree.find(curText.GetString())->second)
  464. {
  465. pStyleCombo->AddItem(it.c_str());
  466. }
  467. pStyleCombo->SelectItem(0);
  468. // 保存结果;
  469. CString strCurChip = pChipCombo->GetEditText();
  470. WritePrivateProfileString(_T("MenuTree"), _T("menutreeselectedchip"), strCurChip, m_szRsCfgPath);
  471. CString strCurStyle = pStyleCombo->GetEditText();
  472. WritePrivateProfileString(_T("MenuTree"), _T("menutreeselectedstyle"), strCurStyle, m_szRsCfgPath);
  473. }
  474. }
  475. void CDeviceView::OnComboUi()
  476. {
  477. // TODO: 在此添加命令处理程序代码
  478. CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
  479. ASSERT_VALID(pRibbon);
  480. CMFCRibbonComboBox* pStyleCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_UI));
  481. if (pStyleCombo)
  482. {
  483. // UI下拉框;
  484. CString strCurStyle = pStyleCombo->GetEditText();
  485. WritePrivateProfileString(_T("MenuTree"), _T("menutreeselectedstyle"), strCurStyle, m_szRsCfgPath);
  486. }
  487. }
  488. void CDeviceView::OnBnClickedButton1()
  489. {
  490. // TODO: 在此添加控件通知处理程序代码
  491. }
  492. void CDeviceView::OnBnClickedButton2()
  493. {
  494. // TODO: 在此添加控件通知处理程序代码
  495. }
  496. void CDeviceView::OnBnClickedCheck1()
  497. {
  498. // TODO: 在此添加控件通知处理程序代码
  499. CDevice* pDev = g_dmap.find(1)->second;
  500. if (m_ck_chroma1.GetCheck())
  501. pDev->Open();
  502. else
  503. pDev->Close();
  504. }
  505. void CDeviceView::OnBnClickedCheck2()
  506. {
  507. // TODO: 在此添加控件通知处理程序代码
  508. CDevice* pDev = g_dmap.find(2)->second;
  509. if (m_ck_chroma2.GetCheck())
  510. pDev->Open();
  511. else
  512. pDev->Close();
  513. }
  514. void CDeviceView::OnCbnSelchangeCombo1()
  515. {
  516. // 保存到配置文件中;
  517. int nCurSel = m_cb_chroma1.GetCurSel();
  518. if ( nCurSel != CB_ERR )
  519. {
  520. CString strChroma1;
  521. m_cb_chroma1.GetLBText(nCurSel, strChroma1);
  522. WritePrivateProfileString(_T("SATHelper"), _T("chroma1"), strChroma1, m_szRsCfgPath);
  523. CDevice *pDev = g_dmap.find(1)->second;
  524. int port = atoi(strChroma1.Right(1).GetString());
  525. if (pDev->m_iPort != port)
  526. {
  527. pDev->m_iPort = port;
  528. pDev->Close();
  529. m_ck_chroma1.SetCheck(pDev->Open());
  530. }
  531. }
  532. }
  533. void CDeviceView::OnCbnSelchangeCombo2()
  534. {
  535. int nCurSel = m_cb_chroma2.GetCurSel();
  536. if (nCurSel != CB_ERR)
  537. {
  538. CString strChroma2;
  539. m_cb_chroma2.GetLBText(nCurSel, strChroma2);
  540. WritePrivateProfileString(_T("SATHelper"), _T("chroma2"), strChroma2, m_szRsCfgPath);
  541. CDevice* pDev = g_dmap.find(2)->second;
  542. int port = atoi(strChroma2.Right(1).GetString());
  543. if (pDev->m_iPort != port)
  544. {
  545. pDev->m_iPort = port;
  546. pDev->Close();
  547. m_ck_chroma2.SetCheck(pDev->Open());
  548. }
  549. }
  550. }
  551. // 说明:使用CFormView时,任务初始化动作都应该放在OnCreate中;
  552. // 而非放在OnInitialUpdate中执行,因为OnInitialUpdate可能被调用多次;
  553. int CDeviceView::OnCreate(LPCREATESTRUCT lpCreateStruct)
  554. {
  555. if (CFormView::OnCreate(lpCreateStruct) == -1)
  556. return -1;
  557. #if 0
  558. // TODO: 在此添加您专用的创建代码
  559. ParseJson();
  560. // Ribbon Combobox添加默认项;
  561. CMFCRibbonBar* pRibbon = g_pMainFrame->GetRibbonBar();
  562. ASSERT_VALID(pRibbon);
  563. CMFCRibbonComboBox* pOcrCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBOX_OCR));
  564. if (pOcrCombo)
  565. {
  566. for (auto it : m_bdcfg.list_count)
  567. {
  568. pOcrCombo->AddItem(it.first.c_str());
  569. }
  570. // 选择默认项;
  571. pOcrCombo->SetEditText(m_bdcfg.cur_count.c_str());
  572. }
  573. // 剩余次数;
  574. CMFCRibbonEdit* pOcrCount = DYNAMIC_DOWNCAST(CMFCRibbonEdit, pRibbon->FindByID(ID_EDIT_COUNT));
  575. if (pOcrCount)
  576. {
  577. pOcrCount->SetEditText(m_bdcfg.reset_time.c_str());
  578. }
  579. // 声音等级;
  580. CMFCRibbonEdit* pSoundLevel = DYNAMIC_DOWNCAST(CMFCRibbonEdit, pRibbon->FindByID(ID_EDIT_SOUND_LEVEL));
  581. if (pSoundLevel)
  582. {
  583. pSoundLevel->SetEditText(m_bdcfg.reset_time.c_str());
  584. }
  585. // 全步骤截图;
  586. // CMFCRibbonCheckBox* pCheckFullCut = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_CHECK_FULL_CUT));
  587. // if (pCheckFullCut)
  588. // {
  589. // pCheckFullCut->SetCheck();
  590. // }
  591. // MenuTree;
  592. CMFCRibbonComboBox* pChipCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_PRODUCT));
  593. if (pChipCombo)
  594. {
  595. for (auto it : m_map_tree)
  596. {
  597. pChipCombo->AddItem(it.first.c_str());
  598. }
  599. // 选择默认项;
  600. pChipCombo->SetEditText(m_rscfg.menutree_chip.c_str());
  601. // UI下拉框;
  602. CString curText = pChipCombo->GetEditText();
  603. CMFCRibbonComboBox* pStyleCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_COMBO_UI));
  604. for (auto it : m_map_tree.find(curText.GetString())->second)
  605. {
  606. pStyleCombo->AddItem(it.c_str());
  607. }
  608. pStyleCombo->SetEditText(m_rscfg.menutree_style.c_str());
  609. }
  610. // 启动设备;
  611. Global::GetSysSerialPort(m_vtCOM);
  612. InitCombobox_port();
  613. RunDevice();
  614. #endif
  615. return 0;
  616. }