That is how do it: Function GetSerialPortNames(): String; Var sl: TStringlist; Var Info: TSearchRec; hdl: THandle; b: Boolean; Begin sl := TStringlist.create; If FindFirst('/dev/tty*', faSysFile, Info) = 0 Then Begin Repeat b := true; Try hdl := FileOpen('/dev/' + info.Name, fmOpenReadWrite); If hdl = -1 Then Begin b := false; End; Except b := false; End; If hdl >= 0 Then Begin FileClose(hdl); End; If b Then Begin sl.Add('/dev/' + info.Name); End; Until FindNext(info) <> 0; End; FindClose(Info); result := sl.CommaText; sl.free; End;
On 10/6/20 11:35 PM, Bo Berglund via lazarus wrote: > Is there a way to list the available (working) serial ports on a Linux > platform like the RaspberryPi? > > I would like to offer a dropdown list of working serial ports to the > user to select among, but I am dissuaded from it when I do the > following: > > ls -la /dev/tty* > It returns a very long list of serial devices and most of these are > probably not even existing in real life. > > On an RPi I get > /dev/tty > /dev/ttyN (where N=0..63 > /dev/ttyAMA0 <== This is RPi Serial0 port on the pin header. > /dev/ttyprintk > and: > /dev/ttyUSB0../dev/ttyUSB3 depending on what is plugged into USB > > All in all about 70 devices, but not sure which are actually available > for use. > > Is this an impossible task or can one check for "live" serial ports > only? If so how? > > On Windows I have ported a convoluted function from Delphi, which uses > Registry reads to give me the list. > > -- Auf meiner Homepage www.Corpsman.de ist immer was los, ständig wird sie aktualisiert und erweitert. Da ist für jeden was dabei. -- Schütze deine Privatsphäre, nutze E-mail Verschlüsselung. Wie das geht steht z.B. hier : https://support.mozilla.org/en-US/kb/digitally-signing-and-encrypting-messages#w_installing-gpg-and-enigmail -- _______________________________________________ lazarus mailing list lazarus@lists.lazarus-ide.org https://lists.lazarus-ide.org/listinfo/lazarus