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