LabVIEWForum.de
CPC - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: CPC (/Thread-CPC)

Seiten: 1 2 3


CPC - joe1234 - 18.03.2008 09:35

Hallo liebe Forengemeinde,
ich habe folgendes Gerät CPC USB und möchte es gerne mit LabVIEW nutzen. Leider bin ich nicht so fit im Programmieren. Da ich das Gerät in LV nicht über eine Schnittstelle auswählen kann, muss ich irgendwie die .dll einbinden. Jedoch habe ich genau hier Probleme und wollte um Rat bitten!!!

Hintergrund:
Das Gerät liefert mir Hexadezimalwerte und ich möchte diese Werte direkt in Dezimalwerte um wandeln, so dass ich die Änderung der Werte live verfolgen kann.

Hier noch der Anhang mit .dll und .h Dateien.


CPC - jg - 18.03.2008 10:35

Deine Frage verwirrt etwas. Worum geht es konkret?

Geht es um die komplette Einbindung der dll in LV, wie hier suggeriert?
' schrieb:Da ich das Gerät in LV nicht über eine Schnittstelle auswählen kann, muss ich irgendwie die .dll einbinden. Jedoch habe ich genau hier Probleme und wollte um Rat bitten!!!
Dann viel Spass, bei den ganzen Strukturen, die da in den Header-Dateien definiert werden...

Oder geht es "nur" darum, HEX-Werte in Dezimalwerte zu wandeln?
' schrieb:Das Gerät liefert mir Hexadezimalwerte und ich möchte diese Werte direkt in Dezimalwerte um wandeln, so dass ich die Änderung der Werte live verfolgen kann.
Dann such mal im Forum, hatten wir schon öfters.

MfG, Jens


CPC - joe1234 - 18.03.2008 10:56

' schrieb:Deine Frage verwirrt etwas. Worum geht es konkret?

Geht es um die komplette Einbindung der dll in LV, wie hier suggeriert?

Dann viel Spass, bei den ganzen Strukturen, die da in den Header-Dateien definiert werden...

Oder geht es "nur" darum, HEX-Werte in Dezimalwerte zu wandeln?

Dann such mal im Forum, hatten wir schon öfters.

MfG, Jens

Meine Aufgabe besteht eigentlich darin, das bzw. die Ergebnisse von Hexadezimal in Dezimal umzuwandeln. Was eigentlich nicht so schwer wäre, wenn ich das Gerät mit LV auslesen könnte. Und genau da liegt der Wurm, ich habe keine Ahnung wie ich es auslesen soll!!!

Gruß Joe


CPC - jg - 18.03.2008 12:21

Deine Frage lautet (momentan) also im Klartext:

Wer kann mir bei der Einbindung der CPC-CAN-DLL in LV behilflich sein?

Dann frag das halt auch, anstatt das noch mit HEX->DEZ Konversionen (wofür es übrigens ein VI in der String-Palette gibt) zu vermischen.

MfG, Jens

P.S.: Ach ja, meine Antwort lautet nein, habe bei einer solchen DLL mit Structures hoch 5 keine Lust, mich einzuarbeiten.


CPC - StefanHH - 18.03.2008 12:52

Hallo Joe,

selbiges habe ich vor einiger Zeit auch machen dürfen, allerdings mit anderer HW... Mit Hilfe des NI Wizards "Import shared library" unter LV 8.5 (Menuleiste: Tools/Import/SharedLibrary(.dll)), geht das. Dort gibst du den Pfad zur DLL und Headerfile an und LV erkennt automatisch welche Funktionen zu importieren sind. Für die Strukturen bist du gezwungen eigene Cluster anzulegen, die die structs aus dem header abbilden. Wichtig, wenn du auf selbst definierten Clustern arbeitest, musst du dem CallLibraryFunctionNode, die struktur als Übergabeparameter zur Verfügung stellen (also: am Eingang und Ausgang anschließen.) Ich empfehle die Structs bzw. Cluster als TypeDef anzulegen und alles in einer Bibliothek zu bündeln. Zudem bietet LV tolle Möglichkeiten, die API gleich mit in die VI Dokumentation mit einzubinden.

Diese Aufgabe ist tatsächlich mit etwas Aufwand verbunden und würde zulange dauern, um sich "by the way" damit zu beschäftigen. Aber, falls spezielle Fragen auftreten, helfe ich gerne.

Auf der NI Homepage sind Beispiele dazu zu finden. (Ein hilfreiches war: http://zone.ni.com/devzone/cda/tut/p/id/2818) und wie Jens geschrieben hatte, sind im Forum schon einige Fragen dazu gefallen.

Schönen Gruß,
Stefan


CPC - joe1234 - 18.03.2008 12:56

' schrieb:Wer kann mir bei der Einbindung der CPC-CAN-DLL in LV behilflich sein?

Die Frage ist so nicht ganz richtig. Ich will das Gerät nur "abhören". Wenn ich eine Schnittstelle zum Auswählen hätte, würde ich dananch nur noch "read"-Befehl einbauen, aber genau diese Schnittstelle habe ich nicht!
Das "simple" Konvertieren in Dezimal schaffe ich auch selber.

Gruß Joe


CPC - joe1234 - 20.03.2008 15:10

' schrieb:Hallo Joe,

selbiges habe ich vor einiger Zeit auch machen dürfen, allerdings mit anderer HW... Mit Hilfe des NI Wizards "Import shared library" unter LV 8.5 (Menuleiste: Tools/Import/SharedLibrary(.dll)), geht das. Dort gibst du den Pfad zur DLL und Headerfile an und LV erkennt automatisch welche Funktionen zu importieren sind. Für die Strukturen bist du gezwungen eigene Cluster anzulegen, die die structs aus dem header abbilden. Wichtig, wenn du auf selbst definierten Clustern arbeitest, musst du dem CallLibraryFunctionNode, die struktur als Übergabeparameter zur Verfügung stellen (also: am Eingang und Ausgang anschließen.) Ich empfehle die Structs bzw. Cluster als TypeDef anzulegen und alles in einer Bibliothek zu bündeln. Zudem bietet LV tolle Möglichkeiten, die API gleich mit in die VI Dokumentation mit einzubinden.

Diese Aufgabe ist tatsächlich mit etwas Aufwand verbunden und würde zulange dauern, um sich "by the way" damit zu beschäftigen. Aber, falls spezielle Fragen auftreten, helfe ich gerne.

Auf der NI Homepage sind Beispiele dazu zu finden. (Ein hilfreiches war: http://zone.ni.com/devzone/cda/tut/p/id/2818) und wie Jens geschrieben hatte, sind im Forum schon einige Fragen dazu gefallen.

Schönen Gruß,
Stefan

Danke Stefan, das ist schon um einiges hilfreicher. Ich mache mich gerade damit vertraut und werde mich sicher bald wieder melden.
Ansonsten wünsche ich allen Frohe Ostern und viel Spass beim Eiersuchen!!! ;-)

Gruß Joe


CPC - joe1234 - 25.03.2008 10:05

' schrieb:Hallo Joe,

selbiges habe ich vor einiger Zeit auch machen dürfen, allerdings mit anderer HW... Mit Hilfe des NI Wizards "Import shared library" unter LV 8.5 (Menuleiste: Tools/Import/SharedLibrary(.dll)), geht das. Dort gibst du den Pfad zur DLL und Headerfile an und LV erkennt automatisch welche Funktionen zu importieren sind. Für die Strukturen bist du gezwungen eigene Cluster anzulegen, die die structs aus dem header abbilden. Wichtig, wenn du auf selbst definierten Clustern arbeitest, musst du dem CallLibraryFunctionNode, die struktur als Übergabeparameter zur Verfügung stellen (also: am Eingang und Ausgang anschließen.) Ich empfehle die Structs bzw. Cluster als TypeDef anzulegen und alles in einer Bibliothek zu bündeln. Zudem bietet LV tolle Möglichkeiten, die API gleich mit in die VI Dokumentation mit einzubinden.

Diese Aufgabe ist tatsächlich mit etwas Aufwand verbunden und würde zulange dauern, um sich "by the way" damit zu beschäftigen. Aber, falls spezielle Fragen auftreten, helfe ich gerne.

Auf der NI Homepage sind Beispiele dazu zu finden. (Ein hilfreiches war: http://zone.ni.com/devzone/cda/tut/p/id/2818) und wie Jens geschrieben hatte, sind im Forum schon einige Fragen dazu gefallen.

Schönen Gruß,
Stefan

Hallo,
ich habe nun die cpcwin.dll mit dem Headerfile cpclib.h angegeben. Dabei hatte ich mehrere VIs erhalten. Jedoch ist mir aufgefallen, dass LV nicht alle Funktionen übernommen hat. Dies liegt wohl daran, dass manche Funktionen einen nicht-Standard Übergabeparameter haben (also kein int, char...). Kann das irgendwie umgehen? Also ich würde gerne alle Funktionen übernehmen.

Gruß Joe


CPC - jg - 25.03.2008 10:58

Aha, sind wir also doch hier:

' schrieb:Deine Frage lautet (momentan) also im Klartext:

Wer kann mir bei der Einbindung der CPC-CAN-DLL in LV behilflich sein?

Dann frag das halt auch, anstatt das noch mit HEX->DEZ Konversionen (wofür es übrigens ein VI in der String-Palette gibt) zu vermischen.

MfG, Jens

P.S.: Ach ja, meine Antwort lautet nein, habe bei einer solchen DLL mit Structures hoch 5 keine Lust, mich einzuarbeiten.

Schon das LVF-Tutorial gelesen?

MfG, Jens


CPC - joe1234 - 26.03.2008 11:36

Das Tutorial habe als aller erstes gelesen!!!
Noch bevor ich den Thread hier eröffnet habe.
Trotzdem nochmal zu meiner Frage:
Wenn Funktionen nicht erkannt oder falsch erkannt werden, wie kann ich die Funktionen trotzdem als VI darstellen???

Mir ist aufgefallen, dass es Funktionen sind, die einen eigenen Typ (also kein Standardtyp wie Integer, String, Char...) als Übergabeparameter oder als Rückgabewert haben.

Gruß Joe

Hier habe ich mal die 2 Dateien (.h Datei + .dll Datei) noch herauskopiert, um die es hier eigentlich geht.