digital Eingang

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
hank00
Posts: 6
Joined: Tue Jan 15, 2013 3:24 pm

digital Eingang

Post by hank00 »

Hallo zusammen,
ich arbeite mit einer digitalen Eingangskarte IO16USB 1.5 von Hoffmann und Visual BASIC.
Funktioniert auch, aber ....

bei Aufruf von ReadButton_Click wird der Programmlauf unterbrochen und auf den
nächsten Schaltvorgang gewartet.

Gibt es eine Möglichkeit die Eingangszustände abzufragen o h n e den Programmlauf abzubrechen ?

MfG Hank

' Read something from IO-Warrior
Private Sub ReadButton_Click()
Dim Res As Long
Dim N As Long
Dim Pid As Long

' Perform a read
Pid = IowKitGetProductId(iowHandles(0))
If Pid = IOWKIT_PID_IOW24 Then
N = 3
Else
If Pid = IOWKIT_PID_IOW40 Then
N = 5
Else
If Pid = IOWKIT_PID_IOW56 Then
N = 8
End If
End If
End If

ReadLabel.Caption = "Reading from IOW"
ReadLabel.Refresh

' Read from IO-Warrior
'hier wird der Programmlauf unterbrochen und auf den nächsten Schaltvorgang gewartet.
Res = IowKitRead(iowHandles(0), 0, data(0), N)

' Check results
If Res <> N Then
ReadLabel.Caption = "Read from IOW wrong?"
Else
' Convert and set data
.
.
.
.

ReadLabel.Caption = "Read from IOW complete"
End If
End Sub
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: digital Eingang

Post by Christoph Jung »

Anstelle des IowKitRead() könnte man IowKitReadNonBlocking() verwenden.
Diese Funktion wartet nicht auf Daten sondern gibt die zuletzt gelesenen Daten zurück. IowKitRead() wartet so lange, bis neue (andere) Daten als vorher anliegen.

Oder IowKitSetTimeout() setzten um das Read nach einer Zeit X abzubrechen.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
hank00
Posts: 6
Joined: Tue Jan 15, 2013 3:24 pm

Re: digital Eingang

Post by hank00 »

Danke für die schnelle Hilfe.
Klappt einwandfrei.
MfG Hank
Post Reply