前不久发布的AT组件,本人刚好有一款4G模块也是用AT指令进行开发,故此AT组件进行移植使用,使用过程中发现有几个问题,放在这里讨论。
1.代码封装不好。如果我要接两个wifi模块,或者接进去更多带有AT指令的模块,AT组件就无法快速添加处理。还要对源代码进行处理。
2.URC 网络数据处理有问题。AT组件URC解析方法是根据URC 数据前缀,数据后缀来得到之间的数据。这样子处理是有问题的。比如:
接收到的URC 网络数据为:
+RECEIVE,1,7
12345
设置的URC 数据前缀为+RECEIVE,后缀为
,这样子能正常接收完整个数据,但是,如果业务数据里面含有
,就有问题了。
+RECEIVE,1,9
123
45
解析出来的数据
+RECEIVE,1,9
123
正常的方法是,AT模块接收到URC 网络数据,输出给串口会返回一个关于业务数据大小的值,比如+RECEIVE,,,根据data length这个值判断处理会比较好。
3.看到下面这段代码,URC 数据里面有
,肯定会解析有问题,会被过滤掉。
/ is newline or URC data /
if ((ch == ‘
‘ && last_ch == ‘ ‘) || (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;
}
看到的朋友们,可以过来讨论讨论。一起想想办法解决这三个问题。
我帮你总结下:
问题1:AT client 目前不支持多客户端,即多实例吗?
答:目前只支持单例模式,下月还会有个新版本释出,将会支持多实例哈。
问题2:URC 网络数据处理可能有问题,担心会与业务数据粘连
答:可以看下 ESP8266 及 M26 关于 TCP/UDP 数据接收的处理,这个是基本功能。感觉不存在你说的问题。
问题3:怀疑 URC 里有换行符时,无法解析。
答:这种情况不存在的哦。给你截图看下我们在 ESP8266 中的 URC 表[attach]4910[/attach]
最后,还是要感谢你关注与反馈,存在的问题我们也会马上修复。
后续也可以再多真机体验下我们的 AT 组件,欢迎再继续给我们吐槽哈。
大学毕业那会就在关注RTT了,到现在都还没上过实际项目,最近项目中用的串口AT模块比较多,想上RTT,看了论坛里关于这一块的好多资料,感觉毫无头绪,我现在想从ESP8266先入手,后面再上M26或者SIM800C,有做过这块的高手吗,指导一下呀
去 RT-Thread 文档中心,看下 AT 的文档就行了
大学毕业那会就在关注RTT了,到现在都还没上过实际项目,最近项目中用的串口AT模块比较多,想上RTT,看了论 …
去 RT-Thread 文档中心,看下 AT 的文档就行了
https://www.rt-thread.org/docume … d-system-at-client/
[i=s] 本帖最后由 Cheney_Chen 于 2018-10-15 09:59 编辑 [/i]
建议查看下面三个文档了解 AT 组件和 SAL 组件使用:
AT 组件客户端应用笔记:https://www.rt-thread.org/document/site/rtthread-application-note/components/at/an0014-rtthread-system-at-client/
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/