Hallo liebe Gemeinschaft,
nachdem mir kürzlich hier bereits ein guter Fingerzeig gegeben wurde (den ich noch immer versuche nutzbringend umzusetzen; ich bin nun aber etwas schlauer), stehe ich vor einer neuen Wand an der ich nicht weiterkomme. Mein Einstieg in VB.net ist wirklich recht frustrierend und die Lernkurve ist steil...
Ich soll für eine Studienarbeit einen Sensor einer bekannten Firma in mein Programm einbinden. Leider gibt es weder VB-Beispielcode noch eine irgendwie einfach einbindbare Klasse für VB von dieser Firma. Vielmehr gibt es zwei C-Typ .dlls, mit denen die Kommunikation zum Sensor erfolgen soll.
Um es noch etwas umständlicher zu machen und wenn ich es recht verstanden habe, muss man zunächst über einen virtuellen COM-Port auf ein proprietäres Kabel zugreifen (dieser Treiber funktioniert), welches eine Wandlung von USB -> RS485 -> I²C erledigt.
Über dieses Kabel muss ich dann über weitere Befehle einer der dlls mit dem Sensor kommunizieren.
Was mir aber nach längerer Recherche vorliegt ist ein C#-Fragment für das Kabel aus dem ich erkenne, dass die Methoden (oder hier wohl eher Funktionen, da C) über die Methode DllImport nach VB geholt werden. Und hier stecke ich auf, da ich den C#-Code nicht wirklich verstehe.
Ich hoffe, das mir einer von euch hier weiter helfen kann...
Ich weiß nicht, ob ein Code-Fragment dem Urheberrecht unterliegt. Da ich aber keine andere Möglichkeit der Darstellung sehe, werde ich eine Beispielzeile hier angeben. Sollte dieses den Boardrichtlinien widersprechen, so bitte ich um Löschung der betreffenden Zeilen:
Die InteropServices habe ich eingebunden als Imports. Die Zeile jedoch bekomme ich nicht erfolgreich umgeschrieben. Was ich verstehe ist, dass die Funktion OpenPort aus der dll importtiert werden soll und dann als Public Shared Function in VB erscheinen soll. Die Parameter EntryPoint, CharSet und CallingConventions sind offenbar Methoden von DllImport, genaue Funktion unbekannt.
Die zu erzeugende Function hat einen UInteger-Rückgabewert, aber wo wird der definiert? Wird der als Return-Wert aus der C-Funktion übernommen?
Was ich aber gar nicht verstehe ist die Form "out UInt32 aPortHandle". Wieso stehen hier ein Typ und zwei Parameter out und aPortHandle?
Ich hoffe auf einen Fingerzeig, um diesen Import erfolgreich umschreiben zu können und dann die anderen Funktionen auch noch einzubinden.
Mit Dank im Voraus
Joseph
Nachtrag: die DllImport-Zeile konnte ich mittlerweile umschreiben ( = -> := ) , bleibt noch ein unbekannter Abschnitt.
nachdem mir kürzlich hier bereits ein guter Fingerzeig gegeben wurde (den ich noch immer versuche nutzbringend umzusetzen; ich bin nun aber etwas schlauer), stehe ich vor einer neuen Wand an der ich nicht weiterkomme. Mein Einstieg in VB.net ist wirklich recht frustrierend und die Lernkurve ist steil...
Ich soll für eine Studienarbeit einen Sensor einer bekannten Firma in mein Programm einbinden. Leider gibt es weder VB-Beispielcode noch eine irgendwie einfach einbindbare Klasse für VB von dieser Firma. Vielmehr gibt es zwei C-Typ .dlls, mit denen die Kommunikation zum Sensor erfolgen soll.
Um es noch etwas umständlicher zu machen und wenn ich es recht verstanden habe, muss man zunächst über einen virtuellen COM-Port auf ein proprietäres Kabel zugreifen (dieser Treiber funktioniert), welches eine Wandlung von USB -> RS485 -> I²C erledigt.
Über dieses Kabel muss ich dann über weitere Befehle einer der dlls mit dem Sensor kommunizieren.
Was mir aber nach längerer Recherche vorliegt ist ein C#-Fragment für das Kabel aus dem ich erkenne, dass die Methoden (oder hier wohl eher Funktionen, da C) über die Methode DllImport nach VB geholt werden. Und hier stecke ich auf, da ich den C#-Code nicht wirklich verstehe.
Ich hoffe, das mir einer von euch hier weiter helfen kann...
Ich weiß nicht, ob ein Code-Fragment dem Urheberrecht unterliegt. Da ich aber keine andere Möglichkeit der Darstellung sehe, werde ich eine Beispielzeile hier angeben. Sollte dieses den Boardrichtlinien widersprechen, so bitte ich um Löschung der betreffenden Zeilen:
Die InteropServices habe ich eingebunden als Imports. Die Zeile jedoch bekomme ich nicht erfolgreich umgeschrieben. Was ich verstehe ist, dass die Funktion OpenPort aus der dll importtiert werden soll und dann als Public Shared Function in VB erscheinen soll. Die Parameter EntryPoint, CharSet und CallingConventions sind offenbar Methoden von DllImport, genaue Funktion unbekannt.
Die zu erzeugende Function hat einen UInteger-Rückgabewert, aber wo wird der definiert? Wird der als Return-Wert aus der C-Funktion übernommen?
Was ich aber gar nicht verstehe ist die Form "out UInt32 aPortHandle". Wieso stehen hier ein Typ und zwei Parameter out und aPortHandle?
Ich hoffe auf einen Fingerzeig, um diesen Import erfolgreich umschreiben zu können und dann die anderen Funktionen auch noch einzubinden.
Mit Dank im Voraus
Joseph
Nachtrag: die DllImport-Zeile konnte ich mittlerweile umschreiben ( = -> := ) , bleibt noch ein unbekannter Abschnitt.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „JosephP“ ()