I would like to ask if you have any interesting ways to keep track of where the program is now.
I would like to receive such information from the robot’s software without interfering with its program (i.e. using client interfaces).
So for example, the robot stopped between Waypoint4 and Waypoint5 and I will receive this information.
Is it feasible?
You can track the label messages which are sent over the Primary Client interface.
You should not send anything to the Client Interface, hence no interference with the program.
But the Primary Client Interface transmits label markers aka. the “LabelMessage”.
It includes an integer, which refers to the line in the program being executed.
If you open the script, you will find a
$ 3 "Waypoint 7" line before the script from various commands - every time URControl encounters a label marker, a LabelMessage will be sent - in above case with label marker 3.
Thank you for your answer.
So from what I understand, I have to listen to port 30001 all the time and when the sequence will appear:
- int messageSize
- unsigned char messageType = ROBOT_MESSAGE = 20
- uint64_t timestamp
- char source
- char robotMessageType = ROBOT_MESSAGE_PROGRAM_LABEL = 1
then the next variable will be int id which is the label marker?
Is it possible to know in the same way which program is currently running? Or get this information when starting the program?
Correct in respect to the Label Message.
The loaded program can be retrieved using the Dashboard server.