AT 组件无法正确解析数据

发布于 2020-10-20 19:27:04

之前的代码使用 at_resp_get_line_by_kw 可以正确解析,后面改逻辑重写应用代码了,就不行。
打开了 RAW 数据查看,发送的是同样的命令,返回的也是同样的数据, at_resp_set_info 设置的参数也是一样的,解析部分的代码也是直接复制黏贴的,但是重写的就是解析不了。
下面是解析使用的判断:

if (!at_resp_get_line_by_kw(resp, "CONNECT OK")) {
    LOG_E(...);
}

图1 是以前的代码执行的 RAW 数据
n.png

图2 是重写后代码执行的 RAW 数据
error.png

而且很奇怪的是,我设置的逻辑是如果解析失败,就会跳转到释放 resp 地方,但是如图2 所示,使用下面代码释放 resp 时直接出断言了(我使用了 CMBaddr2line 分析,确信就是这里出现的断言)

if (resp) {
    at_delete_resp(resp);
}



Edit1(2020/10/20 21:31):
使用 at_resp_parse_line_args 解析指定行号的响应数据,依然无法解析,代码如下:

char connect_ret[5] = { 0 };
if(at_resp_parse_line_args(resp, 4, "7,CONNECT %s", connect_ret) >= 0) {
    LOG_W("CONNECT %s", connect_ret);
}

结果如下:
2.png



Edit2(2020/10/20 21:57)
直接将第4行全部当作数据解析,结果是个 'M',然而第 4 行根本没有 'M' ...

char connect_ret[32] = "";
if(at_resp_parse_line_args(resp, 4, "%s", connect_ret) >= 0) {
    LOG_W("%s", connect_ret);
}

3.png

查看更多

关注者
0
被浏览
160
0 个回答
暂无答案,快来添加答案吧

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览