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
LINK: qiita.com/yjiro0403/items/54e9518b5624c0030531
このプログラムのうち,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して数値として使用する予定です.