We are currently developing an integration with Prepar3D_v4_Professional_Plus_4.5.14.34698 and our Surveillance Radar using the Simconnect C# app given as example.
We successfully managed to extract every information we needed from the aircraft using the example code and the forums like so:
Code: Select all
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "AI TRAFFIC FROMAIRPORT", null, SIMCONNECT_DATATYPE.STRING8, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "AI TRAFFIC TOAIRPORT", null, SIMCONNECT_DATATYPE.STRING8, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "AI CURRENT WAYPOINT", "Number", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "PLANE BANK DEGREES", null, SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "PLANE PITCH DEGREES", null, SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "PLANE HEADING DEGREES TRUE", "radians", SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "Plane Latitude", "degrees", SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "Plane Longitude", "degrees", SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "Plane Altitude", "feet", SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "PLANE HEADING DEGREES MAGNETIC", null, SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "ATC Model", null, SIMCONNECT_DATATYPE.STRING256, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "TRANSPONDER CODE", "feet", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "TRANSPONDER AVAILABLE", "bool", SIMCONNECT_DATATYPE.INT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "GROUND VELOCITY", "knots", SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "AIRSPEED TRUE", "knots", SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "AIRSPEED INDICATED", "knots", SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "AIRSPEED MACH", "mach", SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "VERTICAL SPEED", "knots", SIMCONNECT_DATATYPE.FLOAT64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "ATC FLIGHT NUMBER", null, SIMCONNECT_DATATYPE.STRING8, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "ATC AIRLINE", null, SIMCONNECT_DATATYPE.STRING64, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "ATC ID", null, SIMCONNECT_DATATYPE.STRING32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "COM ACTIVE FREQUENCY:1", "Frequency BCD16", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "COM STANDBY FREQUENCY:1", "Frequency BCD16", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "COM TRANSMIT:1", "bool", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "COM ACTIVE FREQUENCY:2", "Frequency BCD16", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "COM STANDBY FREQUENCY:2", "Frequency BCD16", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "COM TRANSMIT:2", "bool", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "GPS FLIGHT PLAN WP COUNT", "Number", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
simconnect.AddToDataDefinition(SimConnectController.DEFINITIONS.Prepar3DPilotedAircraftData, "GPS FLIGHT PLAN WP INDEX", "Number", SIMCONNECT_DATATYPE.INT32, 0.0f, SimConnect.SIMCONNECT_UNUSED);
Code: Select all
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct Prepar3DPilotedAircraftData
{
//[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
//public string airportFrom;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string fromAirport;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string toAirport;
public int curWp;
public double bankDegrees;
public double pitchDegrees;
public double headingDegreesTrue;
public double latitude;
public double longitude;
public double altitude;
public double magHead;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string ATCModel;
public double transponderCode;
public bool transponderAvailable;
public double groundVelocity;
public double airspeedTrue;
public double airspeedIndicated;
public double airspeedMach;
public double verticalSpeed;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string ATCFlightNumber;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)]
public string ATCAirline;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string atcID;
public int comActiveFrequency1, comStandbyFrequency1;
public bool comTransmit1;
public int comActiveFrequency2, comStandbyFrequency2;
public bool comTransmit2;
public int gpsFPLWpCount, gpsFPLWpIndex;
}
Any help with this is greatly appreciated.
Thank you.