Esempio n. 1
0
        private UDPTelemetryData Deserialize(byte[] rawData)
        {
            GCHandle telemetryHandle = GCHandle.Alloc(rawData.ToArray(), GCHandleType.Pinned);

            try
            {
                UDPTelemetryData udpTelemetry = (UDPTelemetryData)Marshal.PtrToStructure(telemetryHandle.AddrOfPinnedObject(), typeof(UDPTelemetryData));
                return(udpTelemetry);
            }
            finally
            {
                telemetryHandle.Free();
            }
        }
Esempio n. 2
0
        public async Task ReceiveLoop(Action <UDPTelemetryData> handler, CancellationToken cancellationToken)
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                UdpReceiveResult receiveResult = await _udpReceiver.Receive(cancellationToken);

                if (!IsCorrectPackageType(receiveResult.Buffer))
                {
                    continue;
                }

                UDPTelemetryData telemetryData = Deserialize(receiveResult.Buffer);
                handler(telemetryData);
            }
        }
Esempio n. 3
0
 private void OnNewUdpData(UDPTelemetryData data)
 {
     _pCars2DataConvertor.UdpTelemetryData = data;
 }