Esp32 从用户自定义 AT 命令执行 AT 命令

问题描述 投票:0回答:1

如何从自定义AT命令中执行其他AT命令? 例如

at_custom_cmd.c

static uint8_t at_test_cmd_test(uint8_t *cmd_name)
{
    uint8_t buffer[64] = {0};
    snprintf((char *)buffer, 64, "test command: <AT%s=?> is executed\r\n", cmd_name);
    esp_at_port_write_data(buffer, strlen((char *)buffer));

    EXEC("AT+HTTPCGET="http://www.my.com");  // <-- How can I do it?

    return ESP_AT_RESULT_CODE_OK;
}

我尝试在官方网站搜索exec命令,但没有找到。

esp32 at-command
1个回答
0
投票

https://github.com/espressif/esp-at/ 存储库中查找

at_exe_cmd
函数,位于 components/at/src/at_self_cmd.c 但是不要按原样使用它,它的签名和代码可防止处理错误。相反,使用它作为模板来编写您自己的 exec 函数。

根本上有缺陷的属性是

const char *expected_response
论证。您绝对不能只是等待“OK”响应,您必须能够接受所有可能的最终结果代码。所以使用
strstr
是错误的,需要正确解析响应行。我已经在类似场景的这个答案中介绍了这个方面。

同时使用像

at_self_cmd_t *s_self_cmd
这样的全局变量也太意大利面条了,你可以做得更好。

© www.soinside.com 2019 - 2024. All rights reserved.