본문 바로가기
C++ 200제/코딩 IT 정보

QSerialPort Qt 시리얼 5.1부터 추가 (Serial 예제 소스)

by vicddory 2017. 7. 1.

QSerialPort Qt 시리얼 5.1부터 추가 (Serial 예제 소스)


Qt 이전 버전엔 QSerialPort 라이브러리가 없어서 QExtSerialPort란 타사 라이브러리를 이용하는 게 일반적이었습니다. 그렇지만 5.1.0이 릴리즈되면서 QSerialPort(Qt 시리얼) 라이브러리는 Qt의 일부가 되었습니다.


QSerialPort Qt 시리얼 라이브러리는 Qt4와 Qt5 이후를 지원하며 UNIX, 윈도우, 리눅스, MAC OS X, POSIX 32비트, 64비트도 지원합니다. 윈도우 CE와 심비안은 부분적으로 지원하나 Qt5 자체가 이들을 지원하지 않기에 향후 별도의 라이브러리가 추가될 가능성은 작습니다.


Using It

Qt 시리얼은 QtSerialPort와 QSerialPortInfo 클래스를 제공하며 사용하기 위해선 qmake에 아래처럼 옵션을 추가해야 합니다.


1
QT += serialport
cs


QSerialPort Qt [Qt Serial 통신 예제]

Example



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
#include <QCoreApplication>
#include <QDebug>
#include <QSerialPort>
#include <QSerialPortInfo>
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    qDebug() << "Number of serial ports:" << QSerialPortInfo::availablePorts().count();
 
    foreach (const QSerialPortInfo &serialPortInfo, QSerialPortInfo::availablePorts()) {
 
        qDebug() << "\nPort:" << serialPortInfo.portName();
        qDebug() << "Location:" << serialPortInfo.systemLocation();
        qDebug() << "Description:" << serialPortInfo.description();
        qDebug() << "Manufacturer:" << serialPortInfo.manufacturer();
 
        qDebug() << "Vendor Identifier:" << (
            serialPortInfo.hasVendorIdentifier() ? 
            QByteArray::number(serialPortInfo.vendorIdentifier(), 16) : 
            QByteArray());
 
        qDebug() << "Product Identifier:" << (
            serialPortInfo.hasProductIdentifier() ? 
            QByteArray::number(serialPortInfo.productIdentifier(), 16) : 
            QByteArray());
 
 
        qDebug() << "Busy:" << (serialPortInfo.isBusy() ? QObject::tr("Yes") : QObject::tr("No"));
 
        QSerialPort *port = new QSerialPort(serialPortInfo);
        if (port->open(QIODevice::ReadWrite)) {
            qDebug() << "Baud rate:" << port->baudRate();
            qDebug() << "Data bits:" << port->dataBits();
            qDebug() << "Stop bits:" << port->stopBits();
            qDebug() << "Parity:" << port->parity();
            qDebug() << "Flow control:" << port->flowControl();
            qDebug() << "Read buffer size:" << port->readBufferSize();
            port->close();
        } else {
            qDebug() << "Unable to open port, error code" << port->error();
        }
        delete port;
    }
 
    return 0;
}
cs


Qt5.1 QtSerialPort - Simple Terminal[Qt Serial 통신 예제]


출력


Number of serial ports: 1 


Port: "ttyUSB0" 

Location: "/dev/ttyUSB0" 

Description: "USB-Serial Controller" 

Manufacturer: "Prolific Technology Inc." 

Vendor Identifier: "67b" 

Product Identifier: "2303" 

Busy: "No" 

Baud rate: 9600 

Data bits: 8 

Stop bits: 1 

Parity: 0 

Flow control: 0 

Read buffer size: 0 


QSerialPort Qt 시리얼 5.1부터 추가 (Serial 예제 소스)

댓글