QSerialPort Class
シリアル・ポートにアクセスする機能を提供する。詳細...
Header: | #include <QSerialPort> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS SerialPort) target_link_libraries(mytarget PRIVATE Qt6::SerialPort) |
qmake: | QT += serialport |
Inherits: | 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() は、新しいデータが読み出し可能になるまで呼び出しをブロックします。
次の例を参照のこと:
int numRead = 0, numReadTotal = 0; char buffer[50]; for (;;) { 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
この列挙型は、通信デバイスが動作するボーレートを記述する。
注意: この列挙型には、最も一般的な標準ボーレートのみが列挙されています。
定数 | 値 | 説明 |
---|---|---|
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)。 |
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(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) |
Notifier シグナル:
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
再リプルメント: () 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 プロパティのノーティファイアシグナル。
[signal]
void QSerialPort::dataTerminalReadyChanged(bool set)
この信号は、ライン信号DTRの状態(HighまたはLow)が変化した後に発せられる。回線信号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 に対するノーティファイアシグナル。
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 のいずれかでなければなりません。その他のモードはサポートされていません。
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の状態(HighまたはLow)が変更された後に発せられる。ラインシグナルRTSの新しい状態(highまたはlow)は、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)を参照してください。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。