热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AT命令与Console命令的学习笔记

ESP32提供了AT命令和Console命令,产品中到底用哪种更合适?这里整理了一些学习内容,看看最后产品用哪种比较合适。(

ESP32提供了AT命令和Console命令,产品中到底用哪种更合适?这里整理了一些学习内容,看看最后产品用哪种比较合适。

(1)Console命令

\esp-idf\examples\system\console例程提供了Console命令,具有如下应用特点:

-》ESP32>作为命令提示符;

-》具有历史回放功能,命令自动补充功能;

 Argtable3算法解析命令参数,参考如下

Argtable3 学习(2)--教程_凌云俯瞰-CSDN博客

解析程序的命令行一直以来都是一个分散注意力的主要编程任务。Argtable3 库通过允许程序员将源代码中的命令行选项直接定义为静态的结构数组来简化作业,然后将该数组传递给argtable3库函数,这些函数就会相应地解析命令行。从命令行中提取的值直接保存到用户定义的程序变量中,主程序就可以访问这些变量。argtable3还可以从同一数组中生成命令行语法的描述,以便显示为联机帮助。根据第三条BSD许可条款,此库是免费的。

argtable3使用netbsd getopt执行实际的解析,因此它遵循POSIX实用程序约定,大多数UNIX程序和一些Windows程序都遵循此约定。它支持短选项(如-abc-o myfile)、长选项(如–-scalar=7–-verbose)以及无标记参数(如[])。

argtable3是一个单文件的ansi-c库。您需要做的只是将argtable3.c添加到项目中,并在源代码中包含argtable3.h。

components\console\command.c给出的结构图如下

(2)AT命令,

【嵌入式开发】自定义AT指令实现sniffer网络嗅探功能_菇星獨行-CSDN博客

自定义AT指令
自定义 AT 指令命名时,使用英文字符,请勿使⽤用其他特殊字符或数字。 AT 基于 ESP8266_NONOS_SDK 编译,ESP8266_NONOS_SDK/example/at中提供了开发者自定 AT指令的示例。乐鑫原本提供的 AT 指令以库文件 libat.a 的形式提供,将包含在编译⽣生成的 AT BIN 固件中。

\esp-at-2.1.0.0_esp32s2\components\at\include\esp_at.h

最大特点是一个参数、四种命令--Test/Query/Set/Exec:

ESP32例程描述:libat_core.a 是 AT 命令集的核心部分, 包含默认的 AT 指令集, 具有 AT 命令解析、 执行和回复功能. 在此库中,可以处理 `AT+TEST=?`、 `AT+TEST?`、 `AT+TEST=“abc”` 和 `AT+TEST` 4 种格式的指令集. 可以根据相关 API 自定义命令, 并且还可以定义输入输出介质, 比如 uart, spi, socket, bt 等等.
 

 首先是参照样例程序注册我们的AT指令
extern void at_exeCmdCiupdate(uint8_t id);
at_funcationType at_custom_cmd[] = {
    {"+TEST", 5, at_testCmdTest, at_queryCmdTest, at_setupCmdTest, at_exeCmdTest},
    {"+MACSNIFFER", 11, at_testMacSniffer, NULL, NULL,  at_exeMacSniffer}
};

第一个参数是我们命令的名字,如上图,运行固件后发送AT+MACSNIFFER样式的命令即可执行我们的程序。
第二个参数 11 是命令字符串的长度。

由于我们只需要测试指令和执行指令,所以只在参数3和6里填上对应的函数即可,其余填入NULL。
 

 可见,对于主要是各种参数和模式设置、查询来说,AT命令更简单些。从某种角度,AT命令是一种console 命令行。

从学习角度,进一步补充



解读乐鑫 AT 指令解析器,解锁你不知道的用法 - 知乎

乐鑫的 AT 指令语法也是遵循 3GPP TS 27.007 语法规范。


AT 指令共性的内容


  1. 遵循 AT 规范,AT 开头,CRLF 结尾(考虑到有些平台只用 LF 的情况,CRLF 结尾还需要容错);
  2. 有四类 AT 指令(TEST, GET, SET, EXEC),这里不带加号算作是 basic 指令;
  3. 字符串类型使用双引号("string")括起来;
  4. 整数类型不实使用双引号;
  5. 特殊字符需要转译;
  6. 等号后面必须有一个参数(当然你的解析器也可以容忍等号后面无参数,作为默认参数填充,这样的话跟执行命令又有什么不同呢);
  7. 支持省略参数。

以上这些都是需要基于 AT 解析器实现。

再补充:这是一个大问题吗?

ESP-AT核心文件不开源,根据ESP-AT 入门指南_乐鑫 Espressif-CSDN博客_esp-at编译本文主要介绍了 ESP32 AT 的入门指南。AT指令集可适用于用户快速进行 ESP32 开发,本文从硬件准备,编译环境搭建,到编译烧写运行,都做了一个较为详尽的描述,最后也给出了常见的错误处理,供读者参考。https://blog.csdn.net/espressif/article/details/78772678

编译环境用于编译 ESP32 AT 系列程序,环境搭建请参考 https://github.com/espressif/esp-at 目录下的 esp-idf中的编译环境搭建。

注意: 以下的 esp-idf 需要是 esp-at 下的 esp-idf,这个 esp-idf 通常是比较稳定的版本,而不是最新的 esp-idf,所以 esp-at 和 esp-idf 必须匹配。如果 esp-at 和 esp-idf 不匹配,有可能因为 esp-idf 函数接口或者结构体定义等的变动,导致 esp-at 无法正常工作。
 

下载的SDK里面也没有esp-idf

├── esp-idf // esp-at 编译依赖 esp-idf

对应的版本号多少呢?在module_config目录下对应的具体模块IDF_VERSION文件中,比如

\esp-at-2.1.0.0_esp32s2\module_config\module_esp32s2_default\IDF_VERSION.

branch:release/v4.2
commit:dd3c032972c9f6f3dcfb614768ba88dd8a38ab63
repository:https://github.com/espressif/esp-idf.git

意味着4.3版本就不能用啦!!!!

折腾半天,用eclipse编译也没搞定ESP-AT,只能用命令行吗?

最后找了一个ESP8266 早期的AT框架开源代码,以后慢慢调吧


推荐阅读
  • 在进行网络编程时,准确获取本地主机的IP地址是一项基本但重要的任务。Winsock作为20世纪90年代初由Microsoft与多家公司共同制定的Windows平台网络编程接口,为开发者提供了一套高效且易用的工具。通过Winsock,开发者可以轻松实现网络通信功能,并准确获取本地主机的IP地址,从而确保应用程序在网络环境中的稳定运行。此外,了解Winsock的工作原理及其API函数的使用方法,有助于提高开发效率和代码质量。 ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 深入解析 OpenCV 2 中 Mat 对象的类型、深度与步长属性
    在OpenCV 2中,`Mat`类作为核心组件,对于图像处理至关重要。本文将深入探讨`Mat`对象的类型、深度与步长属性,这些属性是理解和优化图像操作的基础。通过具体示例,我们将展示如何利用这些属性实现高效的图像缩小功能。此外,还将讨论这些属性在实际应用中的重要性和常见误区,帮助读者更好地掌握`Mat`类的使用方法。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 本文探讨了如何在C#中实现USB条形码扫描仪的数据读取,并自动过滤掉键盘输入,即使不知道设备的供应商ID(VID)和产品ID(PID)。通过详细的技术指导和代码示例,展示了如何高效地处理条形码数据,确保系统能够准确识别并忽略来自键盘的干扰信号。该方法适用于多种USB条形码扫描仪,无需额外配置设备信息。 ... [详细]
  • 提升工作效率:掌握这些技巧,IDEA 使用效率翻倍 | IDEA 高效操作指南
    提升工作效率:掌握这些技巧,IDEA 使用效率翻倍 | IDEA 高效操作指南 ... [详细]
  • 为何Serverless将成为未来十年的主导技术领域?
    为何Serverless将成为未来十年的主导技术领域? ... [详细]
  • PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化
    PJSIP 编译与开发指南:深入解析 PJSIP 库的应用与优化 ... [详细]
  • 在RabbitMQ中,消息发布者默认情况下不会接收到关于消息在Broker中状态的反馈,这可能导致消息丢失的问题。为了确保消息的可靠传输与投递,可以采用确认机制(如发布确认和事务模式)来验证消息是否成功抵达Broker,并采取相应的重试策略以提高系统的可靠性。此外,还可以配置消息持久化和镜像队列等高级功能,进一步增强消息的可靠性和高可用性。 ... [详细]
  • Android开发常见问题汇总(含Gradle解决方案)第二篇
    本文继续深入探讨Android开发中常见的问题及其解决方案,特别聚焦于Gradle相关的挑战。通过详细分析和实例演示,帮助开发者高效解决构建过程中的各种难题,提升开发效率和项目稳定性。 ... [详细]
  • 基于STM32的智能太阳能路灯设计与华为云IOT集成方案
    基于STM32的智能太阳能路灯设计与华为云IOT集成方案 ... [详细]
  • 自1995年问世以来,Java已历经14年的演变,在快速发展的信息技术领域中展现出持续的活力与创新。如今,Java不仅是一种编程语言,更发展成为一个多功能平台、活跃的开发者社区及成熟的技术生态系统。 ... [详细]
  • 为了满足读者需求,InfoQ中文站每周精选并回顾过去的技术新闻,确保重要资讯不会被忽视。本周精选涵盖了多个领域的关键进展,帮助读者在短时间内掌握重要的技术动态和趋势。 ... [详细]
  • 图像拼接技术深入解析:基于OpenCV 3.4的Stitching模块源码分析(下篇)
    本文继续深入探讨图像拼接技术,特别是在OpenCV 3.4的Stitching模块中的源码实现。通过与VLFeat的SIFT实现进行对比,详细分析了OpenCV在图像特征提取、匹配及拼接过程中的关键算法和技术细节,为读者提供了全面的技术解析和实践指导。 ... [详细]
author-avatar
mobiledu2502870133
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有