-> 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
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