Beispiel #1
0
        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();
                        });
                    });
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// 监听给串口发的消息
        /// </summary>
        /// <param name="sendData"></param>
        private void SerialCom_SerialPortSendMessageReportEvent(byte[] sendData)
        {
            string text = SerialCommunicationUtility.ByteToHexString(sendData);

            Debug.Log("Message.. =>  " + text.ToString());
        }