获取AT命令响应

2024-01-01

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


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


The only correct way to process modem output is to divide the output into complete lines and iterate one full line at the time. This is universal and applies to absolutely all AT commands (with only one single exception that I can think of1).

让我强调一下:您应该只在严格的行尾边界上分割调制解调器响应文本("\r\n"),并在一次操作中处理生成的行字符串。所以你真的应该去实施read_line_from_modem我在我的建议中建议的功能之前的回答 https://stackoverflow.com/a/36873777/23118.

This means that whenever you want to check for the OK result code you should only use strcmp(line, "OK\r\n") and not strstr or similar because you know you are processing a complete, full line which should start with the final result code at the very beginning and it will always be followed by "\r\n"2.

Now there are more final result codes than just OK and ERROR, and instead of trying to figure out everything by yourself3 I suggest looking at is_final_result_code or isFinalResponseSuccess as listed in this answer https://stackoverflow.com/a/31688517/23118.

Summary

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

1 The "\r\n> " prefix for AT+CMGS is the only place you do something a bit different, i.e. start processing modem response on something other than a strict line boundary.

2 Unless you have misconfigured S3 and S4 which you never should do.

3 The list in V.250 is not complete, there exist a couple more defined in 27.005 and 27.007.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取AT命令响应 的相关文章

  • MFMessageComposeViewController 和 iMessage

    我正在构建一个有按钮的应用程序 如果您触摸该按钮 则会出现MFMessageComposeViewController将显示 并填写正文和一名收件人 该收件人是 4343 这是比利时短信的简码 这里错误的是MFMessageComposeV
  • 如何实现Android Open Accessory模式即服务?

    我一直在研究 Android 开放配件开发套件 依照指示Google 提供的 DemoKit 示例 http developer android com guide topics usb accessory html 我在使解决方案适应我的
  • 终止导致设备或资源繁忙的进程:“/dev/ttyUSB0”?

    我使用以下 Python 代码连接到我的 Arduino 板 device glob glob dev ttyUSB 0 time sleep 1 arduino serial Serial device 115200 timeout 5
  • Arduino 的 C++ 类文件中的字符串无法编译

    我正在用 C 为 Arduino 编写一个堆栈类sketch http www arduino cc en Tutorial Sketch 我相信它完全符合AVR 如果这就是它的名字 我记不清了 编译器 我都用过malloc and fre
  • 通过 .net 发送短信

    全部 是否有通过 net 发送短信 SMS 的免费解决方案 也许是网络服务之类的 EDIT 我真正想要的是一个有信誉的在线服务的参考 我可以用它来发送短信 有没有人使用过这样的服务 如果是的话 你能给我一个建议 警告吗 EDIT 首先是免责
  • Android:如何使用 WhatsApp、微信以编程方式发送消息?

    如何在 Android 应用程序中使用消息传递WhatsApp and WeChat 实际上要求是使用 WhatsApp 和微信 免费短信 发送短信 我得到了解决方案 在这里我发布答案 以便它可以帮助其他可能有同样疑问的人 通过任何应用程序
  • AVRDUDE Android Arduino ioctl 错误

    我之前的问题 Android 无法使用 AVRDUDE 与 Arduino 通信 https stackoverflow com questions 15596376 android cannot talk to arduino using
  • 我们可以在 Android 中的短信到达收件箱之前将其删除吗?

    我正在从收件箱中删除一条短信 但我想知道 如何在它到达收件箱之前将其删除 Yes 尽管对这个问题有一些负面反应 但短信拦截有合法的用途 例如 自动电话号码验证 通过短信提供的服务 尽管通常这应该通过数据短信来完成 或者通过处理特殊格式的消息
  • 使用 Java 控制 Arduino

    我正在寻找一个LED http en wikipedia org wiki Light emitting diode用Java程序打开和关闭 我用 C 完成了这个项目大约 5 分钟 但用 Java 似乎更具挑战性 我让 Arduino 等待
  • 如何使用GSM模块SIM800和Arduino Uno发送短信?

    我正在尝试通过 SIM800 GSM 模块从 Arduino 发送短信 消息到达给定号码 但格式不正确 它显示 消息格式不支持 我在这里添加了我的代码 非常感谢您的快速回复 include
  • 通过iPhone编程发送短信? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 iPhone 上以编程方式发送短信 https stackoverflow com questions 10848 how to programmatically send sms on th
  • .NET 的 SMS 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道 NET 的免费 SMS 库或网络服务可以让我向人们的手机发送短信吗 您实际上在寻找什么 图书馆
  • 如何从 Android 设备检索 RCS 消息

    我如何在android中检索RCS消息 我可以使用 contentproviders 检索 SMS MMS 是否有适用于 Android 的 RCS 消息传递的 URI 我发现我的设备有这个 contentprovider 可用 所以我尝试
  • 短信:AT指令

    我正在尝试在我的计算机上设置短信网关 这是我找到的一些代码 AT OK AT CMGF 1 OK AT CMGL ALL CMGL 1 REC READ 85291234567 06 11 11 00 30 29 32 Hello welc
  • 如何使用j2me(midp2.0)从收件箱读取短信?

    我想从 j2me 应用程序访问收件箱消息文本 我不知道如何访问收件箱 使用 j2me 无法实现这一点 我已经在诺基亚论坛讨论过 看
  • 使用 Arduino 来操作 Android [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有人尝试过让 Android 和 Arduino 相互通信吗 我在网上找到了几个项目 Amarino http www amarino tool
  • iPhone SDK中的短信正文

    我需要从我的 iPhone 应用程序发送短信 SMS 的正文是以编程方式创建的 因此 当我点击按钮时 短信应用程序应该打开 并在其中预先输入我的消息 有人知道怎么做吗 需要帮忙 提前致谢 世宾 您无法设置短信正文 根据官方 SDK 您可以从
  • 使用核心电话发送短信?

    我想开发一个像biteSMS这样的应用程序 适用于越狱的iPhone 我尝试编译一个开源应用程序iPhone 交货报告 http code google com p iphone delivery report 但无法编译它 有人知道与越狱
  • 关于加拿大短信网关提供商的建议[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我很好奇 如果我能够接受传入的短信到某个号码 然后将其传递给 PHP 中的服务器端应用程序 会带来多少麻烦 金钱 我最终会通过电子邮件地址发回短信 有
  • 当应用程序未运行时,如何在 React Native 应用程序中读取传入的短信?

    有几个可用的 ReactNative 短信插件 但大多数在应用程序位于前台时读取短信 当应用程序甚至没有运行时 我如何读取短信 就像本机短信阅读器应用程序一样 我不知道有任何可用的库 但你可以这样做 创建一个BackgroundScanSe

随机推荐