- Messages
- 2
- Country

I follow the developer documentation to create a simvar whatcher but it doesn't work, when I connect and request data my handler isn't receiving calls.
Follow my code.
Can anyone help me?
Follow my code.
C#:
using System;
using Microsoft.FlightSimulator.SimConnect;
using System.Runtime.InteropServices;
namespace MFSSimConnectFirst.SimIntegration
{
public class RetrieveSimData
{
private readonly SimConnect simConnect;
public RetrieveSimData(SimConnect simConnect)
{
this.simConnect = simConnect;
}
public void RegisterDataDefinition()
{
simConnect.OnRecvSimobjectData += new SimConnect.RecvSimobjectDataEventHandler(this.RecvSimobjectDataEventHandler);
simConnect.AddToDataDefinition(DATA_DEFINITION_ID.PLANE_ALTITUDE,
"PLANE ALTITUDE", "feet", SIMCONNECT_DATATYPE.FLOAT64, 0, SimConnect.SIMCONNECT_UNUSED);
simConnect.RegisterDataDefineStruct<AircraftPositionDirectionSpeed>(DATA_DEFINITION_ID.PLANE_ALTITUDE);
simConnect.RequestDataOnSimObject(
DATA_REQUEST_ID.AIRCRAFT_POSITION_DIRECTION_SPEED,
DATA_DEFINITION_ID.PLANE_ALTITUDE,
SimConnect.SIMCONNECT_OBJECT_ID_USER,
SIMCONNECT_PERIOD.SECOND,
SIMCONNECT_DATA_REQUEST_FLAG.DEFAULT, 0, 0, 0);
}
private void RecvSimobjectDataEventHandler(SimConnect sender, SIMCONNECT_RECV_SIMOBJECT_DATA data)
{
Console.WriteLine("Recv");
var requestId = (DATA_REQUEST_ID)data.dwRequestID;
if (requestId == DATA_REQUEST_ID.AIRCRAFT_POSITION_DIRECTION_SPEED)
{
AircraftPositionDirectionSpeed aircraftPositionDirectionSpeed = (AircraftPositionDirectionSpeed)data.dwData[0];
Console.WriteLine("altitude: " + aircraftPositionDirectionSpeed.altitude.ToString());
}
}
}
enum DATA_DEFINITION_ID
{
PLANE_ALTITUDE
};
enum DATA_REQUEST_ID
{
AIRCRAFT_POSITION_DIRECTION_SPEED
};
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
struct AircraftPositionDirectionSpeed
{
public double altitude;
}
}
Can anyone help me?
Last edited:
