Russian Qt Forum
Апрель 29, 2024, 06:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Установка скорости com-порта через combobox  (Прочитано 1385 раз)
Uhbif
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« : Декабрь 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().





Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #1 : Декабрь 04, 2023, 21:19 »

ты в on_pushButton_clicked создаешь новый объект QSerialPort, а в on_baudRateBox_activated заполняешь данные у временного объекта, который разрушается после выхода из метода. тебе надо либо сделать объект QSerialPort членом класса либо читать все значения комбобоксов прямо в on_pushButton_clicked.

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Uhbif
Новичок

Offline Offline

Сообщений: 10


Просмотр профиля
« Ответ #2 : Декабрь 05, 2023, 10:08 »

Спасибо за совет!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.