# Basic test program for the Python client library #------------------------------------------------------------------------------ import time #------------------------------------------------------------------------------ if __name__ == "__main__": from xplra import XPlane, ProtocolException xplane = XPlane() try: print "Connecting to X-Plane..." xplane.connect() print "Connected to X-Plane." print print "Showing a message..." xplane.showMessage("[basictest] Starting tests", 5.0) print print "Querying the versions..." (xplaneVersion, xplmVersion, xplraVersion) = xplane.getVersions() print "X-Plane version: %d, XPLM: %d, XPLRA: %03d" % \ (xplaneVersion, xplmVersion, xplraVersion) print print "Querying the number of the engines..." numEngines = xplane.getInt("sim/aircraft/engine/acf_num_engines") print "The number of engines:", numEngines print try: print "Querying an invalid dataref..." xplane.getInt("sim/aircraft/engine/num_engines") print print ">>>>>>>>>>>> Succeeded!!!!!!!!!!!!!!!!!!!!!!" except ProtocolException as e: print "Exception caugth:", str(e) print print "Querying the spool time of a jet engine..." spoolTime = xplane.getFloat("sim/aircraft/engine/acf_spooltime_jet") print "The spool time:", spoolTime print print "Querying the spool time of a propeller..." spoolTime = xplane.getFloat("sim/aircraft/engine/acf_spooltime_prop") print "The spool time:", spoolTime print print "Querying the coordinates..." latitude = xplane.getDouble("sim/flightmodel/position/latitude") longitude = xplane.getDouble("sim/flightmodel/position/longitude") print "The coordinates: " + `latitude` + ", " + `longitude` print print "Querying the aircraft's description..." result = xplane.getByteArray("sim/aircraft/view/acf_descrip") print "The description:", result print print "Querying the aircraft's description as a string, with an offset of 3..." result2 = xplane.getString("sim/aircraft/view/acf_descrip", offset = 3); print "Got: '" + result2 + "' (" + `len(result2)` + ")" print result2=="h 8 Q400" print print "Querying the aircraft's engine types..." result3 = xplane.getIntArray("sim/aircraft/prop/acf_en_type") print "Got:", result3 print print "Querying the aircraft's propeller directions..." result5 = xplane.getFloatArray("sim/aircraft/prop/acf_prop_dir") print "Got:", result5 print print "Setting the number of the engines to", numEngines + 1 xplane.setInt("sim/aircraft/engine/acf_num_engines", numEngines + 1) numEngines = xplane.getInt("sim/aircraft/engine/acf_num_engines") print "The new number of engines:", numEngines print acfElevUp = xplane.getFloat("sim/aircraft/controls/acf_elev_up") print "Setting the aircraft elevator up control from %f to %f..." % \ (acfElevUp, acfElevUp + 15.0) xplane.setFloat("sim/aircraft/controls/acf_elev_up", acfElevUp + 15.0) acfElevUp = xplane.getFloat("sim/aircraft/controls/acf_elev_up") print "The aircraft elevator up control set to", acfElevUp print localX = xplane.getDouble("sim/flightmodel/position/local_x") print "Setting the aircraft's local X-coordinate from %f to %f..." % \ (localX, localX + 15.0) xplane.setDouble("sim/flightmodel/position/local_x", localX + 15.0) localX = xplane.getDouble("sim/flightmodel/position/local_x") print "The aircraft's local X-coordinate set to", localX print numBlades = xplane.getFloatArray("sim/aircraft/prop/acf_num_blades") print "Setting the number of blades" print " from:", numBlades numBlades = [n+2.5 for n in numBlades] print " to:", numBlades xplane.setFloatArray("sim/aircraft/prop/acf_num_blades", numBlades) numBlades = xplane.getFloatArray("sim/aircraft/prop/acf_num_blades") print "The result:", numBlades print batteryArrayOn = xplane.getIntArray("sim/cockpit/electrical/battery_array_on") print "Setting the batteries" print " from:", batteryArrayOn batteryArrayOn = [1 if b==0 else 0 for b in batteryArrayOn] print " to:", batteryArrayOn xplane.setIntArray("sim/cockpit/electrical/battery_array_on", batteryArrayOn) batteryArrayOn = xplane.getIntArray("sim/cockpit/electrical/battery_array_on") print "The result:", batteryArrayOn print tailNum = [0] * 40 tailNum[0] = ord('H') tailNum[1] = ord('A') tailNum[2] = ord('-') tailNum[3] = ord('V') tailNum[4] = ord('A') tailNum[5] = ord('I') print "Setting the tail number to %s as a byte array..." % (tailNum,) xplane.setByteArray("sim/aircraft/view/acf_tailnum", tailNum) print "The tail number is:", xplane.getString("sim/aircraft/view/acf_tailnum") print tailNum1 = "VAIS" print "Setting the tail number to " + tailNum1 + " as a string..." xplane.setString("sim/aircraft/view/acf_tailnum", tailNum1, 40) print "The tail number is:", xplane.getString("sim/aircraft/view/acf_tailnum") print print "Preparing for the message tests, sleeping for 5 seconds..." time.sleep(5.0) print "Showing a message for 10 seconds..." xplane.showMessage("[basictest] this message appears for 10 seconds", 10.0) print "Sleeping for 3 seconds..." time.sleep(3.0) print "Showing another message interrupting the previous one for 3 seconds" xplane.showMessage("[basictest] but this message interrupts it, and is displayed for 3 seconds", 3.0) print "Sleeping for 5 seconds..." time.sleep(5.0) xplane.showMessage("[basictest] and the tests come to an end!", 5.0) except Exception as e: print ">>>>>>>>>>>>>>>>>>>>>> Exception caught:", str(e) finally: xplane.disconnect()