Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
03.12.2007, 14:07 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2007 20:54 von jg.)
' schrieb:...dann kann(sollte) man ja nach zusätzlich selbst Aufrufe in seine Software einprogrammieren. Die DLL-Schnittstelle von Aladdin ist aber nicht allzu kompliziert.
Probier's mal aus.
MfG, Jens
Hallo,
ich hab nach einiger Zeit des passiven Mitlesens auch mal an eine eigene Anfrage:
Ich habe hier das HASP HL Demo Kit mit einem Dongle zu liegen und kriege es irgendwie nicht hin, dass ich mit LabVIEW (8.0) auf die Donglefunktionen zugreifen kann. Mit anderen Worten: Ich komme irgendwie nicht mit der HASP API klar.
Ich habe es mit einem Knoten zum Aufruf externer Bibliotheken versucht, aber irgendwie kommen dabei immer nur Abstürze raus.
Kann mir vielleicht jemand mal ein Beispiel-VI schicken, wie die Einbindung der hasp_windows_demo.dll aussehen muss?
laut Profil hast du doch LV8.2. Dann hast du doch keine großen Hürden vor dir: Der DLL-Assistent kommt mit den meisten Funktionsaufrufen der hasp-DLL ohne Problem zurecht (Ausnahmen bestätigen hier die Regel, aber die Aufrufe, bei der der Assi Probleme hat, sind eher exotisch).
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
laut Profil hast du doch LV8.2. Dann hast du doch keine großen Hürden vor dir: Der DLL-Assistent kommt mit den meisten Funktionsaufrufen der hasp-DLL ohne Problem zurecht (Ausnahmen bestätigen hier die Regel, aber die Aufrufe, bei der der Assi Probleme hat, sind eher exotisch).
MfG, Jens
Ja, ich hab auf einem Rechner die 8.2, der ist jedoch momentan für mich nicht benutzbar. Also probiere ich hier mit 8.0 rum. Es muss doch ne Möglichkeit geben, die API sinnvoll zu nutzen?!
Tja, eigentlich stehe ich ganz am Anfang. Ich habe bisher nur mal mit dem Knoten zum Einbinden externer DLLs rumprobiert. Da die API allerdings Pointer und Handles verwendet, von denen ich im LabVIEW-Kontext im übrigen bisher nichts gehört hab, fehlt mir irgendwie der Einstieg.
Wenn ich morgen wieder im Büro bin, dann liefere ich mal ein wenig mehr Info's. Bisher schon mal vielen Dank für die Hilfsbereitschaft...
Vendor-Center ist wohl installiert?! Wenn nicht, INSTALLIEREN!
PDF-Manual bzw. PapierManual durchlesen, vor allem der Abschnitt HASP HL API Reference.
Die Aufrufe, die in diesem Abschnitt beschrieben sind, findest du unter ..ProgrammeAladdinHASP HLAPIRuntimeCwin32hasp_windows.dll, im selben Verzeichnis auch die entsprechende Header-Datei hasp_hl.h.
Hilfreich ist auch die Toolbox im VendorCenter, zumindest, solange du dir die C-API anschaust.
Vor der HASP_Handle brauchst du dich nicht gross scheuen, dass ist im Prinzip nur eine U32-Variable.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
' schrieb:Vendor-Center ist wohl installiert?! Wenn nicht, INSTALLIEREN!
Ja, ist drauf... (Vendor Suite)
' schrieb:PDF-Manual bzw. PapierManual durchlesen, vor allem der Abschnitt HASP HL API Reference.
liegt vor mir...
' schrieb:Die Aufrufe, die in diesem Abschnitt beschrieben sind, findest du unter ..ProgrammeAladdinHASP HLAPIRuntimeCwin32hasp_windows.dll, im selben Verzeichnis auch die entsprechende Header-Datei hasp_hl.h.
Bei mir ist es die hasp_windows_demo.dll. Header Datei ist natürlich auch da...
Zu Beginn möchte die Funktion hasp_login ausführen. Die API reference sagt dazu folgendes:
In LabVIEW hab ich einen Knoten zum Aufruf externer Bibliotheken eingefügt.
Darin hab ich dann die dll und die Funktion hasp_login ausgewählt. Die Aufrufkonvention ist auf stdcall (WINAPI) eingestellt.
Nun wirds knifflig:
Was muss für die Ein- und Ausgabeparameter eingestellt werden?
Ich vermute, der Rückgabetyp ist ein String im Format C-String_Zeiger...?
Was muss für feature_id eingestellt werden? Ich vermute, für das Demokit eine 0 oder eine 1?!
Der VendorCode ist der lange Schlüssel, der in der Toolbox auch im Autocode angezeigt wird....in welcher Form wird der in LabVIEW übergeben? Laut reference soll es ja ein Zeiger sein?!
Der session handle soll als Pointer übergeben werden. Wie ich das machen soll, weiß ich auch nicht. Welchen Wert weist man da überhaupt zu?
Die feature_id ist vom Datentyp U32, welche Features auf dem Demo-Dongle installiert waren, weiss ich nicht mehr, aber 0 geht bestimmt.
Das handle ist ebenfalls vom Datentyp U32, als Pointer wird es übergeben, da es ein Wert ist, der durch den Funktionsaufruf geändert wird. Das geht in C nicht anders.
Und den vendor_code habe ich als Array of U8-Bytes übergeben.
Der Rückgabewert der Funktion ist vom Datentyp her "hasp_status_t", das wird auch irgendwo in der Header-Datei definiert, das darfst du jetzt als Übung mal selber herausfinden.
MfG, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
heute konnte ich den ersten Erfolg verzeichnen. Der Login funktioniert schon fast. Ich bekomme zumindest keinen Crash mehr und die DLL gibt einen Fehlercode 22 aus, welcher bedeutet, dass der Vendor Code falsch ist. Das ist auch richtig so, denn ich hab zum Testen nur nen String "abcd" mitgegeben.
Der Vendor Code besteht ja aus ner Menge Zeilen und jeweils viele Zeichen pro Zeile. Sehe ich das richtig, dass ich mir daraus dann ein Array aus U8-Bytes zusammenbauen muss? Kommt dann jedes Zeichen in eine Zelle des Arrays? Das ergibt dann für den ganzen Vendor Code ein Array mit nur einer Zeile und x-Spalten....?!
Das werd ich dann morgen gleich mal testen.
So langsam komme ich wohl dahinter....
Übrigens konnte ich gestern auch noch schnell die DLL-Importfunktion von LV 8.2.1 testen. Das sieht soweit sehr brauchbar aus.
Vielen Dan für die Denkanstöße und Tipps!
Gruss
04.12.2007, 21:26 (Dieser Beitrag wurde zuletzt bearbeitet: 05.12.2007 08:48 von jg.)
' schrieb:Der Vendor Code besteht ja aus ner Menge Zeilen und jeweils viele Zeichen pro Zeile. Sehe ich das richtig, dass ich mir daraus dann ein Array aus U8-Bytes zusammenbauen muss? Kommt dann jedes Zeichen in eine Zelle des Arrays? Das ergibt dann für den ganzen Vendor Code ein Array mit nur einer Zeile und x-Spalten....?!
Genau, String (aber ohne Zeilenumbrüche, also Carriage Returns oder LineFeeds) an die Funktion "String To Byte Array" anschließen, und schon sollte es funzen. Zum Kopieren des Vendor-Codes, öffne einfach mal die Datei "ProgrammeAladdinHASP HLVendorCodesdemoma.hvc" im ASCII-Editor.
MfG, Jens
EDIT: Ach ja, die Feature-ID ist etwas komplizierter, nicht nur einfach 0 oder 1, schau dir mal das Format in der ToolBox des VendorCenter an.
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!