一个用于连接和使用 SimConnect 的简单库,该库允许与飞行模拟器(例如 FS2020)进行通信。
该库的目的是提供一个简单的界面,通过 .NET/C# 与 FS2020 配合使用,而无需深入了解 SimConnect。另一方面,仅支持基本操作。该库并未涵盖原始 SimConnect 库的所有可能性。
该库需要安装 Windows .NET Core 6.0 运行时(默认情况下包含在 Windows 10+ 安装中)。
只需将所需的版本解压到目标项目运行文件夹并将 ESimConnect.dll +其他提供的库链接到您的项目。注意:要工作,文件SimConnect.dll
还必须包含在项目输出目录中。该文件不会在您的 .NET 项目中引用,但必须存在才能加载以供库使用。
项目中提供了一个简单的示例应用程序ESimConnectDemo 。
运行 FS2020 时,启动ESimConnectDemo.exe
。在窗口中,选择Connect/Disconnect
按钮。在SimVars
选项卡中,输入 SimVar 名称并按Add
。您应该立即在窗口中看到 SimVar 的值。
注意:有关特定 SimVar 名称,请参阅 FS202 SimVar 文档。一开始,您可以尝试输入PLANE ALTITUDE
SimVar。
ESimConnect.dll
以及DLLs
文件夹中除SimConnect.dll
之外的所有程序集的引用。但是,文件SimConnect.dll
必须存在于输出文件夹中,否则将引发启动错误。对于简单的 SimVar 读数(例如PLANE ALTITUDE
),您需要:
// create ESimConnect instance
ESimConnect.ESimConnect eSimCon = new();
// register as a listener for incoming data messages
eSimCon.DataReceived += ESimCon_DataReceived; // see below for the definition
// open a connection to FS2020
eSimCon.Open();
// register a SimVar - tell FS2020 that you are interested in this SimVar
var typeId = eSimCon.Values.Register<double>("PLANE ALTITUDE");
// and request the value once
RequestId requestId = eSimCon.Values.Request(typeId);
// or request value repeatedly every second, only when value has changed
RequestId repeatedRequestId = eSimCon.Values.RequestRepeatedly(typeId, SimConnectPeriod.SECOND, true);
// now you are ready
// once some data has arrived, the following handler is invoked:
private static void ESimCon_DataReceived(ESimConnect.ESimConnect sender, ESimConnect.ESimConnect.ESimConnectDataReceivedEventArgs e)
{
Console.WriteLine($"ESimCon - DataReceived - requestId={e.RequestId}, simVar={relatedSimVar}, type={e.Type}, data={e.Data}");
}
有关更多详细信息,请参阅 ESimConnectDemo 或 ESimConnectTest 项目以获取灵感。
如果有任何问题不起作用,请随时将其报告为问题。请提供尽可能多的详细信息。
(还没有)
请参阅许可证文件。
感谢 RandFailuresFS2020 原始存储库作为最初的动机和学习来源。
感谢 George Barlow 帮助解决取消注册问题。
马雷克·瓦伊格尔 https://github.com/Engin1980/ESimConnect