Dienstag, 22. November 2011

yab - Netzwerk- Karte(n) ermitteln

Wie ich bereits im letzten Post beschrieben habe, ist es, dem "system$"- Befehl sei Dank, nicht besonders schwer/kompliziert entsprechende Informationen aus dem Haiku- System auszulesen. Somit war es relativ einfach die Bezeichnungen der Grafik- Karte(n) auszulesen.

Heute möchte ich zeigen, wie mit einer kleinen Änderung auch die Namen der Netzwerk- Karten angezeigt werden können. Dem/der Programm/Sub- Routine wird dabei lediglich ein neuer Name gegeben und der Such- String (Variable "SearchString$") wird dafür entsprechend angepaßt.

Aufgerufen wird die Routine nun wie folgt ...

print _GetNetworkCard$()

... und als Ergebnis erhält man z.B.

Intel Corporation / 82545EM Gigabit Ethernet Controller (Copper)


export sub _GetNetworkCard$()

  // lokale Variablen definieren
  local SystemInput$
  local NumberOfTokens
  local NumberOfDummyTokens
  local ArrayCounter 
  local SearchString
  local Result$
    
  dim Line$(1)
  dim Dummy$(1)
  dim InfoArray$(1)
 
  SearchString$ = "device Network controller"
  ArrayCounter = 1
  Result$ = ""
 
  // den Befehl "listdev" auf der Kommandozeile und das Ergebnis
  // in SystemInput$ speichern
  SystemInput$ = system$("listdev")

  // den Text in einzelne Zeilen zerlegen
  NumberOfTokens = split(SystemInput$, Line$(), "\n")

  // innerhalb der ermittelten Zeilen den gewünschten String suchen
  // und alle Informationen im Array InfoArray$ speichern
  for i = 1 to NumberOfTokens
 
    if (instr(Line$(i), SearchString$)) then
   
      // Vendor- Name ermitteln
      NumberOfDummyTokens = split(trim$(Line$(i + 1)), Dummy$(), " :")
   
      for k = 4 to NumberOfDummyTokens
   
        InfoArray$(ArrayCounter) = InfoArray$(ArrayCounter) + Dummy$(k) + " "
    
      next k

      // Trennzeichen zwischen Vendor- und Device- Namen einfügen
      InfoArray$(ArrayCounter) = InfoArray$(ArrayCounter) + " / "

      // Device- Name ermitteln
      NumberOfDummyTokens = split(trim$(Line$(i + 2)), Dummy$(), " :")

      for k = 4 to NumberOfDummyTokens
   
        InfoArray$(ArrayCounter) = InfoArray$(ArrayCounter) + Dummy$(k) + " "
    
      next k

      ArrayCounter = ArrayCounter + 1
      Redim InfoArray$(ArrayCounter)

    endif

  next i

  // Informationen in einen durch "\n" (CR) getrennten String schreiben
  // und als Ergebnis zurückliefern
  for i = 1 to arraysize(InfoArray$(), 1) - 1
 
    Result$ = Result$ + InfoArray$(i) + "\n"
  
  next i
 
  return Result$
 
end sub


(getestet mit Haiku R1 Alpha 3 und yab 1.5)


Keine Kommentare:

Kommentar veröffentlichen