|
@@ -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);
|
|
|
+ }
|
|
|
+}
|