# HG changeset patch # User Hasan Yavuz Ă–ZDERYA # Date 2015-04-04 11:43:40 # Node ID 71f772af835d8029f93c98576bc41b9c5f631aef # Parent ed44540644c7afc2f305bdbe94126bf9614860c5 implemented stop bits and flow control selection buttons diff --git a/mainwindow.cpp b/mainwindow.cpp --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -75,6 +75,26 @@ MainWindow::MainWindow(QWidget *parent) SELECT::OVERLOAD_OF(&QButtonGroup::buttonClicked), this, &MainWindow::selectDataBits); + // setup stop bits selection buttons + stopBitsButtons.addButton(ui->rb1StopBit, (int) QSerialPort::OneStop); + stopBitsButtons.addButton(ui->rb2StopBit, (int) QSerialPort::TwoStop); + + QObject::connect(&stopBitsButtons, + SELECT::OVERLOAD_OF(&QButtonGroup::buttonClicked), + this, &MainWindow::selectStopBits); + + // setup flow control selection buttons + flowControlButtons.addButton(ui->rbNoFlowControl, + (int) QSerialPort::NoFlowControl); + flowControlButtons.addButton(ui->rbHardwareControl, + (int) QSerialPort::HardwareControl); + flowControlButtons.addButton(ui->rbSoftwareControl, + (int) QSerialPort::SoftwareControl); + + QObject::connect(&flowControlButtons, + SELECT::OVERLOAD_OF(&QButtonGroup::buttonClicked), + this, &MainWindow::selectFlowControl); + // init port signals QObject::connect(&(this->serialPort), SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(onPortError(QSerialPort::SerialPortError))); @@ -243,6 +263,28 @@ void MainWindow::selectDataBits(int data } } +void MainWindow::selectStopBits(int stopBits) +{ + if (serialPort.isOpen()) + { + if(!serialPort.setStopBits((QSerialPort::StopBits) stopBits)) + { + qDebug() << "Set stop bits failed: " << serialPort.error(); + } + } +} + +void MainWindow::selectFlowControl(int flowControl) +{ + if (serialPort.isOpen()) + { + if(!serialPort.setFlowControl((QSerialPort::FlowControl) flowControl)) + { + qDebug() << "Set flow control 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 @@ -36,6 +36,8 @@ private: QButtonGroup numberFormatButtons; QButtonGroup parityButtons; QButtonGroup dataBitsButtons; + QButtonGroup stopBitsButtons; + QButtonGroup flowControlButtons; QSerialPort serialPort; @@ -61,6 +63,8 @@ private slots: 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 selectStopBits(int stopBits); // stopBits must be one of QSerialPort::StopBits + void selectFlowControl(int flowControl); // flowControl must be one of QSerialPort::FlowControl void onDataReady(); void onPortError(QSerialPort::SerialPortError error);