HANDLE SIMGetTESTRh = NULL;
struct StructOneDatum_TEST {
int id;
float value;
};
#define maxReturnedItems 1
struct StructDatum_TEST {
StructOneDatum_TEST datum[maxReturnedItems];
};
struct StructAITRAFFICSTATE_TEST
{
char AIState_TEST[256];
};
static enum DATA_DEFINE_ID_TEST {
DEFINITION_TEST_AiTrafic,
};
static enum DATA_REQUEST_ID_TEST {
REQUEST_TEST_Object,
REQUEST_TEST_AITRAFIC,
};
static enum DATA_NAMES_TEST {
AI_TRAFFIC_STATE,
};
SimuGetTEST::SimuGetTEST()
{}
void SimuGetTEST::ini()
{
HRESULT hr;
if (SUCCEEDED(SimConnect_Open(&SIMGetTESTRh, "SimuGetVar", NULL, 0, 0, 0)))
{
conexStat = 1;
hr = SimConnect_AddToDataDefinition(SIMGetTESTRh, DEFINITION_TEST_AiTrafic, "AI TRAFFIC STATE", "",
SIMCONNECT_DATATYPE_STRING256, 0, AI_TRAFFIC_STATE);
hr = SimConnect_RequestDataOnSimObjectType(SIMGetTESTRh, REQUEST_TEST_Object, DEFINITION_TEST_AiTrafic, 50000, SIMCONNECT_SIMOBJECT_TYPE_AIRCRAFT);
hr = SimConnect_RequestDataOnSimObject(SIMGetTESTRh, REQUEST_TEST_Object, DEFINITION_TEST_AiTrafic, SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD_SECOND);
}
}
void SimuGetTEST::job()
{
std::string PPP;
SIMCONNECT_RECV* pData;
DWORD cbData;
HRESULT hr;
hr = SimConnect_GetNextDispatch(SIMGetTESTRh, &pData, &cbData);
if (SUCCEEDED(hr))
{
switch (pData->dwID)
{
case SIMCONNECT_RECV_ID_EXCEPTION:
{printf("\ <<<<<<<<<<<<<<<<<<<<<SIMCONNECT_RECV_ID_EXCEPTION = <<<<<<<<<<<<<<<<<<<<");
SIMCONNECT_RECV_EXCEPTION *except = (SIMCONNECT_RECV_EXCEPTION*)pData;
printf("\n\n***** EXCEPTION=%d SendID=%d Index=%d cbData=%d\n", except->dwException, except->dwSendID, except->dwIndex, cbData); }
break;
case SIMCONNECT_RECV_ID_EVENT:
printf("\nSIMCONNECT_RECV_ID_EVENT = > %d <");
break;
case SIMCONNECT_RECV_ID_EVENT_FILENAME:
printf("\n SIMCONNECT_RECV_ID_EVENT_FILENAME \n");
break;
case SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE:
{
printf("\n SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE ");
SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE *pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE*)pData;
switch (pObjData->dwRequestID)
{
case REQUEST_TEST_Object:
{DWORD ObjectID = pObjData->dwObjectID;
StructAITRAFFICSTATE_TEST *pS = (StructAITRAFFICSTATE_TEST*)&pObjData->dwData;
printf(" REQUEST_Object ObjectID=%d Data= %s Count = %d\n ", ObjectID, pS->AIState_TEST, pObjData->dwDefineCount); } // while (count < (int)pObjData->dwDefineCount)
break;
default:
printf("\nGET DEFAULT_A %d\n", pObjData->dwRequestID);
break;
}
}
break; //-----------------
case SIMCONNECT_RECV_ID_SIMOBJECT_DATA:
{ printf("\n SIMCONNECT_RECV_ID_SIMOBJECT_DATA: ");
{SIMCONNECT_RECV_SIMOBJECT_DATA *pObjData = (SIMCONNECT_RECV_SIMOBJECT_DATA*)pData;
switch (pObjData->dwRequestID)
{
case REQUEST_TEST_AITRAFIC:
{
(int)pObjData->dwDefineCount;
StructAITRAFFICSTATE_TEST *ps = (StructAITRAFFICSTATE_TEST*)&pObjData->dwData;
PPP = (char*)&pObjData->dwData;
printf("\n REQUEST_AITRAFIC %s \n", PPP.c_str());
break;
}
case REQUEST_TEST_Object:
{DWORD ObjectID = pObjData->dwObjectID;
StructAITRAFFICSTATE_TEST *pS = (StructAITRAFFICSTATE_TEST*)&pObjData->dwData;
printf(" REQUEST_Object ObjectID=%d Data= %s Count = %d\n ", ObjectID, pS->AIState_TEST, pObjData->dwDefineCount);
}
break;
default:
printf("\nGET DEFAULT_B %d \n", pObjData->dwRequestID);
break;
}
}
}
}
}
}