13,000
回編集
894行目: | 894行目: | ||
<code>connect</code>メソッドでソケット接続、<code>write</code>メソッド / <code>read</code>メソッドでデータの送受信を行う。<br> | <code>connect</code>メソッドでソケット接続、<code>write</code>メソッド / <code>read</code>メソッドでデータの送受信を行う。<br> | ||
<br> | <br> | ||
接続の確立と維持を行う処理は、全ての操作が非同期で行われる。<br> | |||
そのため、各段階でのシグナル / スロット接続による状態管理が重要になる。<br> | |||
<br> | |||
==== 接続の確立 ==== | |||
<code>QBluetoothSocket</code>クラスのインスタンスを生成する。<br> | |||
この時、RFCOMMプロトコルを指定する。<br> | |||
<br> | |||
デバイスのMACアドレスとポート番号を指定して、<code>QBluetoothSocket::connectToService</code>メソッドを実行する。<br> | |||
接続状態の変化を監視するためのシグナル / スロット接続を設定する。<br> | |||
<br> | |||
==== 接続の維持 ==== | |||
<code>QBluetoothSocket::connected</code>シグナルを受信して、接続成功を確認する。<br> | |||
<br> | |||
<code>QBluetoothSocket::stateChanged</code>シグナルを監視して、接続状態の変化を検知する。<br> | |||
<br> | |||
<code>QBluetoothSocket::errorOccurred</code>シグナルを監視してエラーを検知する。<br> | |||
<br> | |||
また、必要に応じて定期的なキープアライブメッセージを送信する。<br> | |||
<br> | |||
==== データの送信 ==== | |||
<code>QBluetoothSocket::write</code>メソッドを使用してデータを送信する。<br> | |||
<br> | |||
==== データの受信 ==== | |||
# <code>QBluetoothSocket::readyRead</code>シグナルを受信してデータの到着を検知する。 | |||
# <code>QBluetoothSocket::readAll</code>メソッド、あるいは、<code>QBluetoothSocket::read</code>メソッドでデータを読む。 | |||
<br> | |||
==== 切断処理 ==== | |||
# <code>QBluetoothSocket::disconnectFromService</code>メソッドを実行して、接続を終了する。 | |||
# <code>QBluetoothSocket::disconnected</code>シグナルを受信して切断完了を確認する。 | |||
# 必要に応じて、リソースの解放を実施する。 | |||
<br> | |||
==== 組み合わせ ==== | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
#include <QBluetoothSocket> | #include <QBluetoothSocket> |