von VBA in Autoit

  • hallo,

    aktuell versuche ich kontkat mit einem Messgerät derFirma Hp aufzunehmen,
    Bis jetzt funktionierte die Verständigung ledigich im VBA-Code.

    Es werden dort auf 2 Bibliotheken (dll) verwiesen:
    Agilent VISA COM Resource Manager 1.0 ("AgtRM.dll")
    VISA COM 3.0 Type Libary ("GlobMgr.dll")

    Das Objekt VisaComLib gehört zu GlobMgr.dll und Agilent MLib zu AgtRM.dll
    in der ersten Zeile werden die biden Objekte deklariert und der string antwort der die Antwort ausgibt
    in der Funktion openHp() werde den beiden Objekten neue Eigenschaften zugewiesen und anschließend
    Das Gerät unter der Adresse GPIB::22 angesprochen
    Danach werden Befehle an das HP übermittelt, somit endet die Funktion

    Die Funkton readstr() gibt bei Ihren Aufruf den Rückgabwert wieder und speichert diesen in den antwort string


    Dim DMM As VisaComLib.FormattedIO488
    Dim mgr As AgilentRMLib.SRMCls
    Dim antwort As String

    Sub openHp()
    Set mgr = New AgilentRMLib.SRMCls
    Set DMM = New VisaComLib.FormattedIO488
    Set DMM.IO = mgr.Open("GPIB::22")

    DMM.WriteString "OFORMAT ASCII"
    DMM.WriteString "END ALWAYS"

    End Sub

    Sub readstr()
    antwort = DMM.ReadString
    MsgBox antwort
    End Sub


    Nun zu meine Problem mit der Funktion DllCall in Autoit ist es ja möglich Funktionen einer Bibliothek aufzurufen,
    doch wie Rufe ich die Funktion VisaComLib.FormattedIO488.Writestring "Hallo" auf?
    Über Lösungen oder Ansätze jeglicher Art bin sich sehr dankbar,
    Als Download habe ich die beiden dlls hochgeladen


    Vielen Dank

  • Das sieht mir eher nach COM-Objekten und nicht nach DLL-Calls aus. Du müsstst es so hinbekommen:

    [autoit]


    $mgr = ObjCreate("AgilentRMLib.SRMCls")
    $DMM = ObjCreate("VisaComLib.FormattedIO488")
    $DMM.IO = $mgr.Open("GPIB::22")

    [/autoit][autoit][/autoit][autoit]

    $DMM.WriteString "OFORMAT ASCII"
    $DMM.WriteString "END ALWAYS"

    [/autoit][autoit][/autoit][autoit]

    $antwort = $DMM.ReadString
    MsgBox(0, '', $antwort)

    [/autoit]
  • Vielen Dank für die Hilfe...
    Mit dem Com Objekt MSCOMMLib hab ich schon mal gearbeitet

    Wenn ich den Code von Ihnen 1:1 eingebe erhalte ich die Fehlermeldung
    "Variable must be of type "Object""
    Daher geh ich davon aus das das Objekt gar nicht gefunden wird.
    Anschließend habe ich die beiden Bibliotheken in system32 eingespeichert, doch der Fehler bleibt bestehen.


    Nun Frage ich mich aus welchen Verzeichnis holt sich Autoit eigentlich die Objekte ? Immrhin muss man ja keinen Pfad angeben...
    Und muss ich vielleicht die Bibliothek iregendwie "installieren". So war es zumindest bei den MSCOMMLib Objekt obwohl das in einer .ocx Datei war...

    Für weitere Hilfe bin ich sehr dankbar und vielen Dank für die bisherige^^