-
Notifications
You must be signed in to change notification settings - Fork 0
/
cread_serial_port.cpp
59 lines (45 loc) · 1.75 KB
/
cread_serial_port.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
#include "cread_serial_port.h"
#include <QMessageBox>
#include <QTextStream>
#include <QCoreApplication>
#include <QFile>
#include <QObject>
#include <QStringList>
#include <QCoreApplication>
QT_USE_NAMESPACE
CREAD_SERIAL_PORT::CREAD_SERIAL_PORT(const QString &port, const QString &baud, const QString &data, const QString &parity, const QString &stop, const QString &flow, QObject *parent)
: QObject(parent)
{
serial = new QSerialPort();
connect(serial, SIGNAL(readyRead()), this, SLOT(readData()));
connect(&m_timer, SIGNAL(timeout()), this, SLOT(handleTimeout()));
m_timer.start(5000);
currentSettings.name = port;
currentSettings.baudRate = static_cast<QSerialPort::BaudRate>(baud.toInt());
currentSettings.dataBits = static_cast<QSerialPort::DataBits>(data.toInt());
currentSettings.parity = static_cast<QSerialPort::Parity>(parity.toInt());
currentSettings.stopBits = static_cast<QSerialPort::StopBits>(stop.toInt());
currentSettings.flowControl = static_cast<QSerialPort::FlowControl>(flow.toInt());
connectPort();
}
void
CREAD_SERIAL_PORT::
connectPort() {
serial->setPortName(currentSettings.name);
serial->setBaudRate(currentSettings.baudRate);
serial->setDataBits(currentSettings.dataBits);
serial->setParity(currentSettings.parity);
serial->setStopBits(currentSettings.stopBits);
serial->setFlowControl(currentSettings.flowControl);
if (serial->open(QIODevice::ReadWrite)) {
}
else
QMessageBox::critical(NULL, QObject::tr("Error"), serial->errorString(), QMessageBox::Ok);
}
void
CREAD_SERIAL_PORT::
readData() {
m_readData.append(serial->readAll());
if (!m_timer.isActive())
m_timer.start(5000);
}