Skip to content

Commit a22f61e

Browse files
committed
added auto disconnect on port error
1 parent ff284a3 commit a22f61e

File tree

7 files changed

+205
-164
lines changed

7 files changed

+205
-164
lines changed

Spherebot_UI/Spherebot_UI.pro.user

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE QtCreatorProject>
3-
<!-- Written by QtCreator 3.4.2, 2016-02-27T16:13:07. -->
3+
<!-- Written by QtCreator 3.4.2, 2016-02-27T16:42:28. -->
44
<qtcreator>
55
<data>
66
<variable>EnvironmentId</variable>

Spherebot_UI/mainwindow.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ MainWindow::MainWindow(QWidget *parent) :
3030
connect(Receiver, SIGNAL(lineReceived(QString)),this, SLOT(processReceivedData(QString)));
3131
connect(Receiver, SIGNAL(lineReceived(QString)),this->bot, SLOT(processAnswer(QString)));
3232

33+
connect(bot->port, SIGNAL(error(QSerialPort::SerialPortError)),this,SLOT(handle_port_error(QSerialPort::SerialPortError)));
34+
3335
initUI();
3436
initSateMachine();
3537

@@ -44,7 +46,6 @@ MainWindow::MainWindow(QWidget *parent) :
4446
setWindowTitle("Spherebot Controll");
4547

4648
qDebug()<<"mainwindow initialised: ";
47-
connect(restartLayerMsgBox,SIGNAL(accepted()),this,SLOT(hey()));
4849
}
4950

5051
void MainWindow::fitgraphicsView() ////function to trigger the fitIn function for the graphics view. Actually this shouldn´t be necessary!
@@ -266,6 +267,7 @@ void MainWindow::initSateMachine()
266267
/////////////////////////////////////////////////// Transitions
267268

268269
connected->addTransition(ui->connectButton, SIGNAL(clicked()),disconnected);
270+
connected->addTransition(this,SIGNAL(force_disconnect()),disconnected);
269271
disconnected->addTransition(ui->connectButton, SIGNAL(clicked()),try_connect);
270272
try_connect->addTransition(this, SIGNAL(successfully_connected()),connected);
271273
try_connect->addTransition(this, SIGNAL(not_successfully_connected()),disconnected);
@@ -372,6 +374,15 @@ MainWindow::~MainWindow()
372374
SaveSettings();
373375
delete ui;
374376
}
377+
378+
void MainWindow::handle_port_error(QSerialPort::SerialPortError err)
379+
{
380+
if(err != QSerialPort::NoError)
381+
{
382+
emit force_disconnect();
383+
resetPortList();
384+
}
385+
}
375386
///////////////////////////////////////////////////////////////////////////////
376387

377388
bool MainWindow::LoadSettings()

Spherebot_UI/mainwindow.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <QGraphicsSvgItem>
1616
#include <QMessageBox>
1717
#include <QStateMachine>
18+
#include <QSerialPort>
1819

1920

2021
#define DEFAULTDIAMETER 20
@@ -93,6 +94,7 @@ private slots:
9394
bool saveFile(const QString &fileName);
9495

9596
signals:
97+
void force_disconnect();
9698
void successfully_connected();
9799
void not_successfully_connected();
98100

@@ -102,6 +104,10 @@ private slots:
102104
void restart_print();
103105
void abort_restart_print();
104106

107+
public slots:
108+
void handle_port_error(QSerialPort::SerialPortError err);
109+
110+
105111
private:
106112

107113
void setCurrentFile(const QString &fileName);
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)