Jump to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

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;

       }

Geschrieben
  • Autor

Danke :)

Ja, für einen ähnlichen Ansatz habe ich mich jetzt auch entschieden.

wollte das ganze sowieso noch einmal "frisch" schreiben... :)

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.