一個用於連接和使用 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