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); }
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); } }
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; }
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); }
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; }
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; } }
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; } } }
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); }
private void OnSessionPacketReceived(PacketSessionData oldSessionData, PacketSessionData newSessionData) { SessionPacketReceived?.Invoke(this, new PacketReceivedEventArgs <PacketSessionData>(oldSessionData, newSessionData)); }
public void OnPacketSessionData(ref PacketSessionData pSessionData, PacketSource packetSource) { WritePacket(pSessionData.Header.SessionUID, ref pSessionData, packetSource); }
public void OnPacketSessionData(ref PacketSessionData pSessionData, PacketSource packetSource) { HandlePacket(ph => ph.OnPacketSessionData, ref pSessionData, packetSource); }
internal void ProcessPacket(PacketSessionData packetSessionData) { AllPacketsComposition.PacketSessionData = packetSessionData; _isPacketSessionDataFilled = true; }
void F1Manager_SessionPacketReceived(object sender, PacketReceivedEventArgs <PacketSessionData> e) { psd = e.Packet; Debug.Log("session packet"); }
public void OnPacketSessionData(ref PacketSessionData pSessionData, PacketSource packetSource) { Delay(pSessionData.Header.SessionUID, pSessionData.Header.SessionTime, packetSource); }