Libnodave VB, S7 über CP

OKL

Level-1
Beiträge
143
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ihr,

ich versuche mit Libnodave einige Variablen aus der S7 auszulesen (VBA). Die Verbindung steht, scheinbar hat sich ein Fehler im Quelltext eingeschlichen. Lese ich ein bestimmtes Datenwort aus, erhalte ich eine unsinnig große Zahl. Selbst der Tausch der Bytes vergrößert den Unsinn sogar. In diesem Wort steht die aktuelle Sekunde, also ein Wert von 0 bis 59. Derzeit erhalte ich jedoch 3072, 268435468. Lese ich das DW+1 (lowbyte) aus, erhalte ich den richtigen Wert, also stimmt mit der Dreherei etwas nicht.

Hier der Quelltext:

Private Sub Befehl7_Click()
Dim Bytes() As Byte
Dim longs() As Long
Dim x As Long
Dim y As Long
Dim RetCode As Long
Dim Length As Long
Length = 2
ReDim Bytes(0 To Length - 1)
ReDim longs(0 To Length / 2 - 1)
RetCode = daveReadBytes(hConnection, daveDB, 60, 20, Length, VarPtr(Bytes(0)))
If RetCode = daveResOK Then
CopyMemory longs(0), Bytes(0), Length
txtread = (longs(0))
txtread = txtread & ", " & daveSwapIed_16(longs(0))
Else
txtread = "daveReadBytes ... DB60 ... failed!"
End If
End Sub

Danke für eure Ideen.

MfG

Olaf
 
Dank eines Hinweises funktioniert es jetzt! Statt long musste integer deklariert und übergeben werden. Alles fein.

Vielleicht hilft es jemanden Anders noch.


Mfg

Olaf
 
Zurück
Oben