From 49f2525320d83a642d41db77c5d14569da043272 Mon Sep 17 00:00:00 2001 From: Collin Kidder Date: Tue, 13 Oct 2015 21:38:36 -0400 Subject: [PATCH] Add files for a new window for connections (allows for different types of connections and also makes auto refreshing the port list easier) --- connectionwindow.cpp | 148 +++++++++++++++++++++++++++++++++++++++++++ connectionwindow.h | 50 +++++++++++++++ connectionwindow.ui | 110 ++++++++++++++++++++++++++++++++ 3 files changed, 308 insertions(+) create mode 100644 connectionwindow.cpp create mode 100644 connectionwindow.h create mode 100644 connectionwindow.ui diff --git a/connectionwindow.cpp b/connectionwindow.cpp new file mode 100644 index 0000000..8bdbc5c --- /dev/null +++ b/connectionwindow.cpp @@ -0,0 +1,148 @@ +#include "connectionwindow.h" +#include "ui_connectionwindow.h" + +ConnectionWindow::ConnectionWindow(QWidget *parent) : + QDialog(parent), + ui(new Ui::ConnectionWindow) +{ + ui->setupUi(this); + + getSerialPorts(); + + ui->cbSpeed0->addItem(tr("")); + ui->cbSpeed0->addItem(tr("Disabled")); + ui->cbSpeed0->addItem(tr("125000")); + ui->cbSpeed0->addItem(tr("250000")); + ui->cbSpeed0->addItem(tr("500000")); + ui->cbSpeed0->addItem(tr("1000000")); + ui->cbSpeed0->addItem(tr("33333")); + + ui->cbSpeed1->addItem(tr("")); + ui->cbSpeed1->addItem(tr("Disabled")); + ui->cbSpeed1->addItem(tr("125000")); + ui->cbSpeed1->addItem(tr("250000")); + ui->cbSpeed1->addItem(tr("500000")); + ui->cbSpeed1->addItem(tr("1000000")); + ui->cbSpeed1->addItem(tr("33333")); +} + +ConnectionWindow::~ConnectionWindow() +{ + delete ui; +} + +void ConnectionWindow::showEvent(QShowEvent* event) +{ + QDialog::showEvent(event); + qDebug() << "Show connectionwindow"; + if (ui->rbGVRET->isChecked()) getSerialPorts(); + if (ui->rbKvaser->isChecked()) getKvaserPorts(); + if (ui->rbSocketCAN->isChecked()) getSocketcanPorts(); +} + +void ConnectionWindow::getSerialPorts() +{ + ui->cbPort->clear(); + ports = QSerialPortInfo::availablePorts(); + + for (int i = 0; i < ports.count(); i++) + { + ui->cbPort->addItem(ports[i].portName()); + } +} + +void ConnectionWindow::getKvaserPorts() +{ + +} + +void ConnectionWindow::getSocketcanPorts() +{ + +} + +void ConnectionWindow::setSpeeds(int speed0, int speed1) +{ + bool found = false; + + for (int i = 0; i < ui->cbSpeed0->count(); i++) + { + if (ui->cbSpeed0->itemText(i).toInt() == speed0) + { + ui->cbSpeed0->setCurrentIndex(i); + found = true; + } + } + if (!found) + { + ui->cbSpeed0->addItem(QString::number(speed0)); + ui->cbSpeed0->setCurrentIndex(ui->cbSpeed0->count() - 1); + } + + found = false; + for (int i = 0; i < ui->cbSpeed1->count(); i++) + { + if (ui->cbSpeed1->itemText(i).toInt() == speed1) + { + ui->cbSpeed1->setCurrentIndex(i); + found = true; + } + } + if (!found) + { + ui->cbSpeed1->addItem(QString::number(speed1)); + ui->cbSpeed1->setCurrentIndex(ui->cbSpeed1->count() - 1); + } +} + + +//-1 means leave it at whatever it booted up to. 0 means disable. Otherwise the actual rate we want. +int ConnectionWindow::getSpeed0() +{ + switch (ui->cbSpeed0->currentIndex()) + { + case -1: + return -1; + break; + case 0: + return -1; + break; + case 1: + return 0; + break; + default: + return (ui->cbSpeed0->currentText().toInt()); + break; + } +} + +int ConnectionWindow::getSpeed1() +{ + switch (ui->cbSpeed1->currentIndex()) + { + case -1: + return -1; + break; + case 0: + return -1; + break; + case 1: + return 0; + break; + default: + return (ui->cbSpeed1->currentText().toInt()); + break; + } +} + +QString ConnectionWindow::getPortName() +{ + return (ui->cbPort->currentText()); +} + +ConnectionType::ConnectionType ConnectionWindow::getConnectionType() +{ + if (ui->rbGVRET->isChecked()) return ConnectionType::GVRET_SERIAL; + if (ui->rbKvaser->isChecked()) return ConnectionType::KVASER; + if (ui->rbSocketCAN->isChecked()) return ConnectionType::SOCKETCAN; +} diff --git a/connectionwindow.h b/connectionwindow.h new file mode 100644 index 0000000..e4eedd3 --- /dev/null +++ b/connectionwindow.h @@ -0,0 +1,50 @@ +#ifndef CONNECTIONWINDOW_H +#define CONNECTIONWINDOW_H + +#include +#include +#include + +namespace Ui { +class ConnectionWindow; +} + +namespace ConnectionType +{ + enum ConnectionType + { + GVRET_SERIAL, + KVASER, + SOCKETCAN + }; +} + +class ConnectionWindow : public QDialog +{ + Q_OBJECT + +public: + explicit ConnectionWindow(QWidget *parent = 0); + ~ConnectionWindow(); + void showEvent(QShowEvent *); + int getSpeed0(); + int getSpeed1(); + QString getPortName(); //name of port to connect to + ConnectionType::ConnectionType getConnectionType(); + +signals: + void updateConnectionSettings(); + +public slots: + void setSpeeds(int speed0, int speed1); + +private: + Ui::ConnectionWindow *ui; + QList ports; + + void getSerialPorts(); + void getKvaserPorts(); + void getSocketcanPorts(); +}; + +#endif // CONNECTIONWINDOW_H diff --git a/connectionwindow.ui b/connectionwindow.ui new file mode 100644 index 0000000..57a4839 --- /dev/null +++ b/connectionwindow.ui @@ -0,0 +1,110 @@ + + + ConnectionWindow + + + + 0 + 0 + 335 + 235 + + + + Connection Settings + + + + + + Connection Type + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + GVRET Serial + + + true + + + + + + + false + + + Kvaser + + + + + + + false + + + SocketCAN + + + + + + + + + + + 0 + 0 + + + + Port: + + + + + + + + + + + + CAN0 Speed + + + + + + + CAN1 Speed + + + + + + + + + + + + + + + OK + + + + + + + +