Serial port handling

From Rsewiki

Back to Basebot

Windows (and Linux)

Arduino IDE

I couldn't find a way to save the serial monitor data to a disk file.

So find another app that allows communication in the serial line and save the output to a disk file (or allow copy-paste to do the same).

Visual Studio Code

From the menu: View -> Command Palette -> Type PlatformIO: New Terminal

(next time, this command will be first in line)

In this terminal type

pio device monitor > aaa.txt

It will try to open the communication and save it to the aaa.txt file.

Try pressing the start button on the robot (wheels up). Then press ctrl-C to stop the monitoring and inspect the file.

(the same for both Windows and Linux)

The file aaa.txt could contain something like:

--- Terminal on /dev/ttyACM1 | 9600 8-N-1
--- Available filters and text transformations: colorize, debug, default, direct, hexlify,  log2file, no control, printable, send_on_enter, time
--- More details at https://bit.ly/pio-monitor-filters
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
0.67 2.00 0.26 -0.26 0 0 0 0 1 0 0 0 1 0 2.13 2.43
1.17 2.00 0.26 -0.26 0 0 0 0 1 0 0 0 1 0 2.13 2.43
1.67 2.00 0.26 -0.26 0 0 0 0 1 0 0 0 1 0 2.13 2.43
2.17 2.00 0.26 -0.26 0 0 0 0 1 0 0 0 1 0 2.13 2.43
2.67 2.00 0.26 -0.26 0 0 0 0 1 0 0 0 1 0 2.13 2.43
...
1998.67 0.00 -0.36 -0.34 0 0 0 0 1 0 0 0 1 0 2.85 3.23
1999.17 0.00 -0.36 -0.34 0 0 0 0 1 0 0 0 1 0 2.85 3.23
1999.67 0.00 -0.36 -0.34 0 0 0 0 1 0 0 0 1 0 2.85 3.23
2000.17 0.00 -0.36 -0.34 0 0 0 0 1 0 0 0 1 0 2.85 3.23
2000.67 0.00 -0.36 -0.34 0 0 0 0 1 0 0 0 1 0 2.85 3.23
2001.17 0.00 -0.36 -0.34 0 0 0 0 1 0 0 0 1 0 2.85 3.23
% Set Sample time 500 usec. Measured Sample time 499.99 usec.

The numeric content depends on the code (the first column is here time in ms). The lead-in text must be removed before loading into Matlab.

Linux

In Linux, the serial device is called /dev/ttyACM0 (typically), and to copy the robot output to a file is:

$ cat /dev/ttyACM0 > aaa.txt

And use ctrl-C to stop.

You can, in another terminal, send commands to the robot, i.e.:

$ echo "start" > /dev/ttyACM0

This is the same as pressing the start button.

Apple

I don't know