LibNodave 64 Bit.

Zuviel Werbung?
-> Hier kostenlos registrieren
Libnodave 64-Bit (libnodave_jfkmod64.dll) mit Excel/VBA 64-Bit

In Excel-VBA können Struct ("benutzerdefinierter Typ") nicht als Wert (ByVal) übergeben werden. Vermutlich daher bei daveNewInterface(..) die Übergabe der zwei Handle einzeln in VBA 32-Bit. Warum das gleiche Vorgehen in der 64-Bit Variante zum Excel-Absturz führt weiss ich nicht. Ich habe alles mögliche ausprobiert...
(Gibt es von der 64-Bit-Kompilierung der DLL ein List-File, wo man sehen kann, welcher Maschinencode erzeugt wurde?)

Zum Glück bietet Libnodave die Funktion daveNewInterface(..) auch als Variante mit Übergabe des Struct als Referenz: davePascalNewInterface(..) Damit funktioniert auch Excel 64-Bit. :D

Der blaue Code führt zum Erfolg:
Code:
[COLOR="#0000FF"]Public Type daveOSserialType
    rfd As LongPtr
    wfd As LongPtr
End Type

Private Declare PtrSafe Function davePascalNewInterface Lib "libnodave_jfkmod64.dll" (ByRef fds As daveOSserialType, ByVal name As String, ByVal localMPI As Long, ByVal protocol As Long, ByVal speed As Long) As LongPtr[/COLOR]

Sub readFromFAFM()
Dim ph As LongPtr, di As LongPtr, dc As LongPtr
[COLOR="#0000FF"]Dim fds As daveOSserialType[/COLOR]
[COLOR="#008000"]'...
'Call daveSetDebug(daveDebugAll)[/COLOR]

Peer$ = "192.168.196.196"
ph = openSocket(102, Peer$)
If (ph > 0) Then
    [COLOR="#0000FF"]fds.rfd = ph
    fds.wfd = ph[/COLOR]
[COLOR="#008000"]'    di = daveNewInterface(ph, ph, "IF1", 0, daveProtoISOTCP, daveSpeed187k)   'schmiert ab![/COLOR]
    [COLOR="#0000FF"]di = davePascalNewInterface(fds, "IF1", 0, daveProtoISOTCP, daveSpeed187k)[/COLOR] 'funktioniert
    res = daveInitAdapter(di)
    If res = 0 Then
        dc = daveNewConnection(di, MpiPpi, Rack, Slot)
        res = daveConnectPLC(dc)

Harald
 
Hallo Leute,

Hat von Euch jemand die Libnodave Verbindung zur SPS mit der 64 Bit Version hingekriegt und zwar mit Win10 und Excel2016?
Habe bisher immer mit VB.Net meine Verbindungen aufgebaut, hat auch Problemlos funktioniert. Ich habe die Version von Harald Libnodave] Beispiel TCP Verbindung zu S7-Welt versucht, jedoch bekomme ich immer die Meldung das libnodave_jfkmod64.dll nicht gefunden wurde. Diese habe ich jedoch in das Verzeichnis C:\Windows\System32 kopiert. Bin mir jedoch nicht sicher ob diese irgendwie registriert werden muss. Admin Rechte habe ich benutzt an dem kann es nicht liegen.
libnodave_jfkmod64 nicht gefunden.jpg
Weiss jemand was ich hier Falsch mache??
Nikola
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Beisamnen,

ich bin zum Thema Libnodave leider noch Blutiger Anfänger hab mir jetzt mal mit PN/DP´s Beispiel aus den FAQ ein Bild gezeichnet nun scheitere ich aber mit der DLL ich habe es wie PN DP schreibt von
https://github.com/dotnetprojects/DotNetSiemensPLCToolBoxLibrary/tree/master/externalDlls das libnodave_jfkmod64.dll heruntergeladen (ich hoffe von github lädt man Dateien herunter indem man auf den RAW Button drückt).
aber immer wenn ich das DLL Registrieren will kommt folgende Meldung:
2016-07-12 15_35_22-System32.png

Ich nutze WIN 10Pro x64 mit Office 2016.

Besten dank schon mal!

Edit hat sich erledigt
habs rausgefunden Datei muss unter c Windows Sytem32 liegen dann läufts und kann auch über den RAE Knop geladen werden
Danke!!
 
Zuletzt bearbeitet:
Zurück
Oben