Linux: socat - hur att få virtuell serieport att fungera?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
Användarvisningsbild
Synesthesia
Inlägg: 585
Blev medlem: 22 januari 2010, 19:14:10
Ort: Mellan Göteborg och Kungsbacka

Linux: socat - hur att få virtuell serieport att fungera?

Inlägg av Synesthesia »

Meningen är att kunna förlänga/"läsa av" serieporten från annan PC, alltså en fysisk serieport på ett ställe och program som använder serieporten på annat ställe. Tröttnade på att springa mellan datorer så jag testade med terminal/telnet till/från serieporten för att se vad som fungerar.
Det är Ubuntu Linux.

Testade virtuell serieport, öppnade 2 terminaler och "GTKTerm"

Den ena terminalen:

Kod: Markera allt

telnet localhost 1111
Den andra terminalen:

Kod: Markera allt

sudo socat PTY,link=/dev/ttyACM0,echo=0,perm=0777,raw TCP-LISTEN:1111
Seriporten fanns visade GTKTerm men får ingen dataöverföring, någon som lyckats få till en virtuell serieport som fungerar?

Något som däremot fungerade:
På ena datorn:

Kod: Markera allt

sudo socat /dev/ttyS0,raw TCP-LISTEN:2345
På andra datorn:

Kod: Markera allt

telnet <andra datorns ip-adress> 2345
Här visade en terminalen data från serieporten (via telnet)
Sanoj
Inlägg: 7
Blev medlem: 12 november 2008, 22:42:47
Ort: Ryd

Re: Linux: socat - hur att få virtuell serieport att fungera?

Inlägg av Sanoj »

Jag använder Python-paketet pySerial, som stöder RFC 2217, för att fjärransluta serieportar:
https://pyserial.readthedocs.io/en/late ... e-rfc-2217
https://pyserial.readthedocs.io/en/late ... s.miniterm
https://pyserial.readthedocs.io/en/late ... ml#rfc2217

Den stora fördelen med RFC 2217 är att du kan ställa in bithastighet, paritet, osv. från den fjärranslutna maskinen.

På Ubuntu så kan du installera pySerial med kommandot nedan:

Kod: Markera allt

sudo apt install python3-serial
Jag föreslår att du lägger till användaren på datorn med den fysiska serieporten till dialout gruppen. Då slipper du använda sudo för program som använder serieportar.

Kod: Markera allt

sudo usermod -aG dialout $USER
Kör kommandot nedan på datorn med den fysiska serieporten:

Kod: Markera allt

python3 /usr/share/doc/python3-serial/examples/rfc2217_server.py /dev/ttyS0
Kör kommandot nedan på datorn som skall fjärransluta:

Kod: Markera allt

pyserial-miniterm rfc2217://<andra datorns ip-adress>:2217 <önskad bithastihet>
Skriv svar