Subversion Repositories Code-Repo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
344 Kevin 1
#include "MainWindow.h"
2
 
3
MainWindow::MainWindow(QWidget *parent) :
4
    QMainWindow(parent)
5
{
6
    // Set central widget
7
    centralWidget = new QWidget();
8
    setCentralWidget(centralWidget);
9
 
10
    // Serial connection UI
11
    groupSerialInit = new QGroupBox("Initialization");
12
    btnSerialConnect = new QPushButton("Connect");
13
    btnSerialRefresh = new QPushButton("Refresh");
14
    labelSerialPort = new QLabel("Port:");
15
    labelSerialSpeed = new QLabel("Baud Rate:");
16
    cboxSerialPort = new QComboBox();
17
//    cboxSerialPort->setFixedWidth(100);
18
    cboxSerialSpeed = new QComboBox();
19
//    cboxSerialSpeed->setFixedWidth(100);
20
 
21
    QHBoxLayout *serialInitLayout = new QHBoxLayout();
22
    serialInitLayout->addWidget(btnSerialConnect);
23
    serialInitLayout->addWidget(labelSerialPort);
24
    serialInitLayout->addWidget(cboxSerialPort);
25
    serialInitLayout->addWidget(labelSerialSpeed);
26
    serialInitLayout->addWidget(cboxSerialSpeed);
27
    serialInitLayout->addWidget(btnSerialRefresh);
28
    serialInitLayout->addStretch();
29
    groupSerialInit->setLayout(serialInitLayout);
30
    groupSerialInit->setFixedSize(groupSerialInit->sizeHint());
31
 
32
 
33
    // Serial data UI
34
    groupSerialData = new QGroupBox("Data");
35
    textSerialData = new QTextEdit();
36
    textSerialData->setCurrentFont(QFont("Consolas", 8));
37
    textSerialData->append("Waiting for serial connection...");
38
    textSerialData->setMinimumHeight(100);
39
    textSerialData->setReadOnly(true);
40
    textSerialTransmit = new QLineEdit();
41
    textSerialTransmit->setFont(QFont("Consolas", 8));
42
    btnSerialTransmit = new QPushButton("Send");
43
    btnSerialClear = new QPushButton("Clear");
44
 
45
    QHBoxLayout *serialTransmitLayout = new QHBoxLayout();
46
    serialTransmitLayout->addWidget(textSerialTransmit);
47
    serialTransmitLayout->addWidget(btnSerialTransmit);
48
    serialTransmitLayout->addWidget(btnSerialClear);
49
    QVBoxLayout *serialDataLayout = new QVBoxLayout();
50
    serialDataLayout->addWidget(textSerialData);
51
    serialDataLayout->addLayout(serialTransmitLayout);
52
    groupSerialData->setLayout(serialDataLayout);
53
 
54
 
55
    // Main layout
56
    QGridLayout *mainLayout = new QGridLayout();
57
    mainLayout->addWidget(groupSerialInit, 0, 0);
58
    mainLayout->addWidget(groupSerialData, 1, 0);
59
    centralWidget->setLayout(mainLayout);
60
 
61
    setWindowTitle("Paste Dispenser Controller");
62
    setBaseSize(this->sizeHint());
63
 
64
    serialThread = new QThread();
65
    serialController = new SerialController();
66
    serialController->moveToThread(serialThread);
67
 
68
    connect(btnSerialConnect, SIGNAL(clicked()), this, SLOT(Serial_ConnectToggleBtn()));
69
    connect(btnSerialRefresh, SIGNAL(clicked()), this, SIGNAL(Serial_QueryParameters()));
70
    connect(btnSerialTransmit, SIGNAL(clicked()), this, SLOT(Serial_TransmitStringBtn()));
71
    connect(textSerialTransmit, SIGNAL(returnPressed()), btnSerialTransmit, SIGNAL(clicked()));
72
    connect(btnSerialClear, SIGNAL(clicked()), this, SLOT(Serial_ClearBtn()));
73
    connect(this, SIGNAL(Serial_QueryParameters()), serialController, SLOT(Serial_QueryParameters()));
74
    connect(this, SIGNAL(Serial_Connect(QString,QString)), serialController, SLOT(Serial_Connect(QString,QString)));
75
    connect(this, SIGNAL(Serial_Disconnect()), serialController, SLOT(Serial_Disconnect()));
76
    connect(this, SIGNAL(Serial_TransmitString(QString)), serialController, SLOT(Serial_TransmitString(QString)));
77
    connect(serialController, SIGNAL(Serial_UpdateParameters(QStringList,QStringList)), this, SLOT(Serial_UpdateParameters(QStringList,QStringList)));
78
    connect(serialController, SIGNAL(Serial_ReceivedString(QString)), this, SLOT(Serial_ReceivedString(QString)));
79
    connect(serialController, SIGNAL(Serial_Connected()), this, SLOT(Serial_Connected()));
80
    connect(serialController, SIGNAL(Serial_Disconnected()), this, SLOT(Serial_Disconnected()));
81
    connect(serialThread, SIGNAL(finished()), serialController, SLOT(deleteLater()));
82
    serialThread->start();
83
 
84
    emit Serial_QueryParameters();
85
    Serial_Disconnected();
86
}
87
 
88
MainWindow::~MainWindow()
89
{
90
    serialThread->quit();
91
}
92
 
93
void MainWindow::Serial_ConnectToggleBtn()
94
{
95
    if (serialController->connected) {
96
        emit Serial_Disconnect();
97
    } else {
98
        if (cboxSerialPort->currentText() != "" && cboxSerialSpeed->currentText() != "") {
99
            emit Serial_Connect(cboxSerialPort->currentText(), cboxSerialSpeed->currentText());
100
        }
101
    }
102
}
103
 
104
void MainWindow::Serial_TransmitStringBtn()
105
{
106
    emit Serial_TransmitString(textSerialTransmit->text());
107
    textSerialData->setTextColor(Qt::darkBlue);
108
    textSerialData->append("TX:  " + textSerialTransmit->text());
109
    textSerialTransmit->setText("");
110
}
111
 
112
void MainWindow::Serial_ClearBtn()
113
{
114
    textSerialData->clear();
115
}
116
 
117
void MainWindow::Serial_UpdateParameters(QStringList ports, QStringList speeds)
118
{
119
    cboxSerialPort->clear();
120
    cboxSerialPort->addItems(ports);
121
 
122
    cboxSerialSpeed->clear();
123
    cboxSerialSpeed->addItems(speeds);
124
}
125
 
126
void MainWindow::Serial_ReceivedString(QString string)
127
{
128
    textSerialData->setTextColor(Qt::darkRed);
129
    textSerialData->append("RX:  " + string);
130
}
131
 
132
void MainWindow::Serial_Connected()
133
{
134
    btnSerialConnect->setText("Disconnect");
135
    cboxSerialPort->setEnabled(false);
136
    cboxSerialSpeed->setEnabled(false);
137
    btnSerialRefresh->setEnabled(false);
138
    textSerialTransmit->setEnabled(true);
139
    btnSerialTransmit->setEnabled(true);
140
}
141
 
142
void MainWindow::Serial_Disconnected()
143
{
144
    btnSerialConnect->setText("Connect");
145
    cboxSerialPort->setEnabled(true);
146
    cboxSerialSpeed->setEnabled(true);
147
    btnSerialRefresh->setEnabled(true);
148
    textSerialTransmit->setEnabled(false);
149
    btnSerialTransmit->setEnabled(false);
150
}