我试图从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命令才能启动?
答案 0 :(得分:0)
我实现了它,但仍然不确定电话和消息的良好语法。 有什么想法吗?
// 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";
}