static void Main(string[] args) { run = true; fs = new FsConnect(); fs.Connect("FlightEconOnline"); fs.ConnectionChanged += Fs_ConnectionChanged; fs.FsDataReceived += Fs_FsDataReceived; List <SimProperty> definition = new List <SimProperty>(); // Consult the SDK for valid sim variable names, units and whether they can be written to. definition.Add(new SimProperty("Title", null, SIMCONNECT_DATATYPE.STRING256)); definition.Add(new SimProperty("Plane Latitude", "degrees", SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty("Plane Longitude", "degrees", SIMCONNECT_DATATYPE.FLOAT64)); // Can also use predefined enums for sim variables and units (incomplete) definition.Add(new SimProperty(FsSimVar.PlaneAltitude, FsUnit.Feet, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.PlaneHeadingDegreesTrue, FsUnit.Degrees, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.AirspeedIndicated, FsUnit.Knots, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.GpsGroundSpeed, FsUnit.Knots, SIMCONNECT_DATATYPE.FLOAT64)); fs.RegisterDataDefinition <PlaneInfoResponse>(Requests.PlaneInfo, definition); while (run) { // Request data fs.RequestData(Requests.PlaneInfo); // Sleep for a sec Thread.Sleep(1000); } }
private void backgroundConnector_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { if (!fsConnect.Connected) { try { fsConnect.Connect("TestApp", "localhost", 500); fsConnect.RegisterDataDefinition <PlaneInfoResponse>(Requests.PlaneInfo, definition); } catch { } // ignore } }
private static void InitializeDataDefinitions(FsConnect fsConnect) { List <SimProperty> definition = new List <SimProperty>(); definition.Add(new SimProperty(FsSimVar.Title, FsUnit.None, SIMCONNECT_DATATYPE.STRING256)); definition.Add(new SimProperty(FsSimVar.PlaneLatitude, FsUnit.Radians, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.PlaneLongitude, FsUnit.Radians, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.PlaneAltitudeAboveGround, FsUnit.Feet, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.PlaneAltitude, FsUnit.Feet, SIMCONNECT_DATATYPE.FLOAT64)); fsConnect.RegisterDataDefinition <PlaneInfoResponse>(Definitions.PlaneInfo, definition); }
private static void InitializeDataDefinitions(FsConnect fsConnect) { List <SimProperty> definition = new List <SimProperty>(); definition.Add(new SimProperty(FsSimVar.Title, FsUnit.None, SIMCONNECT_DATATYPE.STRING256)); definition.Add(new SimProperty(FsSimVar.PlaneLatitude, FsUnit.Radians, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.PlaneLongitude, FsUnit.Radians, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.PlaneAltitudeAboveGround, FsUnit.Feet, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty("PLANE ALTITUDE", "Feet", SIMCONNECT_DATATYPE.FLOAT64)); // Example using known/new values definition.Add(new SimProperty(FsSimVar.PlaneHeadingDegreesTrue, FsUnit.Radians, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.AirspeedTrue, FsUnit.Knot, SIMCONNECT_DATATYPE.FLOAT64)); fsConnect.RegisterDataDefinition <PlaneInfoResponse>(Definitions.PlaneInfo, definition); }
public static void Main(string[] args) { string hostName = "localhost"; uint port = 500; // Also supports "somehostname 1234" if (args.Length == 2) { hostName = args[0]; port = uint.Parse(args[1]); } FsConnect fsConnect = new FsConnect(); // Specify where the SimConnect.cfg should be written to fsConnect.SimConnectFileLocation = SimConnectFileLocation.Local; // Creates a SimConnect.cfg and connect to Flight Simulator using this configuration. fsConnect.Connect("TestApp", hostName, port, SimConnectProtocol.Ipv4); // Other alternatives, use existing SimConfig.cfg and specify config index: // fsConnect.Connect(1); // or // fsConnect.Connect(); fsConnect.FsDataReceived += HandleReceivedFsData; List <SimProperty> definition = new List <SimProperty>(); // Consult the SDK for valid sim variable names, units and whether they can be written to. definition.Add(new SimProperty("Title", null, SIMCONNECT_DATATYPE.STRING256)); definition.Add(new SimProperty("Plane Latitude", "degrees", SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty("Plane Longitude", "degrees", SIMCONNECT_DATATYPE.FLOAT64)); // Can also use predefined enums for sim variables and units (incomplete) definition.Add(new SimProperty(FsSimVar.PlaneAltitude, FsUnit.Feet, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.PlaneHeadingDegreesTrue, FsUnit.Degrees, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.AirspeedTrue, FsUnit.MeterPerSecond, SIMCONNECT_DATATYPE.FLOAT64)); definition.Add(new SimProperty(FsSimVar.AirspeedTrue, FsUnit.Knot, SIMCONNECT_DATATYPE.FLOAT64)); fsConnect.RegisterDataDefinition <PlaneInfoResponse>(Requests.PlaneInfo, definition); fsConnect.RequestData(Requests.PlaneInfo); Console.ReadKey(); fsConnect.Disconnect(); }
public void GetAircraftData() { // Arrange AutoResetEvent resetEvent = new AutoResetEvent(false); int errorCount = 0; FsConnect fsConnect = new FsConnect(); fsConnect.ConnectionChanged += (sender, b) => { if (b) { resetEvent.Set(); } }; fsConnect.FsError += (sender, args) => { errorCount++; Console.WriteLine($"Error: {args.ExceptionDescription}"); }; fsConnect.Connect("AircraftManagersIntegrationTests", 0); bool res = resetEvent.WaitOne(2000); if (!res) { Assert.Fail("Not connected to MSFS within timeout"); } var defId = fsConnect.RegisterDataDefinition <AircraftInfo>(); AircraftManager <AircraftInfo> aircraftManager = new AircraftManager <AircraftInfo>(fsConnect, defId); // Act var info = aircraftManager.Get(); // Assert Assert.That(errorCount, Is.Zero); Assert.That(info.Title, Is.Not.Empty); Assert.That(info.Latitude, Is.Not.EqualTo(0)); Assert.That(info.Longitude, Is.Not.EqualTo(0)); }
public static void Main(string[] args) { string hostName = "localhost"; uint port = 500; // Also supports "somehostname 1234" if (args.Length == 2) { hostName = args[0]; port = uint.Parse(args[1]); } FsConnect fsConnect = new FsConnect(); // Specify where the SimConnect.cfg should be written to fsConnect.SimConnectFileLocation = SimConnectFileLocation.Local; // Creates a SimConnect.cfg and connect to Flight Simulator using this configuration. fsConnect.Connect("TestApp", hostName, port, SimConnectProtocol.Ipv4); // Other alternatives, use existing SimConfig.cfg and specify config index: // fsConnect.Connect(1); // or // fsConnect.Connect(); fsConnect.FsDataReceived += HandleReceivedFsData; int planeInfoDefinitionId = fsConnect.RegisterDataDefinition <PlaneInfoResponse>(); ConsoleKeyInfo cki; do { fsConnect.RequestData((int)Requests.PlaneInfoRequest, planeInfoDefinitionId); cki = Console.ReadKey(); } while (cki.Key != ConsoleKey.Escape); fsConnect.Disconnect(); }
public void TransmitClientEvent_HeadingBugDirectionSet_SetsHeadingBugDirection() { // Arrange AutoResetEvent resetEvent = new AutoResetEvent(false); int errorCount = 0; FsConnect fsConnect = new FsConnect(); fsConnect.ConnectionChanged += (sender, b) => { if (b) { resetEvent.Set(); } }; fsConnect.FsError += (sender, args) => { errorCount++; Console.WriteLine($"Error: {args.ExceptionDescription}"); }; fsConnect.Connect("FsConnectIntegrationTest", 0); bool res = resetEvent.WaitOne(2000); if (!res) { Assert.Fail("Not connected to MSFS within timeout"); } var hbDef = fsConnect.RegisterDataDefinition <HeadingBugTest>(); HeadingBugTest headingBugData = default; // Act fsConnect.MapClientEventToSimEvent(TestEnums.GroupId, TestEnums.EventId, FsEventNameId.HeadingBugSet); fsConnect.SetNotificationGroupPriority(TestEnums.GroupId); uint headingValue = (uint)DateTime.Now.Second * 6; fsConnect.TransmitClientEvent(TestEnums.EventId, (uint)headingValue, TestEnums.GroupId); // Assert Assert.That(errorCount, Is.Zero, "MSFS returned errors. Check console output."); fsConnect.FsDataReceived += (sender, args) => { var data = args.Data.FirstOrDefault(); headingBugData = data is HeadingBugTest ? (HeadingBugTest)data : default; resetEvent.Set(); }; fsConnect.RequestData((int)TestEnums.RequestId, hbDef); res = resetEvent.WaitOne(2000); if (!res) { Assert.Fail("Data not returned from MSFS within timeout"); } Assert.That(headingBugData, Is.Not.Null); Assert.That(headingBugData.HeadingBug, Is.EqualTo(headingValue)); // Teardown fsConnect?.Disconnect(); }
private static void InitializeDataDefinitions(FsConnect fsConnect) { fsConnect.RegisterDataDefinition <PlaneInfoResponse>(Definitions.PlaneInfo); fsConnect.RegisterDataDefinition <PlanePosition>(Definitions.PlanePosition); }