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) |
bool | setStopBits(QSerialPort::StopBits stopBits) |
QSerialPort::StopBits | stopBits() 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) |
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)モードでポートを開くことができます。
注意: シリアル・ポートは常に排他アクセスでオープンされる(つまり、他のプロセスやスレッドは、すでにオープンされているシリアル・ポートにアクセスできない)。
ポートを閉じて I/O 操作をキャンセルするには、close ()メソッドを使用します。
オープンに成功すると、QSerialPort はポートの現在の設定を確認し、自分自身を初期化します。setBaudRate(),setDataBits(),setParity(),setStopBits(),setFlowControl() メソッドを使用して、ポートを希望の設定に再構成できます。
ピンアウト信号を扱うためのプロパティがいくつかあります:QSerialPort::dataTerminalReady QSerialPort::requestToSend 。また、pinoutSignals() メソッドを使用して、現在のピンアウト信号セットを問い合わせることも可能です。
ポートの読み書きの準備ができたら、read() またはwrite() メソッドを使用できます。また、readLine() およびreadAll() コンビニエンス・メソッドを呼び出すこともできる。すべてのデータが一度に読み込まれない場合、新しい受信データがQSerialPortの内部読み取りバッファに追加されるため、残りのデータは後で利用できるようになります。setReadBufferSize() を使用して、読み取りバッファのサイズを制限できます。
QSerialPortは、特定のシグナルが発せられるまで呼び出し元のスレッドを一時停止する一連の関数を提供します。これらの関数は、ブロッキング・シリアル・ポートを実装するために使用できます:
- waitForReadyRead() は、新しいデータが読み出せるようになるまで呼び出しをブロックする。
- waitForBytesWritten() は、新しいデータが読み出し可能になるまで呼び出しをブロックします。
次の例を参照のこと:
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>>())でも使用できます。operator>>()オーバーロード演算子を使用して読み込もうとする前に、十分なデータが利用可能であることを確認してください。
QSerialPortInfoも参照 。
メンバ型ドキュメント
enum QSerialPort::BaudRate
この列挙型は、通信デバイスが動作するボーレートを記述する。
注: この enum には、最も一般的な標準ボーレートのみがリストされています。
定数 | 値 | 説明 |
---|---|---|
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です。このサイズはバイトのサイズと一致するため、ほとんどの種類のデータに使用されます。新しいアプリケーションではほとんど普遍的に使われている。 |
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)。 |
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
この enum は、可能な RS-232 ピンアウト信号を記述します。
定数 | 値 | 説明 |
---|---|---|
QSerialPort::NoSignal | 0x00 | アクティブなラインなし |
QSerialPort::DataTerminalReadySignal | 0x04 | DTR(データ・ターミナル・レディ)。 |
QSerialPort::DataCarrierDetectSignal | 0x08 | DCD(Data Carrier Detect)。 |
QSerialPort::DataSetReadySignal | 0x10 | DSR(Data Set Ready)。 |
QSerialPort::RingIndicatorSignal | 0x20 | RNG(Ring Indicator)。 |
QSerialPort::RequestToSendSignal | 0x40 | RTS(Request To Send)。 |
QSerialPort::ClearToSendSignal | 0x80 | CTS(Clear To Send)。 |
QSerialPort::SecondaryTransmittedDataSignal | 0x100 | STD(Secondary Transmitted Data)。 |
QSerialPort::SecondaryReceivedDataSignal | 0x200 | SRD(Secondary Received Data)。 |
PinoutSignals型はQFlags<PinoutSignal>の型定義である。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つのシナリオを完全に比較することはできません。
[bindable]
dataBits : DataBits
注: このプロパティは、QProperty バインディングをサポートしています。
このプロパティは、フレーム内のデータビットを保持する。
設定が成功した場合、またはポートをオープンする前に設定された場合は、true
を返します。そうでない場合は、false
を返し、QSerialPort::error プロパティの値にアクセスすることで取得できるエラーコードを設定します。
注意: ポートをオープンする前に設定が行われた場合、実際のシリアル・ポートの設定は、ポートのオープンが成功した直後のQSerialPort::open() メソッドで自動的に行われます。
デフォルト値は Data8、すなわち 8 データ・ビットです。
dataTerminalReady : bool
このプロパティは、回線信号 DTR の状態(High または Low)を保持する。
成功すれば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 に設定されます。
[bindable]
flowControl : FlowControl
注: このプロパティは、QProperty バインディングをサポートしている。
このプロパティは、希望するフロー制御モードを保持する。
設定が成功した場合、またはポートをオープンする前に設定された場合は、true
を返します。そうでない場合は、false
を返し、QSerialPort::error プロパティの値にアクセスすることで取得できるエラーコードを設定します。
注意: ポートをオープンする前に設定が行われた場合、実際のシリアル・ポートの設定は、ポートのオープンが成功した直後のQSerialPort::open() メソッドで自動的に行われます。
デフォルト値はNoFlowControl 、つまりフロー制御なし。
[bindable]
parity : Parity
注意: このプロパティは、QProperty バインディングに対応しています。
このプロパティは、パリティ検査モードを保持する。
設定が成功した場合、またはポートをオープンする前に設定された場合は、true
を返します。そうでない場合は、false
を返し、QSerialPort::error プロパティの値にアクセスすることで取得できるエラーコードを設定します。
注意: ポートをオープンする前に設定が行われた場合、実際のシリアル・ポートの設定は、ポートのオープンが成功した直後のQSerialPort::open() メソッドで自動的に行われます。
デフォルト値はNoParity 、つまりパリティなしです。
requestToSend : bool
このプロパティは、回線信号 RTS の状態(High または Low)を保持する。
成功すればtrue
を返し、そうでなければfalse
を返す。フラグがtrue
の場合、RTS信号はHighに設定され、そうでない場合はLowに設定される。
注: このプロパティを設定または取得しようとする前に、シリアル・ポートがオープンされている 必要がある。そうでない場合は、false
が返され、エラー・コードはNotOpenError に設定される。
注意 :RTS信号はドライバによって自動的に制御されるため、HardwareControl モードでRTS信号を制御しようとすると、エラーコードがUnsupportedOperationError に設定されて失敗する。
アクセス関数:
bool | isRequestToSend() |
bool | setRequestToSend(bool set) |
ノーティファイア信号:
void | requestToSendChanged(bool set) |
pinoutSignals()も参照 。
[bindable]
stopBits : StopBits
注: このプロパティは、QProperty バインディングをサポートしている。
このプロパティは、フレーム内のストップビット数を保持する。
設定が成功した場合、またはポートを開く前に設定された場合は、true
を返します。そうでない場合は、false
を返し、QSerialPort::error プロパティの値にアクセスすることで取得できるエラーコードを設定します。
注意: ポートをオープンする前に設定が行われた場合、実際のシリアル・ポートの設定は、ポートのオープンが成功した直後のQSerialPort::open() メソッドで自動的に行われます。
デフォルト値はOneStop 、すなわち1ストップビットです。
メンバー関数ドキュメント
[explicit]
QSerialPort::QSerialPort(QObject *parent = nullptr)
与えられたparent で新しいシリアルポートオブジェクトを構築する。
[explicit]
QSerialPort::QSerialPort(const QSerialPortInfo &serialPortInfo, QObject *parent = nullptr)
指定されたヘルパークラスserialPortInfo でシリアルポートを表すために、与えられたparent で新しいシリアルポートオブジェクトを構築します。
[explicit]
QSerialPort::QSerialPort(const QString &name, QObject *parent = nullptr)
指定されたname を持つシリアル・ポートを表すために、与えられたparent を持つ新しいシリアル・ポート・オブジェクトを構築する。
setPort() メソッドを参照のこと。
[virtual noexcept]
QSerialPort::~QSerialPort()
必要であればシリアルポートを閉じ、オブジェクトを破棄する。
[signal]
void QSerialPort::baudRateChanged(qint32 baudRate, QSerialPort::Directions directions)
このシグナルはボーレートが変更された後に発せられる。新しいボーレートはbaudRate として、方向はdirections として渡される。
注: 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の新しい状態(HighまたはLow)は、set として渡される。
注: dataTerminalReady プロパティのノーティファイア・シグナル。
QSerialPort::dataTerminalReadyも参照のこと 。
[signal]
void QSerialPort::errorOccurred(QSerialPort::SerialPortError error)
このシグナルは、シリアル・ポートでエラーが発生したときに発せられる。指定されたerror には、発生したエラーのタイプが記述される。
注: error プロパティのノーティファイア・シグナル。
QSerialPort::errorも参照 。
[signal]
void QSerialPort::flowControlChanged(QSerialPort::FlowControl flow)
このシグナルは、フロー制御モードが変更された後に発せられる。新しいフロー制御モードはflow として渡される。
注: 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()
ライン信号の状態をビットマップ形式で返す。
この結果から、マスク "AND "を適用することで、希望する信号の状態を割り当てることができる。マスクは、QSerialPort::PinoutSignals からの希望する列挙値である。
注: このメソッドはシステムコールを実行するため、ライン信号の状態が適切に返される。これは、基礎となるオペレーティング・システムが、変更に関する適切な通知を提供できない場合に必要である。
注意: ピンアウト信号の取得を試みる前に、シリアル・ポートが開いていなければならない。そうでない場合は、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 を設定する。
シリアル・ポートの名前は、必要に応じて、短い名前または長いシステム位置として渡すことができる。
portName() およびQSerialPortInfoも参照のこと 。
void QSerialPort::setReadBufferSize(qint64 size)
QSerialPort の内部読み込みバッファーのサイズをsize バイトに設定する。
バッファサイズがあるサイズに制限されている場合、QSerialPort はこのサイズを超えるデータをバッファリングしない。バッファサイズが0
の特別な場合は、読み込みバッファが無制限であり、すべての受信データがバッファリングされることを意味する。これがデフォルトである。
このオプションは、データが特定の時点でのみ読み込まれる場合(例えばリアルタイム・ストリーミング・アプリケーションなど)や、シリアル・ポートがデータを受信しすぎてアプリケーションがメモリ不足にならないように保護する必要がある場合に便利です。
readBufferSize() およびread()も参照の こと。
[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()も参照のこと 。
[override virtual protected]
qint64 QSerialPort::writeData(const char *data, qint64 maxSize)
再実装:QIODevice::writeData(const char *data, qint64 maxSize).
© 2025 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.