void analisysGetData(string data) { if (data == null) { return; } if (data.Length <= 0) { return; } //カンマ区切りでデータを分ける。 //3バイトでない場合は何もしない。 string[] Onebyte = data.Split(splitPoint); if (Onebyte.Length != 3) { return; } //Debug.LogWarning("[Onebyte]" + Onebyte[0] + " : " + Onebyte[1] + " : " + Onebyte[2]); //---1バイト目--- //0~7ビットを見て1バイト目のデータだと判断する //全てTrue //---2バイト目--- //ステータス //---3バイト目--- //目標スピード(絶対値) try { //ヘッダーの判定 if (int.Parse(Onebyte[0]) != 0xFF) { return; } //ステータスの取得 ReceiveCmd cmd = (ReceiveCmd)(int.Parse(Onebyte[1])); //必要な情報を取得する _arData.isPulseOn = ReceiveCmd.flg_PulseOn == (cmd & ReceiveCmd.flg_PulseOn); _arData.isNormalRotation = ReceiveCmd.flg_NormalRotation == (cmd & ReceiveCmd.flg_NormalRotation); _arData.isReverseRotation = ReceiveCmd.flg_ReverseRotation == (cmd & ReceiveCmd.flg_ReverseRotation); //目標スピードの取得 _arData.targetSpeed = int.Parse(Onebyte[2]); } catch (Exception) { return; } }
bool chkHeader(ReceiveCmd cmd) { bool sw = false; bool isflg0 = ReceiveCmd.flg_0 == (cmd & ReceiveCmd.flg_0); bool isflg1 = ReceiveCmd.flg_1 == (cmd & ReceiveCmd.flg_1); bool isflg2 = ReceiveCmd.flg_2 == (cmd & ReceiveCmd.flg_2); bool isflg3 = ReceiveCmd.flg_3 == (cmd & ReceiveCmd.flg_3); bool isflg4 = ReceiveCmd.flg_4 == (cmd & ReceiveCmd.flg_4); bool isflg7 = ReceiveCmd.flg_7 == (cmd & ReceiveCmd.flg_7); //Debug.LogWarning("[chkHeader]" + cmd); if (isflg0 && isflg1 && isflg2 && isflg3 && isflg4 && isflg7) { sw = true; } return(sw); }
void analisysGetData(string data) { GetDataSize = 0; if (data == null) { return; } if (data.Length <= 0) { return; } //カンマ区切りでデータを分ける。 //1バイト目:ヘッダー、2バイト目:モーター1,2のステータス //2バイトでない場合は何もしない。 string[] Onebyte = data.Split(splitPoint); if (Onebyte.Length != 2) { return; } try { //ヘッダーの判定 if (int.Parse(Onebyte[0]) != 129) { return; //129 -> 0b10000001 } UnipolarStatus = (ReceiveCmd)(int.Parse(Onebyte[1])); GetDataSize++; //Debug.LogWarning("cmd : " + int.Parse(data) + " -> " + UnipolarStatus); } catch (Exception) { return; } }
void analisysGetData(string data) { if (data == null) { return; } if (data.Length <= 0) { return; } //カンマ区切りでデータを分ける。 string[] Onebyte = data.Split(splitPoint); int GetDataSize = Onebyte.Length; if (GetDataSize < 2) { return; } System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("[GetData]"); for (int i = 0; i < GetDataSize; i++) { sb.Append(Onebyte[i]); sb.Append(" : "); } //Debug.LogWarning(sb.ToString()); //1バイト目のヘッダーを見て処理を切り替える //0xFF:ステータス(2バイト) //0xFE:オフセット(5バイト) //0xFD:Quaternion(5バイト) //0xFC:WorldAccel(4バイト) try { switch (int.Parse(Onebyte[0])) { //ステータスの取得 case 0xFF: if (GetDataSize != 2) { break; } ReceiveCmd cmd = (ReceiveCmd)(int.Parse(Onebyte[1])); _arData.isFinishInitialize = ReceiveCmd.flg_7 == (cmd & ReceiveCmd.flg_7); break; //オフセットの取得 case 0xFE: if (GetDataSize != 5) { break; } _arData.CalOfs[0] = int.Parse(Onebyte[1]); _arData.CalOfs[1] = int.Parse(Onebyte[2]); _arData.CalOfs[2] = int.Parse(Onebyte[3]); _arData.CalOfs[3] = int.Parse(Onebyte[4]); break; //Quaternionの取得 case 0xFD: if (GetDataSize != 5) { break; } //[w,x,y,z] _arData._q[0] = float.Parse(Onebyte[1]); _arData._q[1] = float.Parse(Onebyte[2]); _arData._q[2] = float.Parse(Onebyte[3]); _arData._q[3] = float.Parse(Onebyte[4]); //変換 GetQuaternion = new Quaternion(-1.0f * _arData._q[1], -1.0f * _arData._q[3], -1.0f * _arData._q[2], _arData._q[0]); break; //WorldAccelの取得 case 0xFC: if (GetDataSize != 4) { break; } //[x,y,z] _arData._worldAccel = new Vector3(int.Parse(Onebyte[1]), int.Parse(Onebyte[2]), int.Parse(Onebyte[3])); break; default: break; } } catch (System.Exception) { } }
void analisysGetData(string data) { if (data == null) { return; } if (data.Length <= 0) { return; } //カンマ区切りでデータを分ける。 //3バイトでない場合は何もしない。 string[] Onebyte = data.Split(splitPoint); if (Onebyte.Length != 3) { return; } //Debug.LogWarning("[Onebyte]" + Onebyte[0] + " : " + Onebyte[1] + " : " + Onebyte[2]); //---1バイト目--- //0~4,7ビットを見て1バイト目のデータだと判断する //flg_7 : true //flg_6 : P1(false) or P2(true) //flg_5 : プラス(false) or マイナス(true) //flg_4~_0 : true //---2バイト目--- //flg_7 : false //flg_6~_0 : 整数(0~99) //---3バイト目--- //flg_7 : false //flg_6~_0 : 小数(0~99) //ヘッダーの判定 try { ReceiveCmd cmd = (ReceiveCmd)(int.Parse(Onebyte[0])); //Debug.LogWarning("cmd : " + int.Parse(Onebyte[0]) + " -> " + cmd); if (!chkHeader(cmd)) { return; } //ヘッダーから必要な情報を取得する bool isflg5 = ReceiveCmd.flg_5 == (cmd & ReceiveCmd.flg_5); bool isflg6 = ReceiveCmd.flg_6 == (cmd & ReceiveCmd.flg_6); int _no = 0; //上下or左右 if (isflg6) { _no = 1; } int isMinus = 1; if (isflg5) { isMinus = -1; } //整数部分の取得 float _v = int.Parse(Onebyte[1]); if (_v > MAX_VALUE) { return; //最大値を超えている場合は抜ける } //小数部分の取得 float _v2 = int.Parse(Onebyte[2]); _v2 /= 100.0f; _v += _v2; //最大値を超えないようにする if (_v > MAX_VALUE) { _v = MAX_VALUE; } //最小値を丸める if (_v < MIN_VALUE) { _v = 0.0f; } _v *= isMinus; Pos[_no] = _v; //if(_no == 0) Debug.LogWarning(EventTrigger.Instance.Pos[_no]); } catch (Exception) { return; } }
void analysisGetData(string data) { if (data == null) { return; } if (data.Length <= 0) { return; } //カンマ区切りでデータを分ける。 string[] Onebyte = data.Split(splitPoint); if (Onebyte.Length != 5) { return; } //Debug.LogWarning("[Onebyte]" + Onebyte[0] + " : " + Onebyte[1] + " : " + Onebyte[2] + " : " + Onebyte[3] + " : " + Onebyte[4]); //---1バイト目--- //0~7ビットを見て1バイト目のデータだと判断する //全てTrue //---2バイト目--- //ステータス //---3バイト目--- //1サイクルの時間(us) //---4バイト目--- //1サイクルのOn時間(us) //---5バイト目--- //実行回数 try { //ヘッダーの判定 if (int.Parse(Onebyte[0]) != 0xFF) { return; } //ステータスの取得 ReceiveCmd cmd = (ReceiveCmd)(int.Parse(Onebyte[1])); //必要な情報を取得する _arData.isPhotoSensorMode = ReceiveCmd.flg_6 == (cmd & ReceiveCmd.flg_6); _arData.isValveOneLoopEnd = ReceiveCmd.flg_5 == (cmd & ReceiveCmd.flg_5); _arData.isValveOn = ReceiveCmd.flg_4 == (cmd & ReceiveCmd.flg_4); _arData.isPumpPlay = ReceiveCmd.flg_3 == (cmd & ReceiveCmd.flg_3); _arData.isValvePlay = ReceiveCmd.flg_2 == (cmd & ReceiveCmd.flg_2); _arData.isPhotoSensorTriggerOn = ReceiveCmd.flg_1 == (cmd & ReceiveCmd.flg_1); //1サイクルの時間(us) ※ms変換 _arData._OneTime = float.Parse(Onebyte[2]) / 1000; //1サイクルのOn時間(us) ※ms変換 _arData._OneTime_On = float.Parse(Onebyte[3]) / 1000; //1サイクルを実行する回数 _arData._CycleCnt = int.Parse(Onebyte[4]); } catch (Exception) { return; } }