Я пытаюсь отправить смс через последовательный порт Qt через модем GPRS.
Кто-нибудь испытывал это?
Я могу подключиться к модему, но не знаю, какую 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";
}