QtSerialPortをいじってみる

  • 4
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

こんにちは。この記事は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

この投稿は Qt Advent Calendar 201418日目の記事です。