こんにちは。この記事は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を利用する際は、プロジェクトファイルに次のように追記します
//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();
}
##参考資料
というか、ほとんどこのページの要約と翻訳って感じです...
QtSerialPort | Qt Wiki | Qt Project