[resolved] ones again C++ to PB

Just starting out? Need help? Post your questions and find answers here.
Sparkie
PureBatMan Forever
PureBatMan Forever
Posts: 2307
Joined: Tue Feb 10, 2004 3:07 am
Location: Ohio, USA

Post by Sparkie »

This one cant work
Can't work or doesn't work?

Desperate times call for desperate measures. :wink:
What goes around comes around.

PB 5.21 LTS (x86) - Windows 8.1
nicolaus
Enthusiast
Enthusiast
Posts: 456
Joined: Tue Aug 05, 2003 11:30 pm
Contact:

Post by nicolaus »

ts-soft wrote:I think there is a UDT or Structure "pDataSet" defined?
No ts-soft, it is only a pointer. You can see it in my first post and the help for the function.
nicolaus
Enthusiast
Enthusiast
Posts: 456
Joined: Tue Aug 05, 2003 11:30 pm
Contact:

Post by nicolaus »

Sparkie wrote:
This one cant work
Can't work or doesn't work?

Desperate times call for desperate measures. :wink:
Sorry i mean it doesn't work. But it is the same as it can´t work. If you set a param what wants a point a string, the pb-compiler shows a error ;-)
User avatar
tinman
PureBasic Expert
PureBasic Expert
Posts: 1102
Joined: Sat Apr 26, 2003 4:56 pm
Location: Level 5 of Robot Hell
Contact:

Post by tinman »

Pupil wrote:What value does 'sizeof(szTitle)' return in C++ ?
It would be the length of the string plus 1 for the null. So perhaps that is it, nicolaus needs to pass "Len(MyText$(0))+1" for the cbUnitSize parameter.

(Although I'm guessing the C example was written out of pure laziness :)
If you paint your butt blue and glue the hole shut you just themed your ass but lost the functionality.
(WinXPhSP3 PB5.20b14)
User avatar
Flype
Addict
Addict
Posts: 1542
Joined: Tue Jul 22, 2003 5:02 pm
Location: In a long distant galaxy

Post by Flype »

or maybe ImportC instead of Import.
No programming language is perfect. There is not even a single best language.
There are only languages well suited or perhaps poorly suited for particular purposes. Herbert Mayer
nicolaus
Enthusiast
Enthusiast
Posts: 456
Joined: Tue Aug 05, 2003 11:30 pm
Contact:

Post by nicolaus »

tinman wrote:
Pupil wrote:What value does 'sizeof(szTitle)' return in C++ ?
It would be the length of the string plus 1 for the null. So perhaps that is it, nicolaus needs to pass "Len(MyText$(0))+1" for the cbUnitSize parameter.

(Although I'm guessing the C example was written out of pure laziness :)
If i use "Len(MyText$(0))+1" it is the same result like my order test.
nicolaus
Enthusiast
Enthusiast
Posts: 456
Joined: Tue Aug 05, 2003 11:30 pm
Contact:

Post by nicolaus »

Flype wrote:or maybe ImportC instead of Import.
If i use ImportC and i want compile it, it shows polink errors.
User avatar
Flype
Addict
Addict
Posts: 1542
Joined: Tue Jul 22, 2003 5:02 pm
Location: In a long distant galaxy

Post by Flype »

nicolaus wrote:
Flype wrote:or maybe ImportC instead of Import.
If i use ImportC and i want compile it, it shows polink errors.
ok, just a try...
No programming language is perfect. There is not even a single best language.
There are only languages well suited or perhaps poorly suited for particular purposes. Herbert Mayer
nicolaus
Enthusiast
Enthusiast
Posts: 456
Joined: Tue Aug 05, 2003 11:30 pm
Contact:

Post by nicolaus »

Ok i have found the right way to give the string to the FSX.

If any one want know how it works please write a message.
Sparkie
PureBatMan Forever
PureBatMan Forever
Posts: 2307
Joined: Tue Feb 10, 2004 3:07 am
Location: Ohio, USA

Post by Sparkie »

All these kind people trying to help you and now they have to ask you to reveal your secret solution. I have NO need to see your solution but perhaps someone else does.
What goes around comes around.

PB 5.21 LTS (x86) - Windows 8.1
nicolaus
Enthusiast
Enthusiast
Posts: 456
Joined: Tue Aug 05, 2003 11:30 pm
Contact:

Post by nicolaus »

Sparkie wrote:All these kind people trying to help you and now they have to ask you to reveal your secret solution. I have NO need to see your solution but perhaps someone else does.
Ok sorry!

The right way to send the string via the simconnect to the FSX:

Code: Select all

Global *textbuff
mytext = "SkyBeat connect to FSX"
*textbuff = AllocateMemory(StringByteLength(mytext)+1)
PokeS(*textbuff,mytext)
......
hr = SimConnect_Text(SC_handle, #SIMCONNECT_TEXT_TYPE_SCROLL_RED, 0.0, #EVENT_TEXT_1, Len(mytext)+1, *textbuff)
......
It is important that you write "Len(mytext)+1" for the cbUnitSize param in the function "SimConnect_Text()". Without the +1 it don't work!

And for all where want develop tools / addons for the FSX, you must have installed the FSX SP2 and the FSX SDK SP2.


What you must do to develop for FSX?:

In the SDK Folder go to "Core Utilities Kit\SimConnect SDK\lib" and copy the "Sample.exe.manifest" and "SimConnect.lib" to the folder where you want save you *.exe and your pb-code. Rename the Sample.exe.manifest to "MyExeName.exe.manifest".

And finally save the following code as "SimConnect.pb" to your folder where you have the main pb-code for your FSX project and include it at top of your main code file:

Code: Select all

;**********************************************
;* SimConnect.pb    v1.0                      *
;* SimConnect Wrapper for Flight Simulator X  *
;* create at 15.05.2008                       *
;* by Nico Grüner                             *
;**********************************************

#DWORD_MAX                                  = $FFFFFFFF
#SIMCONNECT_UNUSED                          = #DWORD_MAX
#SIMCONNECT_OBJECT_ID_USER                  = 0          ; proxy value for User vehicle ObjectID
;/Notification Group priority values
#SIMCONNECT_GROUP_PRIORITY_HIGHEST          = 1          ; highest priority
#SIMCONNECT_GROUP_PRIORITY_HIGHEST_MASKABLE = 10000000   ; highest priority that allows events to be masked
#SIMCONNECT_GROUP_PRIORITY_STANDARD         = 1900000000 ; standard priority
#SIMCONNECT_GROUP_PRIORITY_DEFAULT          = 2000000000 ; default priority
#SIMCONNECT_GROUP_PRIORITY_LOWEST           = 4000000000 ; priorities lower than this will be ignored
;/ Weather observations Metar strings
#MAX_METAR_LENGTH                           = 2000
;/ Maximum thermal size is 100 km
#MAX_THERMAL_SIZE                           = 100000
#MAX_THERMAL_RATE                           = 1000
;/ SIMCONNECT_DATA_INITPOSITION.Airspeed
#INITPOSITION_AIRSPEED_CRUISE               = -1 ; aircraft's cruise airspeed
#INITPOSITION_AIRSPEED_KEEP                 = -2 ; keep current airspeed
;/ AddToClientDataDefinition dwSizeOrType parameter type values
#SIMCONNECT_CLIENTDATATYPE_INT8       = -1;   ;  8-bit integer number
#SIMCONNECT_CLIENTDATATYPE_INT16      = -2;   ; 16-bit integer number
#SIMCONNECT_CLIENTDATATYPE_INT32      = -3;   ; 32-bit integer number
#SIMCONNECT_CLIENTDATATYPE_INT64      = -4;   ; 64-bit integer number
#SIMCONNECT_CLIENTDATATYPE_FLOAT32    = -5;   ; 32-bit floating-point number (float)
#SIMCONNECT_CLIENTDATATYPE_FLOAT64    = -6;   ; 64-bit floating-point number (double)
;/ AddToClientDataDefinition dwOffset parameter special values
#SIMCONNECT_CLIENTDATAOFFSET_AUTO    = -1;   ; automatically compute offset of the ClientData variable
;/ Open ConfigIndex parameter special Value
#SIMCONNECT_OPEN_CONFIGINDEX_LOCAL   = -1;   ; ignore SimConnect.cfg settings, and force local connection
;/ Receive data types
Enumeration 
  #SIMCONNECT_RECV_ID_NULL
  #SIMCONNECT_RECV_ID_EXCEPTION
  #SIMCONNECT_RECV_ID_OPEN
  #SIMCONNECT_RECV_ID_QUIT
  #SIMCONNECT_RECV_ID_EVENT
  #SIMCONNECT_RECV_ID_EVENT_OBJECT_ADDREMOVE
  #SIMCONNECT_RECV_ID_EVENT_FILENAME
  #SIMCONNECT_RECV_ID_EVENT_FRAME
  #SIMCONNECT_RECV_ID_SIMOBJECT_DATA
  #SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE
  #SIMCONNECT_RECV_ID_WEATHER_OBSERVATION
  #SIMCONNECT_RECV_ID_CLOUD_STATE
  #SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID
  #SIMCONNECT_RECV_ID_RESERVED_KEY
  #SIMCONNECT_RECV_ID_CUSTOM_ACTION
  #SIMCONNECT_RECV_ID_SYSTEM_STATE
  #SIMCONNECT_RECV_ID_CLIENT_DATA
EndEnumeration
;/ Data data types
Enumeration 
  #SIMCONNECT_DATATYPE_INVALID;        ; invalid Data type
  #SIMCONNECT_DATATYPE_INT32;          ; 32-bit integer number
  #SIMCONNECT_DATATYPE_INT64;          ; 64-bit integer number
  #SIMCONNECT_DATATYPE_FLOAT32;        ; 32-bit floating-point number (float)
  #SIMCONNECT_DATATYPE_FLOAT64;        ; 64-bit floating-point number (double)
  #SIMCONNECT_DATATYPE_STRING8;        ; 8-byte String
  #SIMCONNECT_DATATYPE_STRING32;       ; 32-byte String
  #SIMCONNECT_DATATYPE_STRING64;       ; 64-byte String
  #SIMCONNECT_DATATYPE_STRING128;      ; 128-byte String
  #SIMCONNECT_DATATYPE_STRING256;      ; 256-byte String
  #SIMCONNECT_DATATYPE_STRING260;      ; 260-byte String
  #SIMCONNECT_DATATYPE_STRINGV;        ; variable-length String
 
  #SIMCONNECT_DATATYPE_INITPOSITION;   ; see SIMCONNECT_DATA_INITPOSITION
  #SIMCONNECT_DATATYPE_MARKERSTATE;    ; see SIMCONNECT_DATA_MARKERSTATE
  #SIMCONNECT_DATATYPE_WAYPOINT;       ; see SIMCONNECT_DATA_WAYPOINT
  #SIMCONNECT_DATATYPE_LATLONALT;      ; see SIMCONNECT_DATA_LATLONALT
  #SIMCONNECT_DATATYPE_XYZ;            ; see SIMCONNECT_DATA_XYZ
  
  #SIMCONNECT_DATATYPE_MAX;            ; enum limit  
EndEnumeration
;/ Exception error types
Enumeration 
  #SIMCONNECT_EXCEPTION_NONE
  #SIMCONNECT_EXCEPTION_ERROR
  #SIMCONNECT_EXCEPTION_SIZE_MISMATCH
  #SIMCONNECT_EXCEPTION_UNRECOGNIZED_ID
  #SIMCONNECT_EXCEPTION_UNOPENED
  #SIMCONNECT_EXCEPTION_VERSION_MISMATCH
  #SIMCONNECT_EXCEPTION_TOO_MANY_GROUPS
  #SIMCONNECT_EXCEPTION_NAME_UNRECOGNIZED
  #SIMCONNECT_EXCEPTION_TOO_MANY_EVENT_NAMES
  #SIMCONNECT_EXCEPTION_EVENT_ID_DUPLICATE
  #SIMCONNECT_EXCEPTION_TOO_MANY_MAPS
  #SIMCONNECT_EXCEPTION_TOO_MANY_OBJECTS
  #SIMCONNECT_EXCEPTION_TOO_MANY_REQUESTS
  #SIMCONNECT_EXCEPTION_WEATHER_INVALID_PORT
  #SIMCONNECT_EXCEPTION_WEATHER_INVALID_METAR
  #SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_GET_OBSERVATION
  #SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_CREATE_STATION
  #SIMCONNECT_EXCEPTION_WEATHER_UNABLE_TO_REMOVE_STATION
  #SIMCONNECT_EXCEPTION_INVALID_DATA_TYPE
  #SIMCONNECT_EXCEPTION_INVALID_DATA_SIZE
  #SIMCONNECT_EXCEPTION_DATA_ERROR
  #SIMCONNECT_EXCEPTION_INVALID_ARRAY
  #SIMCONNECT_EXCEPTION_CREATE_OBJECT_FAILED
  #SIMCONNECT_EXCEPTION_LOAD_FLIGHTPLAN_FAILED
  #SIMCONNECT_EXCEPTION_OPERATION_INVALID_FOR_OBJECT_TYPE
  #SIMCONNECT_EXCEPTION_ILLEGAL_OPERATION
  #SIMCONNECT_EXCEPTION_ALREADY_SUBSCRIBED
  #SIMCONNECT_EXCEPTION_INVALID_ENUM
  #SIMCONNECT_EXCEPTION_DEFINITION_ERROR
  #SIMCONNECT_EXCEPTION_DUPLICATE_ID
  #SIMCONNECT_EXCEPTION_DATUM_ID
  #SIMCONNECT_EXCEPTION_OUT_OF_BOUNDS
EndEnumeration
;/ Object types
Enumeration 
  #SIMCONNECT_SIMOBJECT_TYPE_USER
  #SIMCONNECT_SIMOBJECT_TYPE_ALL
  #SIMCONNECT_SIMOBJECT_TYPE_AIRCRAFT
  #SIMCONNECT_SIMOBJECT_TYPE_HELICOPTER
  #SIMCONNECT_SIMOBJECT_TYPE_BOAT
  #SIMCONNECT_SIMOBJECT_TYPE_GROUND
EndEnumeration
;/ EventState values
Enumeration 
  #SIMCONNECT_STATE_OFF
  #SIMCONNECT_STATE_ON
EndEnumeration
;/ Object Data Request Period values
Enumeration 
  #SIMCONNECT_PERIOD_NEVER
  #SIMCONNECT_PERIOD_ONCE
  #SIMCONNECT_PERIOD_VISUAL_FRAME
  #SIMCONNECT_PERIOD_SIM_FRAME
  #SIMCONNECT_PERIOD_SECOND
EndEnumeration
;/ 
Enumeration 
  #SIMCONNECT_MISSION_FAILED
  #SIMCONNECT_MISSION_CRASHED
  #SIMCONNECT_MISSION_SUCCEEDED 
EndEnumeration
;/ ClientData Request Period values
Enumeration 
  #SIMCONNECT_CLIENT_DATA_PERIOD_NEVER
  #SIMCONNECT_CLIENT_DATA_PERIOD_ONCE
  #SIMCONNECT_CLIENT_DATA_PERIOD_VISUAL_FRAME
  #SIMCONNECT_CLIENT_DATA_PERIOD_ON_SET
  #SIMCONNECT_CLIENT_DATA_PERIOD_SECOND
EndEnumeration
Enumeration 
  #SIMCONNECT_TEXT_TYPE_SCROLL_BLACK
  #SIMCONNECT_TEXT_TYPE_SCROLL_WHITE
  #SIMCONNECT_TEXT_TYPE_SCROLL_RED
  #SIMCONNECT_TEXT_TYPE_SCROLL_GREEN
  #SIMCONNECT_TEXT_TYPE_SCROLL_BLUE
  #SIMCONNECT_TEXT_TYPE_SCROLL_YELLOW
  #SIMCONNECT_TEXT_TYPE_SCROLL_MAGENTA
  #SIMCONNECT_TEXT_TYPE_SCROLL_CYAN
  #SIMCONNECT_TEXT_TYPE_PRINT_BLACK=$0100
  #SIMCONNECT_TEXT_TYPE_PRINT_WHITE
  #SIMCONNECT_TEXT_TYPE_PRINT_RED
  #SIMCONNECT_TEXT_TYPE_PRINT_GREEN
  #SIMCONNECT_TEXT_TYPE_PRINT_BLUE
  #SIMCONNECT_TEXT_TYPE_PRINT_YELLOW
  #SIMCONNECT_TEXT_TYPE_PRINT_MAGENTA
  #SIMCONNECT_TEXT_TYPE_PRINT_CYAN
  #SIMCONNECT_TEXT_TYPE_MENU=$0200
EndEnumeration
Enumeration 
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_1
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_2
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_3
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_4
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_5
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_6
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_7
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_8
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_9
  #SIMCONNECT_TEXT_RESULT_MENU_SELECT_10
  #SIMCONNECT_TEXT_RESULT_DISPLAYED = $00010000
  #SIMCONNECT_TEXT_RESULT_QUEUED
  #SIMCONNECT_TEXT_RESULT_REMOVED
  #SIMCONNECT_TEXT_RESULT_REPLACED
  #SIMCONNECT_TEXT_RESULT_TIMEOUT
EndEnumeration
Enumeration 
  #SIMCONNECT_WEATHER_MODE_THEME
  #SIMCONNECT_WEATHER_MODE_RWW
  #SIMCONNECT_WEATHER_MODE_CUSTOM
  #SIMCONNECT_WEATHER_MODE_GLOBAL
EndEnumeration
Enumeration 
  #SIMCONNECT_FACILITY_LIST_TYPE_AIRPORT
  #SIMCONNECT_FACILITY_LIST_TYPE_WAYPOINT
  #SIMCONNECT_FACILITY_LIST_TYPE_NDB
  #SIMCONNECT_FACILITY_LIST_TYPE_VOR
  #SIMCONNECT_FACILITY_LIST_TYPE_COUNT
EndEnumeration

#SIMCONNECT_CLOUD_STATE_ARRAY_WIDTH = 64
#SIMCONNECT_CLOUD_STATE_ARRAY_SIZE = #SIMCONNECT_CLOUD_STATE_ARRAY_WIDTH*#SIMCONNECT_CLOUD_STATE_ARRAY_WIDTH;
;/ flags For SIMCONNECT_RECV_ID_VOR_LIST 
#SIMCONNECT_RECV_ID_VOR_LIST_HAS_NAV_SIGNAL  = $00000001;   ; Has Nav signal
#SIMCONNECT_RECV_ID_VOR_LIST_HAS_LOCALIZER   = $00000002;   ; Has localizer
#SIMCONNECT_RECV_ID_VOR_LIST_HAS_GLIDE_SLOPE = $00000004;   ; Has Nav signal
#SIMCONNECT_RECV_ID_VOR_LIST_HAS_DME         = $00000008;   ; Station has DME
;/ bits for the Waypoint Flags field: may be combined
#SIMCONNECT_WAYPOINT_NONE                           = $00;                                                                                      
#SIMCONNECT_WAYPOINT_SPEED_REQUESTED                = $04;    ; requested speed at waypoint is valid                                           
#SIMCONNECT_WAYPOINT_THROTTLE_REQUESTED             = $08;    ; request a specific throttle percentage                                         
#SIMCONNECT_WAYPOINT_COMPUTE_VERTICAL_SPEED         = $10;    ; compute vertical to speed to reach waypoint altitude when crossing the waypoint
#SIMCONNECT_WAYPOINT_ALTITUDE_IS_AGL                = $20;    ; AltitudeIsAGL                                                                  
#SIMCONNECT_WAYPOINT_ON_GROUND                      = $00100000;   ; place this waypoint on the ground                                         
#SIMCONNECT_WAYPOINT_REVERSE                        = $00200000;   ; Back up to this waypoint. Only valid on first waypoint                    
#SIMCONNECT_WAYPOINT_WRAP_TO_FIRST                  = $00400000;   ; Wrap around back to first waypoint. Only valid on last waypoint.          

#SIMCONNECT_EVENT_FLAG_DEFAULT                      = $00000000;                                                       
#SIMCONNECT_EVENT_FLAG_FAST_REPEAT_TIMER            = $00000001;      ; set event repeat timer to simulate fast repeat
#SIMCONNECT_EVENT_FLAG_SLOW_REPEAT_TIMER            = $00000002;      ; set event repeat timer to simulate slow repeat
#SIMCONNECT_EVENT_FLAG_GROUPID_IS_PRIORITY          = $00000010;      ; interpret GroupID parameter as priority value 

#SIMCONNECT_DATA_REQUEST_FLAG_DEFAULT               = $00000000;                                                 
#SIMCONNECT_DATA_REQUEST_FLAG_CHANGED               = $00000001;      ; send requested data when value(s) change
#SIMCONNECT_DATA_REQUEST_FLAG_TAGGED                = $00000002;      ; send requested data in tagged format    

#SIMCONNECT_DATA_SET_FLAG_DEFAULT                   = $00000000;      ; data is in tagged format
#SIMCONNECT_DATA_SET_FLAG_TAGGED                    = $00000001;      ; data is in tagged format

#SIMCONNECT_CREATE_CLIENT_DATA_FLAG_DEFAULT         = $00000000;                                                                
#SIMCONNECT_CREATE_CLIENT_DATA_FLAG_READ_ONLY       = $00000001;      ; permit only ClientData creator to write into ClientData

;/ dwData contains these flags for the "View" System Event
#SIMCONNECT_VIEW_SYSTEM_EVENT_DATA_COCKPIT_2D       = $00000001;      ; 2D Panels in cockpit view          
#SIMCONNECT_VIEW_SYSTEM_EVENT_DATA_COCKPIT_VIRTUAL  = $00000002;      ; Virtual (3D) panels in cockpit view
#SIMCONNECT_VIEW_SYSTEM_EVENT_DATA_ORTHOGONAL       = $00000004;      ; Orthogonal (Map) view              

;/ dwData contains these flags for the "Sound" System Event
#SIMCONNECT_SOUND_SYSTEM_EVENT_DATA_MASTER          = $00000001;      ; Sound Master


Structure SIMCONNECT_RECV
  dwSize.l;         ; record size
  dwVersion.l;      ; interface version
  dwID.l;           ; see SIMCONNECT_RECV_ID
EndStructure
Structure SIMCONNECT_RECV_EXCEPTION Extends SIMCONNECT_RECV ;-when dwID == SIMCONNECT_RECV_ID_EXCEPTION
  dwException.l    ; see SIMCONNECT_EXCEPTION
  UNKNOWN_SENDID.l;
  dwSendID.l       ; see SimConnect_GetLastSentPacketID
  UNKNOWN_INDEX.l;
  dwIndex.l        ; index of parameter that was source of Error
EndStructure
Structure SIMCONNECT_RECV_OPEN Extends SIMCONNECT_RECV;- when dwID == SIMCONNECT_RECV_ID_OPEN
  szApplicationName.s[256];
  dwApplicationVersionMajor.l
  dwApplicationVersionMinor.l
  dwApplicationBuildMajor.l
  dwApplicationBuildMinor.l
  dwSimConnectVersionMajor.l
  dwSimConnectVersionMinor.l
  dwSimConnectBuildMajor.l
  dwSimConnectBuildMinor.l
  dwReserved1.l
  dwReserved2.l
EndStructure
Structure SIMCONNECT_RECV_QUIT Extends SIMCONNECT_RECV ;- when dwID == SIMCONNECT_RECV_ID_QUIT
  
EndStructure
Structure SIMCONNECT_RECV_EVENT Extends SIMCONNECT_RECV;- when dwID == SIMCONNECT_RECV_ID_EVENT
  UNKNOWN_GROUP.l
  uGroupID.l
  uEventID.l 
  dwData.l       ; uEventID-dependent context
EndStructure
Structure SIMCONNECT_RECV_EVENT_FILENAME Extends SIMCONNECT_RECV_EVENT;- when dwID == SIMCONNECT_RECV_ID_EVENT_FILENAME
  szFileName.s[#MAX_PATH]
  ;szFileName.s;   ; uEventID-dependent context
  dwFlags.l
EndStructure
Structure SIMCONNECT_RECV_EVENT_OBJECT_ADDREMOVE Extends SIMCONNECT_RECV_EVENT;- when dwID == SIMCONNECT_RECV_ID_EVENT_FILENAME
  eObjType.l
EndStructure
Structure SIMCONNECT_RECV_EVENT_FRAME Extends SIMCONNECT_RECV_EVENT;- when dwID == SIMCONNECT_RECV_ID_EVENT_FRAME
  fFrameRate.f
  fSimSpeed.f
EndStructure
Structure SIMCONNECT_RECV_EVENT_MULTIPLAYER_SERVER_STARTED Extends SIMCONNECT_RECV_EVENT       ; when dwID == SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SERVER_STARTED
  ; No Event specific Data, For now
EndStructure
Structure SIMCONNECT_RECV_EVENT_MULTIPLAYER_CLIENT_STARTED Extends SIMCONNECT_RECV_EVENT       ; when dwID == SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_CLIENT_STARTED
; No Event specific Data, For now
EndStructure
Structure SIMCONNECT_RECV_EVENT_MULTIPLAYER_SESSION_ENDED Extends SIMCONNECT_RECV_EVENT       ; when dwID == SIMCONNECT_RECV_ID_EVENT_MULTIPLAYER_SESSION_ENDED
; No Event specific Data, For now
EndStructure
;/ SIMCONNECT_DATA_RACE_RESULT
Structure SIMCONNECT_DATA_RACE_RESULT
  dwNumberOfRacers.l                         ; The total number of racers
  MissionGUID.l                      ; The name of the mission to execute, NULL if no mission
  szPlayerName.s[#MAX_PATH];       ; The name of the player
  szSessionType.s[#MAX_PATH];      ; The type of the multiplayer session: "LAN", "GAMESPY")
  szAircraft.s[#MAX_PATH];         ; The aircraft type 
  szPlayerRole.s[#MAX_PATH];       ; The player role in the mission
  fTotalTime.d                              ; Total time in seconds, 0 means DNF
  fPenaltyTime.d                            ; Total penalty time in seconds
  dwIsDisqualified.l                         ; non 0 - disqualified, 0 - not disqualified
EndStructure
Structure SIMCONNECT_RECV_EVENT_RACE_END Extends SIMCONNECT_RECV_EVENT       ; when dwID == SIMCONNECT_RECV_ID_EVENT_RACE_END
  dwRacerNumber.l                            ; The index of the racer the results are for
  RacerData.SIMCONNECT_DATA_RACE_RESULT;
EndStructure
Structure SIMCONNECT_RECV_EVENT_RACE_LAP Extends SIMCONNECT_RECV_EVENT       ; when dwID == SIMCONNECT_RECV_ID_EVENT_RACE_LAP
  dwLapIndex.l;                               ; The index of the lap the results are for
  RacerData.SIMCONNECT_DATA_RACE_RESULT
EndStructure
Structure SIMCONNECT_RECV_SIMOBJECT_DATA Extends SIMCONNECT_RECV ;-  when dwID == SIMCONNECT_RECV_ID_SIMOBJECT_DATA
  dwRequestID.l
  dwObjectID.l
  dwDefineID.l
  dwFlags.l            ; SIMCONNECT_DATA_REQUEST_FLAG
  dwentrynumber.l      ; if multiple objects returned, this is number <entrynumber> out of <outof>.
  dwoutof.l            ; note: starts with 1, not 0.          
  dwDefineCount.l      ; data count (number of datums, *not* byte count)
  dwData.l             ; data begins here, dwDefineCount data items
EndStructure
Structure SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE Extends SIMCONNECT_RECV_SIMOBJECT_DATA ;- when dwID == SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE
  
EndStructure
Structure SIMCONNECT_RECV_CLIENT_DATA Extends SIMCONNECT_RECV_SIMOBJECT_DATA ;- when dwID == SIMCONNECT_RECV_ID_CLIENT_DATA
  
EndStructure
Structure SIMCONNECT_RECV_WEATHER_OBSERVATION Extends SIMCONNECT_RECV ;- when dwID == SIMCONNECT_RECV_ID_WEATHER_OBSERVATION
  vdwRequestID.l
  szMetar.s[1]      ; Variable length string whose maximum size is MAX_METAR_LENGTH
EndStructure
Structure SIMCONNECT_RECV_CLOUD_STATE Extends SIMCONNECT_RECV ;- when dwID == SIMCONNECT_RECV_ID_CLOUD_STATE
  dwRequestID.l
  dwArraySize.l
  rgbData.b[1]
EndStructure
Structure SIMCONNECT_RECV_ASSIGNED_OBJECT_ID Extends SIMCONNECT_RECV;- when dwID == SIMCONNECT_RECV_ID_ASSIGNED_OBJECT_ID
  dwRequestID.l
  dwObjectID.l
EndStructure
Structure SIMCONNECT_RECV_RESERVED_KEY Extends SIMCONNECT_RECV ;- when dwID == SIMCONNECT_RECV_ID_RESERVED_KEY
  szChoiceReserved.s[30];
  szReservedKey.s[30];
EndStructure
Structure SIMCONNECT_RECV_SYSTEM_STATE Extends SIMCONNECT_RECV;- when dwID == SIMCONNECT_RECV_ID_SYSTEM_STATE
  dwRequestID.l
  dwInteger.l
  fFloat.f
  szString.s[#MAX_PATH]
EndStructure
Structure SIMCONNECT_RECV_CUSTOM_ACTION Extends SIMCONNECT_RECV_EVENT ;- public SIMCONNECT_RECV_EVENT
  guidInstanceId.l      ; Instance id of the action that executed
  dwWaitForCompletion.l           ; Wait for completion flag on the action
  szPayLoad.s[1]      ; Variable length string payload associated with the mission action.  
EndStructure
Structure SIMCONNECT_RECV_EVENT_WEATHER_MODE Extends SIMCONNECT_RECV_EVENT
  
EndStructure
;/ SIMCONNECT_RECV_FACILITIES_LIST
Structure SIMCONNECT_RECV_FACILITIES_LIST Extends SIMCONNECT_RECV
  dwRequestID.l
  dwArraySize.l
  dwentrynumber.l  ; when the array of items is too big For one send, which send this is (0..dwOutOf-1)
  dwoutof.l        ; total number of transmissions the list is chopped into
EndStructure
;/ SIMCONNECT_DATA_FACILITY_AIRPORT
Structure SIMCONNECT_DATA_FACILITY_AIRPORT
  ICAO.s[9]     ; ICAO of the object
  Latitude.d               ; degrees
  Longitude.d              ; degrees
  Altitude.d               ; meters   
EndStructure
;/ SIMCONNECT_RECV_AIRPORT_LIST
Structure SIMCONNECT_RECV_AIRPORT_LIST  Extends SIMCONNECT_RECV_FACILITIES_LIST
  rgData.SIMCONNECT_DATA_FACILITY_AIRPORT[1]
EndStructure
;/ SIMCONNECT_DATA_FACILITY_WAYPOINT
Structure SIMCONNECT_DATA_FACILITY_WAYPOINT  Extends SIMCONNECT_DATA_FACILITY_AIRPORT
  fMagVar.f                ; Magvar in degrees
EndStructure
;/ SIMCONNECT_RECV_WAYPOINT_LIST
Structure SIMCONNECT_RECV_WAYPOINT_LIST  Extends SIMCONNECT_RECV_FACILITIES_LIST
  rgData.SIMCONNECT_DATA_FACILITY_WAYPOINT[1]
EndStructure
;/ SIMCONNECT_DATA_FACILITY_NDB
Structure SIMCONNECT_DATA_FACILITY_NDB  Extends SIMCONNECT_DATA_FACILITY_WAYPOINT
  fFrequency.f             ; frequency in Hz (flot or long, at the translation i don´t know 100% )
EndStructure
;/ SIMCONNECT_RECV_NDB_LIST
Structure SIMCONNECT_RECV_NDB_LIST  Extends SIMCONNECT_RECV_FACILITIES_LIST
  rgData.SIMCONNECT_DATA_FACILITY_NDB[1]
EndStructure
;/ SIMCONNECT_DATA_FACILITY_VOR
Structure SIMCONNECT_DATA_FACILITY_VOR  Extends SIMCONNECT_DATA_FACILITY_NDB
  flags.l                  ; SIMCONNECT_VOR_FLAGS
  fLocalizer.f             ; Localizer in degrees
  GlideLat.d               ; Glide Slope Location (deg, deg, meters)
  GlideLon.d
  GlideAlt.d
  fGlideSlopeAngle.f       ; Glide Slope in degrees
EndStructure
;/ SIMCONNECT_RECV_VOR_LIST
Structure SIMCONNECT_RECV_VOR_LIST  Extends SIMCONNECT_RECV_FACILITIES_LIST
  rgData.SIMCONNECT_DATA_FACILITY_VOR[1]
EndStructure
;/ SIMCONNECT_DATATYPE_INITPOSITION
Structure SIMCONNECT_DATA_INITPOSITION
  Latitude.d;   ; degrees
  Longitude.d;  ; degrees
  Altitude.d;   ; feet   
  Pitch.d;      ; degrees
  Bank.d;       ; degrees
  Heading.d;    ; degrees
  OnGround.l;   ; 1=force to be on the ground
  Airspeed.l    ; knots
EndStructure
;/ SIMCONNECT_DATATYPE_MARKERSTATE
Structure SIMCONNECT_DATA_MARKERSTATE
  szMarkerName.s[64]
  dwMarkerState.l
EndStructure
;/ SIMCONNECT_DATATYPE_WAYPOINT
Structure SIMCONNECT_DATA_WAYPOINT
  Latitude.d;   ; degrees
  Longitude.d;  ; degrees
  Altitude.d;   ; feet   
  flags.l
  ktsSpeed.d;   ; knots
  percentThrottle.d;
EndStructure
;/ SIMCONNECT_DATA_LATLONALT
Structure SIMCONNECT_DATA_LATLONALT
  Latitude.d;
  Longitude.d;
  Altitude.d;
EndStructure
;/ SIMCONNECT_DATA_XYZ
Structure SIMCONNECT_DATA_XYZ
  x.d;
  y.d;
  z.d;
EndStructure

Import "SimConnect.lib" 
  SimConnect_MapClientEventToSimEvent(hSimConnect.l, EventID.l, EventName.s = "") ;As "_SimConnect_MapClientEventToSimEvent@12"
  SimConnect_TransmitClientEvent(hSimConnect.l, ObjectID.l, EventID.l, dwData.l, GroupID.l, flags) ;As "_SimConnect_TransmitClientEvent@24"
  SimConnect_SetSystemEventState(hSimConnect.l, EventID.l, dwState.l) ;As "_SimConnect_SetSystemEventState@12"
  SimConnect_AddClientEventToNotificationGroup(hSimConnect.l, GroupID.l, EventID.l, bMaskable.l) ;As "_SimConnect_AddClientEventToNotificationGroup@16"
  SimConnect_RemoveClientEvent(hSimConnect.l, GroupID.l, EventID.l) ;As "_SimConnect_RemoveClientEvent@12"
  SimConnect_SetNotificationGroupPriority(hSimConnect.l, GroupID.l, uPriority.l) ;As "_SimConnect_SetNotificationGroupPriority@12"
  SimConnect_ClearNotificationGroup(hSimConnect.l, GroupID.l) ;As "_SimConnect_ClearNotificationGroup@8"
  SimConnect_RequestNotificationGroup(hSimConnect.l, GroupID.l, dwReserved.l, flags.l) ;As "_SimConnect_RequestNotificationGroup@16"
  SimConnect_AddToDataDefinition(hSimConnect.l, DefineID.l, DatumName.s, UnitsName.s, DatumType = #SIMCONNECT_DATATYPE_FLOAT64, fEpsilon.f=0.0, DatumID.l=#SIMCONNECT_UNUSED) ;As "_SimConnect_AddToDataDefinition@28"
  SimConnect_ClearDataDefinition(hSimConnect.l, DefineID.l) ;As "_SimConnect_ClearDataDefinition@8"
  SimConnect_RequestDataOnSimObject(hSimConnect.l, RequestID.l, DefineID.l, ObjectID.l, Period.l, flags.l, origin.l, interval.l, limit.l) ;As "_SimConnect_RequestDataOnSimObject@36"
  SimConnect_RequestDataOnSimObjectType(hSimConnect.l, RequestID.l, DefineID.l, dwRadiusMeters.l, type.l) ;As "_SimConnect_RequestDataOnSimObjectType@20"
  SimConnect_SetDataOnSimObject(hSimConnect.l, DefineID.l, ObjectID.l, flags.l, ArrayCount.l, cbUnitSize.l, *pDataSet.l) ;As "_SimConnect_SetDataOnSimObject@28"
  SimConnect_MapInputEventToClientEvent(hSimConnect.l, GroupID.l, *szInputDefinition.s, DownEventID.l, DownValue.l, UpEventID.l, UpValue.l, bMaskable.l) ;As "_SimConnect_MapInputEventToClientEvent@32"
  SimConnect_SetInputGroupPriority(hSimConnect.l, GroupID.l, uPriority.l) ;As "_SimConnect_SetInputGroupPriority@12"
  SimConnect_RemoveInputEvent(hSimConnect.l, GroupID.l, *szInputDefinition.s) ;As "_SimConnect_RemoveInputEvent@12"
  SimConnect_ClearInputGroup(hSimConnect.l, GroupID.l) ;As "_SimConnect_ClearInputGroup@8"
  SimConnect_SetInputGroupState(hSimConnect.l, GroupID.l, dwState.l) ;As "_SimConnect_SetInputGroupState@12"
  SimConnect_RequestReservedKey(hSimConnect.s, EventID.l, *szKeyChoice1.s, *szKeyChoice2.s, *szKeyChoice3.s) ;As "_SimConnect_RequestReservedKey@20"
  SimConnect_SubscribeToSystemEvent(hSimConnect.l, EventID.l, SystemEventName.s) ;As "_SimConnect_SubscribeToSystemEvent@12"
  SimConnect_UnsubscribeFromSystemEvent(hSimConnect.l, EventID.l) ;As "_SimConnect_UnsubscribeFromSystemEvent@8"
  SimConnect_WeatherRequestInterpolatedObservation(hSimConnect.l, RequestID.l, lat.f, lon.f, alt.f) ;As "_SimConnect_WeatherRequestInterpolatedObservation@20"
  SimConnect_WeatherRequestObservationAtStation(hSimConnect.l, RequestID.l, *szICAO.s) ;As "_SimConnect_WeatherRequestObservationAtStation@12"
  SimConnect_WeatherRequestObservationAtNearestStation(hSimConnect.l, RequestID.l, lat.f, lon.f) ;As "_SimConnect_WeatherRequestObservationAtNearestStation@16"
  SimConnect_WeatherCreateStation(hSimConnect.l, RequestID.l, *szICAO.s, *szName.s, lat.f, lon.f, alt.f) ;As "_SimConnect_WeatherCreateStation@28"
  SimConnect_WeatherRemoveStation(hSimConnect.l, RequestID.l, *szICAO.s) ;As "_SimConnect_WeatherRemoveStation@12"
  SimConnect_WeatherSetObservation(hSimConnect.l, Seconds.l, *szMetar.s) ;As "_SimConnect_WeatherSetObservation@12"
  SimConnect_WeatherSetModeServer(hSimConnect.l, dwPort.l, dwSeconds.l) ;As "_SimConnect_WeatherSetModeServer@12"
  SimConnect_WeatherSetModeTheme(hSimConnect.l, *szThemeName.s) ;As "_SimConnect_WeatherSetModeTheme@8"
  SimConnect_WeatherSetModeGlobal(hSimConnect.l) ;As "_SimConnect_WeatherSetModeGlobal@4"
  SimConnect_WeatherSetModeCustom(hSimConnect.l) ;As "_SimConnect_WeatherSetModeCustom@4"
  SimConnect_WeatherSetDynamicUpdateRate(hSimConnect.l, dwRate.l) ;As "_SimConnect_WeatherSetDynamicUpdateRate@8"
  SimConnect_WeatherRequestCloudState(hSimConnect.l, RequestID.l, minLat.f, minLon.f, minAlt.f, maxLat.f, maxLon.f, maxAlt.f, dwFlags = 0) ;As "_SimConnect_WeatherRequestCloudState@36"
  SimConnect_WeatherCreateThermal(hSimConnect.l, RequestID.l, lat.f, lon.f, alt.f, radius.f, height.f, coreRate.f = 3.0, coreTurbulence.f = 0.05, sinkRate.f = 3.0, sinkTurbulence.f = 0.2, coreSize.f = 0.4, coreTransitionSize.f = 0.1, sinkLayerSize.f = 0.4, sinkTransitionSize.f = 0.1) ;As "_SimConnect_WeatherCreateThermal@60"
  SimConnect_WeatherRemoveThermal(hSimConnect.l, ObjectID.l) ;As "_SimConnect_WeatherRemoveThermal@8"
  SimConnect_AICreateParkedATCAircraft(hSimConnect.l, *szContainerTitle.s, *szTailNumber.s, *szAirportID.s, RequestID.l) ;As "_SimConnect_AICreateParkedATCAircraft@20"
  SimConnect_AICreateEnrouteATCAircraft(hSimConnect.l, *szContainerTitle.s, *szTailNumber.s, iFlightNumber.l, *szFlightPlanPath.s, dFlightPlanPosition.d, bTouchAndGo.b, RequestID.l) ;As "_SimConnect_AICreateEnrouteATCAircraft@36" 
  SimConnect_AICreateNonATCAircraft(hSimConnect.l, *szContainerTitle.s, *szTailNumber.s, InitPos.l, RequestID.l) ;As "_SimConnect_AICreateNonATCAircraft@20"
  SimConnect_AICreateSimulatedObject(hSimConnect.l, *szContainerTitle.s, InitPos.l, RequestID.l) ;As "_SimConnect_AICreateSimulatedObject@"
  SimConnect_AIReleaseControl(hSimConnect.l, ObjectID.l, RequestID.l) ;As "_SimConnect_AIReleaseControl@12"
  SimConnect_AIRemoveObject(hSimConnect.l, ObjectID.l, RequestID.l) ;As "_SimConnect_AIRemoveObject@12"
  SimConnect_AISetAircraftFlightPlan(hSimConnect.l, ObjectID.l, *szFlightPlanPath.s, RequestID.l) ;As "_SimConnect_AISetAircraftFlightPlan@16"
  SimConnect_ExecuteMissionAction(hSimConnect.l, guidInstanceId.l) ;As "_SimConnect_ExecuteMissionAction@8"
  SimConnect_CompleteCustomMissionAction(hSimConnect.l, guidInstanceId.l) ;As "_SimConnect_CompleteCustomMissionAction@8"
  SimConnect_Close(hSimConnect.l) ;As "_SimConnect_Close@4"
  SimConnect_RetrieveString(*pData.SIMCONNECT_RECV, cbData.l, *pStringV.l, *pszString.s, *pcbString.l)
  SimConnect_GetLastSentPacketID(hSimConnect.l, *pdwError.l)
  SimConnect_Open(phSimConnect.l, szName.s, hwnd.l, UserEventWin32.l, hEventHandle.l, ConfigIndex.l) ;As "_SimConnect_Open@24"
  SimConnect_CallDispatch(hSimConnect.l, pfcnDispatch.l, pContext.l) ;As "_SimConnect_CallDispatch@12"
  SimConnect_GetNextDispatch(hSimConnect.l, *ppData.SIMCONNECT_RECV, pcbData.l)
  SimConnect_RequestResponseTimes(hSimConnect.l, nCount.l, fElapsedSeconds.f)
  SimConnect_InsertString(pDest.l, cbDest.l, *ppEnd.l, pcbStringV.l, pSource.l)
  SimConnect_CameraSetRelative6DOF(hSimConnect.l, fDeltaX.f, fDeltaY.f, fDeltaZ.f, fPitchDeg.f, fBankDeg.f, fHeadingDeg.f)
  SimConnect_MenuAddItem(hSimConnect.l, szMenuItem.s, MenuEventID.l, dwData.l)
  SimConnect_MenuDeleteItem(hSimConnect.l, MenuEventID.l)
  SimConnect_MenuAddSubItem(hSimConnect.l, MenuEventID.l, szMenuItem.s, SubMenuEventID.l, dwData.l)
  SimConnect_MenuDeleteSubItem(hSimConnect.l, MenuEventID.l, SubMenuEventID.l)
  SimConnect_RequestSystemState(hSimConnect.l, RequestID.l, szState.s)
  SimConnect_SetSystemState(hSimConnect.l, szState.s, dwInteger.l, fFloat.f, szString.s)
  SimConnect_MapClientDataNameToID(hSimConnect.l, szClientDataName.s, ClientDataID.l)
  SimConnect_CreateClientData(hSimConnect.l, ClientDataID.l, dwSize.l, flags.l)
  SimConnect_AddToClientDataDefinition(hSimConnect.l, DefineID.l, dwOffset.l, dwSizeOrType.l, fEpsilon.f = 0.0, DatumID = #SIMCONNECT_UNUSED)
  SimConnect_ClearClientDataDefinition(hSimConnect.l, DefineID.l)
  SimConnect_RequestClientData(hSimConnect.l, ClientDataID.l, RequestID.l, DefineID.l, Period = #SIMCONNECT_CLIENT_DATA_PERIOD_ONCE, flags = 0, origin = 0, interval = 0, limit = 0)
  SimConnect_SetClientData(hSimConnect.l, ClientDataID.l, DefineID.l, flags.l, dwReserved.l, cbUnitSize.l, pDataSet.l)
  SimConnect_FlightLoad(hSimConnect.l, szFileName.s)
  SimConnect_FlightSave(hSimConnect.l, szFileName.s, szTitle.s, szDescription.s, flags.l)
  SimConnect_FlightPlanLoad(hSimConnect.l, szFileName.s)
  SimConnect_Text(hSimConnect.l, type.l, fTimeSeconds.f, EventID.l, cbUnitSize.l, *pDataSet.l)
  SimConnect_SubscribeToFacilities(hSimConnect.l, type.l, RequestID.l)
  SimConnect_UnsubscribeToFacilities(hSimConnect.l, type.l)
  SimConnect_RequestFacilitiesList(hSimConnect.l, type.l, RequestID.l)
EndImport
Have fun and happy developing for FSX
nicolaus
Enthusiast
Enthusiast
Posts: 456
Joined: Tue Aug 05, 2003 11:30 pm
Contact:

Post by nicolaus »

And a small example to show how you can develop for FSX via my simconnect wrapper.

This example write after a connection to the FSX a scrolled text into the FSX.
It add´s a new Menuitem to the FSX, shows the break event and every 3 sec it shows the lat, long, KIAS, Kohlsmann and Altitut of the Aircraft.

Code: Select all

XIncludeFile "SimConnect.pb"
Global Quit 
Quit = 0
Enumeration
  #GROUP_MENU
  #GROUP0
EndEnumeration
Enumeration
  #DEFINITION_1
EndEnumeration
Enumeration
  #REQUEST_1
EndEnumeration
Enumeration 1
  #EVENT_BRAKES
  #EVENT_TEXT_1
  #EVENT_MENU_ONE
	#EVENT_MENU_TWO
  #EVENT_SIM_START
EndEnumeration

Structure Struct1
  title.s{256}
  kohlsmann.d
  Altitude.d
  Latitude.d
  Longitude.d
  Speed.d
EndStructure

Global menuUseCount
Global SC_handle
Global hr
Global start
Global start1

Global mytext.s
Global *textbuff
Global out.l
Global Quit = 0

mytext = "SkyBeat connect to FSX"
*textbuff = AllocateMemory(StringByteLength(mytext)+1)
PokeS(*textbuff,mytext)

OpenConsole()
Procedure MyDispatchProc1(*pData.SIMCONNECT_RECV, cbData, pContext)
  Select *pData\dwID
    Case #SIMCONNECT_RECV_ID_EVENT
      *evt.SIMCONNECT_RECV_EVENT = *pData
      PrintN("EventID = "+Str(*evt\uEventID)+" - "+Str(#SIMCONNECT_TEXT_RESULT_MENU_SELECT_1))
      Select *evt\uEventID
        Case #EVENT_BRAKES
          PrintN("breaks: "+Str(*evt\dwData) )
        Case #EVENT_TEXT_1
          Select *evt\dwData
            Case #SIMCONNECT_TEXT_RESULT_DISPLAYED
          EndSelect
        Case #EVENT_MENU_ONE
          menuUseCount+1
          If menuUseCount = 4
						hr = SimConnect_MenuDeleteItem(SC_handle, #EVENT_MENU_ONE);
						hr = SimConnect_RemoveClientEvent(SC_handle, #GROUP_MENU, #EVENT_MENU_ONE);
						hr = SimConnect_MenuAddItem(SC_handle, "SkyBeat Two", #EVENT_MENU_TWO, 54321);
						hr = SimConnect_AddClientEventToNotificationGroup(SC_handle, #GROUP_MENU, #EVENT_MENU_TWO,#False);
          EndIf
        Case #EVENT_SIM_START
          hr = SimConnect_RequestDataOnSimObjectType(SC_handle, #REQUEST_1, #DEFINITION_1, 0, #SIMCONNECT_SIMOBJECT_TYPE_USER)
      EndSelect
    Case #SIMCONNECT_RECV_ID_SIMOBJECT_DATA_BYTYPE
      *pObjData.SIMCONNECT_RECV_SIMOBJECT_DATA_BYTYPE = *pData 
      PrintN(Str(*pObjData\dwDefineCount))
      Select *pObjData\dwRequestID
        Case #REQUEST_1
          ObjectID.l = *pObjData\dwObjectID;
          *ps.Struct1 = @*pObjData\dwData
            PrintN("Title = "+*ps\title)
            PrintN("Lat = "+StrD(*ps\Latitude))
            PrintN("Lon = "+StrD(*ps\Longitude))
            PrintN("Alt = "+StrD(*ps\Altitude))
            PrintN("kohlsmann = "+StrD(*ps\kohlsmann))
            PrintN("KIAS = "+StrD(*ps\Speed))
      EndSelect
  EndSelect
EndProcedure

Procedure testClientEvents()
  Protected SC_handle
  SimConnect_Open(@SC_handle,"SkyBeat",#Null,0,0,0)
  If SC_handle
    PrintN("Connected to FSX")
    hr = SimConnect_Text(SC_handle, #SIMCONNECT_TEXT_TYPE_SCROLL_RED, 0.0, #EVENT_TEXT_1, Len(mytext)+1, *textbuff)
    SimConnect_MapClientEventToSimEvent(SC_handle, #EVENT_BRAKES, "brakes");
    SimConnect_AddClientEventToNotificationGroup(SC_handle, #GROUP0, #EVENT_BRAKES,#True)
    SimConnect_SetNotificationGroupPriority(SC_handle, #GROUP0, #SIMCONNECT_GROUP_PRIORITY_HIGHEST);
    
    hr = SimConnect_MapClientEventToSimEvent(SC_handle, #EVENT_MENU_ONE,"Custom.Event")
    hr = SimConnect_MenuAddItem(SC_handle, "SkyBeat", #EVENT_MENU_ONE, #EVENT_MENU_ONE)
    hr = SimConnect_AddClientEventToNotificationGroup(SC_handle, #GROUP0, #EVENT_MENU_ONE,0)
		hr = SimConnect_SetNotificationGroupPriority(SC_handle, #GROUP0, #SIMCONNECT_GROUP_PRIORITY_HIGHEST)
    
    hr = SimConnect_AddToDataDefinition(SC_handle, #DEFINITION_1, "Title", "", #SIMCONNECT_DATATYPE_STRING256)
    start = GetTickCount_()
    start1 = GetTickCount_()
    While Quit = 0
      
      If GetTickCount_() - start1 >= 3000
        If out = 0
          hr = SimConnect_AddToDataDefinition(SC_handle, #DEFINITION_1, "Kohlsman setting hg", "inHg")
          hr = SimConnect_AddToDataDefinition(SC_handle, #DEFINITION_1, "Plane Altitude", "feet")
          hr = SimConnect_AddToDataDefinition(SC_handle, #DEFINITION_1, "Plane Latitude", "degrees")
          hr = SimConnect_AddToDataDefinition(SC_handle, #DEFINITION_1, "Plane Longitude", "degrees")
          hr = SimConnect_AddToDataDefinition(SC_handle, #DEFINITION_1, "GROUND VELOCITY", "knots")
          
          hr = SimConnect_RequestDataOnSimObjectType(SC_handle, #REQUEST_1, #DEFINITION_1, 0, #SIMCONNECT_SIMOBJECT_TYPE_USER)
          out = 1
        EndIf
        out = 0
        start1 = GetTickCount_()
      EndIf
      SimConnect_CallDispatch(SC_handle, @MyDispatchProc1(), #Null)
      Sleep_(1)
    Wend
  Else
    PrintN("no FSX found "+Str(SC_handle))
  EndIf
  CloseConsole()
EndProcedure

testClientEvents()
Sparkie
PureBatMan Forever
PureBatMan Forever
Posts: 2307
Joined: Tue Feb 10, 2004 3:07 am
Location: Ohio, USA

Post by Sparkie »

There you go, that's the spirit. 8)
What goes around comes around.

PB 5.21 LTS (x86) - Windows 8.1
Post Reply