0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-Thread发布AT组件,让AT设备开发更简单

电子设计 来源:电子发烧友网 作者:佚名 2018-07-26 17:34 次阅读

AT 命令采用标准串口进行数据收发,将以前复杂的设备通讯方式转换成简单的串口编程,大大简化了产品硬件设计和软件开发成本,这使得几乎所有的网络模组如GPRS、3G/4GNB-IoT蓝牙、WiFi 、GPS 等模组都采用AT命令。

随着物联网时代的发展,AT 命令被广泛的用于单片机MCU)+ 网络模块 这样的物联网开发模式,但是对于不同设备的 AT 命令,其数据的收发和解析方式都大不相同,这直接提高开发的复杂度,也不利于代码的维护和重用。

为了解决不同网络模块 AT 命令之间的差异导致的重复开发的问题,RT-Thread 发布了 AT 组件用于 AT 设备开发。

image.png

RT-Thread AT 组件解决方案

RT-Thread AT 组件介绍

我们的 AT 组件,是基于 RT-Thread 系统的 AT 客户端和服务器的实现。

image.png

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/)方便快捷的自行完成对接。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2867

    文章

    41578

    浏览量

    358252
  • GPRS
    +关注

    关注

    21

    文章

    980

    浏览量

    128598
  • RT-Thread
    +关注

    关注

    31

    文章

    1148

    浏览量

    38862
  • ESP8266
    +关注

    关注

    50

    文章

    946

    浏览量

    43917
收藏 人收藏

    评论

    相关推荐

    RT-Thread记录(一、版本开发环境及配合CubeMX)

    RT-Thread 学习记录的第一篇文章,RT-Thread记录(一、RT-Thread 版本、RT-Thread Studio开发环境 及
    的头像 发表于 06-20 00:28 4473次阅读
    <b class='flag-5'>RT-Thread</b>记录(一、版本<b class='flag-5'>开发</b>环境及配合CubeMX)

    RT-Thread记录(十六、SFUD组件 Flash读写)

    从本文开始,测试学习一些 RT-Thread 常用的组件与软件包,先从刚学完的 SPI 设备开始。
    的头像 发表于 07-06 10:35 5080次阅读
    <b class='flag-5'>RT-Thread</b>记录(十六、SFUD<b class='flag-5'>组件</b> Flash读写)

    RT-Thread设备驱动开发指南基础篇—以先楫bsp的hwtimer设备为例

    RT-Thread设备驱动开发指南》书籍是RT-thread官方出品撰写,系统讲解RT-thread IO
    的头像 发表于 02-20 16:01 807次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>设备</b>驱动<b class='flag-5'>开发</b>指南基础篇—以先楫bsp的hwtimer<b class='flag-5'>设备</b>为例

    如何更好地使用RT-Thread AT组件

    本文介绍了RT-Thread AT组件的基本知识和AT客户端的使用方法,帮助开发者更好地使用RT-Thread AT组件
    发表于 03-30 07:23

    如何使用RT-Thread AT组件

    RT-Thread AT 组件的基本知识和使用方法,帮助大家更好地使用 RT-Thread AT 组件。在实际开发中,我们常有联网的需求,
    发表于 12-10 06:14

    RT-Thread开发,如何有效学习RT-Thread的五个步骤

    RT-Thread推出RT-Thread Inside战略开放RT-Thread开发平台授权合作,与硬件十万个为什么合作首次推出第一款RT-
    的头像 发表于 09-25 09:55 3.4w次阅读
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>开发</b>,如何有效学习<b class='flag-5'>RT-Thread</b>的五个步骤

    RT-Thread 应用笔记 - RTC Alarm 组件的使用

    RT-Thread 应用笔记 - 不正确使用LOG也会引发hard faultRT-Thread 应用笔记 - RTC Alarm 组件的使用RT-Thread 应用笔记 - free
    发表于 01-25 18:18 10次下载
    <b class='flag-5'>RT-Thread</b> 应用笔记 - RTC Alarm <b class='flag-5'>组件</b>的使用

    RT-Thread学习笔记 RT-Thread的架构概述

    的种种优越之处。RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统(RTOS),具有完全的自主知识产权。经过 16 个年头的沉淀,伴随着物联网的兴起,它正演变成一个功能强大、组件丰富
    的头像 发表于 07-09 11:27 3985次阅读
    <b class='flag-5'>RT-Thread</b>学习笔记 <b class='flag-5'>RT-Thread</b>的架构概述

    RT-Thread文档_RT-Thread 简介

    RT-Thread文档_RT-Thread 简介
    发表于 02-22 18:22 5次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> 简介

    RT-Thread文档_RT-Thread SMP 介绍与移植

    RT-Thread文档_RT-Thread SMP 介绍与移植
    发表于 02-22 18:31 7次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> SMP 介绍与移植

    RT-Thread文档_SPI 设备

    RT-Thread文档_SPI 设备
    发表于 02-22 18:36 1次下载
    <b class='flag-5'>RT-Thread</b>文档_SPI <b class='flag-5'>设备</b>

    RT-Thread文档_Pulse Encoder 设备

    RT-Thread文档_Pulse Encoder 设备
    发表于 02-22 18:39 1次下载
    <b class='flag-5'>RT-Thread</b>文档_Pulse Encoder <b class='flag-5'>设备</b>

    RT-Thread文档_FAL 组件

    RT-Thread文档_FAL 组件
    发表于 02-22 18:41 0次下载
    <b class='flag-5'>RT-Thread</b>文档_FAL <b class='flag-5'>组件</b>

    送《RT-Thread设备驱动开发指南》,手慢无!

    过程中的第一选择!本书 也是RT-Thread第8本相关书籍了,本期我们将抽奖送给大家! 抽奖请移步文末↓↓↓ 随着RT-Thread被更广泛地应用于行业中,开发者对嵌入式驱动开发的需
    的头像 发表于 03-19 23:00 1033次阅读

    RT-Thread v5.0.2 发布

    ://github.com/RT-Thread/rt-thread/releases/tag/v5.0.2 RT-Thread 迎来了全新的版本 v5.0.2,自 v5.0.0 版本发布
    的头像 发表于 10-10 18:45 768次阅读
    <b class='flag-5'>RT-Thread</b> v5.0.2 <b class='flag-5'>发布</b>