Exemplo n.º 1
0
        public bool TryReadButtonData(SerialPort serial, int dataLength, ref AxisOrangeButton data)
        {
            if (!serial.IsNotNullAndOpened())
            {
                return(false);
            }
            var buf = new byte[dataLength];

            if (serial.Read(buf, 0, dataLength) != dataLength)
            {
                return(false);
            }
            var t = buf.ToUInt(0);

            data = new AxisOrangeButton(t, buf[4]);
            return(true);
        }
Exemplo n.º 2
0
        void SerialRecieveLoop()
        {
            SerialHeader     header = default;
            AxisOrangeData   data   = default;
            AxisOrangeButton button = default;

            while (serialDevice.IsNotNullAndOpened())
            {
                // serial read
                if (serialDevice.BytesToRead >= SerialHeaderDef.HeaderLength &&
                    serialReader.TryReadSerialHeader(serialDevice, ref header))
                {
                    if (header.dataId == SerialHeaderDef.ImuDataId)
                    {
                        if (serialReader.TryReadImuData(serialDevice, header.dataLength, ref data))
                        {
                            OnSensorDataUpdate.Invoke(data);
                        }
                    }
                    else if (header.dataId == SerialHeaderDef.ButtonDataId)
                    {
                        if (serialReader.TryReadButtonData(serialDevice, header.dataLength, ref button))
                        {
                            OnSensorButtonUpdate.Invoke(button);
                        }
                    }
                    else
                    {
                        // Do Nothing
                    }
                }
                // finish loop?
                if (isListening)
                {
                    System.Threading.Thread.Sleep(1);
                }
                else
                {
                    break;
                }
            }
        }