- Messages
- 9
- Country

Hi there,
I wrote a program in C++ that successfully accesses aircraft instrument data, but when I try to access any other data, all I get is 0. Here is a snippet of the code:
All of the instrument related variables give me the expected values, but anything else just gives me 0.
Can anyone advise what I'm doing wrong?
Thanks!
I wrote a program in C++ that successfully accesses aircraft instrument data, but when I try to access any other data, all I get is 0. Here is a snippet of the code:
C++:
enum DATA_DEFINE_ID{
DEFINITION_1,
DEFINITION_2,
};
enum DATA_REQUEST_ID{
REQUEST_1,
REQUEST_2,
REQUEST_3
};
enum EVENT_ID{
EVENT_SIM_START,
};
struct instruments{
double airspeed;
double bank;
double pitch;
double altitude;
double kholsman;
double turn;
double slip;
double heading;
double v_speed;
double glide_slope;
double obs_sel;
};
void CALLBACK MyDispatchProcRD(SIMCONNECT_RECV* pData, DWORD cbData, void *pContext){
HRESULT hr;
SIMCONNECT_RECV_EVENT *evt = (SIMCONNECT_RECV_EVENT*)pData;
hr = SimConnect_RequestDataOnSimObjectType(hSimConnect, REQUEST_1,
DEFINITION_1, SIMCONNECT_DATA_REQUEST_FLAG_CHANGED, SIMCONNECT_SIMOBJECT_TYPE_USER);
SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE *pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE*)pData;
airspeed = pS->airspeed;
bank = pS->bank;
pitch = pS->pitch;
altitude = pS->altitude;
kholsman = pS->kholsman;
turn = pS->turn;
slip = pS->slip;
heading = pS->heading;
v_speed = pS->v_speed;
glide_slope = pS->glide_slope;
obs_sel = pS->obs_sel;
}
void h_Result(){
HRESULT hr;
if (SUCCEEDED(SimConnect_Open(&hSimConnect, "Request Data", NULL, 0, 0, 0))){
printf("Connected\n");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "airspeed indicated", "knots");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "ATTITUDE INDICATOR BANK DEGREES", "Radians");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "ATTITUDE INDICATOR PITCH DEGREES", "Radians");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "INDICATED ALTITUDE", "Feet");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "KOHLSMAN SETTING HG", "inHg");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "DELTA HEADING RATE", "Radians per second");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "TURN COORDINATOR BALL", "Position 128");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "PLANE HEADING DEGREES GYRO", "Radians");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "VERTICAL SPEED", "Feet per second");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "NAV_GSI", "Number");
hr = SimConnect_AddToDataDefinition(hSimConnect, DEFINITION_1, "NAV OBS : 1", "Degrees");
}else{
printf("WARNING! Not Connected!\nPlease restart after opening MSFS\n");
}
}
All of the instrument related variables give me the expected values, but anything else just gives me 0.
Can anyone advise what I'm doing wrong?
Thanks!

