BenniX Posted December 29, 2014 at 08:48 PM Posted December 29, 2014 at 08:48 PM 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 Quote
remotecontrol Posted December 30, 2014 at 08:15 AM Posted December 30, 2014 at 08:15 AM 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 Quote
Nic Posted December 30, 2014 at 10:04 AM Posted December 30, 2014 at 10:04 AM 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 ? Quote
remotecontrol Posted December 30, 2014 at 01:48 PM Posted December 30, 2014 at 01:48 PM 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? Quote
Nic Posted December 30, 2014 at 02:33 PM Posted December 30, 2014 at 02:33 PM 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 ? Quote
remotecontrol Posted December 30, 2014 at 02:58 PM Posted December 30, 2014 at 02:58 PM 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. Quote
BenniX Posted December 30, 2014 at 04:39 PM Author Posted December 30, 2014 at 04:39 PM 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 Quote
remotecontrol Posted December 30, 2014 at 04:56 PM Posted December 30, 2014 at 04:56 PM 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. Quote
Nic Posted December 31, 2014 at 10:28 AM Posted December 31, 2014 at 10:28 AM 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 Quote
BenniX Posted December 31, 2014 at 02:06 PM Author Posted December 31, 2014 at 02:06 PM Besten Dank! Funktioniert alles wie es soll. Beste Grüße Ben Quote
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.