C++ 在命令下,使用Qt发送sms

C++ 在命令下,使用Qt发送sms,c++,qt,sms,at-command,C++,Qt,Sms,At Command,我正在尝试通过GPRS调制解调器上的串行端口从Qt发送短信。 有人经历过吗 我可以连接到调制解调器,但不知道要发送哪个AT命令以及如何从调制解调器返回响应 我在打电话;容易的 QSerialPort serial; serial.setPortName(name); serial.open(QIODevice::ReadWrite); serial.setBaudRate(QSerialPort::Baud115200); serial.setDataBits(QSerialPort::Data

我正在尝试通过GPRS调制解调器上的串行端口从Qt发送短信。 有人经历过吗

我可以连接到调制解调器,但不知道要发送哪个AT命令以及如何从调制解调器返回响应

我在打电话;容易的

QSerialPort serial;
serial.setPortName(name);
serial.open(QIODevice::ReadWrite);
serial.setBaudRate(QSerialPort::Baud115200);
serial.setDataBits(QSerialPort::Data8);
serial.setParity(QSerialPort::NoParity);
serial.setStopBits(QSerialPort::OneStop);
serial.setFlowControl(QSerialPort::NoFlowControl);

if (serial.isOpen() && serial.isWritable())
{

output = "ATD + +32111111111;\r\n";
serial.write(output);
serial.flush();

// Doesn't work:
//input = serial.readAll();
//qDebug() << input;

output = "\r\n";
serial.write(output);
serial.flush();

Sleep.sleep(30);

serial.close();

}

else
{

}

可能结束信号\r\n不好,或者需要一个特殊的AT命令来启动?

我实现了让它工作,但仍然不能确定电话和消息的语法是否正确。 有什么想法吗

// initialize the modem
QSerialPort serial;
serial.setPortName(name);
serial.open(QIODevice::ReadWrite);
serial.setBaudRate(QSerialPort::Baud115200);
serial.setDataBits(QSerialPort::Data8);
serial.setParity(QSerialPort::NoParity);
serial.setStopBits(QSerialPort::OneStop);
serial.setFlowControl(QSerialPort::NoFlowControl);

if (serial.isOpen() && serial.isWritable())
{
// Text message mode
output = "AT+CMGF=1\r\n";
serial.write(output);
serial.flush();

// read the response of the modem
serial.waitForReadyRead(200);
input = serial.readAll();
qDebug() << input;

// set phone number and Message
output = "AT+CMGS=\"+321111111\"\r\ Hello World! \x1A/r/n";
serial.write(output);
serial.flush();

// get reponse
serial.waitForReadyRead(200);
input = serial.readAll();
qDebug() << input;

// close the communication
serial.close();

}

else
{
qDebug() << "You have a problem";
}

即使是最小的谷歌搜索:AT+CMGS=Message。如果你有I/O问题,那是另外一回事。我设法用:serial.waitForReadyRead200;输入=serial.readAll;qDebug Ctrl-Z是实际的ascii代码26,即在写入消息后写入该特定字符。此处\x1A也适用于。。。我想试试26号。谢谢是的,您使用的x1a对应于正确的字符,在这种情况下,26是十六进制的0x1A