SerialLink#
What is a Serial Link?#
VEXlink enables an EXP Brain to communicate with another EXP Brain, allowing for point-to-point connections and the creation of communication meshes between multiple robots. It supports both wireless and wired communication, with wired connections recommending a modified smart cable to prevent power routing issues. For wireless communication, each robot needs a V5 Robot Radio connected to a Smart Port, and the VEXlink Radio can be used alongside a V5 Controller’s VEXnet radio, which should be connected to the highest numbered Smart Port to avoid conflicts.
The SerialLink class within VEXlink allows for a stream of data to be sent between robots, the contents of the stream needs to be understood by both the transmitting and receiving robot, this class is usually used as part of higher layer of software that encodes and decodes packets as necessary.
To create a VEXlink, both V5 Brains must be connected to a V5 Robot Radio.
Initializing the SerialLink Class#
A VEXlink is created by using the following constructor:
SerialLink(port, name, linktype, wired)
This constructor uses four parameters:
Parameter |
Description |
---|---|
|
A valid Smart Port that the VEXlink Radio is connected to. |
|
The name of this link. It is recommended that this unique string is long enough that when hashed by vexos it will create a unique ID. A bad link name would be something generic such as “vexlink” as it may be used by another team. |
|
The type of link, either |
|
Optional. Whether or not it is a wired link. Set to |
# Construct a VEXlink "seriallink" with the SerialLink class.
seriallink = SerialLink(Ports.PORT1, "Link", VexlinkType.MANAGER)
This seriallink
object will be used in all subsequent examples throughout this API documentation when referring to SerialLink class methods.
Class Methods#
is_linked()#
The is_linked()
method returns the link status of the Serial Link.
Returns: True
if the Serial Link is active and connected to the paired Brain. False
if it is not.
send()#
The send()
method sends a buffer through the Serial Link.
Parameters |
Description |
---|---|
buffer |
A string or bytearray. The message to send. |
Returns: None.
# Send the string 'test'.
seriallink.send('test')
receive()#
The receive(length, timeout)
method receives data from the Serial Link.
Parameters |
Description |
---|---|
length |
The maximum amount of data to wait for. |
timeout |
Optional. The timeout value in milliseconds before the function returns. |
Returns: A bytearray with the received data or None if no data was received.
# Wait for 128 bytes of data for 1000mS.
buffer = seriallink.receive(128, 1000)
received()#
The received(callback)
method registers a callback function for when data is received.
Parameters |
Description |
---|---|
callback |
The callback function to be called when data is received. |
Returns: None.
# Define a function data_received()
def data_received():
# The Brain will print that data was received by the
# Serial Link on the Brain's screen.
Brain.screen.print("data received by Serial Link")
# Run data_received when data is received by the Serial Link.
seriallink.received(data_received)
installed()#
The installed()
method checks if the Serial Link is connected.
Returns: True
if the Serial Link is connected. False
if it is not.