


PUBLIC SUB RS232ListeGenerieren()
' Die Idee der Suche mit "dmesg" stammt vom GB-Clubmitglied Peter (kapest)
' http://www.gambas-club.de/viewtopic.php?f=3&t=1070&p=2775&hilit=dmesg#p2775
  
  DIM iCount AS Integer
  DIM sZeile, sListeV24, sListeUSB, s AS String
  DIM aSchnittstellenMatrix AS NEW String[]
  DIM aListe AS NEW String[]

  DIM hProcess AS Process
  
  cmbRS232PortName.Clear()
  'aListe = NEW String[]

' Ermittlung echter RS232-Schnittstellen
  SHELL "dmesg | grep ttyS | grep 00:" TO sListeV24  
  IF Len(sListeV24) > 0 THEN
     aSchnittstellenMatrix = Split(sListeV24, " ")
     FOR EACH sZeile IN aSchnittstellenMatrix
         IF InStr(sZeile, "ttyS") THEN
            cmbRS232PortName.Add("/dev/" & Trim$(sZeile))
         ENDIF
     NEXT ' FOR EACH     
  ENDIF ' Len(sListeV24) > 0

' Ermittlung USB-RS232-Adapter-Schnittstellen  
  SHELL "dmesg | grep ttyUSB" TO sListeUSB    
  IF Len(sListeUSB) > 0 THEN
     aSchnittstellenMatrix = Split(sListeUSB, "\n")
     FOR EACH sZeile IN aSchnittstellenMatrix
         FOR iCount = 0 TO 7
             IF InStr(sZeile, "ttyUSB" & CInt(iCount)) THEN
                aListe.Add("ttyUSB" & CInt(iCount))
             ENDIF 
         NEXT ' iCount
     NEXT ' FOR EACH     
  ENDIF ' Len(sListeUSB) > 0
  
  aListe.Sort   
  aListe = RemoveMultiple(aListe)

  FOR iCount = 0 TO aListe.Max
      PRINT aListe[iCount]
      cmbRS232PortName.Add("/dev/" & Trim$(aListe[iCount]))
  NEXT 

  IF cmbRS232PortName.Count = 0
     cmbRS232PortName.Background = Color.RGB(255, 191, 191) ' Alternative: Val("&HD3DDFF") -> hellrot
     cmbRS232PortName.Add("           Keine RS232-Schnittstelle gefunden!")
   ' btnOnOff.Enabled = FALSE
  ENDIF
END ' RS232SchnittstellenlisteGenerieren
