CChris Posted March 3, 2018 at 12:15 AM Share Posted March 3, 2018 at 12:15 AM 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... ^^ Quote Link to comment Share on other sites More sharing options...
tatzemax Posted March 7, 2018 at 12:49 AM Share Posted March 7, 2018 at 12:49 AM 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; } Quote Link to comment Share on other sites More sharing options...
CChris Posted March 11, 2018 at 07:09 PM Author Share Posted March 11, 2018 at 07:09 PM Danke Ja, für einen ähnlichen Ansatz habe ich mich jetzt auch entschieden. wollte das ganze sowieso noch einmal "frisch" schreiben... Quote Link to comment Share on other sites More sharing options...
Panurong Posted May 9, 2018 at 04:48 AM Share Posted May 9, 2018 at 04:48 AM I'm looking for this code to fit it. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.