BenniX Geschrieben December 29, 2014 at 20:48 Geschrieben December 29, 2014 at 20:48 Hallo zusammen! Eine Frage, die mich seit Stunden umtreibt. Leider finde ich für das scheinbar einfache Pro. keine Lösung. Könnt Ihr mir bitte helfen? ich initialisiere mit Public ipcon As New IPConnection() ' Create IP connection Public master As New BrickMaster(RaRo.MasterbrickUID, ipcon) ipcon.Connect(RaRo.Host, RaRo.Port) Nun will ich die Komponenten am Master abfragen. Wieso geht das nicht und was muss ich nutzen für getidentity .. funzt nicht ... If master.GetIdentity().deviceIdentifier = "xxx" Then Danke im Voraus. Ben Zitieren
remotecontrol Geschrieben December 30, 2014 at 08:15 Geschrieben December 30, 2014 at 08:15 Den getIdentity brauchst Du eigentlich nicht. Es gibt einen Enumerate Callback in der IPConnection, mit dem Du alle angeschlossen Bricks und Bricklets aufgelistet bekommst. Darüber bekommst Du die UIDs und die Device Typen (Master, Servo, LCD, Temperatursensor etc.). Siehe auch http://www.tinkerforge.com/de/doc/Tutorials/Tutorial_Rugged/Tutorial.html#tutorial-rugged-approach Zitieren
Nic Geschrieben December 30, 2014 at 10:04 Geschrieben December 30, 2014 at 10:04 Es wäre einfacher, wenn ihr euch angewöhnt genauere Angaben zum Problem zu machen ansonsten ist das ein Ratespiel und die Chance auf Feedback im Forum sehr gering. Ich vermute es handelt sich um vb.NET und dazu gibt es sogar ein Beispiel: http://www.tinkerforge.com/de/doc/Software/IPConnection_VBNET.html#enumerate @remotecontrol Ja, über Enumerate ist es robuster, zumal man hier die Mögl. zw. Connect bzw. Disconnect bei USB/Wifi Verbindung detektieren kann. Allerdings ist beim Disconnect unter der Delphi/Lazarus Bindings der Device Typ (255) nicht passend gesetzt. Dann geht es nur über die UId. Ist das bei Deinen Bindings auch so remotecontrol ? Zitieren
remotecontrol Geschrieben December 30, 2014 at 13:48 Geschrieben December 30, 2014 at 13:48 Hallo Nic, ich hab's gerade mal ausprobiert, weil ich auf den Disconnect nur "global" reagiere, d.h. nur den Callback, aber den Disconnect-Enumerate ignoriere. Im Disconnect Enumerate bekomme ich auch keinen Device-Typ (C + Java), sieht das z.B. so aus: Disconnect UID: 6wTCtc Enumeration Type: 2 Connected UID: Position: Hardware Version: 0.0.0 Firmware Version: 0.0.0 Device Identifier: 0 UID: cJW Enumeration Type: 2 Connected UID: Position: Hardware Version: 0.0.0 Firmware Version: 0.0.0 Device Identifier: 0 Den Typ brauche ich zu der Zeit aber auch nicht mehr, da ich mir die Informationen beim Connect merke und im Disconnect ja weiss, welche UIDs und Typen ich hatte. Oder meintest Du etwas anderes? Zitieren
Nic Geschrieben December 30, 2014 at 14:33 Geschrieben December 30, 2014 at 14:33 Nein, völlig korrekt. Ich hatte mich nur gewundert, daß auf den Type beim Connect geprüft werden kann aber nicht beim Disconnect. Bisher ist mir das nie aufgefallen, da ich nur die Chibi-Extensions benutze und dabei kann kein Disconnect detektiert werden. Warum musst du die Infos am Anfang merken ? Zitieren
remotecontrol Geschrieben December 30, 2014 at 14:58 Geschrieben December 30, 2014 at 14:58 Im ersten Enumerate wandle ich die Typ-IDs in spezifische Objekte (LCD, Ambilight etc.) und damit arbeitet die Anwendung dann weiter (UIDs kennt die Anwendung eigentlich nicht), d.h. die Liste der Bricks / Bricklets "merke" ich mir eigentlich, um Befehle senden zu können. Das meine ich mit "merken". Nicht dass ich mir die Enumerate Info 1:1 merke, aber indirekt die Informationen, die ich daraus gewinne. Zitieren
BenniX Geschrieben December 30, 2014 at 16:39 Autor Geschrieben December 30, 2014 at 16:39 Hallo! Danke für die schnelle Hilfe. Soweit funktioniert das nun. Könnt Ihr mir bitte abschließend einen Tipp geben, wie ich schnelle abfrage welche Bricklets am Master alles angeschlossen sind. Danke im Voraus. Beste Grüße, Ben Zitieren
remotecontrol Geschrieben December 30, 2014 at 16:56 Geschrieben December 30, 2014 at 16:56 Die Information bekommst Du über den Enumerate raus. Z. B. liefert der Enumerate beim Connect (Enumerate Type == 0) Informationen dieser Art: UID: 6wTCtc Enumeration Type: 0 Connected UID: 0 Position: 0 Hardware Version: 1.0.0 Firmware Version: 2.0.5 Device Identifier: 14 UID: cJW Enumeration Type: 0 Connected UID: 6wTCtc Position: a Hardware Version: 1.1.0 Firmware Version: 2.0.0 Device Identifier: 25 Die UID 6wTCtc ist ein Servobrick (da Device Identifier == 14), der Servobrick ist der unterste Brick im Stack, da "Connected UID == 0". Ein Masterbrick hätte hier den Identifier 13. Die UID cJW (Device Identifier = 25, das ist ein Distance IR Sensor) ist angeschlossen an 6wTCtc, d.h. dieses Bricklet hängt an dem Brick mit der "Connected UID". Du kannst das nicht direkt abfragen, nur über diese Informationen aus dem Enumerate ableiten. Zitieren
Nic Geschrieben December 31, 2014 at 10:28 Geschrieben December 31, 2014 at 10:28 Soweit funktioniert das nun.bzw abfrage welche Bricklets am Master alles angeschlossen Löst bei mir Stirnrunzeln aus. Aber Du hast ja eine Engelsgeduld remotecontrol . Ev. noch hilfreich eine Übersicht der Identifier: http://www.tinkerforge.com/de/doc/Software/Device_Identifier.html Zitieren
BenniX Geschrieben December 31, 2014 at 14:06 Autor Geschrieben December 31, 2014 at 14:06 Besten Dank! Funktioniert alles wie es soll. Beste Grüße Ben Zitieren
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.