[PLUG] sending data from single serial port to multiple readers
Bill Barry
bill at billbarry.org
Tue Sep 10 06:08:18 UTC 2013
On Mon, Sep 9, 2013 at 4:03 PM, Galen Seitz <galens at seitzassoc.com> wrote:
> I should have mentioned that I already tried socat(netcat on steroids).
> Here's the command I started with:
>
> socat tcp-l:9001,reuseaddr,fork /dev/ttyUSB0,raw,echo=0,crnl
>
> This is close to what I want, but the data from the serial port is not
> sent to all readers. I'm not sure, but I think there is a single file
> descriptor associated with the serial data, so it's a first reader wins
> situation, where the first reader is unpredictable. I sent a message to
> the socat developer asking for hints on how to accomplish my particular
> multiple reader situation, but I have yet to hear back.
>
Instead of the fork command you can use ncat that is part of the nmap
distribution
http://nmap.org/ncat/guide/ncat-usage.html
As the page above says:
"With --keep-open (or -k for short), the server receives everything
sent by any of its clients, and anything the server sends is sent to
all of them."
which is exactly what is needed.
Combine that with the socat command to send and receive data from the
serial port
and you get:
ncat --listen --keep-open localhost 9212 --sh-exec "socat -
/dev/ttyUSB0,raw,echo=0,crnl"
Every client that connects to localhost 9212 will be able to send
things to the serial port and anything from the serial port will go
out to every client that is connected to localhost 9212.
I did not test it with a serial port, but did test it like this
from one terminal
ncat --listen --keep-open localhost 9300
from a second terminal
ncat --listen --keep-open localhost 9212 --sh-exec "socat - TCP:localhost:9300"
from a third and fourth terminal
ncat localhost 9212
Now anything typed into the third and fourth terminals appears in
terminal one and anything typed in terminal one goes out to terminals
three and four.
Bill
More information about the PLUG
mailing list