From cc47c934744c759fa47133fc70b7d23aa4a2d7f1 Mon Sep 17 00:00:00 2001
From: nancy.liao <huihui.liao@greentest.com.cn>
Date: 周一, 21 4月 2025 19:55:59 +0800
Subject: [PATCH] 修改了一部分的宏定义声明和屏蔽了一些调试时的无效干扰

---
 .gitignore                       |    1 +
 libscpi/inc/scpi/types.h         |   21 +++++++++++++++++++--
 libscpi/src/ieee488.c            |    3 +--
 libscpi/inc/scpi/ieee488.h       |    2 --
 libscpi/src/parser.c             |   18 ++++++++++++++----
 libscpi/inc/scpi/parser.h        |    4 ++++
 libscpi/src/test-interactive.cpp |    2 +-
 libscpi/src/scpi-def.cpp         |    2 +-
 8 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/.gitignore b/.gitignore
index 1ca19bb..26e254c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,3 +41,4 @@
 
 build/
 .vscode/
+*Zone.Identifier
diff --git a/libscpi/inc/scpi/ieee488.h b/libscpi/inc/scpi/ieee488.h
index 56dd3ad..f482855 100644
--- a/libscpi/inc/scpi/ieee488.h
+++ b/libscpi/inc/scpi/ieee488.h
@@ -59,8 +59,6 @@
     scpi_result_t SCPI_CoreTstQ(scpi_t * context);
     scpi_result_t SCPI_CoreWai(scpi_t * context);
 
-    scpi_result_t SCPI_NanCy(scpi_t * context);
-
 
 #define STB_R01 0x01    /* Not used */
 #define STB_PRO 0x02    /* Protection Event Flag */
diff --git a/libscpi/inc/scpi/parser.h b/libscpi/inc/scpi/parser.h
index 7e81bdb..ab65275 100644
--- a/libscpi/inc/scpi/parser.h
+++ b/libscpi/inc/scpi/parser.h
@@ -121,6 +121,10 @@
     scpi_bool_t SCPI_ParamUInt64(scpi_t * context, uint64_t * value, scpi_bool_t mandatory);
     scpi_bool_t SCPI_ParamFloat(scpi_t * context, float * value, scpi_bool_t mandatory);
     scpi_bool_t SCPI_ParamDouble(scpi_t * context, double * value, scpi_bool_t mandatory);
+
+
+
+
     scpi_bool_t SCPI_ParamCharacters(scpi_t * context, const char ** value, size_t * len, scpi_bool_t mandatory);
     scpi_bool_t SCPI_ParamArbitraryBlock(scpi_t * context, const char ** value, size_t * len, scpi_bool_t mandatory);
     scpi_bool_t SCPI_ParamCopyText(scpi_t * context, char * buffer, size_t buffer_len, size_t * copy_len, scpi_bool_t mandatory);
diff --git a/libscpi/inc/scpi/types.h b/libscpi/inc/scpi/types.h
index 1212ff6..f7dbcf1 100644
--- a/libscpi/inc/scpi/types.h
+++ b/libscpi/inc/scpi/types.h
@@ -368,6 +368,20 @@
         SCPI_NUM_NINF,
         SCPI_NUM_AUTO
     };
+
+    enum SCPIRError
+    {
+        RETURN_TRUE = 0,
+        //鍛戒护鏈畾涔�
+        RETURN_UnDefine = -1,
+        //闀垮害婧㈠嚭
+        RETURN_LengthOverFlow = -2,
+        //鍛戒护闈炴硶
+        RETURN_IllegalCommand = -3,
+        //鍥炶皟鍑芥暟娌℃湁鎵惧埌
+        RETURN_NotFind = -4
+
+    };
     typedef enum _scpi_special_number_t scpi_special_number_t;
 
     struct _scpi_choice_def_t {
@@ -420,6 +434,7 @@
         scpi_command_callback_t reset;
     };
 
+
     struct _scpi_t {
         //鍛戒护琛ㄧ殑鎸囬拡
         const scpi_command_t * cmdlist;
@@ -455,10 +470,12 @@
         const char * idn[4];
         //鍓╀綑寰呬紶杈撶殑瀛楄妭
         size_t arbitrary_remaining;
-        //output涓鸿嚜澧炲瓧娈碉紝淇濆瓨杩斿洖缁撴灉,鎻愪緵缁欑▼搴忓搷搴斿唴閮ㄨ緭鍑�
-        char outPut[1024];
+
+        int SCPIerror;
     };
 
+
+
     enum _scpi_array_format_t {
         SCPI_FORMAT_ASCII = 0,
         SCPI_FORMAT_NORMAL = 1,
diff --git a/libscpi/src/ieee488.c b/libscpi/src/ieee488.c
index b6efef0..09279ba 100644
--- a/libscpi/src/ieee488.c
+++ b/libscpi/src/ieee488.c
@@ -329,8 +329,7 @@
         if (context->idn[i])
         {
             char* outPut = "IDNS鍝嶅簲";
-            memcpy(context->outPut,outPut,strlen(outPut));
-            context->interface->write(context,context->idn[i],0);
+           // context->interface->write(context,context->idn[i],0);
             SCPI_ResultMnemonic(context, context->idn[i]);
         } else {
             SCPI_ResultMnemonic(context, "0");
diff --git a/libscpi/src/parser.c b/libscpi/src/parser.c
index 0e49a8f..ce17163 100644
--- a/libscpi/src/parser.c
+++ b/libscpi/src/parser.c
@@ -55,7 +55,8 @@
  */
 static size_t writeData(scpi_t * context, const char * data, size_t len) {
     if ((len > 0) && (data != NULL)) {
-        return context->interface->write(context, data, len);
+        return 0;
+       // return context->interface->write(context, data, len);
     } else {
         return 0;
     }
@@ -126,7 +127,9 @@
 
  //璐熷懡浠ゅ洖璋冪殑鎵ц銆佸弬鏁板鐞嗗拰閿欒绠$悊
 static scpi_bool_t processCommand(scpi_t * context) {
+    //杩欎釜鍦版柟淇敼涓� 璇籧omdlist->pattern
     const scpi_command_t * cmd = context->param_list.cmd;
+    //const scpi_command_t * cmd = context->cmdlist->pattern;
     lex_state_t * state = &context->param_list.lex_state;
     scpi_bool_t result = TRUE;
     // 鍏堟娴嬫槸鍚︿负鏌ヨ鍛戒护(浠�?缁撳熬)
@@ -188,6 +191,7 @@
             return TRUE;
         }
     }
+    context->SCPIerror = RETURN_NotFind;
     return FALSE;
 }
 
@@ -229,6 +233,7 @@
 
         if (state->programHeader.type == SCPI_TOKEN_INVALID) {
             SCPI_ErrorPush(context, SCPI_ERROR_INVALID_CHARACTER);
+            context->SCPIerror = RETURN_IllegalCommand;
             result = FALSE;
         } 
         else if (state->programHeader.len > 0) 
@@ -254,6 +259,7 @@
                 size_t r2 = r;
                 while (r2 > 0 && (data[r2 - 1] == '\r' || data[r2 - 1] == '\n')) r2--;
                 SCPI_ErrorPushEx(context, SCPI_ERROR_UNDEFINED_HEADER, data, r2);
+                context->SCPIerror = RETURN_UnDefine;
                 result = FALSE;
             }
         }
@@ -372,7 +378,8 @@
             context->buffer.position = 0;
             context->buffer.data[context->buffer.position] = 0;
             SCPI_ErrorPush(context, SCPI_ERROR_INPUT_BUFFER_OVERRUN);
-            return FALSE;
+            context->SCPIerror = RETURN_LengthOverFlow;
+            return result;
         }
         memcpy(&context->buffer.data[context->buffer.position], data, len);
         context->buffer.position += len;
@@ -1051,6 +1058,9 @@
     return result;
 }
 
+
+
+
 /**
  * Read signed/unsigned 32 bit integer parameter
  * @param context
@@ -1480,8 +1490,8 @@
  */
  //璇嗗埆瀹屾暣鐨凷CPI鍛戒护
 int scpiParser_detectProgramMessageUnit(scpi_parser_state_t * state, char * buffer, int len) {
-    lex_state_t lex_state;
-    scpi_token_t tmp;
+    lex_state_t lex_state = {};
+    scpi_token_t tmp = {};
     int result = 0;
     // 鍒濆鍖栬瘝娉曞垎鏋�
     lex_state.buffer = lex_state.pos = buffer;
diff --git a/libscpi/src/scpi-def.cpp b/libscpi/src/scpi-def.cpp
index 13cdd2a..83ec9cc 100644
--- a/libscpi/src/scpi-def.cpp
+++ b/libscpi/src/scpi-def.cpp
@@ -98,7 +98,7 @@
 }
 
 static scpi_result_t DMM_ConfigureVoltageDc(scpi_t * context) {
-    double param1, param2;
+    double param1 = -1.0, param2 = -1.0;
     fprintf(stderr, "conf:volt:dc\r\n"); /* debug command name */
 
     /* read first parameter if present */
diff --git a/libscpi/src/test-interactive.cpp b/libscpi/src/test-interactive.cpp
index b4c8232..edec5f5 100644
--- a/libscpi/src/test-interactive.cpp
+++ b/libscpi/src/test-interactive.cpp
@@ -91,7 +91,7 @@
     (void) argv;
 
     // SCPI_Init(&scpi_context,
-    //         myscpi_commands,
+      //       scpi_commands,
     //         &scpi_interface,
     //         scpi_units_def,
     //         SCPI_IDN1, SCPI_IDN2, SCPI_IDN3, SCPI_IDN4,

--
Gitblit v1.9.1