ich hoffe, mir kann jemand bei meinem Verständnisproblem helfen.
Ich habe einen Spin Warrior (SW24R4 V1.0.0.0) und daran versuchsweise
einen Drehgeber von HP (HEDS-5700 series, 256 CPR (cycles per revolution))
angeschlossen. Aus der SpinWarriorSDK.zip habe ich das Programm aus dem
Beispielcode (...Windows/Samples/VB6/) so angepaßt, daß die gelesenen
Werte von Spin(0) summiert werden (und einfachheitshalber in Spin(6).caption
geschrieben werden). -> code siehe unten
Ich bewege den Drehgeber langsam mit der Hand. Durch Verändern des Timers
(Timer1 Interval) bekomme ich aber immer andere Werte, z.B.:
Timer1 = 5 -> eine Umdrehung ~1020
Timer1 = 20 -> eine Umdrehung ~1020
Timer1 = 50 -> eine Umdrehung ~1020 *default SDK
Timer1 = 100 -> eine Umdrehung ~600
Timer1 = 200 -> eine Umdrehung ~300
Timer1 = 500 -> eine Umdrehung ~140
Jetzt meine Fragen:
x) Ich sollte im SpinWarrior keinen Überlauf haben (8bit), gehen mir
trotzdem Werte verloren, wenn ich sie nicht in einem bestimmten (?)
Zeitintervall auslese? Ich drehe den Drehgeber sehr langsam!
x) Wird der aktuelle Stand auf 0 gesetzt, wenn ich den Wert auslese?
x) Wenn beim Drehgeber im Datenblatt 256CPR steht, lese ich dann
den Wert "256" vom SpinWarrior zurück?
x) Fehler im Code beim Summieren?
x) ev. kann mir jemand ein Beispiel schicken, wie's geht :)
Danke schon jetzt,
MARIO
Hier der modifizierte Code:
(meine Zeilen sind mit '*** gekennzeichnet! Spins(6).Caption = soll die Summe von Spin(0) sein)
Code: Select all
Dim SpinDev As Long
Dim Sum0 As Long '***
Private Sub Form_Load()
SpinDev = SpinKitOpenDevice
If SpinDev = 0 Then
' Exit from program
MsgBox "No SpinWarrior found!", 0, "Error"
End
End If
Spins(0).Caption = 0 '*** set INI values
Spins(6).Caption = 0 '*** set INI values
' start timer for reading SpinWarrior
Timer1.Enabled = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
' stop timer
Timer1.Enabled = False
' close SpinWarrior
SpinKitCloseDevice (SpinDev)
End Sub
Private Sub Timer1_Timer()
Dim I As Long
Dim Data As SPINKIT_DATA
While SpinKitReadNonBlocking(SpinDev, Data) <> 0
For I = 0 To 5
Spins(I).Caption = Data.Spins(I)
Next I
For I = 0 To 6
If Data.Buttons(I) <> 0 Then
Buttons(I).Caption = "down"
Else
Buttons(I).Caption = "up"
End If
Next I
' -> (Spins(6).Caption) = Sum of Spin(0) '***
Sum = CInt(Spins(0).Caption) + CInt(Spins(6).Caption) '***
Spins(6).Caption = Sum '***
Wend
End Sub