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
Reicht dir das hier?

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.