Seite 1 von 1
serial port name finden
Verfasst: 10.05.2017 22:57
von kartmanne
HI,
lt. pb-Hilfe werden serial port Namen mit z.B. "/dev/ttySx" (x=ziffer) angesprochen. Auf meinem Mac gibt's solche Portnamen nicht (10.10. yosemite) was es gibt ist "/dev/tty.irgendwastext.yxz".
Wie kann ich denn nun solche Namen finden? Ziel ist, diese ports in ein spin Gadget einzubauen. Dazu brauche ich dann wohl die Portnamen als String.
Auf win ist das ja einfach. "COM" +str(zahl)
Re: serial port name finden
Verfasst: 10.05.2017 23:07
von NicTheQuick
Re: serial port name finden
Verfasst: 10.05.2017 23:33
von Shardik
Hast Du schon einmal
die beiden Beispiele von Dave Houston aus dem englischen Forum ausprobiert?
Re: serial port name finden
Verfasst: 11.05.2017 08:55
von kartmanne
HI,
@nicthequick: ja, das krieg ich hin, ist ein Auflisten nach Suchkriterien in der Konsole. Ich sehe derzeit nicht, wie ich das so umsetzten kann, dass in pb die ports automatisch gefunden werden. Die Benamungssystematik endet nach meinem bisherigen Amateur-Blick mit dem "." hinter "/dev/tty". Alles was nach dem "." kommt - so meine googelei - entbehrt jeglicher Festlegung.
@shardik: ah, in directories suchen erscheint mir logisch. So müßte ich die Namen als Text kriegen, die da drin liegen. Danke für den Tip. Probier ich mal aus.
Re: serial port name finden
Verfasst: 12.05.2017 16:09
von kartmanne
Hi,
guter Tip. So funktioniert bei mir:
Code: Alles auswählen
ClearGadgetItems(Combo_hd)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
For i=1 To 256
If OpenSerialPort(0,"COM"+Str(I),57600,#PB_SerialPort_NoParity,8,2,#PB_SerialPort_NoHandshake,1024,1024);port erfolgreich geöffnet ?
AddGadgetItem(Combo_hd, -1, "COM"+Str(i))
CloseSerialPort(0)
EndIf
Next i
CompilerCase #PB_OS_MacOS
If ExamineDirectory(0,"/dev/","tty.*")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
If OpenSerialPort(0,"/dev/"+DirectoryEntryName(0),57600,#PB_SerialPort_NoParity,8,2,#PB_SerialPort_NoHandshake,1024,1024);port erfolgreich geöffnet ?
AddGadgetItem(Combo_hd, -1, "/dev/"+DirectoryEntryName(0))
CloseSerialPort(0)
EndIf
EndIf
Wend
FinishDirectory(0)
EndIf
CompilerEndSelect
SetGadgetState(Combo_hd,0)
Habe dhouston's code aus dem oben referenzierten Beispiel für den "Mac-Ast" genommen. Findet alle Geräte in /dev/ und filtert nur die in die ComboBox, die auch seriell geöffnet werden können. Für mich eine sehr gute Lösung.
Merci.