Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: Larry от Июнь 17, 2017, 09:12



Название: [РЕШЕНО]QSerialPort сигнал errorOccurred
Отправлено: Larry от Июнь 17, 2017, 09:12
Добрый день, Форумчане.
Возник вопрос по поводу сигнала errorOccurred. Никак не получается его перехватить - интересует ошибка ParityError.
Есть устройство которое шлет 9 бит (знаю, что эта тема уже подымалась и 9 бит это нехорошо, но поставлен перед фактом ;D) и с помощью MarkParity и SpaceParity я отсылаю нужный мне 9ый бит на устройство и все хорошо, но чтобы принять 9ый бит нужно обрабатывать эту ошибку, но этот сигнал никак не испускается и неважно что я задаю в setParity - Mark или Space.
Подскажите пожалуйста...Спасибо.

Код:
m_serial_port->setPortName(ui->cboxComPortList->currentText());
m_serial_port->setBaudRate(ui->cboxBaudrate->currentText().toInt());

if(!m_serial_port->open(QSerialPort::ReadOnly | QSerialPort::WriteOnly))
{
       QMessageBox::critical(this, tr("Error"), tr("Can't open serial port"));

       return;
}

m_serial_port->setDataBits(QSerialPort::Data8);
m_serial_port->setStopBits(QSerialPort::OneStop);
m_serial_port->setFlowControl(QSerialPort::NoFlowControl);
m_serial_port->setParity(QSerialPort::MarkParity);

connect(m_serial_port, SIGNAL(errorOccurred(QSerialPort::SerialPortError)), this, SLOT(error(QSerialPort::SerialPortError)));

Слот error(QSerialPort::SerialPortError) просто выводит номер ошибки, но в него не попадает...


Название: Re: QSerialPort сигнал errorOccurred
Отправлено: kuzulis от Июнь 17, 2017, 10:38
Никогда это не работало должным образом (да и невозможно реализовать, например, под Windows), в будущем будет удалено:
Цитировать
This value is obsolete. We strongly advise against using it in new code.

Если же работа идет в Linux - то там можно попробовать через QSP::handle() установить в termios
специальные настройки для байт-стаффинга, где сбойный байт будет обрамляться некими маркерами.

Тем самым, парся входной стрим, можно обнаружить эти байты и определить что за ошибка была
(паритета или кадра, вроде бы).

Соответствующие куски кода, еще есть в старых версиях QSP, но сейчас они выброшены за ненадобностью.


Название: Re: QSerialPort сигнал errorOccurred
Отправлено: Larry от Июнь 17, 2017, 11:52
Спасибо. Жаль, что не работает...и работа идет в винде...посмотрю в сторону библиотеки ftd2xx для ftdi, может там что нарою. Спасибо.