nancy.liao
2025-05-26 77a92c3204b95eaf2870605718b9099ab6ece56a
libscpi/src/parser.c
@@ -57,7 +57,7 @@
static size_t writeData(scpi_t * context, const char * data, size_t len) {
    if ((len > 0) && (data != NULL)) {
        return 0;
       // return context->interface->write(context, data, len);
        return context->interface->write(context, data, len);
    } else {
        return 0;
    }
@@ -180,7 +180,7 @@
 * @param context
 * @result TRUE if context->paramlist is filled with correct values
 */
scpi_bool_t findCommandHeader(scpi_t * context, const char * header,int len)
scpi_bool_t findCommandHeader(scpi_t * context, const char * header)
{
    //参数已经在前面部分解析完成,匹配命令时就不再需要参数部分 将命令拆除即可
    char *header_copy = strdup(header);
@@ -190,6 +190,7 @@
    {
        if( match_segments_global(first_part,i) )
        {
            setCurrentIndex(i);
            context->param_list.cmd = &context->cmdlist[i];
            free(header_copy);
            return TRUE;
@@ -245,7 +246,7 @@
            //命令有效开始处理
            composeCompoundCommand(&cmd_prev, &state->programHeader);
            //查找命令后并且设置解析状态并且执行命令
            if (findCommandHeader(context, state->programHeader.ptr, state->programHeader.len)) {
            if (findCommandHeader(context, state->programHeader.ptr)) {
                context->param_list.lex_state.buffer = state->programData.ptr;
                context->param_list.lex_state.pos = context->param_list.lex_state.buffer;
@@ -361,6 +362,7 @@
 */
scpi_bool_t SCPI_Input(scpi_t * context, const char * data, int len)
{
    clearCurrentGroup();
    scpi_bool_t result = FALSE;
    size_t totcmdlen = 0;
    int cmdlen = 0;