Jump to content

C# Anzahl der MasterBricks ermitteln / deren UID in ein Array laden


CChris

Recommended Posts

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... ^^

Link to comment
Share on other sites

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;

       }

Link to comment
Share on other sites

  • 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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...