Serielle Ports unter Linux ermitteln

Rund um die LCL und andere Komponenten
Antworten
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Serielle Ports unter Linux ermitteln

Beitrag von Timm Thaler »

Wie ermittle ich unter Linux (hier Raspbian auf Raspberry) die verfügbaren seriellen Ports?

Unter Windows gehe ich einfach die "COMx" durch und schaue, welche davon sich öffnen lassen.

Unter Linux scheint es aber mehrere "Arten" von COMs zu geben: ttySx, ttyAMAx, ttyUSBx...

1. Funktioniert das prinzipiell genauso: Aufmachen, wenn erfolgreich merken, wieder zumachen?
2. Welche "Namen" können diese COMs haben, die oben genannten, oder gibt es da noch mehr?

Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Serielle Ports unter Linux ermitteln

Beitrag von Mathias »

Ja das gibt es: viewtopic.php?f=16&t=8230&p=72839&hilit=Ports#p72839


Die Funktion GetSerialPortNames funktioniert mit normalen Linuxhervorragend, sollte eigentlich auf dem Raspi auch gehen.


Unter Windows gehe ich einfach die "COMx" durch und schaue, welche davon sich öffnen lassen.

Dafür habe ich dies noch nie probiert. So viel ich weiss sind die COM-Nummern nicht immer lückenlos unter Windows.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Serielle Ports unter Linux ermitteln

Beitrag von Timm Thaler »

Mathias hat geschrieben:Die Funktion GetSerialPortNames funktioniert mit normalen Linuxhervorragend, sollte eigentlich auf dem Raspi auch gehen.


Meinst Du die aus dem Forumpost oder die aus der BaseUnix?

Dafür habe ich dies noch nie probiert. So viel ich weiss sind die COM-Nummern nicht immer lückenlos unter Windows.


Das macht ja nichts. Dann gibt es ein false zurück und der Port ist entweder nicht vorhanden oder anderweitig belegt.

Woran sehe ich denn, ob der Port unter Linux bereits verwendet wird? Denn wenn ich mir die Einträge in /sys/class/tty anschaue, habe ich da
ttyAMA0 => anscheinend der Uart, an dem das Bluetooth hängt, denn da steht ein hci0 drin.
ttyS0 => anscheinend der Uart, der auf die Gpios geführt wird, da hängt jetzt offenbar noch die serielle Konsole dran, denn gtkterm kann nicht drauf zugreifen.
ttyUSB0 => ein testweise angesteckter USB-seriell-Wandler, auf den gtkterm auch zugreifen kann.

ttyAMA0 wird mit gtkterm gar nicht angezeigt, ttyS0 wird angezeigt, kann aber nicht geöffnet werden.

Code: Alles auswählen

pi@raspi:/ $ cd /sys/class/tty
pi@raspi:/sys/class/tty $ ls
console  tty11  tty17  tty22  tty28  tty33  tty39  tty44  tty5   tty55  tty60  tty9
ptmx     tty12  tty18  tty23  tty29  tty34  tty4   tty45  tty50  tty56  tty61  ttyAMA0
tty      tty13  tty19  tty24  tty3   tty35  tty40  tty46  tty51  tty57  tty62  ttyprintk
tty0     tty14  tty2   tty25  tty30  tty36  tty41  tty47  tty52  tty58  tty63  ttyS0
tty1     tty15  tty20  tty26  tty31  tty37  tty42  tty48  tty53  tty59  tty7   ttyUSB0
tty10    tty16  tty21  tty27  tty32  tty38  tty43  tty49  tty54  tty6   tty8
pi@raspi:/sys/class/tty $ ls ttyAMA0
close_delay   custom_divisor  device  hci0        iomem_reg_shift  irq   port       type     uevent
closing_wait  dev             flags   iomem_base  io_type          line  subsystem  uartclk  xmit_fifo_size
pi@raspi:/sys/class/tty $ ls ttyS0
close_delay   custom_divisor  device  iomem_base       io_type  line  subsystem  uartclk  xmit_fifo_size
closing_wait  dev             flags   iomem_reg_shift  irq      port  type       uevent
pi@raspi:/sys/class/tty $ ls ttyUSB0
dev  device  subsystem  uevent
pi@raspi:/sys/class/tty $

Mathias
Beiträge: 6208
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Serielle Ports unter Linux ermitteln

Beitrag von Mathias »

Den Code im 3. Post.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Serielle Ports unter Linux ermitteln

Beitrag von Timm Thaler »

Danke.

Habs gerade glaube ich geschafft, den Uart im Raspi umzubiegen und werde mir mal ein Terminal basteln.

Gtkterm scheint AMA-Ports nicht anzuzeigen. Mit "dmesg | grep tty" werden mir zwar alle 3 Ports angezeigt, in Gtkterm taucht der ttyAMA0 aber nicht auf. Wenn ich ihn von Hand eintrage, kann ich ihn aber öffnen und ansprechen. Komisch...

Antworten