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