如何自定义不带+号的AT命令

Moderator: ESP_XCGuang

linuxboy
Posts: 10
Joined: Thu Nov 02, 2023 10:11 am

如何自定义不带+号的AT命令

Postby linuxboy » Thu Nov 02, 2023 10:45 am

如题,如果自定义不带+号的AT命令,比如 ATSI,1

linuxboy
Posts: 10
Joined: Thu Nov 02, 2023 10:11 am

Re: 如何自定义不带+号的AT命令

Postby linuxboy » Thu Nov 02, 2023 11:43 pm

好像注册的时候不带+是可以注册成功的。

进一步的问题是:

1. 官方文档查询命令的模板是 AT+CMD?,那查询的时候如何带参数呢(目前mcu侧写死了,发出的AT查询是带参数的)?

2. 官方文档AT带参数的模板是 AT+TEST=1,"espressif", 一定要带这个 = 号么? mcu侧发出的带参数的命令是不带 = 好的, 命令后面直接是逗号

esp-at
Posts: 200
Joined: Mon May 09, 2022 3:00 am

Re: 如何自定义不带+号的AT命令

Postby esp-at » Fri Nov 03, 2023 7:03 am

下面是一个可能的 workaround:
1. MCU 还是通过 UART 发送 "ATSI," 此类不符合通用用法的命令格式
2. 修改从 UART 那边读取到的数据,https://github.com/espressif/esp-at/blo ... ask.c#L176
比如将 "ATSI," 开头的字符串替换为 "ATSI="
3. 这样传递到 AT 内部解析时,AT 内部还是认为是 "ATSI=" 这类命令

tips:
通常不建议这样修改。一方面是:未经过测试,风险无法评估;另外一方面,后续你们维护命令也比较困难,也不够专业。

~

linuxboy
Posts: 10
Joined: Thu Nov 02, 2023 10:11 am

Re: 如何自定义不带+号的AT命令

Postby linuxboy » Sun Nov 05, 2023 1:16 am

按照提示的思路插入了 = , 是可行的。

接下来要实现的是在自定义命令中 触发 多个已有的ESP32 AT命令。 根据之前的帖子,是建议在自定义命令处理时发消息给esp_at_uart_queue, 例如:

xQueueSend(esp_at_uart_queue,(void *)&user_event,10/portTICK_PERIOD_MS);

Uart_Task是可以收到发的消息的并用 xQueueReceive(esp_at_uart_queue, (void * )&event, (TickType_t)portMAX_DELAY)来解析消息,event参数(uart_event_t的定义是?)有type和size可用。 在此之后Uart_Task还是会从uart底层驱动去读数据,但这时候显然底层没有到达的数据。 何时将自调用的ESP32 命令加入进去还是搞不清楚。 可能的话按这个方向进一步提示一下? 谢谢。

esp-at
Posts: 200
Joined: Mon May 09, 2022 3:00 am

Re: 如何自定义不带+号的AT命令

Postby esp-at » Mon Nov 06, 2023 2:16 am


Who is online

Users browsing this forum: No registered users and 61 guests