ArduinoのデータをUnityに送る

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して数値として使用する予定です.