这并不是多出来一个 ‘\r’,而是,AT 组件在进行数据接收时,将每一行的最后一个字符,一般是 ‘\n’重写成了’\0’;
/* current receive is response */
client->recv_line_buf[client->recv_line_len - 1] = '\0';
if (resp->buf_len + client->recv_line_len < resp->buf_size)
{
/* copy response lines, separated by '\0' */
rt_memcpy(resp->buf + resp->buf_len, client->recv_line_buf, client->recv_line_len);
/* update the current response information */
resp->buf_len += client->recv_line_len;
resp->line_counts++;
}
else
{
client->resp_status = AT_RESP_BUFF_FULL;
LOG_E("Read response buffer failed. The Response buffer size is out of buffer size(%d)!", resp->buf_size);
}
你的问题应该是什么? at_resp_parse_line_args_by_kw
的函数逻辑,还是什么其他问题?
讲道理这个 '\r'
并不会影响后续的解析;