C++ 在命令下,使用Qt发送sms
我正在尝试通过GPRS调制解调器上的串行端口从Qt发送短信。 有人经历过吗 我可以连接到调制解调器,但不知道要发送哪个AT命令以及如何从调制解调器返回响应 我在打电话;容易的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
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