diff --git a/mainwindow.cpp b/mainwindow.cpp --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -65,6 +65,16 @@ MainWindow::MainWindow(QWidget *parent) SELECT::OVERLOAD_OF(&QButtonGroup::buttonClicked), this, &MainWindow::selectParity); + // setup data bits selection buttons + dataBitsButtons.addButton(ui->rb8Bits, (int) QSerialPort::Data8); + dataBitsButtons.addButton(ui->rb7Bits, (int) QSerialPort::Data7); + dataBitsButtons.addButton(ui->rb6Bits, (int) QSerialPort::Data6); + dataBitsButtons.addButton(ui->rb5Bits, (int) QSerialPort::Data5); + + QObject::connect(&dataBitsButtons, + SELECT::OVERLOAD_OF(&QButtonGroup::buttonClicked), + this, &MainWindow::selectDataBits); + // init port signals QObject::connect(&(this->serialPort), SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(onPortError(QSerialPort::SerialPortError))); @@ -222,6 +232,18 @@ void MainWindow::selectParity(int parity } } +void MainWindow::selectDataBits(int dataBits) +{ + qDebug() << dataBits; + if (serialPort.isOpen()) + { + if(!serialPort.setDataBits((QSerialPort::DataBits) dataBits)) + { + qDebug() << "Set data bits failed: " << serialPort.error(); + } + } +} + void MainWindow::onPortToggled(bool open) { ui->pbOpenPort->setChecked(open); diff --git a/mainwindow.h b/mainwindow.h --- a/mainwindow.h +++ b/mainwindow.h @@ -35,6 +35,7 @@ private: Ui::MainWindow *ui; QButtonGroup numberFormatButtons; QButtonGroup parityButtons; + QButtonGroup dataBitsButtons; QSerialPort serialPort; @@ -59,6 +60,7 @@ private slots: void onPortToggled(bool open); void selectBaudRate(QString baudRate); void selectParity(int parity); // parity must be one of QSerialPort::Parity + void selectDataBits(int dataBits); // bits must be one of QSerialPort::DataBits void onDataReady(); void onPortError(QSerialPort::SerialPortError error);