シリアル通信のデータを解読する(パースする) === # 実際のソースコード ```csharp= //data:シリアルポート全て string data = serialPort.ReadLine(); string pitch = data.Substring(1, data.IndexOf("y") - 1); //文字列の1文字目から"y"の1つ前まで読み取る(pitch) string roll = data.Substring(data.IndexOf("y") + 1); //"y"~ roll = roll.Substring(0, roll.IndexOf("z") - 1); //"z"までの文字をaccYに代入(roll) string yaw = data.Substring(data.IndexOf("z") + 1); //"z"~ yaw = yaw.Substring(0, yaw.IndexOf("l") - 1); //"a"までの文字をaccZに代入(yaw) string light = data.Substring(data.IndexOf("l") + 1); //センサーが反応しているか(ON:0, OFF:1) Debug.Log("Light:" + light); //logでlightの0/1を確認 float x = float.Parse(roll) + 360; //分解した文字たちは文字列もままなのでParse(String)で数字に直す float y = float.Parse(pitch) + 360; float z = float.Parse(yaw) + 360; //x = roll+360, y = pitch+360, z = yaw+360 gameObject.transform.rotation = Quaternion.Euler(-90 + x, -90 - z, y); //ローカル座標で角度を変更 //初期値が立っている状態にするためにxに-90を足しています。 //横の向きはそのままだと反転しているのでzはマイナスで入力するようにしています。 ``` # データの状態 ## 最初の送られてくるデータ x1.000y2.000z3.000l1 1. data = x1.000y2.000z3.000l1 3. pitch = 0.000 4. roll = 2.000z3.000l1 5. roll = 2.000 6. yaw = 3.000