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

修复串口号切换时的问题;

scbc.sat2 5 лет назад
Родитель
Сommit
9f6e53d6e2
1 измененных файлов с 60 добавлено и 12 удалено
  1. 60 12
      SATHelper/SATHelper/MainFrm.cpp

+ 60 - 12
SATHelper/SATHelper/MainFrm.cpp

@@ -1349,14 +1349,38 @@ void CMainFrame::OnCombo1_22293()
 	{
 		CString strChroma1 = pCombobx1->GetEditText();
 		WritePrivateProfileString(_T("SATHelper"), _T("chroma1"), strChroma1, m_szRsCfgPath);
+		m_rscfg.chroma1 = strChroma1.GetString();
 
-		CDevice* pDev = g_dmap.find(1)->second;
-		int port = atoi(strChroma1.Right(1).GetString());
-		if (pDev->m_iPort != port)
+		if (g_dmap.find(1) == g_dmap.end())
 		{
-			pDev->m_iPort = port;
-			pDev->Close();
-			pDev->Open();
+			CDevice* pdev = new CDevice();
+			pdev->m_iBaudrate = 115200;
+			pdev->m_iDatabit = 8;
+			pdev->m_iPort = atoi(m_rscfg.chroma1.substr(3).c_str());
+			pdev->m_iParitybit = 0;
+			pdev->m_iStopbit = 1;
+			pdev->m_iID = 1;
+			pdev->m_strDeviceName = "Chroma22293";
+			pdev->m_iDeviceType = 1;
+			if (pdev->Open())
+			{
+				g_dmap.insert(std::pair<int, CDevice*>(pdev->m_iID, pdev));
+			}
+			else
+			{
+				delete pdev;
+			}
+		}
+		else
+		{
+			CDevice* pDev = g_dmap.find(1)->second;
+			int port = atoi(strChroma1.Right(1).GetString());
+			if (pDev->m_iPort != port)
+			{
+				pDev->m_iPort = port;
+				pDev->Close();
+				pDev->Open();
+			}
 		}
 	}
 }
@@ -1379,14 +1403,38 @@ void CMainFrame::OnCombo2_22293()
 	{
 		CString strChroma2 = pCombobx2->GetEditText();
 		WritePrivateProfileString(_T("SATHelper"), _T("chroma2"), strChroma2, m_szRsCfgPath);
+		m_rscfg.chroma2 = strChroma2.GetString();
 
-		CDevice* pDev = g_dmap.find(2)->second;
-		int port = atoi(strChroma2.Right(1).GetString());
-		if (pDev->m_iPort != port)
+		if (g_dmap.find(2) == g_dmap.end())
 		{
-			pDev->m_iPort = port;
-			pDev->Close();
-			pDev->Open();
+			CDevice* pdev = new CDevice();
+			pdev->m_iBaudrate = 115200;
+			pdev->m_iDatabit = 8;
+			pdev->m_iPort = atoi(m_rscfg.chroma2.substr(3).c_str());
+			pdev->m_iParitybit = 0;
+			pdev->m_iStopbit = 1;
+			pdev->m_iID = 2;
+			pdev->m_strDeviceName = "Chroma22293";
+			pdev->m_iDeviceType = 1;
+			if (pdev->Open())
+			{
+				g_dmap.insert(std::pair<int, CDevice*>(pdev->m_iID, pdev));
+			}
+			else
+			{
+				delete pdev;
+			}
+		}
+		else 
+		{
+			CDevice* pDev = g_dmap.find(2)->second;
+			int port = atoi(strChroma2.Right(1).GetString());
+			if (pDev->m_iPort != port)
+			{
+				pDev->m_iPort = port;
+				pDev->Close();
+				pDev->Open();
+			}
 		}
 	}
 }