QIODevice::ReadWrite | QIODevice::Unbuffered - неподдерживаемый режим открытия
http://doc.qt.io/qt-5/qserialport.html
Предупреждение: режим должен быть QIODevice::ReadOnly, QIODevice::WriteOnly или QIODevice::ReadWrite. Другие режимы не поддерживаются.
Следующий код не открывает последовательный порт.
if(serialPort.open (QIODevice::ReadWrite | QIODevice::Unbuffered))
{
qDebug() << "asdasdas";
serialPort.setDataBits(QSerialPort::Data8);
serialPort.setParity(QSerialPort::NoParity);
serialPort.setStopBits(QSerialPort::OneStop);
}
else
{
qDebug() << "QSerialPort::SerialPortError: " << serialPort.errorString();
}
Как использовать небуферизованный флаг?
2 ответа
Как использовать небуферизованный флаг?
Здесь ничего нет. QSerialPort
не поддерживает это.
Увы, ваше предположение о замедлении буферизации необоснованно, если только у вас нет измерений, демонстрирующих проблему. Держу пари, что у вас нет и не будет таких измерений. У вас есть другие проблемы. Последовательные порты обычно имеют сравнительно медленную пропускную способность, одиночные мегабиты в секунду не являются проблемой, когда дело доходит до буферизации, если вы не делаете что-то, что приводит к квадратичной стоимости буферизации, а не к линейной стоимости с очень низкой константой пропорциональности, как обычно есть.
Мой графический интерфейс замедляется во время передачи данных
Это невозможно в принципе. Потому что все операции ввода / вывода становятся асинхронными. Скорее всего, проблема в вашем коде.
Кроме того, вы не предоставили информацию о версии Qt и вашей ОС.
PS: небуферизованный режим вам не поможет. Кроме того, QSerialPort не поддерживает его, код ошибки говорит об этом напрямую! Ты понимаешь это?