| 
					
				 | 
			
			
				@@ -104,6 +104,9 @@ void CTCLToolsDlg::DoDataExchange(CDataExchange* pDX) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CDialog::DoDataExchange(pDX); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     DDX_Control(pDX, IDC_COMBO_PORTS, m_cbSerial); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     DDX_Control(pDX, IDC_COMBO_CMDS, m_cbCommands); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	DDX_Control(pDX, IDC_COMBO_CMDS2, m_cbCommands2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	DDX_Control(pDX, IDC_COMBO_CMDS3, m_cbCommands3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	DDX_Control(pDX, IDC_COMBO_CMDS4, m_cbCommands4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     DDX_Control(pDX, IDC_COMBO_BUADRATE, m_cb_baudrate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -118,6 +121,9 @@ BEGIN_MESSAGE_MAP(CTCLToolsDlg, CDialog) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ON_BN_CLICKED(BTN_RELOAD_CMD, &CTCLToolsDlg::OnBnClickedReloadCmd) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	ON_BN_CLICKED(IDC_CHECK_HB, &CTCLToolsDlg::OnBnClickedCheckHb) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	ON_BN_CLICKED(IDC_CHECK_BH, &CTCLToolsDlg::OnBnClickedCheckBh) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ON_BN_CLICKED(BTN_EXEC_CMD2, &CTCLToolsDlg::OnBnClickedExecCmd2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ON_BN_CLICKED(BTN_EXEC_CMD3, &CTCLToolsDlg::OnBnClickedExecCmd3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ON_BN_CLICKED(BTN_EXEC_CMD4, &CTCLToolsDlg::OnBnClickedExecCmd4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 END_MESSAGE_MAP() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -155,9 +161,8 @@ BOOL CTCLToolsDlg::OnInitDialog() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     m_cb_baudrate.AddString(_T("38400")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     m_cb_baudrate.AddString(_T("57600")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     m_cb_baudrate.AddString(_T("115200")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    m_cb_baudrate.AddString(_T("460800")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    m_cb_baudrate.AddString(_T("921600")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    m_cb_baudrate.AddString(_T("230400")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    m_cb_baudrate.AddString(_T("128000")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    m_cb_baudrate.AddString(_T("256000")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     m_cb_baudrate.SelectString(0, _T("115200")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -237,6 +242,21 @@ void CTCLToolsDlg::InitCommandCombobox() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if ( nCurSel != CB_ERR ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         m_cbCommands.GetLBText(nCurSel, strText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CString strText2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	nCurSel = m_cbCommands2.GetCurSel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( nCurSel != CB_ERR ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		m_cbCommands2.GetLBText(nCurSel, strText2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CString strText3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	nCurSel = m_cbCommands3.GetCurSel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( nCurSel != CB_ERR ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		m_cbCommands3.GetLBText(nCurSel, strText3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CString strText4; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	nCurSel = m_cbCommands4.GetCurSel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( nCurSel != CB_ERR ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		m_cbCommands4.GetLBText(nCurSel, strText4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 清空; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     m_cbCommands.ResetContent(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     std::vector<CommandParam> ExternalCMDParams = g_tclCommand.GetExternalCMDParams(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -253,12 +273,31 @@ void CTCLToolsDlg::InitCommandCombobox() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     for ( std::vector<CommandParam>::iterator it = CMDParams.begin(); it != CMDParams.end(); it++ ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        m_cbCommands.AddString(it->name.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ( it->nOption == CMDOPT_None ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			m_cbCommands.AddString(it->name.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else if (it->nOption == CMDOPT_Read) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			m_cbCommands2.AddString(it->name.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else if (it->nOption == CMDOPT_Check) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			m_cbCommands3.AddString(it->name.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else if (it->nOption == CMDOPT_Write) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			m_cbCommands4.AddString(it->name.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     nCurSel = m_cbCommands.SelectString(0, strText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if ( nCurSel == CB_ERR ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         m_cbCommands.SetCurSel(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	nCurSel = m_cbCommands2.SelectString(0, strText2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( nCurSel == CB_ERR ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		m_cbCommands2.SetCurSel(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	nCurSel = m_cbCommands3.SelectString(0, strText3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( nCurSel == CB_ERR ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		m_cbCommands3.SetCurSel(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	nCurSel = m_cbCommands4.SelectString(0, strText4); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( nCurSel == CB_ERR ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		m_cbCommands4.SetCurSel(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void CTCLToolsDlg::OnBnClickedOpenPort() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -332,104 +371,8 @@ void CTCLToolsDlg::OnBnClickedExecCmd() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if ( nCurSel != CB_ERR ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         CString strCMDName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         m_cbCommands.GetLBText(nCurSel, strCMDName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        SetDlgItemText(IDC_STATIC_RESULT, strCMDName + _T("->执行结果:")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if ( g_tclCommand.IsOpen() ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bool bStatus = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CommandParam cmdpara; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            g_tclCommand.GetCommandParams(strCMDName.GetString(), cmdpara); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ( cmdpara.nOption == CMDOPT_Set ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // 需要选择文件; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				GetDlgItemText(IDC_EDIT_KEY, strText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if ( !PathFileExists(strText) ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if ( MessageBox("Set指令没有选择Key文件,是否继续?", "警告!", MB_ICONWARNING|MB_YESNO) == IDNO ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					bStatus = g_tclCommand.SendCommand(strCMDName.GetString(), cmdpara); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					std::string data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if ( ReadKeyFromFile(strText.GetString(), data) ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						// 默认读取内容; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						BOOL bCheckHB = ((CButton*)GetDlgItem(IDC_CHECK_HB))->GetCheck(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						BOOL bCheckBH = ((CButton*)GetDlgItem(IDC_CHECK_BH))->GetCheck(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						if ( !bCheckBH && !bCheckHB ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						{// 原始文件内容; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							g_tclCommand.SendCommand(strCMDName.GetString(), cmdpara, (LPVOID)data.c_str(), data.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						else if ( !bCheckBH && bCheckHB ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						{// 将文件内容按十六进制转字节; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							// 去除所有空格; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							utils::trim(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							std::string strBytes = utils::HexStringToBytes(data,2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							g_tclCommand.SendCommand(strCMDName.GetString(), cmdpara, (LPVOID)strBytes.c_str(), strBytes.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						else if ( bCheckBH && !bCheckHB ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						{// 将文件内容按字节转十六进制; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                bStatus = g_tclCommand.SendCommand(strCMDName.GetString(), cmdpara); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 设置状态; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ( cmdpara._rtnStatus == 0x0A ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                SetDlgItemText(IDC_EDIT_STATUS, "成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else if ( cmdpara._rtnStatus == 0x0E ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                SetDlgItemText(IDC_EDIT_STATUS, "命令错误或不可执行"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else if ( cmdpara._rtnStatus == 0x0F ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                SetDlgItemText(IDC_EDIT_STATUS, "链路层数据错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                SetDlgItemText(IDC_EDIT_STATUS, "不可识别的错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 设置原字符串显示; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SetDlgItemText(IDC_EDIT_ERROR, cmdpara._rtnError.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 设置单字节值; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ( cmdpara.nOption == CMDOPT_Get && cmdpara._rtnData.size() < 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if ( cmdpara._rtnData.size() == 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    SetDlgItemInt(IDC_EDIT_INT, (byte)cmdpara._rtnData[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                else if ( cmdpara._rtnData.size() == 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    SetDlgItemInt(IDC_EDIT_INT, (byte)cmdpara._rtnData[0] << 8 | (byte)cmdpara._rtnData[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#if 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 设置原字符串显示; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ( cmdpara.nOption == CMDOPT_Get ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                SetDlgItemText(IDC_EDIT_STR, cmdpara._rtnData.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 设置16进制字符串显示; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if ( cmdpara.nOption == CMDOPT_Get ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                SetDlgItemText(IDC_EDIT_HEX, utils::BytesToHexString((byte*)cmdpara._rtnData.c_str(), cmdpara._rtnData.size(), ' ').c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SetDlgItemText(IDC_EDIT_STR, utils::BytesToHexString((byte*)cmdpara._cmdContext.c_str(), cmdpara._cmdContext.size(), ' ').c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SetDlgItemText(IDC_EDIT_HEX, utils::BytesToHexString((byte*)cmdpara._rtnContext.c_str(), cmdpara._rtnContext.size(), ' ').c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            MessageBox("串口未打开", "错误!", MB_ICONEXCLAMATION); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SetDlgItemText(IDC_STATIC_RESULT, strCMDName + _T("->执行结果:"));    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ExecuteCommand(strCMDName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -504,3 +447,150 @@ void CTCLToolsDlg::OnBnClickedCheckBh() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		((CButton*)GetDlgItem(IDC_CHECK_HB))->SetCheck(FALSE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void CTCLToolsDlg::OnBnClickedExecCmd2() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// TODO: 在此添加控件通知处理程序代码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ClearEdit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CString strText; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	int nCurSel = m_cbCommands2.GetCurSel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( nCurSel != CB_ERR ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CString strCMDName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		m_cbCommands2.GetLBText(nCurSel, strCMDName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SetDlgItemText(IDC_STATIC_RESULT, strCMDName + _T("->执行结果:"));  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ExecuteCommand(strCMDName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void CTCLToolsDlg::OnBnClickedExecCmd3() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// TODO: 在此添加控件通知处理程序代码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ClearEdit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CString strText; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	int nCurSel = m_cbCommands3.GetCurSel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( nCurSel != CB_ERR ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CString strCMDName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		m_cbCommands3.GetLBText(nCurSel, strCMDName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SetDlgItemText(IDC_STATIC_RESULT, strCMDName + _T("->执行结果:"));     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ExecuteCommand(strCMDName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void CTCLToolsDlg::OnBnClickedExecCmd4() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// TODO: 在此添加控件通知处理程序代码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	ClearEdit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	CString strText; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	int nCurSel = m_cbCommands4.GetCurSel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( nCurSel != CB_ERR ) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CString strCMDName; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		m_cbCommands4.GetLBText(nCurSel, strCMDName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SetDlgItemText(IDC_STATIC_RESULT, strCMDName + _T("->执行结果:"));       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		ExecuteCommand(strCMDName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void CTCLToolsDlg::ExecuteCommand(CString strCMDName) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if ( g_tclCommand.IsOpen() )  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CString strText; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		bool bStatus = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		CommandParam cmdpara; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		g_tclCommand.GetCommandParams(strCMDName.GetString(), cmdpara); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ( cmdpara.nOption == CMDOPT_Write) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			// 需要选择文件; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			GetDlgItemText(IDC_EDIT_KEY, strText); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if ( !PathFileExists(strText) ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if ( MessageBox("Set指令没有选择Key文件,是否继续?", "警告!", MB_ICONWARNING|MB_YESNO) == IDNO ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				bStatus = g_tclCommand.SendCommand(strCMDName.GetString(), cmdpara); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			}	 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				std::string data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				if ( ReadKeyFromFile(strText.GetString(), data) ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					// 默认读取内容; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					BOOL bCheckHB = ((CButton*)GetDlgItem(IDC_CHECK_HB))->GetCheck(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					BOOL bCheckBH = ((CButton*)GetDlgItem(IDC_CHECK_BH))->GetCheck(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					if ( !bCheckBH && !bCheckHB ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					{// 原始文件内容; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						g_tclCommand.SendCommand(strCMDName.GetString(), cmdpara, (LPVOID)data.c_str(), data.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					else if ( !bCheckBH && bCheckHB ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					{// 将文件内容按十六进制转字节; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						// 去除所有空格; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						utils::trim(data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						std::string strBytes = utils::HexStringToBytes(data,2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						g_tclCommand.SendCommand(strCMDName.GetString(), cmdpara, (LPVOID)strBytes.c_str(), strBytes.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					else if ( bCheckBH && !bCheckHB ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					{// 将文件内容按字节转十六进制; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						std::string strBytes = utils::BytesToHexString((const unsigned char *)data.c_str(), data.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+						g_tclCommand.SendCommand(strCMDName.GetString(), cmdpara, (LPVOID)strBytes.c_str(), strBytes.size()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			bStatus = g_tclCommand.SendCommand(strCMDName.GetString(), cmdpara); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 设置状态; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ( cmdpara._rtnStatus == 0x0A ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SetDlgItemText(IDC_EDIT_STATUS, "成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else if ( cmdpara._rtnStatus == 0x0E ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SetDlgItemText(IDC_EDIT_STATUS, "命令错误或不可执行"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else if ( cmdpara._rtnStatus == 0x0F ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SetDlgItemText(IDC_EDIT_STATUS, "链路层数据错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SetDlgItemText(IDC_EDIT_STATUS, "不可识别的错误"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 设置原字符串显示; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SetDlgItemText(IDC_EDIT_ERROR, cmdpara._rtnError.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 设置单字节值; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ( cmdpara.nOption == CMDOPT_Read && cmdpara._rtnData.size() < 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			if ( cmdpara._rtnData.size() == 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				SetDlgItemInt(IDC_EDIT_INT, (byte)cmdpara._rtnData[0]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			else if ( cmdpara._rtnData.size() == 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				SetDlgItemInt(IDC_EDIT_INT, (byte)cmdpara._rtnData[0] << 8 | (byte)cmdpara._rtnData[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#if 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 设置原字符串显示; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ( cmdpara.nOption == CMDOPT_Read ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SetDlgItemText(IDC_EDIT_STR, cmdpara._rtnData.c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		// 设置16进制字符串显示; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if ( cmdpara.nOption == CMDOPT_Read ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SetDlgItemText(IDC_EDIT_HEX, utils::BytesToHexString((byte*)cmdpara._rtnData.c_str(), cmdpara._rtnData.size(), ' ').c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SetDlgItemText(IDC_EDIT_STR, utils::BytesToHexString((byte*)cmdpara._cmdContext.c_str(), cmdpara._cmdContext.size(), ' ').c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		SetDlgItemText(IDC_EDIT_HEX, utils::BytesToHexString((byte*)cmdpara._rtnContext.c_str(), cmdpara._rtnContext.size(), ' ').c_str()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#endif 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		MessageBox("串口未打开", "错误!", MB_ICONEXCLAMATION); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |