Я могу подключиться к своему серийному порту, но мне нужно постоянно считывать данные из него.
Он работает около 39 минут, но после этого останавливается на линии serial.flush()
.
Когда я останавливаю Qt и запускаю его снова, он также останавливается на serial.flush()
. Мне нужно, чтобы перезагрузить модем, чтобы он снова работать ...Последовательный порт Qt: данные для записи и чтения
Я не уверен, что я правильно выполняю это ...
// Open Serial connexion
QSerialPort serial;
serial.setPortName("usbserial-26214A");
serial.open(QIODevice::ReadWrite);
serial.setBaudRate(QSerialPort::Baud115200);
serial.setDataBits(QSerialPort::Data8);
serial.setParity(QSerialPort::NoParity);
serial.setStopBits(QSerialPort::OneStop);
serial.setFlowControl(QSerialPort::HardwareControl);
if (serial.isOpen() && serial.isWritable())
{
qDebug() << "Serial is open";
QByteArray output;
QByteArray input;
while(true)
{
output = "AT+CPMS=\"SM\"\r";
serial.write(output);
serial.flush();
serial.waitForBytesWritten(1000);
serial.waitForReadyRead(1000);
input = serial.readAll();
}
}
// EDIT
если удаление flush
это но код идет очень быстро. Он не ждет WaitFor...
После 2-го цикла у него нет времени для чтения данных.
serial.isOpen() && serial.isWritable()
всегда отправляет true
во время цикла.
Программа останавливается на flush
через 30 минут!
Если waitForBytesWritten() должно быть безопасно опустить флеш(). Я думаю, это не решит проблему. Можно ли просто запускать программный сброс всегда до AT + CPMS Sequence? Не уверен, что проблема подключения связана с вашим приложением. –
Если удаление строки 'flush', цикл идет очень быстро и не кажется' waitFor ... '. Как сделать * soft-reset *? – gr3g
Выполняется ли приложение просто с помощью powercycling модема? Или вам также нужно перезапустить приложение? В первом случае я бы предположил, что модем застрял. Может быть, вам нужно отладить состояние, в котором находится модем, и проверить, есть ли команды для его оживления. – Oncaphillis