Laden...

.dll Datein einer COM Schnittstelle auslesen

Erstellt von Kleinstein11 vor 7 Jahren Letzter Beitrag vor 7 Jahren 3.281 Views
K
Kleinstein11 Themenstarter:in
21 Beiträge seit 2017
vor 7 Jahren
.dll Datein einer COM Schnittstelle auslesen

Hallo zusammen,

ich bin blutiger C# Anfänger muss aber für meine Bachelor Thesis an Messdaten heran, die ich über eine COM - Schnittstelle einer Messplatte beziehen will.

Die Daten sollen live gemessen werden und live angezeigt werden.

Ich denke, dass die SDK der Messplatte die Daten (x,y Koordinaten, gemessene Kraft, Zeit,...) in mehrere .dll Dateien schreibt.
Außerdem habe ich noch Beispiel polling Dateien in VB geschrieben in der SDK der messplatte gefunden. .lib Dateien habe ich auch gefunden allerdings gehören die ja soweit ich weiß zu den .dll Dateien.

Wie komme ich am besten an die Messdaten heran? Leider konnte mir bis jetzt noch keiner sagen wie ich (nicht selbst erstellte) .dll Dateien auslesen kann.

Vielen Dank für die Hilfe!!!

4.931 Beiträge seit 2008
vor 7 Jahren

Hallo,

gibt es Headerdateien (*.h) dazu (ich denke, die DLL wird wohl in C bzw. C++ erstellt sein - darauf deutet auch die .lib-Datei hin)?

Wenn du die hast, mußt die externe DLL per P/Invoke (bzw. Marshalling) ansprechen. Als Konvertierungstool könntest du dann PInvoke Interop Assistant benutzen.

Wahrscheinlich sind das jetzt alle neue Begriffe für dich, aber da wirst du dich dann einlesen müssen.

PS: Mit "COM - Schnittstelle" meinst du den Hardware-Anschluss, oder? Denn es gibt auch noch das "Component Object Model" (COM) als Programmier-Schnittstelle.

PPS:

Ich denke, dass die SDK der Messplatte die Daten (x,y Koordinaten, gemessene Kraft, Zeit,...) in mehrere .dll Dateien schreibt.

Das liest sich eigenartig, denn in DLLs wird nichts geschrieben, sondern dadrin ist der Code welcher den Zugriff auf die Messplatte durchführt.

K
Kleinstein11 Themenstarter:in
21 Beiträge seit 2017
vor 7 Jahren

Danke für die Schnelle Antwort.
Das kann gut sein dass die dll mit C/c++ erstellen wurden da ich die h. Dateien sowie c++ Beispiel Dateien habe.

Die COM Schnittstelle wurde im SDK Handbuch erwähnt aber ich gehe stark von der component Objekt Model Schnittstelle aus. Da die Messplatte mit 300Hz arbeitet und die Daten mit einer Hardware COM Schnittstelle denke ich gar nicht schnell genug übertragen werden könnten.

Leider konnte ich dann noch nicht herausfinden wohin die dll Dateien die Messdaten hinschreiben.

185 Beiträge seit 2005
vor 7 Jahren

Ich würde sagen, das das SDK dir nur die Daten zur Verfügung stellt, die Daten werden aber bestimmt nicht von den Dll's irgendwohin (in eine Datei) geschrieben.

.... Hardware COM Schnittstelle denke ich gar nicht schnell genug übertragen werden könnten.

denkst du oder weist du? 😉

4.931 Beiträge seit 2008
vor 7 Jahren

Dann zeige mal den Header, daran sieht man dann wie zugegriffen wird (ob über COM oder nicht) - am besten als Anhang einfügen.

PS: Wie wird die Messplatte denn angeschlossen (USB?)?

K
Kleinstein11 Themenstarter:in
21 Beiträge seit 2017
vor 7 Jahren

Ich schaue morgen im Labor nach. Wie könnte man denn sonst die Messdaten in C# abfragen ?
Immer noch per p/invoke oder woher soll c# wissen welche Quelle man benutzt ?

Vielen Dank und entschuldige für diese dummen Fragen , bin wie gesagt Anfänger 😄

K
Kleinstein11 Themenstarter:in
21 Beiträge seit 2017
vor 7 Jahren

Also die Messplatte ist über ein USB Anschluss verbunden. Die samples Dateien habe ich in Anhang gepackt. Die dll und lib waren leider trotz Komprimierung zu groß.

Ich bedanke mich schonmal vielmals.

LG

709 Beiträge seit 2008
vor 7 Jahren

Im VB-Beispielprojekt werden die Easy2AcquireCom.dll und OLE Automation (stdole.dll) als Referenz hinzugefügt.

K
Kleinstein11 Themenstarter:in
21 Beiträge seit 2017
vor 7 Jahren

Also war meine Vermutung richtig die .dll in mein C# projekt einzubinden? Wenn ja bindet man die als Verzeichnis hinzufügen ein? und kann dann einfach die Variablen abrufen oder muss noch ein befehl ausgeführt werden wie Idevice.GetComponents ?

709 Beiträge seit 2008
vor 7 Jahren

Du fügst die DLLs als Referenz zu deinem Projekt hinzu.

Wie du das dann abfragst, steht in der Doku und sollte im Beispielprojekt ersichtlich sein.
Das kannst du dir auch zu C# konvertieren lassen (z.B. hiermit).
Beachte beim konvertierten Code jedoch, dass da noch das using für die Namespaces der Typen aus der DLL fehlt.

K
Kleinstein11 Themenstarter:in
21 Beiträge seit 2017
vor 7 Jahren

Ich hatte zuvor schon versucht die dlls als Verweis hinzuzufügen. Leider erscheint dann nur

Fehlermeldung:
"Der Verweis ist ungültig oder wird nicht unterstützt."

4.931 Beiträge seit 2008
vor 7 Jahren

Läuft denn das VB.NET-Projekt bei dir? Dann kannst du ja dieses als Ausgangsbasis nehmen, denn du kannst ja VB.NET und C# in einer Solution mixen.

Ansonsten schau mal ob du die Komponente als "COM"-Referenz in deinem C#-Projekt hinzufügen kannst (sofern schon eine "Type Library" lokal erstellt und registriert wurde - dies kannst du auch selber mit "tlbimp.exe" durchführen).