Jump to content

[LabVIEW]Bindings: Prototypen


Recommended Posts

  • 4 weeks later...

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

Link zu diesem Kommentar
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

Link zu diesem Kommentar
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.

Link zu diesem Kommentar
Share on other sites

  • 2 weeks later...

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.

Link zu diesem Kommentar
Share on other sites

...

 

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

 

Ich habe mir das nochmal genauer angeschaut und ein Repository erzeugt: https://github.com/Felmer/TinkerWithG

 

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

Link zu diesem Kommentar
Share on other sites

  • 2 months later...

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  :-[

Link zu diesem Kommentar
Share on other sites

  • 4 weeks later...

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

Link zu diesem Kommentar
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

Link zu diesem Kommentar
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.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...