通过C ++程序发送CTRL-Z

时间:2017-03-28 21:55:55

标签: c++ at-command

我正在尝试编写一个简单的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>

有人可以帮我解决这个问题吗?

1 个答案:

答案 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的伴侣程序,但它还没有完成,并且没有屏住呼吸,目前开发工​​作已暂停。