Просмотр исходного кода

【软件版本】V
【模块名称】远程场测
【问题原因】完成旧的窗口迁移工作。
【修改描述】
【测试结果】

sat23 3 лет назад
Родитель
Сommit
cb3b28f2fc
2 измененных файлов с 87 добавлено и 9 удалено
  1. 84 9
      FieldTestTool/FieldTestTool/MainFrm.cpp
  2. 3 0
      FieldTestTool/FieldTestTool/MainFrm.h

+ 84 - 9
FieldTestTool/FieldTestTool/MainFrm.cpp

@@ -21,6 +21,7 @@
 #define new DEBUG_NEW
 #endif
 
+#define MAX_SWITCH_LEN 16
 // CMainFrame
 
 IMPLEMENT_DYNAMIC(CMainFrame, CMDIFrameWndEx)
@@ -48,8 +49,8 @@ BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWndEx)
     ON_COMMAND(ID_RIBBON_INFRAED_CHECKBOX, &CMainFrame::OnInfraedCheckbox)
     ON_UPDATE_COMMAND_UI(ID_RIBBON_INFRAED_CHECKBOX, &CMainFrame::OnUpdateInfraedCheckbox)
     // USB切换器;
-    ON_COMMAND(ID_RIBBON_SWITCHER_COMBOBOX, &CMainFrame::OnCameraCombobox)
-    ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_COMBOBOX, &CMainFrame::OnUpdateCameraCombobox)
+    ON_COMMAND(ID_RIBBON_SWITCHER_COMBOBOX, &CMainFrame::OnSwitcherCombobox)
+    ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_COMBOBOX, &CMainFrame::OnUpdateSwitcherCombobox)
     // 打开USB切换器;
     ON_COMMAND(ID_RIBBON_SWITCHER_CHECKBOX, &CMainFrame::OnSwitcherCheckbox)
     ON_UPDATE_COMMAND_UI(ID_RIBBON_SWITCHER_CHECKBOX, &CMainFrame::OnUpdateSwitcherCheckbox)
@@ -70,6 +71,8 @@ CMainFrame::CMainFrame()
 	// TODO: 在此添加成员初始化代码
     m_bFindTestWizardPort = false;
     m_bFindSwitcherPort = false;
+    m_bSwitcherCheckA = false;
+    m_bSwitcherCheckB = false;
 	theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_OFF_2007_BLUE);
 }
 
@@ -658,43 +661,115 @@ void CMainFrame::OnSwitcherCombobox()
 
 void CMainFrame::OnUpdateSwitcherCombobox(CCmdUI* pCmdUI)
 {
-    //pCmdUI->SetCheck(m_wndCaptionBar.IsVisible());
+    CMFCRibbonBar* pRibbon = GetRibbonBar();
+    ASSERT_VALID(pRibbon);
+    CMFCRibbonCheckBox* pSwitcherCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOX));
+    pCmdUI->Enable(!pSwitcherCheckbox->IsChecked());
 }
 
 void CMainFrame::OnSwitcherCheckbox()
 {
     CMFCRibbonBar* pRibbon = GetRibbonBar();
     ASSERT_VALID(pRibbon);
-    CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOX));
+    CMFCRibbonCheckBox* pSwitcherCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOX));
+    CMFCRibbonComboBox* pSwitcherCombobox = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_COMBOBOX));
+
+    if ( !pSwitcherCheckbox->IsChecked() )
+    {
+        int nCurSel = pSwitcherCombobox->GetCurSel();
+        if ( nCurSel != CB_ERR ) 
+        {
+            m_SerialUSB.SetIOMode();
+            CString strText = pSwitcherCombobox->GetItem(nCurSel);
+            if ( m_SerialUSB.Open(atol(strText.Mid(3).GetString()), 115200) )
+            {
+                m_SerialUSB.SetBufferSize(1024,1024);
+                WritePrivateProfileString("Switcher", "Com", strText.GetString(), Global::g_szConfig);
+            }
+        }
+    }
+    else
+    {
+        if ( m_SerialUSB.IsOpen() )
+            m_SerialUSB.Close();
+
+        // 重转Checkbox;
+        m_bSwitcherCheckA = false;
+        m_bSwitcherCheckB = false;
+    }
 }
 
 void CMainFrame::OnUpdateSwitcherCheckbox(CCmdUI* pCmdUI)
 {
-    //pCmdUI->SetCheck(m_wndCaptionBar.IsVisible());
+    pCmdUI->SetCheck(m_SerialUSB.IsOpen());
 }
 
 void CMainFrame::OnSwitcherCheckboxA()
 {
     CMFCRibbonBar* pRibbon = GetRibbonBar();
     ASSERT_VALID(pRibbon);
-    CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOXA));
+    CMFCRibbonCheckBox* pCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOXA));
+    m_bSwitcherCheckA = !(m_bSwitcherCheckB = pCheckbox->IsChecked());
+
+    if ( m_SerialUSB.IsOpen() )
+    {
+        m_SerialUSB.SetTimeouts(0,2,50,1,150);
+        // 封装发送包;
+        byte szSendData[MAX_SWITCH_LEN] = {0};
+        _stprintf_s((TCHAR*)szSendData, MAX_SWITCH_LEN, _T("*SET PORT %c\r"), m_bSwitcherCheckA ? 'A':'B');
+
+        // 发送单信号;
+        if ( m_SerialUSB.WriteSync(szSendData, _tcslen((TCHAR*)szSendData)) )
+        {
+            memset(szSendData, 0, MAX_SWITCH_LEN);
+            m_SerialUSB.ReadSync(szSendData, MAX_SWITCH_LEN);
+            TRACE("切换U盘成功\n");
+        }
+        else
+        {
+            TRACE("切换U盘失败\n");
+        }
+    }
 }
 
 void CMainFrame::OnUpdateSwitcherCheckboxA(CCmdUI* pCmdUI)
 {
-    //pCmdUI->SetCheck(m_wndCaptionBar.IsVisible());
+    pCmdUI->Enable(m_SerialUSB.IsOpen());
+    pCmdUI->SetCheck(m_bSwitcherCheckA);
 }
 
 void CMainFrame::OnSwitcherCheckboxB()
 {
     CMFCRibbonBar* pRibbon = GetRibbonBar();
     ASSERT_VALID(pRibbon);
-    CMFCRibbonComboBox* pCameraCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOXB));
+    CMFCRibbonCheckBox* pCheckbox = DYNAMIC_DOWNCAST(CMFCRibbonCheckBox, pRibbon->FindByID(ID_RIBBON_SWITCHER_CHECKBOXB));
+    m_bSwitcherCheckB = !(m_bSwitcherCheckA = pCheckbox->IsChecked());
+
+    if ( m_SerialUSB.IsOpen() )
+    {
+        m_SerialUSB.SetTimeouts(0,2,50,1,150);
+        // 封装发送包;
+        byte szSendData[MAX_SWITCH_LEN] = {0};
+        _stprintf_s((TCHAR*)szSendData, MAX_SWITCH_LEN, _T("*SET PORT %c\r"), m_bSwitcherCheckA ? 'A':'B');
+
+        // 发送单信号;
+        if ( m_SerialUSB.WriteSync(szSendData, _tcslen((TCHAR*)szSendData)) )
+        {
+            memset(szSendData, 0, MAX_SWITCH_LEN);
+            m_SerialUSB.ReadSync(szSendData, MAX_SWITCH_LEN);
+            TRACE("切换U盘成功\n");
+        }
+        else
+        {
+            TRACE("切换U盘失败\n");
+        }
+    }
 }
 
 void CMainFrame::OnUpdateSwitcherCheckboxB(CCmdUI* pCmdUI)
 {
-    //pCmdUI->SetCheck(m_wndCaptionBar.IsVisible());
+    pCmdUI->Enable(m_SerialUSB.IsOpen());
+    pCmdUI->SetCheck(m_bSwitcherCheckB);
 }
 
 BOOL CMainFrame::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)

+ 3 - 0
FieldTestTool/FieldTestTool/MainFrm.h

@@ -84,6 +84,9 @@ protected:
     afx_msg void OnSwitcherCombobox();
     afx_msg void OnUpdateSwitcherCombobox(CCmdUI* pCmdUI);
     afx_msg void OnSwitcherCheckbox();
+    // ¼Ç¼CheckboxµÄ״̬;
+    bool m_bSwitcherCheckA;
+    bool m_bSwitcherCheckB;
     afx_msg void OnUpdateSwitcherCheckbox(CCmdUI* pCmdUI);
     afx_msg void OnSwitcherCheckboxA();
     afx_msg void OnUpdateSwitcherCheckboxA(CCmdUI* pCmdUI);