Jump to content

Recommended Posts

Posted

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

Posted

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

Posted

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 ?

Posted

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?

Posted

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 ?

Posted

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.

Posted

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

Posted

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.

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