Jump to content

Tinkerforge und Embarcadero RAD Studio XE


Recommended Posts

Hallo zusammen,

 

ich versuche, die Tinkerforge Bricks und Bricklets via High-Level-API mit Hilfe des Embarcadero RAD Studio XE (Nachfolger des Borland C++-Builders) zu programmieren.

Leider gelingt mir das nicht so recht. Ich habe das Projekt mit ipconnection und dem zu jedem Brick/Bricklet gehörendem Codeteil übersetzen können.

Die Codebestandteile "Create ip connection to brickd" sowie "Create device object" aus den Beispielen funktionieren. Der Teil "Add device to ip connection" schlägt jedoch fehl.

Ich habe das mit mehreren unterschiedlichen Bricklets sowie dem Master Brick ausprobiert. Die Tests der Bricks/Bricklets mit dem Brickviewer funktionieren.

Ich habe die Befürchtung, dass es mit dem Einbinden der Library ws2_32.lib zu tun hat, welche bei den API Bindings in der Tinkerforge Dokumentation beschrieben ist. Ich muss leider zugeben, dass ich keine Ahnung habe, wie ich dem RAD Studio XE die Nutzung dieser Library beibringen kann.

Hat vielleicht jemand eine Idee? Es wäre schade, wenn ich meine Bricklets nicht programmieren könnte. Vielen Dank vorab.

 

 

Viele Grüße

 

Fingerkuppe

Link to comment
Share on other sites

Ich verstehe nicht ganz was du mit fehlschlagen meinst. Es hört sich so an als könntest du dein Programm kompilieren und starten und das Problem tritt dann beim Ausführen des Programms auf.

 

Wenn das so ist, dann ist nicht die ws2_32.lib das Problem. Denn wenn die nicht richtig eingebunden wäre dann würde der Compiler (eigentlich der Linker) einen Fehler melden beim Kompilieren.

 

"Add Device" kann ein E_TIMEOUT (-1) zurückgeben, wenn kein Device mit der passenden UID antwortet. Meinst du dass mit "fehlschlagen"?

 

#define UID "aySDPZAhvvd" // Change to your UID

// Create device object
Master master;
master_create(&master, UID);

 

Die UID die du beim Aufruf der create Funktion übergibst muss exakt die sein die der Brick Viewer für den entsprechenden Brick anzeigt. Vielleicht hast du da einen Tippfehler oder die UID aus dem Beispielcode nicht durch die deines Bricks ersetzt?

Link to comment
Share on other sites

Hallo photron,

 

die UID habe ich direkt aus dem Brickviewer kopiert und schon im Vorfeld mehrfach überprüft.

Der Verdacht, dass es etwas mit der ws2_32.lib zu tun haben könnte, kommt daher, dass in den Angaben zu Tinkerforge API für Visual Studio angemerkt ist, dass man diese Lib explizit einbinden muss.

Zum einen kann ich das Programm auch ohne die explizite Angabe der Library übersetzen, zum anderen habe ich bis jetzt keine Möglichkeit gefunden, dem Linker die Verwendung der ws2_32.lib mit auf den Weg zu geben.

Übrigens habe ich es sowohl mit einer reinen Konsolenanwendung als auch mit einer VCL-Formularanwendung probiert. Dafür, dass es sich um ein Problem beim Übersetzen/Linken handelt spricht auch, dass ich es mit diversen Bricks und den zugehörigen Programmen und Beispielen probiert habe und die Verbindung nicht hergestellt werden kann: Could not connect to Brick.

 

 

Viele Grüße

 

Fingerkuppe

Link to comment
Share on other sites

Okay ich habe mir die Embarcadero RAD Studio XE2 Trial Version installiert. Ich musste ein paar Änderungen am Code vornehmen damit er mit dem Borland Compiler funktioniert.

 

Was hast du getan um den Compiler Fehler wegen PACKED zu beheben?

 

Das eigentliche Problem ist, dass im Moment der Code für Borland Compiler kein Packing für structs aktiviert. Wenn ich das so lasse dann schlägt auch bei mir das add_device fehl.

 

Ich behebe das gerade. Ich denke das wird die Ursache deines Problem sein.

 

Link to comment
Share on other sites

Hallo photron,

 

vielen Dank für den Tipp. Es funktioniert. Damit kann ich schon mal Konsolen-Anwendungen gemäß der mitgelieferten Beispiele übersetzen. Der heutige Abend ist gerettet. Mal schauen, was ich nun mit den Bricklets anstellen kann.

Das Ziel ist übrigens am Ende eine regelmäßige Messung der Bodenfeuchte unterhalb des Estrichs an mehreren unterschiedlichen Stellen, da ich Probleme mit einem undichten Keller habe.

 

 

Vielen Dank nochmal

 

Fingerkuppe

Link to comment
Share on other sites

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