private void RPLidarA3_DataResponseContentProcess_SCAN(byte[] responseData) { CacheBuffer.AddRange(responseData); if (CacheBuffer.Count > 2) { if (CacheBuffer[0] == 0xA5 && CacheBuffer[1] == 0x5A && !isFrist) { CacheBuffer.RemoveAt(0); CacheBuffer.RemoveAt(1); isFrist = true; } } CalcNum = CacheBuffer.Count / StructLen - 1; //Debug.Log( // "buffer.Count: " + CacheBuffer.Count + // //" data: " + SerialCommunicationUtility.ByteToHexString(responseData) + // " all.data:[" + SerialCommunicationUtility.ByteToHexString(CacheBuffer.ToArray()) + "]" + // " StructLen:" + StructLen + // " CalcNum:" + CalcNum //); if (CalcNum > 5) { CacheBufferLen = CalcNum * StructLen; TempBuffer = CacheBuffer.GetRange(0, CacheBufferLen); for (int i = 0; i < CalcNum; i++) { _res = Convert.ToInt32(SerialCommunicationUtility.BinaryConversion(TempBuffer[i * StructLen + 2], TempBuffer[i * StructLen + 1]), 16); _angle = (_res >> 1) / 64f; _dis = Convert.ToInt32(SerialCommunicationUtility.BinaryConversion(TempBuffer[i * StructLen + 4], TempBuffer[i * StructLen + 3]), 16) / 4f; if (_dis > 10) { SerialDatas.Add(new SerialData() { angle = _angle, distance = _dis }); } } CacheBuffer.RemoveRange(0, CacheBufferLen); if (UpdateSerialData != null) { Loom.RunAsync(() => { Loom.QueueOnMainThread(() => { UpdateSerialData(SerialDatas); SerialDatas.Clear(); }); }); } } }
/// <summary> /// 监听给串口发的消息 /// </summary> /// <param name="sendData"></param> private void SerialCom_SerialPortSendMessageReportEvent(byte[] sendData) { string text = SerialCommunicationUtility.ByteToHexString(sendData); Debug.Log("Message.. => " + text.ToString()); }