AT命令,用Qt发送短信

时间:2014-08-05 14:47:26

标签: c++ qt sms at-command

我试图从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命令才能启动?

1 个答案:

答案 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";
}