source: xplra/test/multigettest.py@ 35:9451e75788ea

Last change on this file since 35:9451e75788ea was 35:9451e75788ea, checked in by István Váradi <ivaradi@…>, 11 years ago

Implemented support for multi-dataref setting

File size: 5.4 KB
Line 
1# Multi-dataref query test program for the Python client library
2
3#------------------------------------------------------------------------------
4
5if __name__ == "__main__":
6 import sys
7 import time
8 from xplra import XPlane, ProtocolException
9
10 xplane = XPlane()
11
12 dontregister = "dontregister" in sys.argv
13
14 try:
15 print "Connecting to X-Plane..."
16 xplane.connect()
17 print "Connected to X-Plane."
18 print
19
20 getter = xplane.createMultiGetter()
21
22 tailnumID = getter.addByteArray("sim/aircraft/view/acf_tailnum", 40)
23 daysID = getter.addInt("sim/time/local_date_days")
24 zuluSecID = getter.addFloat("sim/time/zulu_time_sec")
25 pausedID = getter.addInt("sim/time/paused")
26 latitudeID = getter.addDouble("sim/flightmodel/position/latitude")
27 longitudeID = getter.addDouble("sim/flightmodel/position/longitude")
28 replayID = getter.addInt("sim/operation/prefs/replay_mode")
29 overspeedID = getter.addInt("sim/flightmodel/failures/over_vne")
30 stalledID = getter.addInt("sim/flightmodel/failures/stallwarning")
31 onTheGroundID = getter.addInt("sim/flightmodel/failures/onground_any")
32 emptyWeightID = getter.addFloat("sim/aircraft/weight/acf_m_empty")
33 payloadWeightID = getter.addFloat("sim/flightmodel/weight/m_fixed")
34 grossWeightID = getter.addFloat("sim/flightmodel/weight/m_total")
35 headingID = getter.addFloat("sim/flightmodel/position/psi")
36 pitchID = getter.addFloat("sim/flightmodel/position/theta")
37 bankID = getter.addFloat("sim/flightmodel/position/phi")
38 iasID = getter.addFloat("sim/flightmodel/position/indicated_airspeed2")
39 machID = getter.addFloat("sim/flightmodel/misc/machno")
40 groundSpeedID = getter.addFloat("sim/flightmodel/position/groundspeed")
41 vsID = getter.addFloat("sim/flightmodel/position/vh_ind_fpm2")
42 radioAltitudeID = getter.addFloat("sim/flightmodel/position/y_agl")
43 altitudeID = getter.addFloat("sim/flightmodel/position/elevation")
44 gLoadID = getter.addFloat("sim/flightmodel/forces/g_nrml")
45 flapsControlID = getter.addFloat("sim/flightmodel/controls/flaprqst")
46 flapsLeftID = getter.addFloat("sim/flightmodel/controls/flaprat")
47 flapsRightID = getter.addFloat("sim/flightmodel/controls/flap2rat")
48 navLightsID = getter.addInt("sim/cockpit/electrical/nav_lights_on")
49 beaconLightsID = getter.addInt("sim/cockpit/electrical/beacon_lights_on")
50 strobeLightsID = getter.addInt("sim/cockpit/electrical/strobe_lights_on")
51 landingLightsID = getter.addInt("sim/cockpit/electrical/landing_lights_on")
52 pitotID = getter.addInt("sim/cockpit/switches/pitot_heat_on")
53 parkingID = getter.addFloat("sim/flightmodel/controls/parkbrake")
54 gearControlID = getter.addInt("sim/cockpit2/controls/gear_handle_down")
55 noseGearID = getter.addFloatArray("sim/flightmodel2/gear/deploy_ratio", 1)
56 altimeterID = getter.addFloat("sim/cockpit/misc/barometer_setting")
57 qnhID = getter.addFloat("sim/flightmodel/misc/Qstatic")
58 navTypesID = getter.addIntArray("sim/cockpit/radios/nav_type", 6)
59 busVoltsID = getter.addFloatArray("sim/cockpit2/electrical/bus_volts", 4)
60
61 if dontregister:
62 getter.finalize()
63 else:
64 print "Registering getter..."
65 getter.register()
66 print "Registered getter."
67 print
68
69 while True:
70 getter.execute()
71 print "tail number: '%s', days: %d, zuluSec: %f" % \
72 (getter.getString(tailnumID), getter[daysID], getter[zuluSecID])
73 print "paused=%d, replay=%d, overspeed=%d, stalled=%d, onTheGround=%d" % \
74 (getter[pausedID], getter[replayID], getter[overspeedID],
75 getter[stalledID], getter[onTheGroundID])
76 print "emptyWeight=%f, payloadWeight=%f, grossWeight=%f" % \
77 (getter[emptyWeightID], getter[payloadWeightID],
78 getter[grossWeightID])
79 print "latitude=%f, longitude=%f, radioAltitude=%f, altitude=%f, gLoad=%f" % \
80 (getter[latitudeID], getter[longitudeID],
81 getter[radioAltitudeID]/.3048, getter[altitudeID]/.3048,
82 getter[gLoadID])
83 print "heading=%f, pitch=%f, bank=%f, ias=%f, mach=%f, groundSpeed=%f, vs=%f" % \
84 (getter[headingID], getter[pitchID], getter[bankID],
85 getter[iasID], getter[machID], getter[groundSpeedID],
86 getter[vsID]);
87 print "flapsControl=%f, flapsLeft=%f, flapsRight=%f" % \
88 (getter[flapsControlID], getter[flapsLeftID],
89 getter[flapsRightID]);
90 print "Lights: NAV: %d, beacon: %d, strobe: %d, landing: %d" % \
91 (getter[navLightsID], getter[beaconLightsID],
92 getter[strobeLightsID], getter[landingLightsID]);
93 print "pitot: %d, parking: %f, gearControl: %d, noseGear: %f" % \
94 (getter[pitotID], getter[parkingID],
95 getter[gearControlID], getter[noseGearID][0]);
96 print "altimeter: %f, qnh: %f" % \
97 (getter[altimeterID], getter[qnhID]);
98 print "NAV types:", getter[navTypesID]
99 print "bus voltages:", getter[busVoltsID]
100 print
101 time.sleep(1.0)
102
103 except Exception as e:
104 print ">>>>>>>>>>>>>>>>>>>>>> Exception caught:", str(e)
105 finally:
106 xplane.disconnect()
Note: See TracBrowser for help on using the repository browser.