-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconnectionsettingswindow.cpp
70 lines (58 loc) · 2.51 KB
/
connectionsettingswindow.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "connectionsettingswindow.h"
#include "ui_connectionsettingswindow.h"
ConnectionSettingsWindow::ConnectionSettingsWindow(QWidget *parent, AdapterConnector *adapterConnector) :
QDialog(parent),
ui(new Ui::ConnectionSettingsWindow)
{
this->adapterConnector = adapterConnector;
ui->setupUi(this);
}
ConnectionSettingsWindow::~ConnectionSettingsWindow()
{
delete ui;
}
void ConnectionSettingsWindow::showEvent(QShowEvent *e) {
// нужно загружать текущие значения, установленнные в adapterConnector
// есть возможность выбрать не актуальный порт, если отключить устройство после открытия окна
QList<QSerialPortInfo> availablePorts = QSerialPortInfo::availablePorts();
QList<qint32> baudrates = QSerialPortInfo::standardBaudRates();
ui->COMPortComboBox->clear();
ui->baudrateComboBox->clear();
if (availablePorts.size() == 0) {
QMessageBox::warning(this, "Предупреждение", "Не удалось обнаружить доступные COM-порты.");
}
for (int i = 0; i < availablePorts.size(); ++i) {
ui->COMPortComboBox->addItem(availablePorts[i].portName(), availablePorts[i].portName());
}
for (int i = 0; i < baudrates.size(); ++i) {
ui->baudrateComboBox->addItem(QString::number(baudrates[i]) + " бод", baudrates[i]);
}
QSerialPortInfo port;
qint32 baudrate;
adapterConnector->getCurrentSettings(port, baudrate);
ui->COMPortComboBox->setCurrentText(port.portName());
ui->baudrateComboBox->setCurrentText(QString::number(baudrate) + " бод");
}
bool ConnectionSettingsWindow::applyNewPortSettings() {
QSerialPortInfo *newPort = new QSerialPortInfo(ui->COMPortComboBox->currentData().toString());
qint32 baudrate = ui->baudrateComboBox->currentData().toInt();
if (!newPort->isNull() && baudrate) {
adapterConnector->setCurrentSettings(newPort, baudrate);
delete newPort;
return true;
}
QMessageBox::warning(this, "Предупреждение", "Не удалось установить новые параметры соединения.");
delete newPort;
return false;
}
void ConnectionSettingsWindow::on_okBtn_clicked() {
if (applyNewPortSettings()) {
this->close();
}
}
void ConnectionSettingsWindow::on_cancelBtn_clicked() {
this->close();
}
void ConnectionSettingsWindow::on_applyBtn_clicked() {
applyNewPortSettings();
}