Простая библиотека для подключения и работы с SimConnect, библиотека, позволяющая взаимодействовать с авиасимуляторами (например, FS2020).
Цель этой библиотеки — предоставить простой интерфейс для работы с FS2020 через .NET/C# без глубоких знаний 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 см. в документации SimVar FS202. Вначале можно попробовать ввести в SimVar PLANE ALTITUDE
.
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 за первоначальную мотивацию и источник для изучения.
Спасибо Джорджу Барлоу за помощь в решении проблем с отменой регистрации.
Марек Вайгл https://github.com/Engin1980/ESimConnect