我正在尝试编写一个简单的C ++程序,该程序根据来自用户的输入发送一条SMS消息。简单的C ++程序无法完成此工作:
#include<stdio.h>
#include <stdlib.h> /* system, NULL, EXIT_FAILURE */
#include<iostream>
#define CTRL(x) (#x[0]-'a'+1)
using namespace std;
int main()
{
char buffer[128];
sprintf(buffer, "/opt/modemcli AT+CMGC=\"+112345678\"\rTEST%c", CTRL(z));
printf (buffer);
system(buffer);
return 0;
}
modemcli只是一个简单的C ++程序,它将消息写入USB端口并读取响应。
modemcli is simple, here is a test:
/opt/modemcli AT
Received AT
OK
我的猜测是CMGC格式不正确。格式为:
AT+CMGC="PHONE_NUMBER"<CR>SMS MESSAGE BODY.<Ctrl+z>
有人可以帮我解决这个问题吗?
最佳答案
首先,我认为您想使用AT+CMGS
命令,而不是AT+CMGC
。在27.005中查看每个命令的描述,以查看是否确实需要AT + CMGC。但是在阅读该文档之前,请阅读V.250中第5章的全部内容,这将教您所需的AT命令处理的所有基础知识。
通过使用用于发送AT命令的通用命令行程序(如modemcli或我的atinout程序),您无法做任何尝试。为了在调制解调器上运行AT+CMGS
,发出它的程序必须明确支持此特定AT命令的行为。
这是因为在发送有效负载之前,需要等待调制解调器的“准备接收”提示。有关详细信息,请参见this answer的第一部分。
我已经开始着手开发一个专门用于处理AT+CMGS
的配套程序,但尚未完成,请不要屏住呼吸,目前该开发处于暂停状态。
关于c++ - 通过C++程序发送CTRL-Z,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43080648/