Пытаюсь разобраться с СОМ портом. Возникла проблема...
Нужно отправлять байты изменяя бит четности. Если верить документации, то следующий код должен отправить байт 08 сначала с битом четности 1, а потом с битом четности 0.
void MainWindow::on_pushButton_clicked()
{
QByteArray paket;
paket.resize(1);
paket[0] = 0x08;
int temp;
port.setParity(QSerialPort::MarkParity);
ui->log->setPlainText(ui->log->toPlainText()+tr("Parity %1.\n").arg(port.parity()));
temp = port.write(paket);
ui->log->setPlainText(ui->log->toPlainText()+tr("Packet send. Size = %2 byte.\n").arg(temp));
port.setParity(QSerialPort::SpaceParity);
ui->log->setPlainText(ui->log->toPlainText()+tr("Parity %1.\n").arg(port.parity()));
temp = port.write(paket);
ui->log->setPlainText(ui->log->toPlainText()+tr("Packet send. Size = %2 byte.\n").arg(temp));
}
В PlainText выводится верная информация
Цитата
Parity 5.
Packet send. Size = 1 byte.
Parity 4.
Packet send. Size = 1 byte.
Packet send. Size = 1 byte.
Parity 4.
Packet send. Size = 1 byte.
А вот на экране осциллографа совсем другая ситуация.
Вот фотография, когда сначала идет Mark, а потом Space.
Вот фотография, когда сначала идет Space, а потом Mark.
Если посылать в режиме только Mark или только Space, то все хорошо. Вот фото.
Mark:
Space:
Собственно 2 вопроса, почему так происходит и как правильно сделать?