如何从自定义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命令,但没有找到。
在 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
这样的全局变量也太意大利面条了,你可以做得更好。