Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Uhbif от Декабрь 04, 2023, 15:00



Название: Установка скорости com-порта через combobox
Отправлено: Uhbif от Декабрь 04, 2023, 15:00
Хочу в программе сделать установку скорости ком-порта через combobox. Добавил combobox, написал следующий код.

void MainWindow::on_baudRateBox_activated(int index_baud) //скорость
{
     QSerialPort serialPort;
   if(index_baud == 0)
   {
       serialPort.setBaudRate(QSerialPort::Baud115200);

   }
  else if(index_baud == 1)
   {
       serialPort.setBaudRate(QSerialPort::Baud38400);

   }
   else if(index_baud == 2)
   {
       serialPort.setBaudRate(QSerialPort::Baud19200);

   }
   else if(index_baud == 3)
   {
       serialPort.setBaudRate(QSerialPort::Baud9600);

   }

}

Добавил кнопку применить, в ней код следующий.
void MainWindow::on_pushButton_6_clicked()// кнопка применения настроек com-порта
{
    QSerialPort serialPort;

    ui->baudRateBox->currentIndex();
    ui->dataBitsBox->currentIndex();
    ui->parityBox->currentIndex();
    ui->comboBox->currentIndex();
}
То есть устанавливаю значения согласно текущих индексов combobox. Далее кнопка передать.

void MainWindow::on_pushButton_clicked()//кнопка передачи
{
    QSerialPort serialPort;

    serialPort.setPortName(this->ui->cmbPort->currentText());  // указали имя к какому порту будем подключаться

 //  serialPort.setBaudRate(QSerialPort::Baud115200);.......

и вот здесь почему то надо заново указывать скорость, то есть если строка со скоростью закомментирована передача не происходит. Возможно ли как то обойти эту проблему. Или при передаче каждый раз надо устанавливать скорость?
И еще хотел спросить можно ли как то прочитать именно текущую установленную скорость а не все поддерживаемые скорости ком-порта с помощью QSerialPortInfo::standardBaudRates().







Название: Re: Установка скорости com-порта через combobox
Отправлено: kambala от Декабрь 04, 2023, 21:19
ты в on_pushButton_clicked создаешь новый объект QSerialPort, а в on_baudRateBox_activated заполняешь данные у временного объекта, который разрушается после выхода из метода. тебе надо либо сделать объект QSerialPort членом класса либо читать все значения комбобоксов прямо в on_pushButton_clicked.

эта ошибка непосредственно к Qt никак не относится, очень советую подучить С++ и ООП.


Название: Re: Установка скорости com-порта через combobox
Отправлено: Uhbif от Декабрь 05, 2023, 10:08
Спасибо за совет!