Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AT
AT Device 软件包使用说明与问题汇总
发布于 2019-06-28 16:49:26 浏览:13834
订阅该版
[tocm] AT Device 软件包发布有将近一年的时间了,期间经过几个版本的迭代,AT Device 软件包支持的功能和使用的方式也基本趋于稳定。 从软件包的下载量和排名也可以看出大家对 AT Device 软件包的热情和支持。 ![at_device_t.jpg](/uploads/201906/28/170828k1tviiwvtiwwvp4i.jpg) 本帖主要介绍 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 交互命令,提供简便的 AT 设备初始化和控制操作接口,并且抽象标准 BSD Socket API 用于 AT 设备网络连接。 - AT Device 软件包目前支持的设备如下: - wifi 模块:ESP8266、RW007 - 2G 模块:M26、MC20、SIM800C - 4G 模块:EC20、SIM76XX ### 2. 为什么要使用 AT Device 软件包 - 现如今,AT 命令被广泛的应用于嵌入式开发领域,但是针对不同厂家或者设备 AT 命令的格式不尽相同,使得适配的程序缺少重用性也为程序维护提供困难。使用 AT Device 软件包,**抽象统一接口,应用层无需改动程序即可兼容不同的 AT 设备**。 - 针对 AT 设备程序开发,最难处理的就是 AT 命令的收发和数据解析的操作,如果处理不好很容易造成数据的丢失或解析错误。 AT Device 软件包中针对不同设备已经完成大部分命令交互和解析的工作,并**提供标准命令交互和数据解析接口**,用户只需调用简单接口即可完成对 AT 设备的控制。 - AT Device 软件包提供多种 AT 设备支持,针对已经适配好的设备,可以直接配置使用软件包,无需任何更改,即可对 AT 设备进行管理和控制。 - AT Device 软件包支持**多个 AT 设备同时接入**(V2.0.0 版本支持),各个 AT 设备之间独立互不影响。 ### 3. 如何使用 AT Device 软件包 - AT Device 软件包官方地址:https://github.com/RT-Thread-packages/at_device - AT Device 软件包最新版本号:V2.0.0 版本 - AT Device 软件包配置使用方式,参考[软件包使用说明配置选项介绍](https://github.com/RT-Thread-packages/at_device#2-%E8%8E%B7%E5%8F%96%E6%96%B9%E5%BC%8F)。 ### 4. 软件包版本更新说明 AT Device 软件包发布以来经过了多个版本的更新迭代,各个版本之间功能有所差异且需要适配 AT 组件改动,导致大家在版本的选择上容易产生问题,下面着重介绍一下 AT Device 软件包版本发展史,**如果在版本选择和使用上出现的问题小伙伴可以优先查看这里**。 目前 AT Device 软件包已经 release 7 个版本,最新版本为 laster 版本(V2.0.0),各个版本介绍如下: - V1.0.0:该版本为最初版本,适配 ESP8266、M26 模块,距最新版本改动较大,不建议使用; - V1.1.0:该版本主要适配系统中 SAL 组件和 AT 组件改动,距最新版本改动较大,不建议使用; - V1.2.0:该版本要修复 BUG,添加对 EC20 模块支持,建议配合 RT-Thread V3.1.0 版本使用; - V1.3.0:该版本主要适配 AT 组件中多客户端功能支持,建议配合 RT-Thread V3.1.0 版本使用; - V1.4.0:该版本修复软件包 BUG,建议配合 RT-Thread V3.1.1 、V3.1.2 或 V4.0.0 版本 使用; - V1.5.0:该版本添加对 RW007、SIM800C、SIM76XX 模块支持,建议配合 RT-Thread V3.1.1 、V3.1.2或 V4.0.0 版本使用; - V1.6.0:该版本适配 netdev 网卡组件,添加 AT Device 网卡命令的支持,需要配合 RT-Thread V3.1.3 版本 或 V4.0.1 版本使用; - laster(V2.0.0):最新版本重构了 AT Device 软件包结构,添加对多网络客户端支持,即支持同时选中多个 AT 设备。因为改动较大且和之前 RT-Thread 版本不兼容,**如果选中 laster 版本 AT Device 软件包,只能使用 Github 最新版本 RT-Thread!!!** 综上我们可以知道,不同版本 AT Device 软件包在使用时对 RT-Thread 版本有一定依赖,希望大家在使用之前注意这点。当然 AT Device 软件包版本依赖在 ENV 中已经处理,我们需要做的只有**更新 ENV!更新 ENV!更新ENV!**,才能正确的处理软件包依赖关系。 ### 5. 软件包使用注意事项 - 配置软件包之前建议 `pkgs --upgrade` 更新 ENV 工具(强烈建议 ENV 工具添加自动更新功能); - 如果使用 github 上最新版本 RT-Thread ,则只能使用 laster 版本 AT Device 软件包;如果使用 release 版本 RT-Thread ,请参考上述软件版本更新说明选择合适版本 AT Device 软件包。 - AT Device 软件包适配的模块目前**不支持作为网络服务器**使用(如 accept 等函数不支持); - AT Device 软件包 V1.X.X 版本只支持开启一个设备,V2.0.0 版本(laster)支持同时开启多个设备。 - AT Device 软件包 V1.X.X 版本和 V2.0.0 版本选项配置方式差异较大,如果进行版本升级请详细查 [软件包 README 文件中配置介绍](https://github.com/RT-Thread-packages/at_device/blob/master/README.md)。 - AT Device 软件包开启会默认开启 AT 组件中配置选项,一般来说 AT 组件中配置选项无需改动。 ## 常见问题汇总 下面就大家使用 AT Device 软件包或者 AT 组件时可能出现的一些问题进行整理: **1. 软件包版本更新或版本升级问题** ### 错误现象: ```c error: "at_device_ops" has already been declared in the current scope. ``` ```c error: #error directive: "This RT-Thread version is older!!, please check and updata laster RT-Thread!" ``` AT Device 软件包 V2.0.0 更新之后很多小伙伴遇到上述错误,这类问题是下载使用的软件包版本和 RT-Thread 版本不兼容的问题,参考[问题描述](https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=11896&extra=page%3D1%26filter%3Dtypeid%26typeid%3D5)。 ### 解决方式: - 首先需要使用 `pkgs --update` 命令更新 ENV工具,如果更新失败可在官网下载最新版 ENV 并更新,[ENV 下载地址](https://pan.baidu.com/s/1cg28rk)。 - 然后参考软件包版本更新说明,选择与当前 RT-Thread 系统匹配的软件包版本。 ### 2. 设备初始化不通过问题** #### 错误现象: ```c error: wait AT client(uart) connect timeout(5000 tick). ``` ```c error: AT client initialize failed! Not find the device(uart2). ``` ```c error: esp8266 device(esp1) network initialize failed(-1). ``` 该错误是配置的串口名称错误或者初始化时发送 `AT
` 命令等待 AT 设备响应超时问题,这时候开发板和 AT 设备之间命令无法正常交互。 #### 解决方式: - 该类问题一般都是开发板和 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 连接状态错误问题** #### 错误现象: ```c error: 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 命令,得到的响应数据不全,缺少部分尾部数据,但是命令发送函数返回正常,参考[问题描述](https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=10384&extra=page%3D2%26filter%3Dtypeid%26typeid%3D5)。 #### 处理方式 - 该错误可能是 AT 设备使用的串口接收缓冲器太小导致的(RT_SERIAL_RB_BUFSZ 默认为 64 bytes),数据未及时接收完就被覆盖导致的,建议适当增加串口接收数据的缓冲区大小(如 256 bytes)。 ### 6. 使用 AT Device 软件包完成 AT 设备联网后,部分网络功能不可用,无法作为网络服务器问题** #### 错误现象: AT 设备使用 AT Device 软件包完成联网之后,系统中部分网络软件包或网络功能不能使用,如 webnet 软件包、Telnet 功能、TFTP 功能等,参考[问题描述](https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=10364&extra=page%3D2%26filter%3Dtypeid%26typeid%3D5)。 #### 处理方式: - AT 设备目前只支持作为网络客户端使用,对于上述软件包或网络功能都是作为网络服务器,目前不支持使用。 ### 7. 常见问题调试处理方式 - 初始化失败,需检查硬件连接、AT 设备供电、WIFI 或 SIM 卡等网络连接环境; - FinSH 中输入`at client` 命令,进入 AT CLI 模式,CLI 模式下用户可以直接输入 AT 命令和 AT 设备进行交互,这样可以确定部分发送的命令和响应的格式是否正确; - 开启 RAW 数据可以实时的查看当前 AT 命令收发的详细信息,通过日志分析可以很方便的定位问题原因,注意需要调整 shell 串口波特率; - 针对不同的 AT 设备,AT 命令手册必不可少,一般在对应设备官方网站可以下载,可以帮助大家熟悉命令收发流程,配合 RAW 数据分析问题产生的原因。 - 上述方式都不行,建议贴吧发帖,或该贴下发回帖反馈问题! ## 后话 AT Device 软件包的发展离不开社区小伙伴的努力和支持,该贴将持续更新 AT Device 软件包常见问题,小伙伴们对 AT Device 软件包有什么改进的意见或者建议都可以直接在帖子下方提出。 针对论坛中大家经常提到的 AT 设备移植方式,将在下一篇帖子 《RT-Thread AT 设备移植指南》中为大家展现,尽情期待!! 最后,全家福镇楼。 ![at_device.jpg](/uploads/201906/28/170836q1919ggstggssy9z.jpg)
查看更多
57
个回答
默认排序
按发布时间排序
flyboy
2019-06-28
Do my self();
膜拜大佬!!!
Skiars
2019-06-28
这家伙很懒,什么也没写!
支持楼主!顶起
Ernest
2019-06-28
这家伙很懒,什么也没写!
at server 例程完美使用,简单、容易上手
armink
2019-06-29
这家伙很懒,什么也没写!
建议发到微信公众号 @小师妹
bernard
2019-06-30
这家伙很懒,什么也没写!
顶下,代码兼容性问题是一个十分重要的事情!有的时候牺牲一些代码质量的考虑,但能够有更好的兼容性,这也是值得的。
whj467467222
认证专家
2019-06-30
开源,分享,交流,共同进步
膜拜大佬
Cheney_Chen
2019-07-01
这家伙很懒,什么也没写!
>顶下,代码兼容性问题是一个十分重要的事情!有的时候牺牲一些代码质量的考虑,但能够有更好的兼容性,这也 ... 嗯,V2.0.0 版本之后软件包框架和功能基本趋于稳定,之后的改动应该不会太大,兼容性这快会重点考虑
shao7936626
2019-07-03
这家伙很懒,什么也没写!
我看到了合宙的720h呢,我也按照sim800c的 源码写了一下,但是我的产品是一个一直不关机的产品,感觉现在的at源码 好像没有设备的状态监测和重连机制
Cheney_Chen
2019-07-04
这家伙很懒,什么也没写!
>我看到了合宙的720h呢,我也按照sim800c的 源码写了一下,但是我的产品是一个一直不关机的产品,感觉现在的 ... 1. V2.0.0 版本 AT Device 软件包接入 netdev 中提供了对设备网络连接状态的实时检测,可以通过 netdev 组件中相关接口获取,或者 ifconfig 命令查看当前计入设备的网络信息。 2. 关于重连机制,目前软件包中没有做过多处理,但是软件包提供了 at_device_control 接口,可以对设备进行关机或者重启操作,或者其他控制类操作,可以通过 control 接口在应用层实现设备重连机制。
insect2006
2019-07-04
这家伙很懒,什么也没写!
RTT3.1.2,WIFI模块是ESP8266,现在使用的是版本是1.4.0,不需要升级了吧?
撰写答案
登录
注册新账号
关注者
2
被浏览
13.8k
关于作者
Cheney_Chen
这家伙很懒,什么也没写!
提问
4
回答
415
被采纳
1
关注TA
发私信
相关问题
1
rt-thread 2g/3g/4g通信模块的教程有吗?
2
基于AT指令,用esp8266如何连接mqtt?
3
AT组件使用问题
4
官方AT客户端应用笔记的几个小tip
5
RTT的SAL能够判断使用LWIP或者AT?
6
rt_therad AT组件移植不成功(结贴)
7
AT组件在哪个版本的?
8
AT组件 连接 Onenet 连接失败
9
esp8266 AT指令 MQTT连接问题
10
AT组件使用问题之模块主动上报【已解决】
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-Thread中的time溢出问题,时间戳溢出,解决方法
2
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
3
SystemView线程名字不显示
4
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
5
免费申请 | FRDM-MCXA156评测活动发布!
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
8
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
chenyaxing
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
3
次点赞
YZRD
1
篇文章
2
次点赞
Days
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部