QSerialPort Class
シリアルポートにアクセスするための関数を提供します。詳細...
| ヘッダー: | #include <QSerialPort> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialPort) target_link_libraries(mytarget PRIVATE Qt6::SerialPort) |
| qmake: | QT += serialport |
| 継承元: | QIODevice |
注:このクラスのすべての関数は再入可能です。
パブリック型
| enum | BaudRate { Baud1200, Baud2400, Baud4800, Baud9600, Baud19200, …, Baud115200 } |
| enum | DataBits { Data5, Data6, Data7, Data8 } |
| enum | Direction { Input, Output, AllDirections } |
| flags | Directions |
| enum | FlowControl { NoFlowControl, HardwareControl, SoftwareControl } |
| enum | Parity { NoParity, EvenParity, OddParity, SpaceParity, MarkParity } |
| enum | PinoutSignal { NoSignal, DataTerminalReadySignal, DataCarrierDetectSignal, DataSetReadySignal, RingIndicatorSignal, …, SecondaryReceivedDataSignal } |
| flags | PinoutSignals |
| enum | SerialPortError { NoError, DeviceNotFoundError, PermissionError, OpenError, NotOpenError, …, UnknownError } |
| enum | StopBits { OneStop, OneAndHalfStop, TwoStop } |
プロパティ
|
|
パブリック関数
| QSerialPort(QObject *parent = nullptr) | |
| QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr) | |
| QSerialPort(const QString &name, QObject *parent = nullptr) | |
| virtual | ~QSerialPort() |
| qint32 | baudRate(QSerialPort::Directions directions = AllDirections) const |
| QBindable<QSerialPort::DataBits> | bindableDataBits() |
| QBindable<QSerialPort::SerialPortError> | bindableError() const |
| QBindable<QSerialPort::FlowControl> | bindableFlowControl() |
| QBindable<bool> | bindableIsBreakEnabled() |
| QBindable<QSerialPort::Parity> | bindableParity() |
| QBindable<QSerialPort::StopBits> | bindableStopBits() |
| bool | clear(QSerialPort::Directions directions = AllDirections) |
| void | clearError() |
| QSerialPort::DataBits | dataBits() const |
| QSerialPort::SerialPortError | error() const |
| QSerialPort::FlowControl | flowControl() const |
| bool | flush() |
| QSerialPort::Handle | handle() const |
| bool | isBreakEnabled() const |
| bool | isDataTerminalReady() |
| bool | isRequestToSend() |
| QSerialPort::Parity | parity() const |
| QSerialPort::PinoutSignals | pinoutSignals() |
| QString | portName() const |
| qint64 | readBufferSize() const |
| bool | setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections) |
| bool | setBreakEnabled(bool set = true) |
| bool | setDataBits(QSerialPort::DataBits dataBits) |
| bool | setDataTerminalReady(bool set) |
| bool | setFlowControl(QSerialPort::FlowControl flowControl) |
| bool | setParity(QSerialPort::Parity parity) |
| void | setPort(const QSerialPortInfo &serialPortInfo) |
| void | setPortName(const QString &name) |
| void | setReadBufferSize(qint64 size) |
| bool | setRequestToSend(bool set) |
| void | setSettingsRestoredOnClose(bool restore) |
| bool | setStopBits(QSerialPort::StopBits stopBits) |
(since 6.10) void | setWriteBufferSize(qint64 size) |
| bool | settingsRestoredOnClose() const |
| QSerialPort::StopBits | stopBits() const |
(since 6.10) qint64 | writeBufferSize() const |
再実装されたパブリック関数
| virtual qint64 | bytesAvailable() const override |
| virtual qint64 | bytesToWrite() const override |
| virtual bool | canReadLine() const override |
| virtual void | close() override |
| virtual bool | isSequential() const override |
| virtual bool | open(QIODeviceBase::OpenMode mode) override |
| virtual bool | waitForBytesWritten(int msecs = 30000) override |
| virtual bool | waitForReadyRead(int msecs = 30000) override |
シグナル
| void | baudRateChanged(qint32 baudRate, QSerialPort::Directions directions) |
| void | breakEnabledChanged(bool set) |
| void | dataBitsChanged(QSerialPort::DataBits dataBits) |
| void | dataTerminalReadyChanged(bool set) |
| void | errorOccurred(QSerialPort::SerialPortError error) |
| void | flowControlChanged(QSerialPort::FlowControl flow) |
| void | parityChanged(QSerialPort::Parity parity) |
| void | requestToSendChanged(bool set) |
(since 6.9) void | settingsRestoredOnCloseChanged(bool restore) |
| void | stopBitsChanged(QSerialPort::StopBits stopBits) |
再実装された保護関数
| virtual qint64 | readData(char *data, qint64 maxSize) override |
| virtual qint64 | readLineData(char *data, qint64 maxSize) override |
| virtual qint64 | writeData(const char *data, qint64 maxSize) override |
詳細な説明
QSerialPortInfo ヘルパークラスを使用すると、利用可能なシリアルポートに関する情報を取得できます。このクラスを使用すると、システム内のすべてのシリアルポートを列挙できます。これは、使用したいシリアルポートの正しい名前を取得するのに役立ちます。ヘルパークラスのオブジェクトをsetPort()またはsetPortName()メソッドの引数として渡すことで、目的のシリアルデバイスを割り当てることができます。
ポートの設定後、open() メソッドを使用して、読み取り専用 (r/o)、書き込み専用 (w/o)、または読み書き (r/w) モードでポートを開くことができます。
注: シリアルポートは 常に排他アクセスで開かれます(つまり、すでに開かれているシリアルポートには、他のプロセスやスレッドはアクセスできません)。
close() メソッドを使用して、ポートを閉じ、I/O 操作をキャンセルします。
正常にオープンされると、QSerialPort はポートの現在の設定を判別し、初期化を行います。setBaudRate()、setDataBits()、setParity()、setStopBits()、およびsetFlowControl() メソッドを使用して、ポートを任意の設定に再構成することができます。
ピン配置信号を操作するためのプロパティとして、QSerialPort::dataTerminalReady 、QSerialPort::requestToSend があります。また、pinoutSignals() メソッドを使用して、現在設定されているピン配置信号を照会することも可能です。
ポートの読み取りまたは書き込みの準備が整ったことが確認できたら、read() またはwrite() メソッドを使用できます。 あるいは、readLine() やreadAll() といった利便性の高いメソッドを呼び出すこともできます。データを一度にすべて読み込まない場合、残りのデータは、新しい受信データが QSerialPort の内部読み取りバッファに追加されるにつれて、後で利用可能になります。setReadBufferSize() を使用することで、読み取りバッファのサイズを制限することができます。
QSerialPort には、特定のシグナルが発信されるまで呼び出しスレッドを一時停止させる一連の関数が用意されています。これらの関数を使用することで、ブロッキング型シリアルポートを実装できます:
- waitForReadyRead() は、読み取り可能な新しいデータが利用可能になるまで呼び出しをブロックします。
- waitForBytesWritten() は、1 つのデータペイロードがシリアルポートに書き込まれるまで呼び出しをブロックします。
以下の例を参照してください:
qint64 numReadTotal = 0;
char buffer[50];
for (;;) {
const qint64 numRead = serial.read(buffer, 50);
// Do whatever with the array
numReadTotal += numRead;
if (numRead == 0 && !serial.waitForReadyRead())
break;
}waitForReadyRead()がfalse を返した場合、接続が閉じられたか、エラーが発生したことを意味します。
任意の時点でエラーが発生した場合、QSerialPortはerrorOccurred()シグナルを発行します。また、error()を呼び出すことで、最後に発生したエラーの種類を確認することもできます。
ブロッキング型シリアルポートを使用したプログラミングは、ノンブロッキング型シリアルポートを使用したプログラミングとは根本的に異なります。ブロッキング型シリアルポートはイベントループを必要とせず、通常はよりシンプルなコードになります。ただし、GUIアプリケーションでは、ユーザーインターフェースのフリーズを防ぐため、ブロッキング型シリアルポートは非GUIスレッドでのみ使用すべきです。
これらのアプローチの詳細については、サンプルアプリケーションを参照してください。
QSerialPort クラスは、QTextStream およびQDataStream のストリーム演算子(operator<<() および operator>>())とも併用できます。ただし、注意すべき点が 1 つあります。オーバーロードされた operator>>() を使用して読み取りを行う前に、十分なデータが利用可能であることを確認してください。
QSerialPortInfoも参照してください 。
メンバ型のドキュメント
enum QSerialPort::BaudRate
この列挙型は、通信デバイスが動作するボーレートを表します。
注: この列挙型には、最も一般的な標準ボーレートのみが 記載されています。
| 定数 | 値 | 説明 |
|---|---|---|
QSerialPort::Baud1200 | 1200 | 1200 ボー。 |
QSerialPort::Baud2400 | 2400 | 2400 ボー。 |
QSerialPort::Baud4800 | 4800 | 4800 ボー。 |
QSerialPort::Baud9600 | 9600 | 9600ボー。 |
QSerialPort::Baud19200 | 19200 | 19200 ボー。 |
QSerialPort::Baud38400 | 38400 | 38400 ボー。 |
QSerialPort::Baud57600 | 57600 | 57600 ボー。 |
QSerialPort::Baud115200 | 115200 | 115200 ボー。 |
QSerialPort::baudRateも参照してください 。
enum QSerialPort::DataBits
この列挙型は、使用されるデータビット数を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QSerialPort::Data5 | 5 | 各文字のデータビット数は 5 です。ボーダットコードに使用されます。一般的に、テレタイプ機などの旧式の機器でのみ意味を持ちます。 |
QSerialPort::Data6 | 6 | 各文字のデータビット数は 6 です。ほとんど使用されません。 |
QSerialPort::Data7 | 7 | 各文字のデータビット数は7です。真のASCIIで使用されます。一般的には、テレプリンタなどの古い機器でのみ意味を持ちます。 |
QSerialPort::Data8 | 8 | 各文字のデータビット数は8ビットです。このサイズは1バイトのサイズと一致するため、ほとんどの種類のデータに使用されます。新しいアプリケーションではほぼ普遍的に使用されています。 |
QSerialPort::dataBitsも参照してください 。
enum QSerialPort::Direction
flags QSerialPort::Directions
この列挙型は、データ伝送の可能な方向を表します。
注:この列挙型は 、一部のオペレーティングシステム(POSIX系など)において、デバイスのボーレートを方向ごとに個別に設定するために使用されます。
| 定数 | 値 | 説明 |
|---|---|---|
QSerialPort::Input | 1 | 入力方向。 |
QSerialPort::Output | 2 | 出力方向。 |
QSerialPort::AllDirections | Input | Output | 2 方向同時に。 |
Directions 型は、QFlags<Direction> の typedef です。Direction 値の論理和(OR)を格納します。
enum QSerialPort::FlowControl
この列挙型は、使用されるフロー制御を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QSerialPort::NoFlowControl | 0 | フロー制御なし。 |
QSerialPort::HardwareControl | 1 | ハードウェアフロー制御 (RTS/CTS)。 |
QSerialPort::SoftwareControl | 2 | ソフトウェアによるフロー制御 (XON/XOFF)。 |
QSerialPort::flowControlも参照してください 。
enum QSerialPort::Parity
この列挙型は、使用されるパリティ方式を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QSerialPort::NoParity | 0 | パリティビットは送信されません。これは最も一般的なパリティ設定です。エラー検出は通信プロトコルによって処理されます。 |
QSerialPort::EvenParity | 2 | パリティビットを含め、各文字に含まれる 1 のビット数は常に偶数です。 |
QSerialPort::OddParity | 3 | 各文字に含まれる 1 のビット数(パリティビットを含む)は常に奇数です。これにより、各文字で少なくとも 1 回の状態遷移が発生することが保証されます。 |
QSerialPort::SpaceParity | 4 | スペースパリティ。パリティビットはスペース信号状態で送信されます。エラー検出情報は提供されません。 |
QSerialPort::MarkParity | 5 | マークパリティ。パリティビットは常にマーク信号状態(論理1)に設定されます。エラー検出情報は提供されません。 |
QSerialPort::parityも参照してください 。
enum QSerialPort::PinoutSignal
flags QSerialPort::PinoutSignals
この列挙型は、RS-232のピン配置で想定される信号を表しています。
| 定数 | 値 | 説明 |
|---|---|---|
QSerialPort::NoSignal | 0x00 | ラインが非アクティブ |
QSerialPort::DataTerminalReadySignal | 0x04 | DTR (データ端末準備完了)。 |
QSerialPort::DataCarrierDetectSignal | 0x08 | DCD (データキャリア検出)。 |
QSerialPort::DataSetReadySignal | 0x10 | DSR(データセットレディ)。 |
QSerialPort::RingIndicatorSignal | 0x20 | RNG(呼び出しインジケータ)。 |
QSerialPort::RequestToSendSignal | 0x40 | RTS (送信要求)。 |
QSerialPort::ClearToSendSignal | 0x80 | CTS(送信許可)。 |
QSerialPort::SecondaryTransmittedDataSignal | 0x100 | STD(二次送信データ)。 |
QSerialPort::SecondaryReceivedDataSignal | 0x200 | SRD (セカンダリ受信データ)。 |
PinoutSignals 型は、QFlags<PinoutSignal> の typedef です。これは、PinoutSignal 値の OR 組み合わせを格納します。
pinoutSignals()、QSerialPort::dataTerminalReady 、およびQSerialPort::requestToSendも参照してください 。
enum QSerialPort::SerialPortError
この列挙型は、QSerialPort::error プロパティに含まれる可能性のあるエラーを表します。
| 定数 | 定数値 | 説明 |
|---|---|---|
QSerialPort::NoError | 0 | エラーは発生しませんでした。 |
QSerialPort::DeviceNotFoundError | 1 | 存在しないデバイスを開こうとした際にエラーが発生しました。 |
QSerialPort::PermissionError | 2 | 別のプロセスによってすでに開かれているデバイスを開こうとした際、または開くための十分な権限や認証情報を持たないユーザーがデバイスを開こうとした際にエラーが発生しました。 |
QSerialPort::OpenError | 3 | このオブジェクト内で、すでに開かれているデバイスを開こうとした際にエラーが発生しました。 |
QSerialPort::NotOpenError | 10 | このエラーは、デバイスが開かれている場合にのみ正常に実行できる操作が実行されたときに発生します。この値は、QtSerialPort 5.2で導入されました。 |
QSerialPort::WriteError | 4 | データの書き込み中に I/O エラーが発生しました。 |
QSerialPort::ReadError | 5 | データの読み取り中に I/O エラーが発生しました。 |
QSerialPort::ResourceError | 6 | リソースが利用できなくなったときに I/O エラーが発生しました。たとえば、デバイスが予期せずシステムから取り外された場合などです。 |
QSerialPort::UnsupportedOperationError | 7 | 要求されたデバイス操作は、実行中のオペレーティングシステムでサポートされていないか、禁止されています。 |
QSerialPort::TimeoutError | 9 | タイムアウトエラーが発生しました。この値は、QtSerialPort 5.2 で導入されました。 |
QSerialPort::UnknownError | 8 | 未確認のエラーが発生しました。 |
「QSerialPort::error」も参照してください 。
enum QSerialPort::StopBits
この列挙型は、使用されるストップビットの数を表します。
| 定数 | 値 | 説明 |
|---|---|---|
QSerialPort::OneStop | 1 | 1 ストップビット。 |
QSerialPort::OneAndHalfStop | 3 | 1.5 ストップビット。これは Windows プラットフォームのみです。 |
QSerialPort::TwoStop | 2 | 2 ストップビット。 |
「QSerialPort::stopBits」も参照してください 。
プロパティのドキュメント
baudRate : qint32
このプロパティは、対象の方向のデータボーレートを保持します
設定が成功した場合、またはポートを開く前に設定された場合は、true を返します。それ以外の場合はfalse を返し、QSerialPort::error プロパティの値にアクセスすることで取得できるエラーコードを設定します。ボーレートを設定するには、列挙型QSerialPort::BaudRate 、または任意の正のqint32値を使用します。
注: ポートを開く前に設定を行った場合 、ポートのオープンに成功した直後に、QSerialPort::open() メソッド内で実際のシリアルポート設定が自動的に行われます。
警告: AllDirections フラグの設定は 、すべてのプラットフォームでサポートされています。Windowsでは、このモードのみがサポートされています。
警告: Windows では、どの方向でも同じボーレートが返されます 。
デフォルト値は Baud9600、つまり 9600 ビット/秒です。
アクセス関数:
| qint32 | baudRate(QSerialPort::Directions directions = AllDirections) const |
| bool | setBaudRate(qint32 baudRate, QSerialPort::Directions directions = AllDirections) |
通知シグナル:
| void | baudRateChanged(qint32 baudRate, QSerialPort::Directions directions) |
[bindable] breakEnabled : bool
注:この プロパティは、QProperty のバインディングに対応しています。
このプロパティは、ブレーク状態にある伝送ラインの状態を保持します。
成功した場合は `true ` を返し、それ以外の場合は `false ` を返します。フラグが `true ` の場合、伝送線路はブレーク状態にあります。それ以外の場合は非ブレーク状態です。
注: このプロパティの設定または取得を試みる前に、シリアルポートを開 いておく必要があります。そうでない場合、false を返し、NotOpenError エラーコードを設定します。これは、クラスの通常の Qt プロパティ設定とは対照的に、少々異例です。 ただし、このプロパティはカーネルやハードウェアとの相互作用を通じて設定されるため、これは特殊なユースケースです。したがって、これら2つのシナリオを完全に比較することはできません。
アクセス関数:
| bool | isBreakEnabled() const |
| bool | setBreakEnabled(bool set = true) |
Notifierシグナル:
| void | breakEnabledChanged(bool set) |
[bindable] dataBits : DataBits
注:この プロパティは、QProperty バインディングをサポートしています。
このプロパティは、フレーム内のデータビットを保持します。
設定が成功した場合、またはポートを開く前に設定された場合は、true を返します。それ以外の場合は、false を返し、QSerialPort::error プロパティの値にアクセスすることで取得できるエラーコードを設定します。
注: ポートを開く前に設定が行われた場合 、ポートの開放が成功した直後に、QSerialPort::open() メソッド内で実際のシリアルポートの設定が自動的に行われます。
デフォルト値は Data8、つまり 8 データビットです。
アクセス関数:
| QSerialPort::DataBits | dataBits() const |
| bool | setDataBits(QSerialPort::DataBits dataBits) |
通知信号:
| void | dataBitsChanged(QSerialPort::DataBits dataBits) |
dataTerminalReady : bool
このプロパティは、回線信号 DTR の状態(ハイまたはロー)を保持します
成功した場合はtrue を返し、それ以外の場合はfalse を返します。フラグがtrue の場合、DTR信号はHighに設定されます。それ以外の場合はLowに設定されます。
注: このプロパティの設定または取得を行う前に、シリアルポート を開いておく必要があります。そうしないと、false が返され、エラーコードはNotOpenError に設定されます。
アクセス関数:
| bool | isDataTerminalReady() |
| bool | setDataTerminalReady(bool set) |
通知信号:
| void | dataTerminalReadyChanged(bool set) |
関連項目: pinoutSignals()。
[bindable read-only] error : SerialPortError
注:この プロパティは、QProperty のバインディングに対応しています。
このプロパティは、シリアルポートのエラーステータスを保持します
I/O デバイスのステータスはエラーコードを返します。たとえば、open() が `false` を返した場合や、読み取り/書き込み操作が `-1` を返した場合、このプロパティを使用して、操作が失敗した原因を特定できます。
clearError()を呼び出した後、エラーコードはデフォルトのQSerialPort::NoError に設定されます
アクセス関数:
| QSerialPort::SerialPortError | error() const |
| void | clearError() |
Notifierシグナル:
| void | errorOccurred(QSerialPort::SerialPortError error) |
[bindable] flowControl : FlowControl
注:この プロパティは、QProperty バインディングに対応しています。
このプロパティは、希望するフロー制御モードを保持します。
設定が成功した場合、またはポートを開く前に設定された場合は、true を返します。それ以外の場合は、false を返し、QSerialPort::error プロパティの値にアクセスすることで取得できるエラーコードを設定します。
注: ポートを開く前に設定が行われた場合 、ポートのオープンに成功した直後に、QSerialPort::open() メソッド内で実際のシリアルポートの設定が自動的に行われます。
デフォルト値はNoFlowControl であり、フロー制御は行われません。
アクセス関数:
| QSerialPort::FlowControl | flowControl() const |
| bool | setFlowControl(QSerialPort::FlowControl flowControl) |
通知シグナル:
| void | flowControlChanged(QSerialPort::FlowControl flow) |
[bindable] parity : Parity
注:この プロパティは、QProperty バインディングをサポートしています。
このプロパティはパリティチェックモードを保持します
設定が成功した場合、またはポートを開く前に設定された場合は、true を返します。それ以外の場合は、false を返し、QSerialPort::error プロパティの値にアクセスすることで取得できるエラーコードを設定します。
注: ポートを開く前に設定が行われた場合 、ポートのオープンに成功した直後に、QSerialPort::open() メソッドによって実際のシリアルポートの設定が自動的に行われます。
デフォルト値はNoParity 、つまりパリティなしです。
警告:一部の UNIX オペレーティングシステム(macOS など)は、CMSPAR フラグをサポートしていません。このようなシステムでは、Mark or Space パリティの設定はサポートされていません。
アクセス関数:
| QSerialPort::Parity | parity() const |
| bool | setParity(QSerialPort::Parity parity) |
通知シグナル:
| void | parityChanged(QSerialPort::Parity parity) |
requestToSend : bool
このプロパティは、ライン信号 RTS の状態(ハイまたはロー)を保持します
成功した場合はtrue を返し、それ以外の場合はfalse を返します。フラグがtrue の場合、RTS信号はHighに設定され、それ以外の場合はLowに設定されます。
注: このプロパティの設定または取得を行う前に、シリアルポート を開いておく必要があります。そうしないと、false が返され、エラーコードはNotOpenError に設定されます。
注: HardwareControl モードでRTS信号を制御しようとすると 、信号はドライバによって自動的に制御されるため、エラーコードがUnsupportedOperationError に設定され、操作は 失敗します。
アクセス関数:
| bool | isRequestToSend() |
| bool | setRequestToSend(bool set) |
通知信号:
| void | requestToSendChanged(bool set) |
関連項目: pinoutSignals()。
[since 6.9] settingsRestoredOnClose : bool
このプロパティは、ポートのパラメータを閉じる際に復元するかどうかを指定します
ポートが開かれた後、このクラスは、ユーザーによって定義されたパラメータを適用する前に、そのパラメータをキャッシュします。
このプロパティが「true 」に設定されている場合、シリアルポートはポートを閉じる前にキャッシュされたパラメータの復元を試みます。そうでない場合、キャッシュされたパラメータは破棄されます。
デフォルト値は `true` です。
注:この プロパティは、一部のオペレーティングシステムでは効果がない場合があります。たとえば、macOS では、ポートが閉じられると常にシリアルポートのデフォルト設定が復元されるようです。
この列挙型は Qt 6.9 で導入されました。
アクセス関数:
| bool | settingsRestoredOnClose() const |
| void | setSettingsRestoredOnClose(bool restore) |
Notifier シグナル:
| void | settingsRestoredOnCloseChanged(bool restore) |
[bindable] stopBits : StopBits
注:この プロパティは、QProperty のバインディングに対応しています。
このプロパティは、フレーム内のストップビット数を保持します。
設定が成功した場合、またはポートを開く前に設定された場合は、true を返します。それ以外の場合は、false を返し、QSerialPort::error プロパティの値にアクセスすることで取得できるエラーコードを設定します。
注: ポートを開く前に設定が行われた場合 、ポートのオープンに成功した直後に、QSerialPort::open() メソッドによって実際のシリアルポートの設定が自動的に行われます。
デフォルト値はOneStop 、つまり 1 ストップビットです。
アクセス関数:
| QSerialPort::StopBits | stopBits() const |
| bool | setStopBits(QSerialPort::StopBits stopBits) |
通知信号:
| void | stopBitsChanged(QSerialPort::StopBits stopBits) |
メンバ関数のドキュメント
[explicit] QSerialPort::QSerialPort(QObject *parent = nullptr)
指定されたparent を使用して、新しいシリアルポートオブジェクトを作成します。
[explicit] QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
指定されたparent を使用して、指定されたヘルパークラスserialPortInfo で表されるシリアルポートを表す新しいシリアルポートオブジェクトを作成します。
[explicit] QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)
指定されたparent を使用して、指定されたname を持つシリアルポートを表す新しいシリアルポートオブジェクトを構築します。
名前は特定の形式に従う必要があります。詳細はsetPort()メソッドを参照してください。
[virtual noexcept] QSerialPort::~QSerialPort()
必要に応じてシリアルポートを閉じ、その後、オブジェクトを破棄します。
[signal] void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
この信号は、ボーレートが変更された後に発信されます。新しいボーレートは `baudRate ` として、方向は `directions` として渡されます。
注: プロパティ `baudRate` に対する通知 信号です。
「QSerialPort::baudRate」も参照してください 。
[override virtual] qint64 QSerialPort::bytesAvailable() const
QIODevice::bytesAvailable() const を再実装します。
読み込み待ちの受信バイト数を返します。
bytesToWrite() およびread()も参照してください 。
[override virtual] qint64 QSerialPort::bytesToWrite() const
QIODevice::bytesToWrite() const を再実装します。
書き込み待ちのバイト数を返します。これらのバイトは、制御がイベントループに戻ったとき、または `flush()` が呼び出されたときに書き込まれます。
bytesAvailable() およびflush()も参照してください 。
[override virtual] bool QSerialPort::canReadLine() const
QIODevice::canReadLine() const を再実装します。
シリアルポートからデータ行を読み込める場合は `true ` を返し、そうでない場合は `false` を返します。
readLine()も参照してください 。
bool QSerialPort::clear(QSerialPort::Directions directions = AllDirections)
指定された方向(directions )に応じて、出力または入力バッファからすべての文字を破棄します。これには、クラス内部のバッファおよびUART(ドライバ)バッファのクリアが含まれます。また、保留中の読み取りまたは書き込み操作を終了させます。成功した場合はtrue を返し、失敗した場合はfalse を返します。
注: バッファに格納されたデータをクリアしようとする前に、シリアルポート を開いておく必要があります。そうでない場合は、false を返し、NotOpenError のエラーコードを設定します。
[override virtual] void QSerialPort::close()
QIODevice::close() を再実装します。
注: シリアルポートを 閉じる前に、そのポート を開いておく必要があります。そうしないと、NotOpenError のエラーコードが設定されます。
関連項目: QIODevice::close()。
[signal] void QSerialPort::dataBitsChanged(QSerialPort::DataBits dataBits)
この信号は、フレーム内のデータビットが変更された後に発信されます。フレーム内の新しいデータビットは、dataBits として渡されます。
注: プロパティ `dataBits`の通知 信号です。
「QSerialPort::dataBits」も参照してください 。
[signal] void QSerialPort::dataTerminalReadyChanged(bool set)
この信号は、回線信号 DTR の状態(ハイまたはロー)が変化した後に発信されます。回線信号 DTR の新しい状態(ハイまたはロー)は、set として渡されます。
注: プロパティ `dataTerminalReady`の通知 信号です。
「QSerialPort::dataTerminalReady」も参照してください 。
[signal] void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)
このシグナルは、シリアルポートでエラーが発生した際に発せられます。指定されたerror は、発生したエラーの種類を表します。
注: プロパティ「error 」の通知 シグナルです。
「QSerialPort::error」も参照してください 。
[signal] void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)
このシグナルは、フロー制御モードが変更された後に発信されます。新しいフロー制御モードは、flow として渡されます。
注: プロパティ `flowControl` に対する通知 信号です。
「QSerialPort::flowControl」も参照してください 。
bool QSerialPort::flush()
この関数は、ブロックすることなく、内部の書き込みバッファから可能な限り多くのデータを基になるシリアルポートへ書き込みます。データが書き込まれた場合、この関数はtrue を返します。そうでない場合はfalse を返します。
バッファに格納されたデータを直ちにシリアルポートへ送信するには、この関数を呼び出してください。正常に書き込みできたバイト数は、オペレーティングシステムによって異なります。ほとんどの場合、この関数を呼び出す必要はありません。QSerialPort クラスは、制御がイベントループに戻ると自動的にデータの送信を開始するからです。イベントループがない場合は、代わりにwaitForBytesWritten()を呼び出してください。
注: バッファされたデータをフラッシュしようとする前に、シリアルポート が開かれている必要があります。そうでない場合、false を返し、NotOpenError のエラーコードを設定します。
関連項目: write() およびwaitForBytesWritten()。
QSerialPort::Handle QSerialPort::handle() const
プラットフォームがサポートされており、シリアルポートが開いている場合は、ネイティブのシリアルポートハンドルを返します。そうでない場合は、-1 を返します。
警告:この関数は 上級者向けです。使用は自己責任で行ってください。また、この関数については、Qtのマイナーリリース間での互換性は保証されません。
[override virtual] bool QSerialPort::isSequential() const
QIODevice::isSequential() const を再実装します。
常に `true` を返します。シリアルポートはシーケンシャルデバイスです。
[override virtual] bool QSerialPort::open(QIODeviceBase::OpenMode mode)
QIODevice::open (QIODeviceBase::OpenMode mode)を再実装します。
OpenModemode を使用してシリアルポートを開き、成功した場合はtrue を返し、失敗した場合はfalse を返し、error() メソッドを呼び出すことで取得できるエラーコードを設定します。
ポートは開かれたものの、目的のポートパラメータの設定に失敗した場合、このメソッドはfalse を返し、ポートを自動的に閉じます。
警告: mode は 、QIODeviceBase::ReadOnly 、QIODeviceBase::WriteOnly 、またはQIODeviceBase::ReadWrite のいずれかでなければなりません。その他のモードはサポートされていません。
注: 歴史的な理由により 、オープンの成功時には、NoError のエラーコードとともにerrorOccurred()シグナルが発信されます。この動作は、下位互換性を維持するために残されています。
QIODeviceBase::OpenMode およびsetPort()も参照してください 。
[signal] void QSerialPort::parityChanged(QSerialPort::Parity parity)
この信号は、パリティチェックモードが変更された後に発信されます。新しいパリティチェックモードは、parity として渡されます。
注: プロパティ `parity` に対する通知 信号です。
「QSerialPort::parity」も参照してください 。
QSerialPort::PinoutSignals QSerialPort::pinoutSignals()
ライン信号の状態をビットマップ形式で返します。
この結果から、QSerialPort::PinoutSignals に定義された列挙値のうち、目的のシグナルの状態に対応する値をマスクとして「AND」演算を適用することで、そのシグナルの状態を特定することができます。
注:この メソッドは システムコールを実行するため、ライン信号の状態が正しく返されることが保証されます。これは、基盤となるオペレーティングシステムが変更に関する適切な通知を提供できない場合に必要です。
注: ピンアウト信号を取得しようとする前に、シリアルポート を開いておく必要があります。そうしないと、NoSignal を返し、NotOpenError のエラーコードが設定されます。
「 QSerialPort::dataTerminalReady 」および「QSerialPort::requestToSend 」も参照してください 。
QString QSerialPort::portName() const
setPort() で設定された、またはQSerialPort のコンストラクタに渡された名前を返します。この名前は短縮名であり、つまり、デバイスの内部変数システム上の位置から抽出・変換されたものです。変換アルゴリズムはプラットフォームごとに異なります:
| プラットフォーム | 概要 |
|---|---|
| Windows | システム位置から接頭辞「\\.\」または「//./」を削除し、残りの文字列を返します。 |
| Unix、BSD | システムパスから接頭辞「/dev/」を取り除き、残りの文字列を返します。 |
setPortName()、setPort()、およびQSerialPortInfo::portName()も参照してください 。
qint64 QSerialPort::readBufferSize() const
内部の読み取りバッファのサイズを返します。これにより、クライアントがread() またはreadAll() メソッドを呼び出す前に受信できるデータ量が制限されます。
0 (デフォルト)の読み取りバッファサイズを設定すると、バッファにサイズ制限がなくなり、データの損失が防止されます。
setReadBufferSize() およびread()も参照してください 。
[override virtual protected] qint64 QSerialPort::readData(char *data, qint64 maxSize)
QIODevice::readData (char *data, qint64 maxSize)を再実装します。
[override virtual protected] qint64 QSerialPort::readLineData(char *data, qint64 maxSize)
QIODevice::readLineData (char *data, qint64 maxSize)を再実装します。
[signal] void QSerialPort::requestToSendChanged(bool set)
この信号は、ライン信号 RTS の状態(ハイまたはロー)が変化した後に発信されます。ライン信号 RTS の新しい状態(ハイまたはロー)は、set として渡されます。
注: プロパティ `requestToSend`の通知 信号です。
「QSerialPort::requestToSend」も参照してください 。
void QSerialPort::setPort(const QSerialPortInfo &serialPortInfo)
シリアルポート情報インスタンス `serialPortInfo` に格納されているポートを設定します。
portName() およびQSerialPortInfoも参照してください 。
void QSerialPort::setPortName(const QString &name)
シリアルポートのname を設定します。
シリアルポートの名前は、必要に応じて短縮名または完全なシステムパスとして指定できます。
注:この関数を使用すると、 list of available ports に含まれていないポート、あるいは名前文字列を使用してQSerialPortInfo インスタンスを作成するとnull オブジェクトが返されるポートを設定することができます。それが必須条件でない場合は、その名前が有効なQSerialPortInfo オブジェクトになることを確認した上で、代わりにsetPort()を使用してください。
portName() およびQSerialPortInfoも参照してください 。
void QSerialPort::setReadBufferSize(qint64 size)
QSerialPort の内部読み取りバッファのサイズをsize バイトに設定します。
バッファサイズが特定のサイズに制限されている場合、QSerialPort はこのサイズを超えるデータをバッファに格納しません。バッファサイズが0 に設定されている特殊なケースでは、読み取りバッファに制限がなく、受信したすべてのデータがバッファに格納されます。これがデフォルトの設定です。
このオプションは、データが特定の時点でのみ読み込まれる場合(たとえば、リアルタイムのストリーミングアプリケーションなど)や、シリアルポートが過剰なデータを受信することでアプリケーションのメモリ不足を招くのを防ぎたい場合に有用です。
負の値を指定すると、内部バッファが無効になり、事実上、すべての読み取りがブロックされます。
readBufferSize() およびread()も参照してください 。
[since 6.10] void QSerialPort::setWriteBufferSize(qint64 size)
QSerialPort の内部書き込みバッファのサイズをsize バイトに設定します。
シリアルポート経由でのデータ送信は比較的低速であるため、実際にはwrite()が呼び出されてもデータは即座に送信されません。データはまず中間バッファに格納され、その後、チャンク単位で書き込まれます。
したがって、データ量が多すぎたり、基盤となるシリアルポートが処理できる速度を超えて書き込んだりすると、内部バッファが肥大化する可能性があります。これにより、特にメモリリソースが少ないデバイスでは、最終的にアプリケーションがメモリ不足に陥る恐れがあります。
このメソッドを使用すると、内部バッファを特定のサイズに制限することができます。次の書き込み試行がバッファの容量を超える場合、write() メソッドは、実際にバッファに格納されたバイト数を返します。bytesWritten() シグナルを受信した後、またはwaitForBytesWritten() メソッドがtrue を返した後、残りのバイトについて書き込み試行を繰り返すのはユーザーの責任です。
このメソッドに `0 ` を渡すと、書き込みバッファに制限が設けられず、`write()` に渡されたすべてのデータがバッファに格納されます。これがデフォルトの設定です。
負の値を指定した場合も、0 を指定した場合と同じ効果があります。
この関数は Qt 6.10 で導入されました。
writeBufferSize() およびwrite()も参照してください 。
[signal, since 6.9] void QSerialPort::settingsRestoredOnCloseChanged(bool restore)
このシグナルは、settingsRestoredOnClose プロパティが変更された後に発火します。restore パラメータには、そのプロパティの新しい値が格納されます。
注: プロパティ `settingsRestoredOnClose`の通知 シグナルです。
この関数は Qt 6.9 で導入されました。
「QSerialPort::settingsRestoredOnClose」も参照してください 。
[signal] void QSerialPort::stopBitsChanged(QSerialPort::StopBits stopBits)
この信号は、フレーム内のストップビット数が変更された後に送信されます。フレーム内の新しいストップビット数は、stopBits として渡されます。
注: プロパティ `stopBits` に対する通知 信号です。
「QSerialPort::stopBits」も参照してください 。
[override virtual] bool QSerialPort::waitForBytesWritten(int msecs = 30000)
QIODevice::waitForBytesWritten(int msecs) の再実装です。
この関数は、シリアルポートに少なくとも1バイトが書き込まれ、bytesWritten() シグナルが発信されるまでブロックします。この関数は、msecs ミリ秒後にタイムアウトします。デフォルトのタイムアウト時間は 30000 ミリ秒です。msecs が -1 の場合、この関数はタイムアウトしません。
この関数は、bytesWritten() 信号が発行された場合にtrue を返し、それ以外の場合(エラーが発生した場合や操作がタイムアウトした場合)にはfalse を返します。
[override virtual] bool QSerialPort::waitForReadyRead(int msecs = 30000)
QIODevice::waitForReadyRead(int msecs) を再実装します。
この関数は、読み取り可能な新しいデータが利用可能になり、readyRead() シグナルが発信されるまでブロックします。この関数はmsecs ミリ秒後にタイムアウトします。デフォルトのタイムアウト時間は30000ミリ秒です。msecs が-1の場合、この関数はタイムアウトしません。
readyRead() シグナルが発行され、読み取り可能な新しいデータがある場合、この関数はtrue を返します。それ以外の場合は、false を返します(エラーが発生した場合、または操作がタイムアウトした場合)。
waitForBytesWritten()も参照してください 。
[since 6.10] qint64 QSerialPort::writeBufferSize() const
内部書き込みバッファのサイズを返します。
書き込みバッファのサイズが0 (デフォルト)の場合、バッファにサイズ制限がないことを意味します。
この関数は Qt 6.10 で導入されました。
setWriteBufferSize() およびwrite()も参照してください 。
[override virtual protected] qint64 QSerialPort::writeData(const char *data, qint64 maxSize)
QIODevice::writeData(const char *data, qint64 maxSize) の再実装です。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.