我正在尝试编写一个简单的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>
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
首先,我认为您要使用AT+CMGS
命令,而不是AT+CMGC
。查看27.005中每个命令的描述,看看你是否真的想要AT + CMGC。但在阅读该文档之前,请阅读V.250中的所有第5章,它将教您所需的所有AT命令处理基础知识。
您尝试使用通用命令行程序发送AT命令(如modemcli或我的atinout程序)不可能。为了在调制解调器上运行AT+CMGS
,发出它的程序必须明确支持此特定AT命令的行为。
这是因为需要等待准备好接收&#34;在发送有效载荷之前从调制解调器提示。有关详细信息,请参阅this answer的第一部分。
我已经开始制作一个专门用于处理AT+CMGS
的伴侣程序,但它还没有完成,并且没有屏住呼吸,目前开发工作已暂停。