Serial to TCP: Porovnání verzí

Z Poznámkový blok
Přejít na: navigace, hledání
(Jednorázové spusštění)
(Jednorázové spusštění)
 
Řádka 15: Řádka 15:
 
  socat TCP-LISTEN:5000,reuseaddr,fork /dev/ttyACM0,b38400
 
  socat TCP-LISTEN:5000,reuseaddr,fork /dev/ttyACM0,b38400
 
* TCP-LISTEN:5000 – vytvoří TCP server na portu 5000.
 
* TCP-LISTEN:5000 – vytvoří TCP server na portu 5000.
 +
* reuseaddr - umožní okamžité znovuotevření portu nezávislé na TIME_WAIT.
 
* fork – umožní připojení více klientů nebo opakované připojení.
 
* fork – umožní připojení více klientů nebo opakované připojení.
 
* /dev/ttyACM0 – cesta k vašemu sériovému portu (upravte podle sebe).
 
* /dev/ttyACM0 – cesta k vašemu sériovému portu (upravte podle sebe).

Aktuální verze z 15. 8. 2026, 11:09

Úvod

Pro možnost připojení na sériový port přes TCP je vhodné použít socat. Následně pak bude port dostupný přes TCP na nastaveném portě.

Instalace

sudo apt update
sudo apt install socat

Jednorázové spusštění

Prvně potřebujeme zjistit, kde se požadovaný port nachází:

  • /dev/ttyACM0 (nebo /dev/ttyUSB0)
  • UART / GPIO: /dev/serial0 (nebo /dev/ttyAMA0)

Zjistěte také přenosovou rychlost (baud rate), např. 9600 nebo 115200.

Poté můžeme provést spusštění

socat TCP-LISTEN:5000,reuseaddr,fork /dev/ttyACM0,b38400
  • TCP-LISTEN:5000 – vytvoří TCP server na portu 5000.
  • reuseaddr - umožní okamžité znovuotevření portu nezávislé na TIME_WAIT.
  • fork – umožní připojení více klientů nebo opakované připojení.
  • /dev/ttyACM0 – cesta k vašemu sériovému portu (upravte podle sebe).
  • b38400 – rychlost sériové sběrnice (upravte podle vašeho modulu).

(používané přenosové rychlosti: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200)

Systemd

Pokud chceme, aby se spouštěl propojení vždy, vytvoříme systemd.

sudo nano /etc/systemd/system/serial-socat.service
[Unit]
Description=Serial TCP Bridge via socat
After=network.target

[Service]
ExecStart=/usr/bin/socat TCP-LISTEN:5000,reuseaddr,fork /dev/ttyACM0,b115200
Restart=always

[Install]
WantedBy=multi-user.target

Poté službu povolíme

sudo systemctl daemon-reload
sudo systemctl enable --now gps-socat.service