UE5で作り直し
11/9 研究室にいたハエを追い掛け回す
BLE Utilities V2がUE4.27のサポートを終了していたのでこの際解説する
Nineva Studios ←公式ドキュメント この記事はAndroid前提です。
まずUIで接続テストなどをします。
UIのグラフの方でアンドロイド権限のリクエストとBLE Managerを作ります。
BLE ManagerはBluetoothの状態やスキャンしているかを持っています。
次にスキャンするのですが、Constructの後にすぐスキャンしてもおそらく失敗します。なのでボタンを作って押したらスキャンするようにします。
UUIDは短縮形を変換するやつを使って、Arduinoで設定したUUIDのみをスキャンするようにします。
(下の画像には無いですが、スマートロックのUUIDとコントローラーのUUIDが被っているのでBLE DeviceからGet Device Nameを取得し判別するようにしてください)
次にCharacteristicのサブスクをしましょう。Arduinoのプログラムに合わせて、作ったUUID分の登録します。ここでも、Forで一気にSubscriptionしてもおそらく失敗します。
ここではDo Nを使ってボタンを押すごとに購読します。2A37~2A44です
次は購読して送られてくるやつを読めるようにします。デフォルトだとByte文字列で送信されるのでHex文字列に変換するやつを使います。
Hex文字列を読める文字に変換します。nRF Connectを使って読んでみると以下のような感じになっています。
"496,515,506,523"とArduinoで送信した奴がHexだと34-39-36-2C-35-31-35-2C-35-30-36-2C-35-32-33になってます。このプラグインだとハイフンすら消えて送られてきます。
これは16進数とASCIIの変換をすれば読めます。
34(Hex) -> 52(Dec) -> 4(ASCII) のような感じです。なので2C(hex)は44(dec)なので、ASCIIだと","(カンマ)に該当します。
まずはHex to Decを関数にしてみましょう。2文字入ってくるのでそれぞれ10進数に変換し、十の位は16を掛けて足します。もっときれいに作れると思います。
返されたInt型をASCII変換するマクロを作成します。長いのでリンク先に置いておきます。
https://blueprintue.com/blueprint/d7rx6z13/
最後に、最初のHex文字列を2文字ずつに分けてHextoDec、ASCIIを通す関数を作って終わりです。
Notificationされたらこの関数を通して出力すると、Arduinoで送信した文字列が読めると思います。わかんなかったら連絡してください Discord : horikogasa