Ejemplo n.º 1
0
        public Form1()
        {
            InitializeComponent();
            int    a = (40 + (104 * trackBar1.Value));
            string b = a.ToString() + Deg;

            textBox1.Text = b;
            int    c = 10 * trackBar2.Value;
            string d = c.ToString() + perc;

            textBox2.Text         = d;
            _serialPort.RtsEnable = true;
            string[] ports = SerialPort.GetPortNames();


            // _serialPort.PortName = ports[1];
            //_serialPort.BaudRate = Convert.ToInt32(9600 );
            // _serialPort.Parity = Parity.None;
            // _serialPort.DataBits = Convert.ToInt32( 8);
            // _serialPort.StopBits = StopBits.One;
            _serialPort.Handshake = Handshake.None;

            // Set the read/write timeouts
            _serialPort.ReadTimeout  = 4000;
            _serialPort.WriteTimeout = 5000;
            lapData       = new PacketLapData(0);
            motionData    = new PacketMotionData(0);
            sessionData   = new PacketSessionData(0);
            telemetryData = new PacketCarTelemetryData(0);
        }
Ejemplo n.º 2
0
        private void AddFlags(ref PacketSessionData data, SimulatorDataSet simData)
        {
            if (data.MSafetyCarStatus == 2)
            {
                simData.SessionInfo.ActiveFlags.Add(FlagKind.VirtualSafetyCar);
                return;
            }

            if (data.MSafetyCarStatus == 1)
            {
                simData.SessionInfo.ActiveFlags.Add(FlagKind.SafetyCar);
                return;
            }

            foreach (var zoneWithFlag in data.MMarshalZones.Take(data.MNumMarshalZones).Where(x => x.MZoneFlag == 3))
            {
                if (zoneWithFlag.MZoneStart < 0.33)
                {
                    simData.SessionInfo.ActiveFlags.Add(FlagKind.YellowSector1);
                    continue;
                }

                if (zoneWithFlag.MZoneStart < 0.66)
                {
                    simData.SessionInfo.ActiveFlags.Add(FlagKind.YellowSector2);
                    continue;
                }

                simData.SessionInfo.ActiveFlags.Add(FlagKind.YellowSector3);
            }
        }
Ejemplo n.º 3
0
        private void HandlePacket(PacketHeader packet, byte[] bytes)
        {
            _telemetryRecorder.RecordPacket(packet, bytes);

            switch (packet.PacketType)
            {
            case PacketType.Motion:
                var motionPacket = StructUtility.ConvertToPacket <PacketMotionData>(bytes);
                OnMotionPacketReceived(new PacketReceivedEventArgs <PacketMotionData>(_oldMotionData, motionPacket));
                _oldMotionData = motionPacket;
                break;

            case PacketType.Session:
                var sessionPacket = StructUtility.ConvertToPacket <PacketSessionData>(bytes);
                OnSessionPacketReceived(new PacketReceivedEventArgs <PacketSessionData>(_oldSessionData, sessionPacket));
                _oldSessionData = sessionPacket;
                break;

            case PacketType.LapData:
                var lapPacket = StructUtility.ConvertToPacket <PacketLapData>(bytes);
                OnLapPacketReceivedReceived(new PacketReceivedEventArgs <PacketLapData>(_oldLapData, lapPacket));
                _oldLapData = lapPacket;
                break;

            case PacketType.Event:
                var eventPacket = StructUtility.ConvertToPacket <EventPacket>(bytes);
                OnEventPacketReceived(new PacketReceivedEventArgs <EventPacket>(_oldEventPacket, eventPacket));
                _oldEventPacket = eventPacket;
                break;

            case PacketType.Participants:
                var participantPacket = StructUtility.ConvertToPacket <PacketParticipantsData>(bytes);
                OnParticipantsPacketReceived(new PacketReceivedEventArgs <PacketParticipantsData>(_oldParticipantsData, participantPacket));
                _oldParticipantsData = participantPacket;
                break;

            case PacketType.CarSetups:
                var carSetupsPacket = StructUtility.ConvertToPacket <PacketCarSetupData>(bytes);
                OnCarSetupPacketReceived(new PacketReceivedEventArgs <PacketCarSetupData>(_oldCarSetupData, carSetupsPacket));
                _oldCarSetupData = carSetupsPacket;
                break;

            case PacketType.CarTelemetry:
                var carTelemetryPacket = StructUtility.ConvertToPacket <PacketCarTelemetryData>(bytes);
                OnCarTelemetryPacketReceived(new PacketReceivedEventArgs <PacketCarTelemetryData>(_oldCarTelemetryData, carTelemetryPacket));
                _oldCarTelemetryData = carTelemetryPacket;
                break;

            case PacketType.CarStatus:
                var carStatusPacket = StructUtility.ConvertToPacket <PacketCarStatusData>(bytes);
                OnCarStatusPacketReceived(new PacketReceivedEventArgs <PacketCarStatusData>(_oldCarStatusData, carStatusPacket));
                _oldCarStatusData = carStatusPacket;
                break;
            }

            _oldSessionId       = packet.SessionUId;
            _oldFrameIdentifier = packet.FrameIdentifier;
        }
Ejemplo n.º 4
0
        private static IPacket Session(PacketHeader packetHeader, BinaryReader reader)
        {
            var packetSessionData = new PacketSessionData(packetHeader);

            packetSessionData.Weather = (WeatherType)reader.ReadByte();

            packetSessionData.TrackTemperature = reader.ReadSByte();
            packetSessionData.AirTemperature   = reader.ReadSByte();

            packetSessionData.TotalLaps   = reader.ReadByte();
            packetSessionData.TrackLength = reader.ReadUInt16();
            packetSessionData.SessionType = (SessionType)reader.ReadByte();

            packetSessionData.TrackId = reader.ReadSByte();
            packetSessionData.Formula = reader.ReadByte();

            packetSessionData.SessionTimeLeft     = reader.ReadUInt16();
            packetSessionData.SessionDuration     = reader.ReadUInt16();
            packetSessionData.PitSpeedLimit       = reader.ReadByte();
            packetSessionData.GamePaused          = reader.ReadByte();
            packetSessionData.IsSpectating        = reader.ReadByte();
            packetSessionData.SpectatorCarIndex   = reader.ReadByte();
            packetSessionData.SliProNativeSupport = reader.ReadByte();
            packetSessionData.NumMarshalZones     = reader.ReadByte();

            for (int j = 0; j < MaxNumberOfMarshalZones; j++)
            {
                var marshalZone = new MarshalZone();

                marshalZone.ZoneStart = reader.ReadSingle();
                marshalZone.ZoneFlag  = (ZoneFlag)reader.ReadSByte();

                packetSessionData.MarshalZones[j] = marshalZone;
            }

            packetSessionData.SafetyCarStatus = reader.ReadByte();

            packetSessionData.NetworkGame = reader.ReadByte();
            packetSessionData.NumWeatherForecastSamples = reader.ReadByte();

            for (int j = 0; j < MaxNumberOfWeatherSamples; j++)
            {
                var newWeatherForecastSample = new WeatherForecastSample();

                newWeatherForecastSample.SessionType = (SessionType)reader.ReadByte();

                newWeatherForecastSample.TimeOffset = reader.ReadByte();
                newWeatherForecastSample.Weather    = (WeatherType)reader.ReadByte();

                newWeatherForecastSample.TrackTemperature = reader.ReadSByte();
                newWeatherForecastSample.AirTemperature   = reader.ReadSByte();

                packetSessionData.WeatherForecastSamples[j] = newWeatherForecastSample;
            }

            return(packetSessionData);
        }
Ejemplo n.º 5
0
        public F1PacketEventEventArgs(PacketHeader packetHeader           = null,
                                      CarMotionData carMotionData         = null,
                                      PacketSessionData packetSessionData = null,
                                      PacketMotionData packetMotionData   = null)
        {
            this.packetHeader     = packetHeader;
            this.carMotionData    = carMotionData;
            this.packetMotionData = packetMotionData;

            this.packetSessionData = packetSessionData;
        }
Ejemplo n.º 6
0
        public void OnDebugDataSelected(object sender, SelectionChangedEventArgs e)
        {
            if (e.AddedItems.Count == 0)
            {
                return;
            }

            var selectedDebugData = ((DebugModel)e.AddedItems[0]);

            switch (selectedDebugData.PacketType)
            {
            case PacketType.Motion:
                PacketMotionData motionData = StructUtility.ConvertToPacket <PacketMotionData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(motionData);
                return;

            case PacketType.Session:
                PacketSessionData sessionData = StructUtility.ConvertToPacket <PacketSessionData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(sessionData);
                return;

            case PacketType.LapData:
                PacketLapData lapData = StructUtility.ConvertToPacket <PacketLapData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(lapData);
                return;

            case PacketType.Event:
                EventPacket eventData = StructUtility.ConvertToPacket <EventPacket>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(eventData);
                return;

            case PacketType.Participants:
                PacketParticipantsData participantsData = StructUtility.ConvertToPacket <PacketParticipantsData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(participantsData);
                return;

            case PacketType.CarSetups:
                PacketCarSetupData carSetupsData = StructUtility.ConvertToPacket <PacketCarSetupData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(carSetupsData);
                return;

            case PacketType.CarTelemetry:
                PacketCarTelemetryData carTelemetryData = StructUtility.ConvertToPacket <PacketCarTelemetryData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(carTelemetryData);
                return;

            case PacketType.CarStatus:
                PacketCarStatusData carStatusData = StructUtility.ConvertToPacket <PacketCarStatusData>(selectedDebugData.Data);
                DebugDetails = new ObjectViewModelHierarchy(carStatusData);
                return;
            }
        }
Ejemplo n.º 7
0
        public async Task ReceiveLoop(CancellationToken cancellationToken)
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                UdpReceiveResult receiveResult = await _udpReceiver.Receive(cancellationToken).ConfigureAwait(false);

                byte[]       rawPacked = receiveResult.Buffer;
                PacketHeader header    = DeserializePackedHeader(rawPacked);
                switch (header.MPacketId)
                {
                case 0:
                    PacketMotionData packetMotionData = Deserialize <PacketMotionData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetMotionData);
                    break;

                case 1:
                    PacketSessionData packetSessionData = Deserialize <PacketSessionData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetSessionData);
                    break;

                case 2:
                    PacketLapData packetLapData = Deserialize <PacketLapData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetLapData);
                    break;

                case 3:
                    PacketEventData packetEventData = Deserialize <PacketEventData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetEventData);
                    break;

                case 4:
                    PacketParticipantsData packetParticipantsData = Deserialize <PacketParticipantsData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetParticipantsData);
                    break;

                case 5:
                    PacketCarSetupData packetCarSetupData = Deserialize <PacketCarSetupData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetCarSetupData);
                    break;

                case 6:
                    PacketCarTelemetryData packetCarTelemetryData = Deserialize <PacketCarTelemetryData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetCarTelemetryData);
                    break;

                case 7:
                    PacketCarStatusData packetCarStatusData = Deserialize <PacketCarStatusData>(rawPacked);
                    _dataSetCompositor.ProcessPacket(packetCarStatusData);
                    break;
                }
            }
        }
Ejemplo n.º 8
0
        public void Parse(byte[] buffer)
        {
            F1BytesAccessor bytesAccessor = new F1BytesAccessor(buffer, true);

            PacketSessionData packetSessionData = new PacketSessionData();

            packetSessionData.m_totalLaps   = bytesAccessor.GetUnsingedByte(24);
            packetSessionData.m_trackLength = (float)bytesAccessor.GetShort(25);
            packetSessionData.m_sessionType = bytesAccessor.GetSignedByte(27);

            // Raise IDrawingObject's event before the object is drawn.
            packetReceived?.Invoke(this, new F1PacketEventEventArgs(packetSessionData: packetSessionData));
        }
        public void OnPacketSessionData(ref PacketSessionData pSessionData, PacketSource _)
        {
            var timestamp   = DateTime.Now;
            var sessionId   = pSessionData.Header.SessionUID;
            var sessionTime = pSessionData.Header.SessionTime;

            var weather = new WeatherInfo(
                (Weather)pSessionData.Weather,
                pSessionData.TrackTemperature,
                pSessionData.AirTemperature,
                sessionId,
                timestamp,
                sessionTime);

            _newPacketRead?.Invoke(this, weather);

            var trackInfo = new TrackInfo(
                (Track)pSessionData.TrackId,
                pSessionData.TrackLength,
                sessionId,
                timestamp,
                sessionTime);

            _newPacketRead?.Invoke(this, trackInfo);

            var sessionPause = pSessionData.GamePaused != 0
                ? (Event) new SessionPause(sessionId, timestamp, sessionTime)
                : (Event) new SessionResume(sessionId, timestamp, sessionTime);

            _newPacketRead?.Invoke(this, sessionPause);

            var sessionDuration = new SessionDuration(TimeSpan.FromSeconds(pSessionData.SessionDuration), sessionId, timestamp, sessionTime);

            _newPacketRead?.Invoke(this, sessionDuration);

            var sessionTimeLeft = new SessionTimeLeft(TimeSpan.FromSeconds(pSessionData.SessionTimeLeft), sessionId, timestamp, sessionTime);

            _newPacketRead?.Invoke(this, sessionTimeLeft);
        }
Ejemplo n.º 10
0
 private void OnSessionPacketReceived(PacketSessionData oldSessionData, PacketSessionData newSessionData)
 {
     SessionPacketReceived?.Invoke(this, new PacketReceivedEventArgs <PacketSessionData>(oldSessionData, newSessionData));
 }
Ejemplo n.º 11
0
 public void OnPacketSessionData(ref PacketSessionData pSessionData, PacketSource packetSource)
 {
     WritePacket(pSessionData.Header.SessionUID, ref pSessionData, packetSource);
 }
Ejemplo n.º 12
0
 public void OnPacketSessionData(ref PacketSessionData pSessionData, PacketSource packetSource)
 {
     HandlePacket(ph => ph.OnPacketSessionData, ref pSessionData, packetSource);
 }
Ejemplo n.º 13
0
 internal void ProcessPacket(PacketSessionData packetSessionData)
 {
     AllPacketsComposition.PacketSessionData = packetSessionData;
     _isPacketSessionDataFilled = true;
 }
Ejemplo n.º 14
0
 void F1Manager_SessionPacketReceived(object sender, PacketReceivedEventArgs <PacketSessionData> e)
 {
     psd = e.Packet;
     Debug.Log("session packet");
 }
Ejemplo n.º 15
0
 public void OnPacketSessionData(ref PacketSessionData pSessionData, PacketSource packetSource)
 {
     Delay(pSessionData.Header.SessionUID, pSessionData.Header.SessionTime, packetSource);
 }