Bidirectional
The Netcat program can shovel data bidirectionally to/from a serial port and over a network, which is very handy indeed.Set the serial port in raw mode and configure it:
# stty -F /dev/ttyUSB0 raw
# stty -F /dev/ttyUSB1 raw
# stty -F /dev/ttyUSB0 19200
# stty -F /dev/ttyUSB1 19200
Set up a netcat listener that will send data to/from the one serial device:
# nc -l 1234 < /dev/ttyUSB1 >/dev/ttyUSB1
Set up a netcat client that will send data to/from the other serial device:
# nc listeneripaddress 1234 < /dev/ttyUSB0 >/dev/ttyUSB0
Unidirectional
For debugging and scripting, you can also use ordinary cat, echo, head or even data definition to access the serial ports: Send data one way only using the common kitty:
# cat /dev/ttyUSB0 > /dev/ttyUSB1
Send a message out a port using echo:
# echo Hello > /dev/ttyUSB0
Send data denoted as hexadecimal values and suppress the LF at the end of the line:
# echo -en "\x12\x23\x45" > /dev/ttyUSB0
Read one character from a serial port using head:
# $CHAR = head -c 1 /dev/ttyUSB0
# echo $CHAR
Unbuffered Operation
The buffering is done by the tty layer and not by nc. Use stty together with netcat to reduce the buffer size to zero:
stty -icanon && nc ...
stty -icanon && nc ...
The above will set the buffer size to zero while netcat is running. it needs to be one command, otherwise the shell may set it back to normal again unexpectedly.
Serial Port Tips
www.aeronetworks.ca/2015/01/serial-port-io.htmlwww.aeronetworks.ca/2014/10/serial-ports-revisited.html
www.aeronetworks.ca/2014/01/crcs-and-serial-ports.html
www.aeronetworks.ca/2013/10/serial-port-tricks.html
www.aeronetworks.ca/2013/05/usb-serial-device-with-unknown-ids.html
www.aeronetworks.ca/2015/10/reading-and-parsing-data-from-serial.html
www.aeronetworks.ca/2013/05/compile-moxa-serial-widget-device.html
Herman
Comments
Post a Comment
On topic comments are welcome. Junk will be deleted.