Using Python With The Xtralien X100
This tutorial gives an introduction to controlling the Xtralien X100 using Python and assumes a working knowledge of basic Python usage, including how to install Python packages onto your system.
Note: For more detailed python tutorials, see our Scientific Python Tutorials.
Communicating with the X100
When communicating with the X100 board over either USB or Network connection, the most important thing to remember is that everything is simply an ASCII string so you can easily read and interpret the communications.
If you want to connect to the X100 board over USB you would be best using the PySerial module, which you can install through
Life is even easier if you would prefer to connect over the network connection as all you will need is already provided along with Python in the form of the
If you simply want to just get up and start then you can also simply install the xtralien python module, as it will install all of the tools you might want to easily connect.
For beginners to Python we recommend using the library to communicate with the Xtralien X100 because it will help you get started without having to worry about any format-specific issues.
Using the Library
Firstly, install the libraries by running one of the following commands.
$ pip install xtralien
or, if you have installed Anaconda
$ conda install xtralien
After this you should be able to use the xtralien module to find and command all of the boards in your network at once. This is possible using a simple script, like below.
# import the library import xtralien # Create a connection to the device device = xtralien.Device('COM1')
# Print hello world
This should print a list of all the CLOI-based devices available on the network. If this doesn't work, or if you are on a large network it may be better to simply add a device manually. The xtralien library defines some classes that encapsulate additional helper functions so that you, as a user have to worry about less, such as converting the strings to the correct encoding.
An example of this is below, using the example of a device located at
192.168.2.33, like you can see in the image.
# import the library import xtralien # Create the device, with a socket connection device = xtralien.Device("192.168.2.33", 8888) # send a command to test the device works response = device.command("cloi hello", wait=True) # print the response, which should be "Hello World" print(response)
Using a network connection
Note: It is also easy to simply use the xtralien module to connect, as there is a utility to scan the network automatically
Connecting over a network connection is nice and easy using the
socket library. All you need to do is create a TCP connection to port
8888 on the IP address of the board.
An example of this might be
192.168.2.33, like seen above, in which case you should be connecting using a command like below.
# Import the required library import socket # Create the initial socket connection = socket.socket() # Connect the local socket to the one on the board connection.connect(("192.168.2.33", 8888)) # Send a "cloi hello" command connection.send("cloi hello") # Make sure that we got "Hello World!" back response = connection.recv(576) if response == "Hello World\n": print("Success") else: print("Not an xtralien board")
Using the above code you should be able to connect to an xtralien board at
192.168.2.33 on port
8888, and if you see
Success printed out on the screen then you have sent a CLOI command, well done.
Using a serial connection
Note: On Windows the COM port can change upon reset, however this can be usually fixed by resetting the board either 1 or 2 more times. This does not appear to happen on UNIX-based machines.
Python provides no
serial library by defualt, so you can install
PySerial instead, which is community-provided code under the Python Software Foundation License, which is an Open-Source approved license.
To install PySerial simply run
$ pip install pyserial
or if you run Anaconda on your system run
$ conda install pyserial
Using it is almost as simple as using the built-in
socket library, with the addition of having to know which serial port you need to select.
# Import the required library import serial # Create a Serial Connection on COMX (where X is the port) # Note: This will be different on different platforms, # the one shown is Microsoft Windows connection = serial.Serial('COMX') # Send a "cloi hello" command connection.write(b"cloi hello") # Read the response response = connection.read(12) if response == b"Hello World\n": print("Success") else: print("Not an xtralien board")
The above code will connect to the serial/COM port
COMX and test the board to make sure it is an xtralien board. If everything is plugged in and connected then running the above code you can check if you are using the correct COM port.