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!!!
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.
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.
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? 😉
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?)?
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 😄
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
Im VB-Beispielprojekt werden die Easy2AcquireCom.dll und OLE Automation (stdole.dll) als Referenz hinzugefügt.
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 ?
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.
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."
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).