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