Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
.dll Datein einer COM Schnittstelle auslesen
Kleinstein11
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

.dll Datein einer COM Schnittstelle auslesen

beantworten | zitieren | melden

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!!!
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4131

beantworten | zitieren | melden

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:
Zitat von Kleinstein11
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.
private Nachricht | Beiträge des Benutzers
Kleinstein11
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
MartinH
myCSharp.de - Member

Avatar #avatar-1761.gif


Dabei seit:
Beiträge: 183
Herkunft: Asperg

beantworten | zitieren | melden

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.
Zitat
.... Hardware COM Schnittstelle denke ich gar nicht schnell genug übertragen werden könnten.

denkst du oder weist du? ;)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von MartinH am .
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4131

beantworten | zitieren | melden

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?)?
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers
Kleinstein11
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

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 :D
private Nachricht | Beiträge des Benutzers
Kleinstein11
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

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
Attachments
private Nachricht | Beiträge des Benutzers
pinki
myCSharp.de - Member

Avatar #avatar-4072.jpg


Dabei seit:
Beiträge: 703
Herkunft: OWL

beantworten | zitieren | melden

Im VB-Beispielprojekt werden die Easy2AcquireCom.dll und OLE Automation (stdole.dll) als Referenz hinzugefügt.
private Nachricht | Beiträge des Benutzers
Kleinstein11
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

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 ?
private Nachricht | Beiträge des Benutzers
pinki
myCSharp.de - Member

Avatar #avatar-4072.jpg


Dabei seit:
Beiträge: 703
Herkunft: OWL

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Kleinstein11
myCSharp.de - Member



Dabei seit:
Beiträge: 21

Themenstarter:

beantworten | zitieren | melden

Ich hatte zuvor schon versucht die dlls als Verweis hinzuzufügen. Leider erscheint dann nur
Fehler
"Der Verweis ist ungültig oder wird nicht unterstützt."
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4131

beantworten | zitieren | melden

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).
private Nachricht | Beiträge des Benutzers