Repository navigation
Expand file tree
/
Copy pathPortConnectionMonitor.cpp
More file actions
70 lines (64 loc) · 1.88 KB
/
Copy pathPortConnectionMonitor.cpp
File metadata and controls
70 lines (64 loc) · 1.88 KB
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 "qtversion.h"
#include "PortConnectionMonitor.h"
#include "qextserialenumerator.h"
PortConnectionMonitor::PortConnectionMonitor(QObject *parent) :
QThread(parent)
{
start();
}
void PortConnectionMonitor::start()
{
running = true;
QThread::start();
}
void PortConnectionMonitor::stop()
{
running = false;
this->msleep(200); // let run finish. don't terminate it.
}
QStringList PortConnectionMonitor::enumeratePorts()
{
QList<QextPortInfo> ports = QextSerialEnumerator::getPorts();
QStringList stringlist;
QStringList myPortList;
QString name;
stringlist << "List of ports:";
for (int i = 0; i < ports.size(); i++) {
stringlist << "port name:" << ports.at(i).portName;
stringlist << "friendly name:" << ports.at(i).friendName;
stringlist << "physical name:" << ports.at(i).physName;
stringlist << "enumerator name:" << ports.at(i).enumName;
stringlist << "vendor ID:" << QString::number(ports.at(i).vendorID, 16);
stringlist << "product ID:" << QString::number(ports.at(i).productID, 16);
stringlist << "===================================";
#if defined(Q_OS_WIN32)
name = ports.at(i).portName;
if(name.contains(QString("COM"),Qt::CaseInsensitive)) {
myPortList.append(name);
}
#elif defined(Q_OS_MAC)
name = ports.at(i).portName;
if(name.indexOf("cu.usbserial") > -1) {
myPortList.append(name);
}
#else
name = ports.at(i).physName;
myPortList.append(name);
#endif
}
return myPortList;
}
void PortConnectionMonitor::run()
{
QStringList ports;
portList = enumeratePorts();
while(running) {
QApplication::processEvents();
this->msleep(100);
ports = enumeratePorts();
if(ports != portList) {
portList = ports;
emit portChanged();
}
}
}