Samstag, 28. Januar 2012

yab - "EUI64" der FireWire- Schnittstelle ermitteln

Da wir gerade bei der FireWire- Schnittstelle sind, möchte ich Euch gleich noch einen Weg zeigen, wie man, sofern eine FireWire- Schnitstelle vorhanden ist bzw. erkannt wurde, den "EUI64" ("extended unique identifier") ermitteln kann (siehe Bild).




Auch hierzu benutzen wir wieder den Kommandozeilen- Befehl "fwcontrol". Der folgende kleine Quelltext soll dies veranschaulichen. Zu beachten ist, das für die Funktion der Sub- Routine auch die Sub- Routine "_GetFireWire()", aus dem letzten Beitrag, benötigt wird. Die einzelnen Kommentare sollten die Vorgehensweise genügend dokumentieren.


import GetFireWire

export sub _GetFireWireEUI64$()

  // lokale Variablen Definition
  local NumberOfTokens1
  local NumberOfTokens2
  local SystemInfo$
  local Result$

  dim Line1$(1)
  dim Line2$(1)

  Result$ = ""

  // prüfen ob überhaupt eine FireWire- Schnittstelle im
  // System vorhanden ist
  if _GetFireWire() > 0 then

    // wenn ja, "fwcontrol" ausführen und das Ergebnis
    // in SystemInfo$ speichern
    SystemInfo$ = system$("fwcontrol")

    // alles in einzelne Zeilen zerlegen
    NumberOfTokens1 = split(SystemInfo$, Line1$(), "\n")

    // erst bei Zeile 3 beginnen dann alle weiteren Zeilen
    // lesen und durch "\n" getrennt an Result$ übergeben
    for i = 3 to NumberOfTokens1 - 1

      NumberOfTokens2 = split(Line1$(i), Line2$(), " ")

      Result$ = Result$ + Line2$(6) + "\n"

    next i

    // Ergebnis zurückgeben
    return Result$

  else

    // wenn kein EUI64 gefunden wurde
    return "No 'extended unique identifier' found."

  end if
 
end sub


Der Aufruf der Sub- Routine kann dann z.B. in folgender Form geschehen.


EUI64$ = _GetFireWireEUI64()
print EUI64$


Als Ergebnis wird entweder "No 'extended unique identifier' found.", wenn keine FireWire- Schnittstelle vorhanden ist, oder die entsprechenden EUI64- Strings durch "\n" getrennt zurückgegeben. Prinzipiell sollte die Routine auch funktionieren wenn mehr als eine FireWire- Schnittstelle gefunden wird. Auf Grund mangelndem Equipments konnte ich dies aber leider nicht verifizieren.


(getestet mit Haiku R1 Alpha 3 und yab 1.5)

Keine Kommentare:

Kommentar veröffentlichen