// // Event handlers // private void HandleReceivedFsData(object sender, FsDataReceivedEventArgs e) { try { if (e.Data == null || e.Data.Count == 0) { throw new Exception("No data returned"); } if (e.RequestId == (uint)Requests.PlaneInfo) { _planeInfoResponse = (PlaneInfoResponse)e.Data.FirstOrDefault(); Console.WriteLine(_planeInfoResponse.ToString()); } else if (e.RequestId == (uint)Requests.PlanePosition) { _planePosition = (PlanePosition)e.Data.FirstOrDefault(); _pollPlanePositionResetEvent.Set(); } } catch (Exception ex) { Console.WriteLine("Could not handle received FS data: " + ex); } }
private void HandleReceivedFsData(object sender, FsDataReceivedEventArgs e) { try { if (e.Data == null || e.Data.Count == 0) { throw new Exception("No data returned"); } if (e.RequestId == _requestIdUInt) { _simObjects[e.ObjectID] = (T)e.Data.FirstOrDefault(); // Set reset event when all items have been returned. if (e.EntryNumber == e.OutOf) { _getResetEvent.Set(); } } } catch (Exception ex) { Console.WriteLine("Could not handle received FS data: " + ex); } }
private static void Fs_FsDataReceived(object sender, FsDataReceivedEventArgs e) { if (e.RequestId == (uint)Requests.PlaneInfo) { PlaneInfoResponse r = (PlaneInfoResponse)e.Data; Console.WriteLine($"{DateTime.Now.ToString("HH:mm:ss")}\t{r.Latitude:F4},{r.Longitude:F4}\t{r.Altitude:F1}ft\t{r.Heading:F1}deg\t\t{r.IASKnots:F0}kt\t\t{r.GSKnots:F0}kt"); } }
private static void HandleReceivedFsData(object sender, FsDataReceivedEventArgs e) { if (e.RequestId == (uint)Requests.PlaneInfo) { PlaneInfoResponse r = (PlaneInfoResponse)e.Data; Console.WriteLine($"{r.Latitude:F4} {r.Longitude:F4} {r.Altitude:F1}ft {r.Heading:F1}deg {r.SpeedMpS:F0}m/s {r.SpeedKnots:F0}kt"); } }
private static void HandleReceivedFsData(object sender, FsDataReceivedEventArgs e) { if (!SafeToRead) { Console.WriteLine("lost one"); return; } SafeToRead = false; try { if (e.RequestId == (uint)Requests.PlaneInfo) { if (!ShowLanding) { PlaneInfoResponse r = (PlaneInfoResponse)e.Data; //ignore when noone is flying if (r.ForwardSpeed < 4) //if less then 4kt, it's not a landing or out to menu { SafeToRead = true; return; } if (r.OnGround) { Onground.Add(r); if (Onground.Count > BUFFER_SIZE) { Onground.RemoveAt(0); if (Inair.Count == BUFFER_SIZE) { ShowLanding = true; } } } else { Inair.Add(r); if (Inair.Count > BUFFER_SIZE) { Inair.RemoveAt(0); } Onground.Clear(); } if (Inair.Count > BUFFER_SIZE || Onground.Count > BUFFER_SIZE) //maximum 1 for race condition { Inair.Clear(); Onground.Clear(); throw new Exception("this baaad"); } // POnGround = r.OnGround; } } } catch (Exception ex) { Console.WriteLine(ex.Message); } SafeToRead = true; }
private static void HandleReceivedFsData(object sender, FsDataReceivedEventArgs e) { if (e.Data == null || e.Data.Count == 0) { return; } if (e.RequestId == (uint)Requests.PlaneInfoRequest) { PlaneInfoResponse r = (PlaneInfoResponse)e.Data.FirstOrDefault(); Console.WriteLine($"{r.PlaneLatitude:F4} {r.PlaneLongitude:F4} {r.PlaneAltitude:F1}ft {r.PlaneHeadingDegreesTrue:F1}deg {r.AirspeedTrueInMeterPerSecond:F0}m/s {r.AirspeedTrueInKnot:F0}kt"); } }
private static void HandleReceivedFsData(object sender, FsDataReceivedEventArgs e) { if (e.Data == null || e.Data.Count == 0) { return; } if (e.RequestId == (uint)Requests.PlaneInfoRequest) { PlaneInfoResponse r = (PlaneInfoResponse)e.Data.FirstOrDefault(); Console.WriteLine($"{r.Latitude:F4} {r.Longitude:F4} {r.Altitude:F1}ft {r.Heading:F1}deg {r.SpeedMpS:F0}m/s {r.SpeedKnots:F0}kt"); } }
protected override void OnFsDataReceived(object sender, FsDataReceivedEventArgs e) { if (e.Data.Count == 0) { return; } if (!(e.Data[0] is AutopilotSimVars)) { return; } _autopilotSimVars = (AutopilotSimVars)e.Data[0]; _resetEvent.Set(); }
private void OnFsDataReceived(object sender, FsDataReceivedEventArgs e) { if (e.Data.Count == 0) { return; } if (!(e.Data[0] is RadioManagerSimVars)) { return; } _radioManagerSimVars = (RadioManagerSimVars)e.Data[0]; _resetEvent.Set(); }
private static void HandleReceivedFsData(object sender, FsDataReceivedEventArgs e) { try { if (e.RequestId == (uint)Requests.PlaneInfo) { _planeInfoResponse = (PlaneInfoResponse)e.Data; Console.WriteLine($"Pos: ({FsUtils.Rad2Deg(_planeInfoResponse.Latitude):F4}, {FsUtils.Rad2Deg(_planeInfoResponse.Longitude):F4}), Alt: {_planeInfoResponse.Altitude:F0} ft, Hdg: {FsUtils.Rad2Deg(_planeInfoResponse.Heading):F1} deg, Speed: {_planeInfoResponse.Speed:F0} kt"); } } catch (Exception ex) { Console.WriteLine("Could not handle received FS data: " + ex); } }
protected virtual void OnFsDataReceived(object sender, FsDataReceivedEventArgs e) { }
/// <summary> /// Handle FsDataReceived events from FsConnect /// </summary> private void _fsConn_FsDataReceived(object sender, FsDataReceivedEventArgs e) { if (e.RequestId == (uint)Requests.PlaneInfo) { // Prepare the data to send out in the DataReceived event PlaneInfoResponse r = (PlaneInfoResponse)e.Data.FirstOrDefault(); DataReceivedEventArgs args = new DataReceivedEventArgs() { Title = r.Title, Latitude = r.Latitude, Longitude = r.Longitude, Altitude = r.Altitude, Pitch = r.Pitch, Bank = r.Bank, HeadingTrue = r.HeadingTrue, HeadingMagnetic = r.HeadingMagnetic, FlapsHandleIndex = r.FlapsHandleIndex, FlapsNumHandlePositions = r.FlapsNumHandlePositions, Airspeed_Indicated = r.Airspeed_Indicated, Airspeed_True = r.Airspeed_True, GPSGroundSpeed = r.GPSGroundSpeed, VerticalSpeed = r.VerticalSpeed, OnGround = r.OnGround, ParkingBrakeSet = r.ParkingBrakeSet, NumberOfEngines = r.NumberOfEngines, Engine1Starter = r.Engine1Starter, Engine2Starter = r.Engine2Starter, Engine3Starter = r.Engine3Starter, Engine4Starter = r.Engine4Starter, Engine1Combusting = r.Engine1Combusting, Engine2Combusting = r.Engine2Combusting, Engine3Combusting = r.Engine3Combusting, Engine4Combusting = r.Engine4Combusting, Lights = new LightStates() { Nav = r.LightNav, Beacon = r.LightBeacon, Landing = r.LightLanding, Taxi = r.LightTaxi, Strobe = r.LightStrobe, Panel = r.LightPanel, Recognition = r.LightRecognition, Wing = r.LightWing, Logo = r.LightLogo, Cabin = r.LightCabin, }, FlightState = (r.OnGround) ? "Landed" : "Flying", ParkingBrakeState = (r.ParkingBrakeSet > 0) ? "Set" : "Released", Timestamp = DateTime.UtcNow }; // Fire the DataReceived event OnDataReceived(args); // If this is the first data we've received, set some monitoring flags if (!_firstDataRecvd) { _lastGroundState = r.OnGround; _lastParkingBrakeState = r.ParkingBrakeSet; // Record that we have received first data _firstDataRecvd = true; } else { // Check if the ground state has changed if (r.OnGround != _lastGroundState) { // Detect what happened if (r.OnGround == true) { // We landed, fire the Landed event OnLanded(); } else { OnTakeoff(); } } if (r.ParkingBrakeSet != _lastParkingBrakeState) { // Detect what happened if (r.ParkingBrakeSet == short.MaxValue) { // Parking brake was juset set OnParkingBrakeSet(); } else { OnParkingBrakeReleased(); } } } // Update record flags _lastGroundState = r.OnGround; _lastParkingBrakeState = r.ParkingBrakeSet; } }