细说 AT Device 软件包那些事

2020/05/31 11:08
阅读数 5.8K

AT Device 软件包发布有将近一年的时间了,在此期间软件包经过多个版本的迭代,软件包支持的功能和使用的方式基本趋于稳定。从软件包的下载量和排名也可以看出大家对 AT Device 软件包的热情和支持。



本文主要介绍 AT Device 软件包,并就 AT Device 软件包使用时出现的部分问题提出解决方式,希望对大家在 AT Device 软件包使用时有所帮助。


软件包介绍


1.  什么是 AT Deivce 软件包

  • AT Device 软件包是由不同 AT 设备的移植实现和示例文件组成;

  • AT Device 软件包需要配合 RT-Thread AT 组件使用,AT Device 软件包是 AT 组件针对不同 AT 设备的实现。

  • AT Device 软件包旨在简化 AT 设备命令交互流程。封装复杂的 AT 交互命令,提供简便的命令收发方式,提供标准的 BSD Socket API 网络接口。

  • AT Device 软件包目前支持的设备如下:

  • wifi 模块:ESP8266、RW007、MW31

  • 2G 模块:M26、MC20、SIM800C

  • 4G 模块:EC20、SIM76XX


下面为 RT-Thread 官方已经支持的 AT 设备汇总图:


2. 为什么要使用 AT Device 软件包

  • AT 命令被广泛的应用于嵌入式开发,但是不同厂家或设备没有统一命令格式标准。使用 AT Device 软件包,抽象统一网络接口,实现 AT 设备自动初始化和网络连接

  • AT 设备开发过程中,最难处理的就是 AT 命令的收发和解析操作。AT Device 软件包中针对不同设备已经完成大部分命令交互和解析的工作,并提供标准命令交互和数据解析接口

  • AT Device 软件包目前支持多种设备,可以配置设备类型接入不同设备,应用层无需改动程序即可兼容不同的 AT 设备

3. 如何使用 AT Device 软件包

  • AT Device 软件包官方地址:https://github.com/RT-Thread-packages/at_device (请将以上链接复制至外部浏览器打开)

  • AT Device 软件包配置使用方式:https://github.com/RT-Thread-packages/at_device/blob/master/README.md(请将以上链接复制至外部浏览器打开)

  • AT Device 软件包最新版本号:V2.0.0 版本


常见问题汇总


下面就大家使用 AT Device 软件包或者 AT 组件时可能出现的一些问题进行整理汇总:


1. 软件包版本更新或版本升级问题

错误现象:

👉滑查看全部

1error: #error directive: "This RT-Thread version is older!!, please check and updata laster RT-Thread!"

AT Device 软件包近期发布最新版本(V2.0.0),该版本重构 AT Device 软件包框架,并添加了许多新功能,如多网络客户端连接,网卡相关功能适配等。部分改动和之前版本不兼容,导致小伙伴们在软件包更新和版本升级时出现上述问题。

解决方式:

要正确处理版本问题,需要注意如下几点:

  • 养成定期升级软件包索引习惯,可以在 ENV 工具中执行 pkgs --upgrade 命令升级。

  • 升级软件包索引完成后,会根据当前 RT-Thread 系统版本推荐使用不同版本的 AT Device 软件包。如果选中 laster 版本 AT Device 软件包,则只能配合使用 Github 最新版本 RT-Thread!

2. 设备初始化不通过问题

错误现象:

1error: wait AT client(uart) connect timeout(5000 tick).


1error: AT client initialize failed! Not find the device(uart2).


1error: esp8266 device(esp1) network initialize failed(-1).


该类问题一般都是开发板和 AT 设备硬件连接错误问题或 AT 设备本身问题。如:配置的串口名称错误或者初始化时发送 AT\r\n 命令等待 AT 设备响应超时问题,可能导致开发板和 AT 设备之间命令无法正常交互。

解决方式:

  • 确定 AT 设备和开发板连接的串口名称,和 AT Device 软件包中配置的串口名称是否一致;

  • 确定开发板串口和 AT 设备的 TX/RX 引脚是否连接正常,反接 TX/RX 引脚确定问题;

  • 部分 AT 设备需要额外供电(如 ESP8266 设备),检查设备供电是否正常;

  • 针对 wifi 模块查看配置的 wifi ssid 和 password 是否正常;


3. 开启 AT 组件 RAW 数据打印功能后,日志显示错误问题


错误现象:

AT 组件中 Enable print RAW format AT command communication data 选项用于开启 AT 组件 RAW 数据显示功能,该功能可以打印出 AT 设备数据交互过程中发送和接收的命令详细信息。

部分小伙伴在开启该功能后,出现日志显示错误问题。

解决方式:

RAW 数据开启之后因为瞬时数据量较大,打印可能出现问题,可以修改  shell 串口波特率,一般改为 921600(注意修改的是 shell 串口波特率,不是 AT 设备串口)。

4. 发送数据失败,提示 Socket 连接状态错误问题


错误现象:

1error: send datat error, current socket(0) state (3) is error;

部分小伙伴在使用 AT Device 运行 onetnet 软件包或者 ali-iotkit 软件包时,关闭创建的 Socket 连接时会出现上述错误, 提示 Socket 关闭之后数据发送失败。

处理方式:

由错误日志可知该问题是当前 Socket 连接已经关闭,但是还有数据继续发送。该问题由于AT Device 软件包 V1.X.X 版本中对 Socket 状态处理不当导致,已经在 AT Device 软件包 V2.0.0 版本修复问题。

5. 发送 AT 命令后接收到的响应数据不完全问题


错误现象

开发板和 AT 设备正常连接后,发送 AT 命令,得到的响应数据不全,缺少部分尾部数据,但是命令发送函数返回正常。

处理方式

该错误可能是 AT 设备使用的串口接收缓冲器太小导致的(RT_SERIAL_RB_BUFSZ 默认为 64 bytes),数据未及时接收完就被覆盖导致的,建议适当增加串口接收数据的缓冲区大小(如 256 bytes)。

6. 网络连接之后,部分网络应用功能不可用,无法作为网络服务器问题

错误现象:

AT 设备使用 AT Device 软件包完成设备联网之后,系统中部分网络软件包或网络功能不能使用,如 webnet 软件包、Telnet 功能、TFTP 功能等。

处理方式:

AT 设备目前只支持作为网络客户端使用,对于上述软件包或网络功能都是作为网络服务器,目前不支持使用。

7. 软件包常见问题调试处理方式


  • 初始化失败,需检查硬件连接、AT 设备供电、WIFI 或 SIM 卡等网络连接环境;

  • FinSH 中输入at client 命令,进入 AT CLI 模式,CLI 模式下用户可以直接输入 AT 命令和 AT 设备进行交互,这样可以确定部分发送的命令和响应的格式是否正确;

  • 开启 RAW 数据可以实时的查看当前 AT 命令收发的详细信息,通过日志分析可以很方便的定位问题原因,注意需要调整 shell 串口波特率;

  • 针对不同的 AT 设备,AT 命令手册必不可少,一般在对应 AT 设备官方网站可以下载,可以帮助大家熟悉命令收发流程,配合 RAW 数据分析问题原因。

  • 上述方式都不行,建议 RT-Thread 官方贴吧发帖求助!论坛地址:https://www.rt-thread.org/qa/forum.php


后话


AT Device 软件包的发展离不开社区小伙伴的努力和支持,AT Device 软件包也在持续完善和更新中,后面会添加更多更好用的 AT 模块支持。

针对大家反馈的 AT 设备移植的问题,将在下一篇文章《RT-Thread AT 设备移植指南》中为大家展现,敬请期待!!



 


RT-Thread线上活动


1、【RT-Thread能力认证考试12月——RCEA】经过第一次考试的验证,RT-Thread能力认证得到了更多社区开发者和产业界的大力支持(点此查看)如果您有晋升、求职、寻找更好机会的需要,有深入学习和掌握RT-Thread的需求,欢迎垂询/报考!

能力认证官网链接:https://www.rt-thread.org/page/rac.html(在外部浏览器打开)


立即报名



#题外话# 喜欢RT-Thread不要忘了在GitHub上留下你的STAR哦,你的star对我们来说非常重要!链接地址:https://github.com/RT-Thread/rt-thread


你可以添加微信18917005679为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群


RT-Thread


让物联网终端的开发变得简单、快速,芯片的价值得到最大化发挥。Apache2.0协议,可免费在商业产品中使用,不需要公布源码,无潜在商业风险。

长按二维码,关注我们


看这里,求赞!求转发!

点击阅读原文进入GitHub

本文分享自微信公众号 - RTThread物联网操作系统(RTThread)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部