Hallo werte VBler!
Ich habe ein Problem an dem ich mir die Zähne ausbeisse und ich habe dabei den Verdacht, dass ich etwas komplett falsch aufgefasst habe.
(1) Ausgangslage:
Ich habe eine .dll sowie auch die Dokumentation als .pdf und weiter einen "Simulator" .exe. Der Simulator gibt Antworten zurück und ersetzt somit die Laseranlage, die ich eigentlich letzten Endes ansprechen will.
In der Dokumentation steht sowas hier:
In meinem VB.Net Projekt (Als eigene Class namens "Wrapper"):
Rufe ich nun die Funktion auf:
Meldet der Simulator: "Client connected"
Ich gehe somit davon aus dass die .dll funktioniert und der weiter unter geschilderte Fehler bei mir liegt.
(2) Ziel
Das Ziel ist simpel: Alle Funktionen einbauen die angeboten werden und sich aus der Dokumentation herauslesen lassen.
Auch Funktionen wie z.b diese:
(3) Problem
Wenn ich nun eben jenes Beispiel (siehe 2) verwirklichen will:
Will es nicht wirklich funktionieren. Ich habe bei der Suche (Google) mehrere mögliche Antworten bekommen. Zum einen dass es als String deklariert werden kann und das auch funktionieren soll. Oder auch als StringBuilder und auch als Byte und Byte().
Folgende Antworten erhalte ich:
String: Nichts. Das Programm schliesst sich einfach auch mit Try Catch kommt nichts.
Byte: ein Zahlenwert (bisher immer 224)
Byte(): "return value" kann nicht gemarshallt werden: Ungültige verwaltete/nicht verwaltete Typenkombination..
StringBuilder: Nichts. Das Programm schliesst sich einfach auch mit Try Catch kommt nichts.
Hier eines der Links die ich bezüglich Typen aufgesucht habe:
marvintest.com/KnowledgeBase/KBArticle.aspx?ID=210
Ich verstehe noch immer nicht wieso es bei String einfach die Anwendung beendet ohne eine Fehlermeldung oder sonst wie mit mir zu Kommunizieren, aber da es bei Connection Funktion die erwartete Aktion ausführ und bei Byte eine Zahl zurückkommt, kann es nicht an der DLL liegen sondern an mir alleine dass ich das char* nicht richtig ins VB.Net übersetze.
Kernfrage: Was für ein Typ stellt eine Funktion in VB.Net dar, welches in C als char* deklariert ist?
Falls Jemand Zeit hat mir das zu erklären, wäre ich sehr dankbar dafür! Selbstverständlich auch anhand von Verweise über Links zu anderen Foren und Beiträgen, aber bitte immer mit der Bereitschaft mich aufzuklären sollte ich den Inhalt nicht gänzlich verstehen.
Danke dass ihr euch Zeit nehmt.
Gruss Hutti
*Topic verschoben*
Ich habe ein Problem an dem ich mir die Zähne ausbeisse und ich habe dabei den Verdacht, dass ich etwas komplett falsch aufgefasst habe.
(1) Ausgangslage:
Ich habe eine .dll sowie auch die Dokumentation als .pdf und weiter einen "Simulator" .exe. Der Simulator gibt Antworten zurück und ersetzt somit die Laseranlage, die ich eigentlich letzten Endes ansprechen will.
In der Dokumentation steht sowas hier:
2.1 Connect To Server
Prototype: int ConnectToServer(void);
Returns: 0 for successful completion, -1 for error.
Description: Establish a network connection of the client PC and the Hyper Rapid server PC.
In meinem VB.Net Projekt (Als eigene Class namens "Wrapper"):
Rufe ich nun die Funktion auf:
Meldet der Simulator: "Client connected"
Ich gehe somit davon aus dass die .dll funktioniert und der weiter unter geschilderte Fehler bei mir liegt.
(2) Ziel
Das Ziel ist simpel: Alle Funktionen einbauen die angeboten werden und sich aus der Dokumentation herauslesen lassen.
Auch Funktionen wie z.b diese:
2.3 Laser Status Get
Prototype: char *StatusGet(void);
Returns: A pointer to a null terminated ASCII string indicating the status of the laser system.
Description: Used to identify the laser status.
(3) Problem
Wenn ich nun eben jenes Beispiel (siehe 2) verwirklichen will:
Will es nicht wirklich funktionieren. Ich habe bei der Suche (Google) mehrere mögliche Antworten bekommen. Zum einen dass es als String deklariert werden kann und das auch funktionieren soll. Oder auch als StringBuilder und auch als Byte und Byte().
Folgende Antworten erhalte ich:
String: Nichts. Das Programm schliesst sich einfach auch mit Try Catch kommt nichts.
Byte: ein Zahlenwert (bisher immer 224)
Byte(): "return value" kann nicht gemarshallt werden: Ungültige verwaltete/nicht verwaltete Typenkombination..
StringBuilder: Nichts. Das Programm schliesst sich einfach auch mit Try Catch kommt nichts.
Hier eines der Links die ich bezüglich Typen aufgesucht habe:
marvintest.com/KnowledgeBase/KBArticle.aspx?ID=210
Ich verstehe noch immer nicht wieso es bei String einfach die Anwendung beendet ohne eine Fehlermeldung oder sonst wie mit mir zu Kommunizieren, aber da es bei Connection Funktion die erwartete Aktion ausführ und bei Byte eine Zahl zurückkommt, kann es nicht an der DLL liegen sondern an mir alleine dass ich das char* nicht richtig ins VB.Net übersetze.
Kernfrage: Was für ein Typ stellt eine Funktion in VB.Net dar, welches in C als char* deklariert ist?
Falls Jemand Zeit hat mir das zu erklären, wäre ich sehr dankbar dafür! Selbstverständlich auch anhand von Verweise über Links zu anderen Foren und Beiträgen, aber bitte immer mit der Bereitschaft mich aufzuklären sollte ich den Inhalt nicht gänzlich verstehen.
Danke dass ihr euch Zeit nehmt.
Gruss Hutti
*Topic verschoben*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()