Jump to content
Holy

[LabVIEW]Bindings: Prototypen

Recommended Posts

Hallo Zusammen,

 

ich versuche zur Zeit für das Dual Relay Bricklet eine klasse in Labview zu erzeugen (bzw. ich möchte generell von Labview aus auf Tinkerforge Module zugreifen). Als Basis verwende ich die bereits gepostete Library "LV Tinkerforge - LV2010".

 

Hier versuche ich durch kopieren des Template.lvclass eine Dual Relay Bricklet.lvclass zu erzeugen. Ich bin schon soweit, dass ich eine getter und ein setter vi innerhalb der kopierten klasse erzeugt habe (mehr braucht man wohl beim DR-BT nicht :-).

 

Nun versuche ich in einem Test.vi den status der relays abzufragen. Anbei der Source für das getter vi und das test vi.

 

Beim ausführen des Test.vi bekomme ich einen error (91) aus dem getter-vi, dass die Funktion "variant to data" die daten nicht konvertieren kann. Das liegt wohl daran, dass der "data" part leer ist. Wie kann das sein?

 

 

Gruß

LV_TF_DR_test_vi.png.606c5170af6a9ac39c93586a29610d6f.png

LV_TF_DR_get_state.png.42cc9a6fa533ffd248524c9d467b36ab.png

Share this post


Link to post
Share on other sites

Im "Handle Message.vi" muss der entsprechende Code für die Decodierung dieser Funktion hinzugefügt werden. Und an dieser Stelle wird das Variant dann auch mit den gewünschten Daten gefüllt.

 

Ich habe das Dual Relay Bricklet noch händisch hinzugefügt und den Code angefügt.

LV_Tinkerforge_-_LV2010_-_1.0.0.3.zip

Share this post


Link to post
Share on other sites

Da gewünscht habe ich den DC Brick hinzugefügt. Mangels Hardware ist diese Klasse aber ungetestet.

Die Autogenerierung der Bindings ist auch vorran geschritten aber folgende Teile sind noch zu erledigen:

  • Erzeugung des klassen-spezifischen Message-Handlers
  • Erzeugung Getter/Setter-VIs
  • Parsen der Konfigurationsdateien

Ist an dieser Stelle leider noch einiges an Arbeit.

 

Edit: Der Upload des Anhanges wird aktuell mit einem Fehler quittiert. Ich werde es im Tagesverlauf nochmal probieren.

Share this post


Link to post
Share on other sites

Hi,

 

nochmals danke fürs erstellen der DC-Brick-Klasse. Wie besprochen kannst du mir versuchen die Klasse per PN zuzusenden. Ich werde es danach sofort testen und wieder berichten.

 

Gruß

Share this post


Link to post
Share on other sites

Hallo Holy,

 

hat der upload geklappt? Können wir dich irgendwie unterstützen (auf server hochladen, dokumentation etc)?

 

Grüße,

 

Bastian

Share this post


Link to post
Share on other sites

Der Upload funktioniert weiterhin nicht. Folgender Fehler wird ausgegeben:

Ein Fehler ist aufgetreten!
Fehler beim Speichern der Datei, bitte versuchen sie es noch einmal.

Habs mittlerweile auch mehrfach probiert. Hab auch schon über Github nachgedacht aber zum Verteilen von fertigem Code wohl eher weniger geeignet?!

 

Noch kurz zum allgemeinen Stand, bin aus Zeitmangel keinen Millimeter vorran gekommen. :-\ Ich denke das wird sich sicher aber wieder ändern, hoffentlich zeitnah.

Share this post


Link to post
Share on other sites
Habs mittlerweile auch mehrfach probiert. Hab auch schon über Github nachgedacht aber zum Verteilen von fertigem Code wohl eher weniger geeignet?!

 

Eigentlich geht das. Es gibt fertige Links, falls du nur den Source verteilen willst oder du kannst auch kompilierte Pakete hochladen, also etwa eine zip-datei o.ä.

Share this post


Link to post
Share on other sites

Die LabVIEW-Bindings habe ich mittlerweile um folgendes erweitert:

  • Reconnect-Funktionalität der "IP Connection"-Klasse
  • Barometer Bricklet hinzugefügt

Der Download ist unter https://github.com/Felmer/TinkerWithG/downloads zu finden.

Die Autogenerierung hab ich bisher nicht weiter vorran getrieben. Mal sehen ob ich da endlich mal weiter mache  :-[

Share this post


Link to post
Share on other sites

Hallo Holy,

 

ich habe es geschafft, aus deiner IO4 Class eine IO16 zu machen. Aber wenn es um den Interrupt geht, dann hänge ich (gedanklich) in der Luft. Könntest du mir (uns) mal ein Bsp. erstellen, wo du mit IO4 z.B. Eingänge und Ausgänge setzt und die Eingänge dann per Interrupt weiter "bearbeitest"(0=Case 0; 1 =Case 1)?

 

Oder fragst du einfach in X ms per getValue.vi (IO16 getPort.vi)die Werte ab?

 

Thx

Share this post


Link to post
Share on other sites

Hallo Nero,

 

die Bitschieberei und Arbeit mit Masken hat ihre Tücken ;) Was für ein Anwendungsfall würdest du gerne mal realisiert sehen? Anbei mal ein Beispiel welches folgende Funktionalität realisiert:

  • Pin 0 und 2 als Eingänge und 1 und 3 als Ausgänge
  • Wenn entweder Pin 0 oder 2 aktiv dann Ausgabe von Pin 1
  • Wenn Pin 0 und 2 aktiv dann Ausgabe von Pin 1 und Pin 3
  • Wenn keiner der Eingangspins aktiv dann keine Ausgabe von Ausgangspins

 

Das Snippet im Anhang kannst du auch im Github finden.

IO4_Interrupt_Example.thumb.png.80f7dfbc0f54dbedc7f4bdf277849a78.png

Share this post


Link to post
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...