sat23 4 лет назад
Родитель
Сommit
9ed6b63590

+ 12 - 10
TCLTools/TCLTools/TCLTools.rc

@@ -77,14 +77,12 @@ IDR_MAINFRAME           ICON                    "res\\TCLTools.ico"
 // Dialog
 //
 
-IDD_TCLTOOLS_DIALOG DIALOGEX 0, 0, 331, 201
+IDD_TCLTOOLS_DIALOG DIALOGEX 0, 0, 347, 202
 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "TCLTools"
 FONT 9, "MS Shell Dlg", 0, 0, 0x1
 BEGIN
-    DEFPUSHBUTTON   "确定",IDOK,215,179,50,14
-    PUSHBUTTON      "取消",IDCANCEL,271,179,50,14
     COMBOBOX        IDC_COMBO_PORTS,28,9,52,76,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
     LTEXT           "串口",IDC_STATIC,11,11,15,8
     COMBOBOX        IDC_COMBO_CMDS,28,27,151,159,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
@@ -94,13 +92,17 @@ BEGIN
     CONTROL         "HEX-BIN",IDC_CHECK_HB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,219,46,42,10
     CONTROL         "BIN-HEX",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,259,46,42,10
     LTEXT           "文件",IDC_STATIC,11,47,15,8
-    LTEXT           "状态:",IDC_STATIC,13,87,22,8
-    EDITTEXT        IDC_EDIT1,108,88,51,12,ES_AUTOHSCROLL
-    EDITTEXT        IDC_EDIT3,31,115,108,14,ES_AUTOHSCROLL
-    LTEXT           "单字节:",IDC_STATIC,71,89,28,8
-    EDITTEXT        IDC_EDIT4,30,134,108,33,ES_MULTILINE | ES_AUTOHSCROLL
+    LTEXT           "状态:",IDC_STATIC,22,72,22,8
+    EDITTEXT        IDC_EDIT_INT,49,89,74,12,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_EDIT_STR,49,106,286,14,ES_AUTOHSCROLL | ES_READONLY
+    LTEXT           "单字节:",IDC_STATIC,16,89,28,8
+    EDITTEXT        IDC_EDIT_HEX,49,125,286,67,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY
     PUSHBUTTON      "执行",BTN_EXEC_CMD,181,27,34,14
     PUSHBUTTON      "打开串口",BTN_OPEN_PORT,82,8,50,14
+    LTEXT           "字符串:",IDC_STATIC,16,108,28,8
+    LTEXT           "十六进制:",IDC_STATIC,10,125,35,8
+    EDITTEXT        IDC_EDIT_STATUS,49,70,74,14,ES_AUTOHSCROLL | ES_READONLY
+    GROUPBOX        "结果",IDC_STATIC,7,60,333,135
 END
 
 
@@ -154,9 +156,9 @@ BEGIN
     IDD_TCLTOOLS_DIALOG, DIALOG
     BEGIN
         LEFTMARGIN, 7
-        RIGHTMARGIN, 324
+        RIGHTMARGIN, 340
         TOPMARGIN, 7
-        BOTTOMMARGIN, 194
+        BOTTOMMARGIN, 195
     END
 END
 #endif    // APSTUDIO_INVOKED

+ 68 - 13
TCLTools/TCLTools/TCLToolsDlg.cpp

@@ -251,10 +251,12 @@ bool CTCLToolsDlg::IsCommandExist(CommandParam &cmd, std::vector<CommandParam> &
 void CTCLToolsDlg::OnBnClickedExecCmd()
 {
     // TODO: 在此添加控件通知处理程序代码
+    ClearEdit();
     CString strText;
     int nCurSel = m_cbCommands.GetCurSel();
     if ( nCurSel != CB_ERR ) {
         if ( g_tclCommand.IsOpen() ) {
+            bool bStatus = false;
             CommandParam cmdpara;
             m_cbCommands.GetLBText(nCurSel, strText);
             g_tclCommand.GetCommandParams(strText.GetString(), cmdpara);
@@ -264,20 +266,65 @@ void CTCLToolsDlg::OnBnClickedExecCmd()
             }
             else
             {
-                if ( g_tclCommand.SendCommand(strText.GetString(), cmdpara) ) {
-                    // 设置状态;
-                    if ( cmdpara._rtnStatus == 0x0A )
-                    {
-                        // 正确;
-                    }
-                    else
-                    {
-                        // 出错;
-                    }
-                    // 设置单字节值;
-
-                    // 设置16进制字符串显示;
+                bStatus = g_tclCommand.SendCommand(strText.GetString(), cmdpara);
+            }
+
+            if ( bStatus )
+            {
+                // 设置状态;
+                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, "不可识别的错误");
+                }
+
+                // 设置单字节值;
+                if ( cmdpara.nOption == CMDOPT_Get )
+                {
+                    SetDlgItemInt(IDC_EDIT_INT, cmdpara._rtnData[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
+            {
+                //MessageBox("串口写指令失败", "错误!", MB_ICONEXCLAMATION);
+                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, "不可识别的错误");
                 }
             }
         }
@@ -287,3 +334,11 @@ void CTCLToolsDlg::OnBnClickedExecCmd()
         }
     }
 }
+
+void CTCLToolsDlg::ClearEdit()
+{
+    SetDlgItemText(IDC_EDIT_STATUS, "");
+    SetDlgItemText(IDC_EDIT_INT, "");
+    SetDlgItemText(IDC_EDIT_STR, "");
+    SetDlgItemText(IDC_EDIT_HEX, "");
+}

+ 1 - 0
TCLTools/TCLTools/TCLToolsDlg.h

@@ -40,4 +40,5 @@ public:
     CComboBox m_cbCommands;
     bool IsCommandExist(CommandParam &cmd, std::vector<CommandParam> &vtCMDParams);
     afx_msg void OnBnClickedExecCmd();
+    void ClearEdit();
 };

+ 5 - 4
TCLTools/TCLTools/resource.h

@@ -9,14 +9,15 @@
 #define IDC_COMBO_CMDS                  1002
 #define IDC_EDIT2                       1003
 #define BTN_OPEN_FILE                   1004
-#define IDC_CHECK1                      1005
 #define IDC_CHECK_HB                    1005
 #define IDC_CHECK2                      1006
-#define IDC_EDIT1                       1007
-#define IDC_EDIT3                       1008
+#define IDC_EDIT_INT                    1007
+#define IDC_EDIT_STR                    1008
 #define IDC_EDIT4                       1009
+#define IDC_EDIT_HEX                    1009
 #define BTN_EXEC_CMD                    1010
 #define BTN_OPEN_PORT                   1011
+#define IDC_EDIT_STATUS                 1012
 
 // Next default values for new objects
 // 
@@ -24,7 +25,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        130
 #define _APS_NEXT_COMMAND_VALUE         32771
-#define _APS_NEXT_CONTROL_VALUE         1012
+#define _APS_NEXT_CONTROL_VALUE         1013
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif