Upgrade to Pro — share decks privately, control downloads, hide ads and more …

(Unityに)エモさをもたらす シリアル通信のはなし

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for dnasoftwares dnasoftwares
December 15, 2018

(Unityに)エモさをもたらす シリアル通信のはなし

Unityでシリアル通信(SerialPort)を用いてArduinoを経由しLEDを制御してみたというお話です。

Avatar for dnasoftwares

dnasoftwares

December 15, 2018
Tweet

Other Decks in Technology

Transcript

  1. 動いた • シリアル通信でコマンド を送る • →の出力を得るコマンド例 l01st 1000 l12nd 900

    l23rd 800 先頭1文字目lがコマンド、2文字目0は書き換え行 残りが表示文字列 • バッファに余裕が無いのでコマンド書式 はツメツメで
  2. Unity側のコード  ArduinoのUSBシリアルポートをC#から叩く  System.IO.Ports.SerialPortクラスを使う (Api Compatibility Level の設定を「.NET 2.0」にすると使用可能)

     Qiitaの記事「UnityとArduinoをシリアル通信」(@yjiro0403氏)が参考になる • https://qiita.com/yjiro0403/items/54e9518b5624c0030531  デバイスが繋がっているポートを 自動スキャンする機構  シリアルポートを列挙し、それぞれのポートに所定のコマンドを送って期待通りの応答を返 すポートを見つける  (ファームのバージョン情報を返すコマンドを入れておく)
  3. あとは…… • ゲーム内に実装!ただし……  PC側を全力でぶん回すとコマンド処理が追いつかない  コマンド処理より早くリングバッファが溜まる→未処理のバッファが新しいコマンドに上書きされ て文字化け  データ送信は秒間20コマンド程度になるように適宜間引く

     例外処理はザックリでもいいから入れておこう  デバイスがないときの動作はどうか?  外部デバイス用のコードとゲーム本体のコードをキッチリ分離する  シリアルポートがないPCでの動作はどうか?