I saw a really old post that said that beatle hadn't implemented it yet, but maybe things have changed. If it is supported, can anybody point me to a simple code example? I know how to do it in C++, but I'm not really good with C# / data marshalling. I basically need help with code like this:
C#:
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
struct Struct1 {
public uint id;
public uint value;
};
// Set up all the SimConnect related event handlers
private void initClientEvent() {
try {
// listen to connect and quit msgs
simconnect.OnRecvOpen += new SimConnect.RecvOpenEventHandler(simconnect_OnRecvOpen);
simconnect.OnRecvQuit += new SimConnect.RecvQuitEventHandler(simconnect_OnRecvQuit);
// avionics
simconnect.AddToDataDefinition(DEFINITIONS.Struct1, "COM ACTIVE FREQUENCY:1", "Frequency BCD16",
SIMCONNECT_DATATYPE.INT32, 0.0f, (uint) DATA_NAMES.Com1Active);
simconnect.AddToDataDefinition(DEFINITIONS.Struct1, "COM ACTIVE FREQUENCY:2", "Frequency BCD16",
SIMCONNECT_DATATYPE.INT32, 0.0f, (uint)DATA_NAMES.Com2Active);
simconnect.AddToDataDefinition(DEFINITIONS.Struct1, "COM STANDBY FREQUENCY:1", "Frequency BCD16",
SIMCONNECT_DATATYPE.INT32, 0.0f, (uint)DATA_NAMES.Com1Standby);
simconnect.AddToDataDefinition(DEFINITIONS.Struct1, "COM STANDBY FREQUENCY:2", "Frequency BCD16",
SIMCONNECT_DATATYPE.INT32, 0.0f, (uint)DATA_NAMES.Com2Standby);
simconnect.RegisterDataDefineStruct<Struct1>(DEFINITIONS.Struct1);
simconnect.RequestDataOnSimObject(REQUESTS.Request1, DEFINITIONS.Struct1, SimConnect.SIMCONNECT_OBJECT_ID_USER, SIMCONNECT_PERIOD.SIM_FRAME,
SIMCONNECT_DATA_REQUEST_FLAG.CHANGED | SIMCONNECT_DATA_REQUEST_FLAG.TAGGED, 0, 0, 0);
// catch a simobject data request
simconnect.OnRecvSimobjectData += new SimConnect.RecvSimobjectDataEventHandler(simconnect_OnRecvSimobjectData);
}
catch (COMException ex) {
displayText(ex.Message);
}
}
void simconnect_OnRecvSimobjectData(SimConnect sender, SIMCONNECT_RECV_SIMOBJECT_DATA data) {
switch ((REQUESTS)data.dwRequestID) {
case REQUESTS.Request1:
// I specified tagged data on the request, so dwData actually points to an array, but
// I only know how to access the first element
Struct1 s1 = (Struct1)data.dwData[0];
displayText("data " + Bcd2Dec(s1.value).ToString());
break;
default:
displayText("Unknown request ID: " + data.dwRequestID);
break;
}
}
Last edited:

