Uma biblioteca simples para conectar e trabalhar com SimConnect, uma biblioteca que permite a comunicação com Flight Simulators (por exemplo, FS2020).
O objetivo desta biblioteca é fornecer uma interface simples para trabalhar com FS2020 em .NET/C# sem nenhum conhecimento profundo de SimConnect. Por outro lado, apenas as operações básicas são suportadas. Esta biblioteca não cobre todas as possibilidades da biblioteca SimConnect original.
A biblioteca precisa que o tempo de execução do Windows .NET Core 6.0 esteja instalado (ele está incluído na instalação do Windows 10+ por padrão).
Basta descompactar a versão necessária em uma pasta de execução do projeto de destino e vincular ESimConnect.dll + outras bibliotecas fornecidas ao seu projeto. Nota: Para funcionar, um arquivo SimConnect.dll
também deve ser incluído no diretório de saída do seu projeto. Este arquivo não será referenciado em seu projeto .NET, mas deve estar presente para ser carregado para uso da biblioteca.
Um exemplo simples de aplicação ESimConnectDemo está disponível no projeto.
Ao executar o FS2020, inicie ESimConnectDemo.exe
. Na janela, selecione o botão Connect/Disconnect
. Na guia SimVars
, insira o nome SimVar e pressione Add
. Você deverá ver imediatamente o valor do SimVar na janela.
Nota: Para nomes específicos de SimVar, consulte a documentação do FS202 SimVar. No início, você pode tentar inserir PLANE ALTITUDE
SimVar.
ESimConnect.dll
e todos os assemblies da pasta DLLs
, exceto SimConnect.dll
. Porém, o arquivo SimConnect.dll
deve estar presente na pasta de saída, caso contrário será gerado um erro na inicialização. Para uma leitura simples do SimVar (por exemplo, PLANE ALTITUDE
), você precisa:
// 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 obter informações mais detalhadas, consulte os projetos ESimConnectDemo ou ESimConnectTest para se inspirar.
Se algo não funcionar, sinta-se à vontade para relatar isso como um problema. Forneça o máximo de detalhes possível.
(nada ainda)
Consulte o arquivo LICENÇA.
Obrigado ao repositório original RandFailuresFS2020 por ser uma motivação inicial e uma fonte de estudo.
Obrigado a George Barlow por sua ajuda na resolução de problemas de cancelamento de registro.
Marek Vajgl https://github.com/Engin1980/ESimConnect