From a6dedec1adeeb974bceb1930cb63178d6165c7f6 Mon Sep 17 00:00:00 2001
From: nancy.liao <huihui.liao@greentest.com.cn>
Date: 周三, 16 4月 2025 09:53:34 +0800
Subject: [PATCH] 使用了scpi-def的cpp版本

---
 libscpi/src/ieee488.c       |   11 ---
 libscpi/inc/scpi/ieee488.h  |    3 
 libscpi/inc/scpi/scpi-def.h |   21 ++++--
 CMakeLists.txt              |    9 ---
 libscpi/src/scpi-def.cpp    |  100 ++++++++++++++++----------------
 5 files changed, 65 insertions(+), 79 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6b54d66..58b4f6d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,18 +23,9 @@
 
 target_link_libraries(scpi_static PRIVATE Qt::Core)
 
-# if(MSVC)
-# 	target_compile_options(scpi_static PRIVATE /TP)
-# endif()
-
 project(scpi_static LANGUAGES CXX)
 
-# add_library(scpi SHARED ${SRC_FILES})
 
-# target_include_directories(scpi
-#     PUBLIC
-#         "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/libscpi/inc>"
-# )
 
 enable_testing()
 find_package(unofficial-cunit CONFIG REQUIRED)
diff --git a/libscpi/inc/scpi/ieee488.h b/libscpi/inc/scpi/ieee488.h
index d0b822e..56dd3ad 100644
--- a/libscpi/inc/scpi/ieee488.h
+++ b/libscpi/inc/scpi/ieee488.h
@@ -53,13 +53,14 @@
     scpi_result_t SCPI_CoreOpcQ(scpi_t * context);
     scpi_result_t SCPI_CoreRst(scpi_t * context);
     scpi_result_t SCPI_CoreSre(scpi_t * context);
-    scpi_result_t SCPI_NanCy(scpi_t * context);
     scpi_result_t SCPICount(scpi_t * context);
     scpi_result_t SCPI_CoreSreQ(scpi_t * context);
     scpi_result_t SCPI_CoreStbQ(scpi_t * context);
     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/scpi-def.h b/libscpi/inc/scpi/scpi-def.h
index 471c9a9..8ce5c0c 100644
--- a/libscpi/inc/scpi/scpi-def.h
+++ b/libscpi/inc/scpi/scpi-def.h
@@ -28,16 +28,24 @@
 
 #ifndef __SCPI_DEF_H_
 #define __SCPI_DEF_H_
-#ifdef __cplusplus
-extern "C" {
-#endif
+
 
 #include "scpi/scpi.h"
 
+
+/*
+    SCPI_IDN1
+    SCPI_IDN2
+    SCPI_IDN3
+    SCPI_IDN4
+    杩欏嚑涓弬鏁版槸鐢ㄦ潵娉ㄥ唽鏃惰〃绀轰俊鎭� 
+    瀵瑰簲*IDN? 鏌ヨ鍛戒护鐨勮繑鍥炲唴瀹癸紙璁惧鏍囪瘑鏌ヨ鍛戒护锛�
+    鍏蜂綋鍐呭涓猴紙鍒堕�犲晢,鍨嬪彿,搴忓垪鍙�,鍥轰欢鐗堟湰锛� 
+    濡傛灉浣跨敤CPP鐗堟湰鐨勮瘽浣跨敤scpi-def.h 鍜宻cpi-def.cpp
+    杩欎釜鎻愪緵浜咰PP鐗堟湰鐨勬敮鎸侊紝.c鐨勭増鏈负鏃ф爣鍑嗙増鐗堟湰 
+*/
 #define SCPI_INPUT_BUFFER_LENGTH 256
 #define SCPI_ERROR_QUEUE_SIZE 17
-
-
 #define SCPI_IDN1 "MANUFACTURE"
 #define SCPI_IDN2 "INSTR2013"
 #define SCPI_IDN3 NULL
@@ -58,8 +66,5 @@
 
 scpi_result_t SCPI_SystemCommTcpipControlQ(scpi_t * context);
 
-#ifdef __cplusplus
-}
-#endif
 #endif /* __SCPI_DEF_H_ */
 
diff --git a/libscpi/src/ieee488.c b/libscpi/src/ieee488.c
index e45d8f3..6e20a4c 100644
--- a/libscpi/src/ieee488.c
+++ b/libscpi/src/ieee488.c
@@ -421,15 +421,4 @@
     return SCPI_RES_OK;
 }
 
-scpi_result_t SCPI_NanCy(scpi_t * context)
-{
-
-    return SCPI_RES_OK;
-}
-scpi_result_t SCPICount(scpi_t * context)
-{
-    return SCPI_RES_OK;
-
-
-}
 
diff --git a/libscpi/src/scpi-def.c b/libscpi/src/scpi-def.cpp
similarity index 80%
rename from libscpi/src/scpi-def.c
rename to libscpi/src/scpi-def.cpp
index c8af6f2..13cdd2a 100644
--- a/libscpi/src/scpi-def.c
+++ b/libscpi/src/scpi-def.cpp
@@ -338,6 +338,7 @@
     return SCPI_RES_OK;
 }
 
+
 /**
  * Reimplement IEEE488.2 *TST?
  *
@@ -352,70 +353,69 @@
 
     return SCPI_RES_OK;
 }
-
+/*
+    scpi_commands鎻愪緵浜嗘墍鏈夌殑scpi鍛戒护浠ュ強鍛戒护鐨勫洖璋冨嚱鏁板拰澶勭悊
+    鍚庣画濡傛灉闇�瑕佹坊鍔犺嚜瀹氫箟鐨勬寚浠ら泦鍒欏湪姝ゅ娣诲姞
+*/
 const scpi_command_t scpi_commands[] = {
     /* IEEE Mandated Commands (SCPI std V1999.0 4.1.1) */
-    { .pattern = "*CLS", .callback = SCPI_CoreCls,},
-    { .pattern = "*ESE", .callback = SCPI_CoreEse,},
-    { .pattern = "*ESE?", .callback = SCPI_CoreEseQ,},
-    { .pattern = "*ESR?", .callback = SCPI_CoreEsrQ,},
-    { .pattern = "*IDN?", .callback = SCPI_CoreIdnQ,},
-    { .pattern = "*OPC", .callback = SCPI_CoreOpc,},
-    { .pattern = "*OPC?", .callback = SCPI_CoreOpcQ,},
-    { .pattern = "*RST", .callback = SCPI_CoreRst,},
-    { .pattern = "*SRE", .callback = SCPI_CoreSre,},
-    { .pattern = "*SRE?", .callback = SCPI_CoreSreQ,},
-    { .pattern = "*STB?", .callback = SCPI_CoreStbQ,},
-    { .pattern = "*TST?", .callback = My_CoreTstQ,},
-    { .pattern = "*WAI", .callback = SCPI_CoreWai,},
+    {"*CLS", SCPI_CoreCls, 0},
+    {"*ESE", SCPI_CoreEse, 0},
+    {"*ESE?", SCPI_CoreEseQ, 0},
+    {"*ESR?", SCPI_CoreEsrQ, 0},
+    {"*IDN?", SCPI_CoreIdnQ, 0},
+    {"*OPC", SCPI_CoreOpc, 0},
+    {"*OPC?", SCPI_CoreOpcQ, 0},
+    {"*RST", SCPI_CoreRst, 0},
+    {"*SRE", SCPI_CoreSre, 0},
+    {"*SRE?", SCPI_CoreSreQ, 0},
+    {"*STB?", SCPI_CoreStbQ, 0},
+    {"*TST?", My_CoreTstQ, 0},
+    {"*WAI", SCPI_CoreWai, 0},
+    //鐢ㄦ潵娴嬭瘯
+    //{"*NanCy", SCPI_NanCy, 0},
 
     /* Required SCPI commands (SCPI std V1999.0 4.2.1) */
-    {.pattern = "SYSTem:ERRor[:NEXT]?", .callback = SCPI_SystemErrorNextQ,},
-    {.pattern = "SYSTem:ERRor:COUNt?", .callback = SCPI_SystemErrorCountQ,},
-    {.pattern = "SYSTem:VERSion?", .callback = SCPI_SystemVersionQ,},
+    {"SYSTem:ERRor[:NEXT]?", SCPI_SystemErrorNextQ, 0},
+    {"SYSTem:ERRor:COUNt?", SCPI_SystemErrorCountQ, 0},
+    {"SYSTem:VERSion?", SCPI_SystemVersionQ, 0},
 
-    /* {.pattern = "STATus:OPERation?", .callback = scpi_stub_callback,}, */
-    /* {.pattern = "STATus:OPERation:EVENt?", .callback = scpi_stub_callback,}, */
-    /* {.pattern = "STATus:OPERation:CONDition?", .callback = scpi_stub_callback,}, */
-    /* {.pattern = "STATus:OPERation:ENABle", .callback = scpi_stub_callback,}, */
-    /* {.pattern = "STATus:OPERation:ENABle?", .callback = scpi_stub_callback,}, */
+    {"STATus:QUEStionable[:EVENt]?", SCPI_StatusQuestionableEventQ, 0},
+    {"STATus:QUEStionable:ENABle", SCPI_StatusQuestionableEnable, 0},
+    {"STATus:QUEStionable:ENABle?", SCPI_StatusQuestionableEnableQ, 0},
 
-    {.pattern = "STATus:QUEStionable[:EVENt]?", .callback = SCPI_StatusQuestionableEventQ,},
-    /* {.pattern = "STATus:QUEStionable:CONDition?", .callback = scpi_stub_callback,}, */
-    {.pattern = "STATus:QUEStionable:ENABle", .callback = SCPI_StatusQuestionableEnable,},
-    {.pattern = "STATus:QUEStionable:ENABle?", .callback = SCPI_StatusQuestionableEnableQ,},
-
-    {.pattern = "STATus:PRESet", .callback = SCPI_StatusPreset,},
+    {"STATus:PRESet", SCPI_StatusPreset, 0},
 
     /* DMM */
-    {.pattern = "MEASure:VOLTage:DC?", .callback = DMM_MeasureVoltageDcQ,},
-    {.pattern = "CONFigure:VOLTage:DC", .callback = DMM_ConfigureVoltageDc,},
-    {.pattern = "MEASure:VOLTage:DC:RATio?", .callback = SCPI_StubQ,},
-    {.pattern = "MEASure:VOLTage:AC?", .callback = DMM_MeasureVoltageAcQ,},
-    {.pattern = "MEASure:CURRent:DC?", .callback = SCPI_StubQ,},
-    {.pattern = "MEASure:CURRent:AC?", .callback = SCPI_StubQ,},
-    {.pattern = "MEASure:RESistance?", .callback = SCPI_StubQ,},
-    {.pattern = "MEASure:FRESistance?", .callback = SCPI_StubQ,},
-    {.pattern = "MEASure:FREQuency?", .callback = SCPI_StubQ,},
-    {.pattern = "MEASure:PERiod?", .callback = SCPI_StubQ,},
+    {"MEASure:VOLTage:DC?", DMM_MeasureVoltageDcQ, 0},
+    {"CONFigure:VOLTage:DC", DMM_ConfigureVoltageDc, 0},
+    {"MEASure:VOLTage:DC:RATio?", SCPI_StubQ, 0},
+    {"MEASure:VOLTage:AC?", DMM_MeasureVoltageAcQ, 0},
+    {"MEASure:CURRent:DC?", SCPI_StubQ, 0},
+    {"MEASure:CURRent:AC?", SCPI_StubQ, 0},
+    {"MEASure:RESistance?", SCPI_StubQ, 0},
+    {"MEASure:FRESistance?", SCPI_StubQ, 0},
+    {"MEASure:FREQuency?", SCPI_StubQ, 0},
+    {"MEASure:PERiod?", SCPI_StubQ, 0},
 
-    {.pattern = "SYSTem:COMMunication:TCPIP:CONTROL?", .callback = SCPI_SystemCommTcpipControlQ,},
+    {"SYSTem:COMMunication:TCPIP:CONTROL?", SCPI_SystemCommTcpipControlQ, 0},
 
-    {.pattern = "TEST:BOOL", .callback = TEST_Bool,},
-    {.pattern = "TEST:CHOice?", .callback = TEST_ChoiceQ,},
-    {.pattern = "TEST#:NUMbers#", .callback = TEST_Numbers,},
-    {.pattern = "TEST:TEXT", .callback = TEST_Text,},
-    {.pattern = "TEST:ARBitrary?", .callback = TEST_ArbQ,},
-    {.pattern = "TEST:CHANnellist", .callback = TEST_Chanlst,},
+    {"TEST:BOOL", TEST_Bool, 0},
+    {"TEST:CHOice?", TEST_ChoiceQ, 0},
+    {"TEST#:NUMbers#", TEST_Numbers, 0},
+    {"TEST:TEXT", TEST_Text, 0},
+    {"TEST:ARBitrary?", TEST_ArbQ, 0},
+    {"TEST:CHANnellist", TEST_Chanlst, 0},
+
     SCPI_CMD_LIST_END
 };
 
 scpi_interface_t scpi_interface = {
-    .error = SCPI_Error,
-    .write = SCPI_Write,
-    .control = SCPI_Control,
-    .flush = SCPI_Flush,
-    .reset = SCPI_Reset,
+    /*.error = */ SCPI_Error,
+    /*.write = */ SCPI_Write,
+    /*.control = */ SCPI_Control,
+    /*.flush = */ SCPI_Flush,
+    /*.reset = */ SCPI_Reset,
 };
 
 char scpi_input_buffer[SCPI_INPUT_BUFFER_LENGTH];

--
Gitblit v1.9.1