Mittwoch, 6. Juni 2012

yab - die Anzahl der USB- Controller ermitteln

Nachdem ich in der Vergangenheit schon einige Routinen zum Auslesen von Hardware- Informationen vorgestellt habe, ist mir nun ein weiteres, interessantes Thema eingefallen. So möchte ich Euch in den nächsten Tagen und Wochen zeigen wie man mit "yab" Informationen zu USB- Controllern und - Geräten auslesen kann. Hilfe bekommen wir dabei wieder von der Kommandozeile und insbesondere von dem Befehl "listusb".

Als erstes möchte ich Euch zeigen wie man die Anzahl der USB- Controller in einem System bestimmen kann. Ruft man im "Terminal" nun den Kommandozeilen- Befehl "listusb" auf, listet dieser alle USB- Controller und angeschlossenen Geräte auf. Für dieses Beispiel ist dies jedoch viel zu viel und so filtern wir die Ausgabe ein wenig mit dem Befehl "grep". Der folgende Befehl gibt dann nur die USB- Hub's aus. Pro USB- Controller gibt es einen USB- Hub, und somit ist die Anzahl der USB- Hub's gleich der Anzahl der vorhandenen USB- Controller.


listusb | grep "hub"


Um das Ganze in "yab" abzubilden kann untenstehende Routine verwendet werden. Parameter müssen in diesem Fall nicht übergeben werden und das Ergebnis ist einfach eine Zahl welche die Anzahl der USB- Controller im System wiedergibt.

Der Aufruf der Sub- Routine kann dabei wie folgt geschehen.


print "USB- Controller: ", _GetUSBControllerCount()


export sub _GetUSBControllerCount()

  // lokale Variablen- Definition
  local SystemInput$
  local NumberOfTokens
 
  dim Line$(1)
 
  // Den Befehl "listusb" ausführen und nach "hub" filtern,
  // so werden nur die USB- Hub's in die Liste aufgenommen.
  SystemInput$ = system$("listusb | grep hub")
 
  // SystemInput$ in einzelne Zeilen zerlegen, die Anzahl
  // der Zeilen ist gleich der Anzahl der USB- Controller.
  NumberOfTokens = split(SystemInput$, Line$(), chr$(10))
 
  return NumberOfTokens - 1
 
end sub


(getestet mit Haiku R1 Alpha 3 und yab 1.5)

Keine Kommentare:

Kommentar veröffentlichen