Una biblioteca sencilla para conectarse y trabajar con SimConnect, una biblioteca que permite comunicarse con simuladores de vuelo (por ejemplo, FS2020).
El objetivo de esta biblioteca es proporcionar una interfaz sencilla para trabajar con FS2020 a través de .NET/C# sin ningún conocimiento profundo de SimConnect. Por otro lado, sólo se admiten las operaciones básicas. Esta biblioteca no cubre todas las posibilidades de la biblioteca SimConnect original.
La biblioteca necesita que se instale el tiempo de ejecución de Windows .NET Core 6.0 (está incluido en la instalación de Windows 10+ de forma predeterminada).
Simplemente descomprima la versión requerida en una carpeta de ejecución del proyecto de destino y vincule ESimConnect.dll + otras bibliotecas proporcionadas a su proyecto. Nota: Para funcionar, también se debe incluir un archivo SimConnect.dll
en el directorio de salida de su proyecto. No se hará referencia a este archivo en su proyecto .NET, pero debe estar presente para poder cargarlo y utilizarlo en la biblioteca.
Una aplicación de ejemplo simple ESimConnectDemo está disponible en el proyecto.
Cuando ejecute FS2020, inicie ESimConnectDemo.exe
. En la ventana, seleccione el botón Connect/Disconnect
. En la pestaña SimVars
, ingrese el nombre de SimVar y presione Add
. Deberías ver inmediatamente el valor de SimVar en la ventana.
Nota: Para nombres específicos de SimVar, consulte la documentación de FS202 SimVar. Al principio, puedes intentar ingresar PLANE ALTITUDE
SimVar.
ESimConnect.dll
y todos los ensamblados de la carpeta DLLs
excepto SimConnect.dll
. Sin embargo, el archivo SimConnect.dll
debe estar presente en la carpeta de salida; de lo contrario, se generará un error al iniciar. Para una lectura simple de SimVar (por ejemplo, PLANE ALTITUDE
), necesita:
// 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}");
}
Para obtener información más detallada, consulte los proyectos ESimConnectDemo o ESimConnectTest para inspirarse.
Si algo no funciona, no dudes en informarlo como un problema. Proporcione tantos detalles como sea posible.
(nada todavía)
Ver archivo de LICENCIA.
Gracias al repositorio original RandFailuresFS2020 por ser una motivación inicial y una fuente de estudio.
Gracias a George Barlow por su ayuda para resolver problemas de cancelación del registro.
Marek Vajgl https://github.com/Engin1980/ESimConnect