Skip to main content

A Python library for connecting with X-Plane 12 via UDP

Project description

X-Plane UDP

The goal of this package is to allow for high-level, abstract communication with X-Plane via UDP without having to configure the connections manually. It is verified to work with X-Plane 12.4.0.

Installation

To install the package, simply type in your terminal

python3 -m pip install pyxpudp

Python API Documentation

The central point of the library is the XPConnector X-Plane connection object. It can be used either by normally creating the object and calling .close() to terminate the connection, or you can use the with construction, as in the example file. At the moment, it implements a few basic methods, as described below. All of the snippets should be functional in the default C172.

To get the object, simply call

with XPConnector():
    pass

Of course, it's allowed to specify :

  • host_ip (default 'localhost')
  • send_port (port, to which the messages will be sent, default 49000)
  • receive_port (port, that will receive messages from X-Plane, default 49001)
  • listen_freq (frequency of checking for new messages from X-Plane)

Send command

Execute a command.

with XPConnector() as conn: 
    conn.send_command('sim/flight_controls/flaps_down')

Set dataref

Pass the dataref name, then value. Then, optionally the dataref type.

with XPConnector() as conn:
    conn.set_dataref('sim/cockpit/autopilot/heading_mag', 180)

Subscribe to dataref

Subscribing to dataref allows you to fetch its value later on. Fetching without previous subscription automatically subscribes with the frequency of 1Hz. Pass the dataref and then, optionally, the frequency, at which X-Plane is to send the data. To unsubscribe, send the subscription message with freq=0.

with XPConnector() as conn:
    conn.subscribe_to_dataref('sim/cockpit/autopilot/heading_mag')

Get the value of a single dataref

To get the value of a single dataref, pass the dataref name. Optionally you can pass the is_blocking parameter - if it's True (default) the code will block until the dataref is received. If it's False, the requested dataref will return None if it has not been received yet. If the dataref hasn't been subscribed to before, it'll automatically subscribe at the frequency of 1Hz. Note, that in this case, the is_blocking is forced to be True.

with XPConnector() as conn:
    value = conn.get_dataref(
        'sim/cockpit/autopilot/heading_mag',
        is_blocking=False
    )

Subscribe to multiple datarefs

This function is a simple way to subscribe to multiple datarefs. Pass the dataref names and then, optionally, the frequency (keyword argument).

with XPConnector() as conn:
    conn.subscribe_to_datarefs(
        'sim/cockpit/autopilot/heading_mag',
        'sim/cockpit/radios/transponder_code',
        freq=2 
    )

Get multiple datarefs

This function is a simple way to subscribe to multiple datarefs. Pass the dataref names and then, optionally, the is_blocking value (keyword argument). The last argument is documented in the get_dataref section.

with XPConnector() as conn:
    received_datarefs = conn.get_datarefs(
        'sim/cockpit/autopilot/heading_mag',
        'sim/cockpit/radios/transponder_code',
        is_blocking=False
    )

Close the connection

If not using the with construction, close the connection manually. Otherwise, the background threads will not terminate.

conn = XPConnector()
conn.close()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyxpudp-0.0.1.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyxpudp-0.0.1-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file pyxpudp-0.0.1.tar.gz.

File metadata

  • Download URL: pyxpudp-0.0.1.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for pyxpudp-0.0.1.tar.gz
Algorithm Hash digest
SHA256 0160041eada2e732bff2423696dea0593894ad7c9fb46b99fb88acc38742864d
MD5 a6fc4ff1f078bd7fdd52cca4ea9232ed
BLAKE2b-256 1e8ee81a0dd227e27680868091b07f270ba42bf3d43d9b017e4695acba92e56c

See more details on using hashes here.

File details

Details for the file pyxpudp-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: pyxpudp-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for pyxpudp-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2a8e5877232fcb85e7ba88c44c7c7f7dc359562de8874d1fd2663fe80c6c27eb
MD5 e6ab1efafa04bcef7642db5a0efc9941
BLAKE2b-256 4f5c2bf33283103db19fa1198607b3ccddc5f0e32346e6b51e192ba507d52539

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page