Skip to main content

Functional implementation of the thorlabs APT protocol

Project description

Thorlabs APT protocol

A functional implementation of the Thorlabs APT protocol

Outgoing messages

Outgoing messages are python functions in the top level namespace. Each function has parameters relevant to the particular message, all messages have source and dest parameters. The function names are lower-cased from the names in the documentation and the "MGMSG_" has been omitted. These functions return bytes, they do not send the message over the transport layer

For example:

>>> import thorlabs_apt_protocol as apt
>>> 
>>> apt.mot_move_home(source=1, dest=0x50 ,chan_ident=1)
b'C\x04\x01\x00P\x01'
>>> apt.mot_move_absolute(source=1, dest=0x50, chan_ident=1, position=2048)
b'S\x04\x06\x00\xd0\x01\x01\x00\x00\x08\x00\x00'

Incoming messages

Functions which allow for parsing bytes into dictionaries are also provided, but are not imported into the top level namespace by default. The recommended way of parsing is to use the provided Unpacker object.

This object takes a file-like object (such as a pyserial Serial instance) and provides a generator to parse the incomming messages. If no file object is provided, and internal BytesIO instance is used, and can be provided with bytes via the feed method. The generator yields namedtuple instances.

Usage with pyserial:

>>> import thorlabs_apt_protocol as apt
>>> import serial
>>> 
>>> port = serial.Serial("/dev/ttyUSB0", 115200, rtscts=True, timeout=0.1)
>>> port.rts = True
>>> port.reset_input_buffer()
>>> port.reset_output_buffer()
>>> port.rts = False
>>> port.write(apt.hw_no_flash_programming(source=1, dest=0x50))
>>> unpacker = apt.Unpacker(port)
>>> for msg in unpacker:
...     print(msg)
... 
>>> 

On Windows, you must toggle a driver setting to make the COM port appear:

Within Device Manager, right click on the APT device (under USB devices), and go to Properties. On the Advanced tab, check the box that says Load VCP (VCP stands for Virtual COM Port). Unplug and replug the USB cable to make it load the COM Port.

If the Advanced tab does not appear, I was able to use FTDI's FT_PROG. With all other Thorlabs programs not running, click Devices > Scan for devices. Review over the provided ID information to ensure that you are editing the correct device, FTDI provides serial communication for many different devices from several manufacturers, it is very possible you have multiple devices which show up. Under the Hardware Specific, uncheck the Load D2XX box. This box is a bit of a misnomer, as it really means "Load only D2XX", as when unchecked the D2XX driver (which the Thorlabs provided programs use) is still loaded, but the VCP driver is also loaded. Click Devices > Program.

Upon reconnecting (unplug and replug USB) the Advanced tab should appear as above, but the Load VCP driver option may not be checked yet.

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

thorlabs-apt-protocol-25.1.0.tar.gz (21.1 kB view details)

Uploaded Source

Built Distribution

thorlabs_apt_protocol-25.1.0-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file thorlabs-apt-protocol-25.1.0.tar.gz.

File metadata

File hashes

Hashes for thorlabs-apt-protocol-25.1.0.tar.gz
Algorithm Hash digest
SHA256 acaefa014c7c70d3f574a397d258693e99234fb1acd86df10dcd9119a366adbf
MD5 0fbe40175a918a7050e76b062b747ccd
BLAKE2b-256 239af40672626f0b5633ccfb4b7a911622fc52636c350a3d3a9c25a8b90f4c11

See more details on using hashes here.

File details

Details for the file thorlabs_apt_protocol-25.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for thorlabs_apt_protocol-25.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7922d5ca70ca5d7c06d5efb696fbe27c47b4434c58cac05a9335ef30cc96113b
MD5 c4ca91bcde8a166e4b65e186efb4734f
BLAKE2b-256 8633e1fc0a4378c5ba4fe70bb916ef28390463ff3a9f49a3c8514fbd59fdd55e

See more details on using hashes here.

Supported by

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