gpt4 book ai didi

arduino - 获取AT命令响应

转载 作者:行者123 更新时间:2023-12-02 10:36:22 25 4
gpt4 key购买 nike

我正在使用带有 sim900 gps/gprs 模块的 Arduino Uno,并且我正在使用 at 命令,我如何获得 at 命令的响应(即 OK、ERROR),以便我可以执行一些操作 if 响应==“确定”响应==“错误”

最佳答案

如果您尚未阅读 V.250 specification 中的第 5 章全部内容请停止阅读此处并立即阅读,这是本答案其余部分的重要基础,我会等到你回来。一些对字母表(简短版本:忽略它/将其视为 ASCII)和 S 寄存器的引用可能看起来很神秘,但不要放弃,它会很快让你感兴趣。

<小时/>

处理调制解调器输出的唯一正确方法是将输出分成完整的行并一次迭代一整行。这是通用的,并且绝对适用于所有 AT 命令(除了我能想到的一个异常(exception)1)。

让我强调一下:您应该只在严格的行尾边界 ("\r\n") 上分割调制解调器响应文本,并在一个操作中处理生成的行字符串。所以你真的应该去实现我在 previous answer 中建议的 read_line_from_modem 函数。 .

这意味着每当您想要检查 OK 结果代码时,您应该只使用 strcmp(line, "OK\r\n") 而不是 strstr 或类似,因为您知道您正在处理一个完整的完整行,该行应该从最终结果代码开始,并且后面总是跟着 "\r\n"2.

现在最终结果代码不仅仅是 OKERROR,而不必尝试自己弄清楚所有内容3我建议查看 this answer 中列出的 is_final_result_code 或 isFinalResponseSuccess .

摘要

  1. 始终逐行读取调制解调器输出,并使用单独的函数进行读取,返回/修改字符串/缓冲区以包含该行。
  2. 读完一行后要做的第一件事是检查它是否是最终结果代码。编写一个单独的函数,将行作为参数并检查它是否是。
  3. 如果该行不是最终结果代码,请执行适合正在执行的 AT 命令的任何操作。
  4. 阅读下一行并返回到 2。
<小时/>

1AT+CMGS"\r\n> " 前缀是您执行一些不同操作的唯一位置,即在严格线路以外的其他位置开始处理调制解调器响应边界。

2除非您错误配置了 S3S4,而您绝对不应该这样做。

3V.250 中的列表并不完整,27.005 和 27.007 中还定义了一些。

关于arduino - 获取AT命令响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36884514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com