AT

AT组件使用问题

发布于 2018-08-04 13:32:41
    本帖最后由 a934275423 于 2018-8-4 15:28 编辑


前不久发布的AT组件,本人刚好有一款4G模块也是用AT指令进行开发,故此AT组件进行移植使用,使用过程中发现有几个问题,放在这里讨论。
1.代码封装不好。如果我要接两个wifi模块,或者接进去更多带有AT指令的模块,AT组件就无法快速添加处理。还要对源代码进行处理。
2.URC 网络数据处理有问题。AT组件URC解析方法是根据URC 数据前缀,数据后缀来得到之间的数据。这样子处理是有问题的。比如:
接收到的URC 网络数据为:
+RECEIVE,1,7\r\n
12345\r\n
设置的URC 数据前缀为+RECEIVE,后缀为\r\n,这样子能正常接收完整个数据,但是,如果业务数据里面含有\r\n,就有问题了。
+RECEIVE,1,9\r\n
123\r\n45\r\n
解析出来的数据
+RECEIVE,1,9\r\n
123\r\n正常的方法是,AT模块接收到URC 网络数据,输出给串口会返回一个关于业务数据大小的值,比如+RECEIVE,,,根据data length这个值判断处理会比较好。
3.看到下面这段代码,URC 数据里面有\r\n,肯定会解析有问题,会被过滤掉。
/* is newline or URC data */
if ((ch == '\n' && last_ch == '\r') || (cust_end_sign != 0 && ch == cust_end_sign)
|| get_urc_obj(client->recv_buffer, read_len))
{
if (is_full)
{
LOG_E("read line failed. The line data length is out of buffer size(%d)!", AT_CLIENT_RECV_BUFF_LEN);
memset(client->recv_buffer, 0x00, AT_CLIENT_RECV_BUFF_LEN);
client->cur_recv_len = 0;
return -RT_EFULL;
}
client->cur_recv_len = read_len;
break;
}


看到的朋友们,可以过来讨论讨论。一起想想办法解决这三个问题。

查看更多

关注者
0
被浏览
4.4k
11 个回答
armink
armink 2018-08-04
我帮你总结下:

问题1:AT client 目前不支持多客户端,即多实例吗?
答:目前只支持单例模式,下月还会有个新版本释出,将会支持多实例哈。

问题2:URC 网络数据处理可能有问题,担心会与业务数据粘连
答:可以看下 ESP8266 及 M26 关于 TCP/UDP 数据接收的处理,这个是基本功能。感觉不存在你说的问题。

问题3:怀疑 URC 里有换行符时,无法解析。
答:这种情况不存在的哦。给你截图看下我们在 ESP8266 中的 URC 表TIM截图20180804135906.png

最后,还是要感谢你关注与反馈,存在的问题我们也会马上修复。
后续也可以再多真机体验下我们的 AT 组件,欢迎再继续给我们吐槽哈。
a934275423
a934275423 2018-08-04
armink 发表于 2018-8-4 14:01
我帮你总结下:

问题1:AT client 目前不支持多客户端,即多实例吗?


好的。我看看。
a934275423
a934275423 2018-08-04
第二个问题,和第三个问题找到了。是我移植出了问题。
a934275423
a934275423 2018-08-04
armink 发表于 2018-8-4 14:01
我帮你总结下:

问题1:AT client 目前不支持多客户端,即多实例吗?


期待多实例的功能早点发布。我准备用于真实产品研发测试了
armink
armink 2018-08-04
a934275423 发表于 2018-8-4 15:32
期待多实例的功能早点发布。我准备用于真实产品研发测试了

好的,请持续关注 RT-Thread 最新状态哈~
80x86
80x86 2018-08-08
armink 发表于 2018-8-4 14:01
我帮你总结下:

问题1:AT client 目前不支持多客户端,即多实例吗?


赞!逻辑清晰,概括表达能力很强
fengye
fengye 2018-10-14
大学毕业那会就在关注RTT了,到现在都还没上过实际项目,最近项目中用的串口AT模块比较多,想上RTT,看了论坛里关于这一块的好多资料,感觉毫无头绪,我现在想从ESP8266先入手,后面再上M26或者SIM800C,有做过这块的高手吗,指导一下呀
armink
armink 2018-10-15
去 RT-Thread 文档中心,看下 AT 的文档就行了

armink
armink 2018-10-15
fengye 发表于 2018-10-14 21:59
大学毕业那会就在关注RTT了,到现在都还没上过实际项目,最近项目中用的串口AT模块比较多,想上RTT,看了论 ...


去 RT-Thread 文档中心,看下 AT 的文档就行了

https://www.rt-thread.org/docume ... d-system-at-client/
Cheney_Chen
Cheney_Chen 2018-10-15
    本帖最后由 Cheney_Chen 于 2018-10-15 09:59 编辑


建议查看下面三个文档了解 AT 组件和 SAL 组件使用:
AT 组件客户端应用笔记:
AT 组件编程指南:https://www.rt-thread.org/document/site/submodules/rtthread-manual-doc/zh/1chapters/14-chapter_at/
SAL组件编程指南:https://www.rt-thread.org/document/site/submodules/rtthread-manual-doc/zh/1chapters/13-chapter_sal/
wuxidanding
wuxidanding 2019-08-07
你好,我在使用AT组件时,碰到业务数据中有ODOA的情况,业务数据 0D0A 前后并没有特征性数据可以过滤,这个情况如何处理???谢谢

撰写答案

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

发布
问题

分享
好友