Uniduino(Arduinoでなく)ではシリアル通信のデータ=Serial.println(hogehoge);したもの=が見えない.
サイクルコンピュータのようなものを作ろうとしたのですが,UnityのFPSを越える間隔のデータはUnityでは処理しきれないため,Arduino側でデータを処理し,Unityのupdateより遅い速度でUnityへ送る必要がある.
そこで,シリアル通信を送るサンプルを探していたのですが,以下リンクより見つけることができました.
UnityとArduinoをシリアル通信 – Qiita
はじめに (読み飛ばしてください 笑) ちょっとした趣味でデータグローブを作ってUnityで遊べたらなと思いました。 ハードウェアの部分はArduinoで制御すればいいんですがUnityとArduino間の通信とどうしたもんじゃと。 調べたらUniduinoという大変素晴らしいAssetがあるみたいですが、使うのに$30するようです。 ふえぇ…学生には高いよぉ… ということでいろんなネットの情報を参考にUniduinoを使わずにUnityとArduin…” name=”description
このプログラムのうち,SerialHandlerをそのまま使わせていただき,別の呼び出すスクリプトだけを変更します.
以下は,シリアルデータを読み出すスクリプトです.別途,SerialHandlerが必要です.
using UnityEngine; using System.Collections; public class mySpline2 : MonoBehaviour{ public SerialHandler serialHandler; void Start(){ serialHandler.OnDataReceived += OnDataReceived; } void Update(){ } void OnDataReceived(string message){ Debug.Log(message); var data = message.Split( new string[]{"\t"}, System.StringSplitOptions.None); if (data.Length < 2) return; try { } catch (System.Exception e) { Debug.LogWarning(e.Message); } } }
7行目でInspectorにボックスが出ますので,serialHandlerがアサインされたオブジェクトを入れてください.
11行目は必須です.これがないとエラーがでます.
23行目にあるようにmessageでString形式でデータが戻ってきます.
最終的にはこれをintParseして数値として使用する予定です.