Jump to content

Recommended Posts

Geschrieben

Hallo Zusammen,

 

ich habe nach längerer Zeit mal wieder meinen "Baukasten" hervor gekramt und wollte nun nochmal ein klein wenig meine alten Programme etwas überarbeiten und erweitern.

 

Nun möchte ich, bei der Initialisierung gerne ermitteln, wie viele Bricklets oder Bricks eines bestimmten Typs im Stack verbaut sind - und, am besten deren UID in eine Liste oder ein Array schreiben.

 

Ich habe mir das z.B. folgender maßen Überlegt:

 

2x MasterBrick

    MasterBrick_1 -> UID: 12345

    MasterBRick_2 -> UID: 67890

 

public int UIDCounter = 0;

//-----------------------------------------------------------------------------
private void EnumerateCB(IPConnection sender, string UID, string connectedUID,
                        char position, short[] hardwareVersion,
                        short[] firmwareVersion, int deviceIdentifier,
                        short enumerationType)
{
   string deviceName = "";

   if (enumerationType == IPConnection.ENUMERATION_TYPE_CONNECTED ||
       enumerationType == IPConnection.ENUMERATION_TYPE_AVAILABLE)
   {
       //
       // Display-Namen anhand des Device-Identifiers ermitteln

       switch (deviceIdentifier.ToString())
       {
          case "13":
             deviceName = BrickMaster.DEVICE_DISPLAY_NAME.ToString();
             break;

           case "17":
             deviceName = BrickRED.DEVICE_DISPLAY_NAME.ToString();
             break;

           case "26":
             deviceName = BrickletDualRelay.DEVICE_DISPLAY_NAME.ToString();
             break;
        }
   }
   
   //
   // MasterBrick Iniziieren
   //
    
   if (deviceIdentifier.ToString() == "13")
   {

/* Count MasterBricks
--> wie oft kommt der DeviceIdentifier 13 vor?
--> für jedes mal die UID ermitteln und in ein Array schreiben
*/
    
      UIDCounter = UIDCounter + 1;

   }

// Baue Liste mit Bricks und Bricklets, FirmwareVersion, UID, ConUID, etc.pp. auf

}

 

Mir werden alle Bricks und Bricklets samt UID in der Liste (ListView) korrekt angezeigt - und im Grunde funktioniert soweit auch alles...

Einzig bei der Lösung, wie ich die jeweilige UID des MasterBricks so abspeichern kann (in ein Array), dass ich später auf die Länge des Arrays und die einzelnen UIDs zugreifen kann stehe ich gerade auf dem Schlauch.

 

Ich will z.B. die Status-LED der angeschlossenen MasterBricks separat steuern können - und da brauche ich dann ja den Connect zum jeweiligen Brick über dessen UID.

 

Sorry, falls diese Frage gerade für Lacher sorgen sollte... vielleicht ist es im Moment auch einfach zu spät... ^^

Geschrieben

Ich habe damit vor kurzer Zeit in ähnlicher Variante getüftelt.

 

Das EnumerateCB bracht mir damals die UID's der Bricklets in der Reihenfolge wie sie angeschlossen sind... Also zuerst A bis D...

Ich Schätze das es sich auch so mit Bricks verhält.

Aber es wird auch die Position mitgegeben die dann auswerten kann.

 

Ich würde die Master in einem Array erstellen.

 

private BrickMaster[] masters = new BrickMaster['AnzahlMaster'] ;

  switch (deviceIdentifier.ToString())
       {
          case "13":
             switch (position)
              {
               case"0":
               masters[0] = new BrickMaster(uid,ipcon);
               break;
               case"1":
               masters[1] = new BrickMaster(uid,ipcon);
               break;
         usw....
              }
             
             break;

       }

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...