at 命令采用标准串口进行数据收发,将以前复杂的设备通讯方式转换成简单的串口编程,大大简化了产品的硬件设计和软件开发成本,这使得几乎所有的网络模组如gprs、3g/4g 、nb-iot、蓝牙、wifi 、gps 等模组都采用at命令。
随着物联网时代的发展,at 命令被广泛的用于单片机(mcu)+ 网络模块 这样的物联网开发模式,但是对于不同设备的 at 命令,其数据的收发和解析方式都大不相同,这直接提高开发的复杂度,也不利于代码的维护和重用。
为了解决不同网络模块 at 命令之间的差异导致的重复开发的问题,rt-thread 发布了 at 组件用于 at 设备开发。
rt-thread at 组件解决方案
rt-thread at 组件介绍
我们的 at 组件,是基于 rt-thread 系统的 at 客户端和服务器的实现。
rt-thread at 组件介绍
1.at 命令客户端
主要应用 mcu + at 模块的场景,mcu 内部为 at 命令客户端。其主要功能特点如下:
urc 数据处理: 完备的 urc 数据的处理方式;
数据解析: 支持自定义响应数据的解析方式,方便获取响应数据中相关信息;
调试模式: 提供命令行交互模式,主要用于设备调试;
at socket:提供标准的网络编程接口;
低资源占用:4.6k rom 和 2.0k ram。
urc: 全称是非请求结果码(unsolicited result code),特指 at 服务器主动发送给 at 客户端的数据。一般在特殊情况才会发送,具有一定的随机性。
2.at命令服务器
常应用于 at 模块内部,使 at 模块可以内置一些 at 命令。其主要功能特点如下:
基础命令: 实现多种通用基础命令;
命令兼容: 命令支持忽略大小写,提高命令兼容性;
命令检测: 命令支持自定义参数表达式,并实现对接收的命令参数自检测功能;
命令注册: 提供简单的用户自定义命令添加方式;
调试模式: 提供命令行交互模式,主要用于设备调试。
低资源占用: 4.0k rom 和 2.5k ram。
at 组件的创新
rt-thread 的 at 组件不仅仅有全面、完善的功能,还在用户使用、调试测试等细节方面做了充分的考虑。保证了资源占用低的同时,也能让用户用起来非常顺手。下面这些都是我们做出来的创新:
1.灵活的响应数据解析方式
响应数据的解析作为 at 模块开发的另一大难题,不同设备的命令、同一设备的不同命令的响应数据解析方式都可能大不相同,这大大增加开发者从响应数据中获取有效数据的难度。
rt-thread 对于响应数据的解析方式,提供了多种解析接口。比如:可以通过行号解析,也可以通过关键字查找解析。解析的方式还使用了标准 scanf 的表达式,它支持 正则表达式。使开发者在保存原始响应数据的同时,轻松的解析出想要的重要数据。
2.完备的urc 数据的处理机制
urc 数据为服务器主动下发的数据,一般在特殊情况才会发送,比如:开机日志,网络连接提示等。对于这些特殊情况,开发者往往都非常头疼。
因为 urc 数据一般没有固定格式,并且可能随机发送,处理不好很容易影响到整个数据的交互流程。所以对于 urc 的处理需要一个非常完善的机制。
目前, at 组件已具备强大的 urc 处理框架,确保每个 urc 数据都能得到合理的处理,并且支持对每一个 urc 数据执行自定义的操作。
3.简化 at 命令的收发流程
对于传统的 at 模块开发流程,一个 at 命令收发的整个流程可能需要多个步骤的处理,包括命令发送、发送结果判断、接收响应数据、响应结果判断等多个步骤。且不同命令的处理方式不同,导致代码很难被重用。
at 组件中命令收发,只需要通过 一个函数 实现,且该函数返回响应结果并处理了响应数据,方便后续使用。极大的简化了交互流程。
4.提供标准的网络编程接口
在使用 at 模块后,一般的单片机可以通过 at 命令,完成设备的网络连接、数据透传等功能。但是很难复用之前已开发过的,基于标准 bsd socket api 的代码,例如: mqtt、http、web socket 等。即使在一个模块上实现了上网功能,但是最终又很难复用到其他的产品上。
rt-thread 的 at 组件在 at 客户端的基础上实现了 at socket 功能,该功能是 sal (socket 抽象层)的一种实现。为上层提供标准的 bsd socket 网络编程接口。在使用 at 模块的产品上,极大的简化了网络开发代码并增强了软件可重用性。
rt-thread 已对接常用的 at 模块
当前rt-thread 已提供针对于移远的 m26 gprs 模块、乐鑫的 esp8266 wifi 模块的对接文件。其他热门的无线模组,rt-thread也将会优先支持(欢迎留言说说你希望rt-thread优先支持的at模块),开发者可以根据rt-thread提供的at组件编程手册(https://www.rt-thread.org/document/site/rtthread-development-guide/rtthread-manual-doc/zh/1chapters/14-chapter_at/)方便快捷的自行完成对接。
借助高能效GaN转换器,提高充电器和适配器设计的功率密度
BA82068+BA5104电风扇红外遥控电路图,BA82068+BA5104遥控电路
电力线载波扩频通信调制模块的设计
携手姜文探索影像新可能!OPPO Find X3系列即将发布
在医疗领域中AI是必不可少的算法教育
RT-Thread发布AT组件,让AT设备开发更简单
阻尼二极管的作用是什么
力士乐变量柱塞泵的特点都有哪些
浪潮存储在全闪存储领域的产品及技术布局
中科大发布“机器人柔性手爪” 有望降低成本使其加速应用于大众生活
涡街流量计测不到流量怎么回事
小米将正式为小米6推送MIUI 10 9.4.22系统
补盲激光雷达,能成为智能汽车的新刚需?
2030年机器人或将会取代两千万岗位
高速模/数转换器AD10242的功能特点与应用分析
创伤治疗:使用压力传感器测量负压
掌握交换机基本信息的配置管理及技术原理
mongodb可视化工具如何使用_介绍一款好用 mongodb 可视化工具
机器人逐渐代替我们工作,当失业大潮席卷而来的时候,你准备好了吗
你的iPhone还能再战几年?