iow56 Tasterabfrage in Visual Basic

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
marhebo
Posts: 3
Joined: Wed Jul 28, 2010 2:15 pm

iow56 Tasterabfrage in Visual Basic

Post by marhebo »

Hallo Forengemeinde,

ich habe hier einen IOW56 vor mir liegen und möchte diesen als "Fernsteuerung" mit Tastern für eine bestehende VB6-Anwendung nutzen. ( Über die Taster am IOW sollen einfach verschiedene command-buttons in meiner Anwendung "gedrückt" werden )

Also habe ich mal flott alle Ports des iow mit den Tastern verbunden und verusche nun diese in VB abzufragen.
Da ich nur VB-Grundkenntnisse besitze habe ich als Basis das simpleio-Projekt aus dem SDK verwendet.
Hier werden die Ports des iow auf "Knopfdruck" abgefragt. ( Private sub ReadButton_Click() )
Ich möchte aber, das meine Anwendung permanent prüft, ob eine Taste gedrückt wurde. Dafür habe ich die Abfrage des iow in einen Timer gepackt.

Code: Select all

  Dim Res As Long
    Dim N As Long
    Dim Pid As Long

    ' Perform a read
    Pid = IowKitGetProductId(iowHandles(0))
    
    If Pid = IOWKIT_PID_IOW56 Then
      N = 8
    End If
    
    'ReadLabel.Caption = "Reading from IOW"
    ReadLabel.Refresh
    ' Read from IO-Warrior
    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
        TextVal3.Text = ""
        TextVal4.Text = ""
        TextVal5.Text = ""
        TextVal6.Text = ""
        TextVal7.Text = ""
  
    
        TextVal1.Text = Hex$(data(1))
        TextVal2.Text = Hex$(data(2))
        If N = 5 Or N = 8 Then
          TextVal3.Text = Hex$(data(3))
          TextVal4.Text = Hex$(data(4))
        End If
        If N = 8 Then
          TextVal5.Text = Hex$(data(5))
          TextVal6.Text = Hex$(data(6))
          TextVal7.Text = Hex$(data(7))
        End If
       ' ReadLabel.Caption = "Read from IOW complete"
    End If

Funktioniert soweit wunderbar, jedoch habe ich damit folgende Probleme. Während der Timer läuft sind andere Eingabemöglichkeit ( zB. per Maus ) nicht möglich. Diese Eingabe werde erst erfasst nachdem eine beliebige Taste am iow gedrückt wurde. Ausserdem lässt sich der Timer, wenn er einmal läuft, nicht mehr deaktivieren und das Programm lässt sich nicht beenden.

Ich hoffe sehr, dass hier jemanden gibt der mir - mit meine, stümperhaften VB-Wissen - weiterhelfen kann !
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: iow56 Tasterabfrage in Visual Basic

Post by Guido Körber »

Das ist wofür es iowkitReadImmediate und iowkitReadNonblocking gibt. Ersterer fragt dann den aktuellen Status vom IOW ab und kehrt zurück sobald die Antwort da ist, letzterer guckt ob neue Daten im Buffer sind und kommt sofort zurück. iowkitRead ist eine blockierende Funktion die erst zurück kommt wenn Daten vom IOW ankommen.
marhebo
Posts: 3
Joined: Wed Jul 28, 2010 2:15 pm

Re: iow56 Tasterabfrage in Visual Basic

Post by marhebo »

PERFEKT, funktioniert !

Vielen Dank für die schnelle Hilfe !
Post Reply