AT команда, отправьте смс с Qt

Я пытаюсь отправить смс через последовательный порт 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 для запуска?

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";
}
0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector