Fragensteller
Lesegerät der Härteprüfung equotip3 automatisiert auslesen.

Allgemeine Diskussion
-
Hallo,
ich habe eine fertige dll vom Hersteller, die das Gerät ausliest.
Ich möchte jetzt in VB die DLL automatisiert (am besten durch ein Button) auslesen und die ausgelesenen Daten dann vom Gerät löschen.
Das Gerät wird über das LAN angesprochen. Ein fertiges Programm ist auch vorhanden, nur dass es nicht voll automatisiert ist. Es soll, wie gesagt, durch ein "klicken" voll automatisiert starten.
Die Daten sollen einfach in eine Textdatei gespeichert werden.
Der Hersteller hat auch ein Beispielprogramm in C++ beigefügt. Ich verstehe es jedoch nicht. Ich habe sogar eine fertige exe, jedoch muss der Anwender erst die IP-Adresse angeben oder ob es über USB gehen soll. Die IP-Adresse ist jedoch fest und es soll nur über IP gehen. Also eigentlich muss das Prog ein wenig nur angepasst werden.
Ich wäre über Eure Hilfe sehr dankbar.
Grüße
Marius
- Typ geändert Robert BreitenhoferModerator Montag, 5. Dezember 2011 17:06 Keine Rückmeldung des Fragenstellender
Alle Antworten
-
Hi,
und wie soll hier jemand ohne jegliche Kenntnis des Geräts, des Beispielcodes, der vom Hersteller gelieferten Komponente, ... irgendwas dazu sagen können?
Bitte reich doch mal die notwendigen Informationen nach, dann findet sich bestimmt auch jemand, der dir unter die Arme greifen kann.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Therox_X,
füge doch mal die .dll des Herstellers als Verweis in dein VB Projekt hinzu.
Jetzt solltest du die Ein Objet erzeugen können. (Oder auf Shared Methoden zugreifen können).
Das Opjekt sollte jetzt die nötigen Methoden haben.
Ich denke mal sowas wie ConnectionTyp, IP, Connect, ReadDate, Clear usw.
Ich denke mal im C++ Beispiel Projekt sind zu den Methoden Passende Beispiel implementiert.
Wenn das nicht weiter hilft bitte Stefans hinweis folgen.
MFG
Björn
-
Ich kann es gerne per Mail senden, wenn jemand Interesse hat.
Hallo Therox_X,
Zur Vollständigkeit poste ich hier den Link wo wir nochmals über den Equotip3 Härtemessgerät diskutiert haben.
Wie lese ich Daten aus einem Equotip3 Härtemessgerät über das LAN aus?
Eine .Zip Datei mit den Code (falls der Code zu groß ist) kann man ihm Public Ordner von SkyDrive laden und den link hier Posten. (Wie nutze ich den SkyDrive?)
Grüße,
Robert
- Bearbeitet Robert BreitenhoferModerator Montag, 28. November 2011 14:22 Formatierung
-
Hallo,
hier ist der Link. Hoffe das funktioniert so.
https://skydrive.live.com/#cid=D4FEFA3D536D3529&id=D4FEFA3D536D3529%21105&sc=documents
-
Hallo Therox_X,
In der Datei PqRemoteDemoExcel.rar die Du auf SkyDrive hochgeladen hast gibt es folgende Dateien:
Use PqRemoteOffice.dll for Office Products.txt
PqRemoteOffice.dll (die Native C++ DLL die man aus .NET abrufen muss [1] oder Calling an unmanaged dll from .NET (C#) [2])
PqRemoteDemoExcel.xlsm (Eine Excel Datei die VBA Makro enthält)
Laut der Datei equotip3_automationPackage_OI_E_2011.04.11.pdf : „PqRemoteOffice.dll à This dynamic link library contains exactly the same functions as PqRemote.dll. There is only a difference between the calling conventions used by Office and the calling conventions in C++ projects.“
Nach meiner Meinung gibt es zwei Wege die Automatisierung zu machen:
1) Ein leichterer Weg, indem Du den existierende VBA Code aus PqRemoteDemoExcel.xlsm ein wenig umschreibst und nach der Sub MakeMeasurements(Handle As Integer) die Zehn Werten aus den Zellen in eine TextDatei speicherst.
2) Ein mehr aufwändiger Weg, wo man mehrere Kenntnisse braucht (Marshalling ist ein komplexes Thema) ist der Weg indem Du ein VB.NET Projekt aus Visual Studio verwendest und die Signaturen der Funktionen aus PqRemote.Dll herausfindest…das wäre dann der Fall von den obigen Links [1] und [2]
Ein möglicher Anhaltspunkt um die Signaturen in VB.NET zu bekommen ist die Datei PqRemote.h aus der Datei PqRemoteDemoDLL.rar. Diese kannst Du z.B. dem PInvoke Interop Assistant (hilfreich im Umgang mit nicht gemanagten DLLs. Er kann Dir einiges an Arbeit bei der Konvertierung von C-Funktionssignaturen zu verwalteten P/Invoke-Signaturen abnehmen.) auf der Registerkarte SigImp Translate Snippet geben und Dir den VB.NET Code generieren lassen. Dieser muss dann noch angepasst werden und der Lauffaden der Anwendung kann man sich aus dem Excel VBA nachbasteln in VB.NET.
Zum lesen: Marshalling zwischen verwaltetem und nicht verwaltetem Code und Platform Invoke Data Types
Die einzige Funktion die ich ohne das Gerät testen kann:
Public Class Form1 <System.Runtime.InteropServices.DllImportAttribute("PqRemoteOffice.dll", EntryPoint:="PQ_CheckCompatibility")> _ Public Shared Function PQ_CheckCompatibility(ByVal mainVersion As UInt16, ByVal sideVersion As UInt16) As UInt32 End Function Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click ' VBA Code ' Sub CheckVersion() ' Dim mainVersion As Integer ' Dim sideVersion As Integer ' mainVersion = 1 ' sideVersion = 0 ' x = PQ_CheckCompatibility(mainVersion, sideVersion) ' If (x <> 0) Then ' MsgBox("PQ_CheckCompatibility returned <> 0") ' Exit Sub ' End If 'End Sub Dim mainVersion As UInt16 Dim sideVersion As UInt16 mainVersion = 1 sideVersion = 0 Dim x As UInt32 x = PQ_CheckCompatibility(mainVersion, sideVersion) If x <> 0 Then MsgBox("PQ_CheckCompatibility returned <> 0") Else MsgBox("PQ_CheckCompatibility returned 0") End If End Sub End Class
Grüße,
Robert
-
****************************************************************************************************************
Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
****************************************************************************************************************