LoginSignup
6
7

More than 5 years have passed since last update.

QtSerialPortをいじってみる

Posted at

こんにちは。この記事はQt Advent Calendar 18日目となります。

QtSerialPort

QtSerialPortとは

QtSerialPortとは、その名の通りQtでシリアルポートを動かすためのクラスです。たとえば、

  • ロボットの操作インターフェイスをQtで作りたい
  • 組み込みシステムを作りたい

といった時に必要となるシリアルポートの操作が可能となります。

QtSerialPortには二つのクラスがあります。

QSerialPort

QSerialPortとはQtSerialPortの基盤となるクラスであり、またシリアルポートへの基本的なアクセスができます。Qt5.1から使用可能となりました。
QSerialPort Class | QtSerialPort 5.3

QSerialPortInfo

QSerialPortInfoクラスではシステムにおいて利用できるシリアルポートの情報を取得することができます。Qt5.1から使用可能となりました。
QSerialPortInfo Class | QtSerialPort 5.3

QtSerialPortはQIODeviceを継承して作られているため、QIODeviceの関数である.writeや.read()なども使用することができます。

使い方

QtSerialPortを利用する際は、プロジェクトファイルに次のように追記します

.pro
//Qt4の場合
CONFIG += serialport //これは.proファイルの一行目もしくは二行目に
//Qt5の場合
QT += serialport

また、次の二つのヘッダーを読み込みます。

#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

対応OS

OS サポート状況
Windows
GNU/Linux
MAC OSX

他にもWindowsCEとかでも使えるみたいです。凄いなぁ...

簡単なサンプル

#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>

#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

QT_USE_NAMESPACE

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // Example use QSerialPortInfo
    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { //availablePorts()で利用可能なすべてのシリアルポートが取得できる
        qDebug() << "Name        : " << info.portName();
        qDebug() << "Description : " << info.description();
        qDebug() << "Manufacturer: " << info.manufacturer();

        // Example use QSerialPort
        QSerialPort serial;
        serial.setPort(info);
        if (serial.open(QIODevice::ReadWrite))
            serial.close();
    }

    return a.exec();
}

057.png

参考資料

というか、ほとんどこのページの要約と翻訳って感じです...
QtSerialPort | Qt Wiki | Qt Project

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7