IO-Warrier 24 und RC5 Code in VB-Net auslesen

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
Gunnar
Posts: 6
Joined: Thu Jan 21, 2010 7:47 pm

IO-Warrier 24 und RC5 Code in VB-Net auslesen

Post by Gunnar »

Hallo,

ich hab da eine Grundlegende Fragen zum RC5 Empfang. In meiner Schaltung kann ich in VB-Net dank der Beispiel-Bibliotheken bereits meine Taster auswerten.
Nun möchte ich zusätzlich zu den Eingängen auch RC5 Codes auswerten.
Zum Einlesen der Eingänge benutze ich einen Timer, der mir mittels IowKitReadNonBlocking zyklisch meine Eingänge liest. Wenn ich das nun richtig verstanden habe, muss ich zum Auslesen der RC5 Befehle einen Special Mode aktivieren. Wie ist den da die Vorgehensweise. Wäre über Hilfe dankbar, da ich mit der englischen Beschreibung so meine sprachlichen Probleme habe.

Gruß
Gunnar
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: IO-Warrier 24 und RC5 Code in VB-Net auslesen

Post by friend-of-rq »

@Gunnar

deine Eingänge, fragst Du die über Pipe-0 ab ?
oder über einen Trigger mit ReportID-(FFh) = 255 auf Pipe-1 ?
Welchen IOW verwendest Du ? Type / Version
muss ich zum Auslesen der RC5 Befehle einen Special Mode aktivieren
richtig ! ... geht aber nur beim IOW24.

und dann über Pipe-1 den Stack abfragen, wenn Daten von der RC5-Funktion dabei sind haben diese die Report-ID (0Ch) = 12, wenn als Report-ID (00h) zurück gegeben wird, ist der Stack leer.

Gruss Ralf
Gunnar
Posts: 6
Joined: Thu Jan 21, 2010 7:47 pm

Re: IO-Warrier 24 und RC5 Code in VB-Net auslesen

Post by Gunnar »

Hallo friend-of-rq,

ich hab natürlich den IOW24. Ich rufe Zyklisch ein Unterprogramm auf, und lese den IOW über IowKitReadNonBlocking aus:

Code: Select all

    Private Sub Button_Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Timer.Tick
        Dim Res As Integer
        Dim Pid As Integer
        Dim E0 As String
        Dim E1 As String
        '
        Pid = IowKitGetProductId(iowHandles(0))
        If Pid = IOWKIT_PID_IOW24 Then   ' 3 = IOW 24

            ' Read from IO-Warrior
            Do
                Res = IowKitReadNonBlocking(iowHandles(0), 0, data(0), 3)
                E0 = Convert.ToString(data(1), 2)
                E1 = Convert.ToString(data(2), 2)

        ...
        ... auswerten.....
        ...


            Loop Until Res = 0
        End If
    End Sub
Mehr mache ich eigentlich nicht. Nun will ich aber zusätzlich einen IR-Code auslesen. Bloß verstehe ich das mit den Pipes nicht.

Gruß
Gunnar
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IO-Warrier 24 und RC5 Code in VB-Net auslesen

Post by Guido Körber »

Die Pipes sind so was wie virtuelle Geräte im IO-Warrior, Pipe 0 ist für die einfache I/O und Pipe 1 für Special Mode Functions. Wenn man über Pipe 0 versucht mit der RC5 Funktion zu reden, ist das so wenn man beim Bäcker anruft um die Feuerwehr zu alarmieren.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: IO-Warrier 24 und RC5 Code in VB-Net auslesen

Post by friend-of-rq »

Code: Select all

Res = IowKitReadNonBlocking(iowHandles(0), 0, data(0), 3)    '.... = Pipe(0) 

data(0)= 12 (RC5-Funktion)
data(1)= 1 (enable)
data(3)= 0
Res = IowKitWrite(iowHandles(0), 1, data(0), 3)
danach Pipe(1) genau so wie Du es mit Pipe(0) in einer Schleife abfragen

Code: Select all

Res = IowKitReadNonBlocking(iowHandles(0), 1, data(0), 3)    '.... = Pipe(1) 

bevor Du die Daten aber verarbeitest, bitte auf ( data(0)= 12 ) prüfen, ist ( data(0)= 0 ) dann ist der Stack leer, hast Du z.B. noch andere Funktionen aktiviert, können dann auch andere Reports die übertragen wurden sind im Stack stehen, deswegen immer Report-ID prüfen.
... so einfach geht das ...
Gruss Ralf
Gunnar
Posts: 6
Joined: Thu Jan 21, 2010 7:47 pm

Re: IO-Warrier 24 und RC5 Code in VB-Net auslesen

Post by Gunnar »

Hallo,

vielen Dank für die Info und die Tipps. Leider bin ich immer noch nicht weiter. Eigentlich versteh ich das ja mit den verschiedenen Kanälen. Aber es kommt einfach nicht über Pipe(1) bei mir an.
Grundsätzlich geht das mit RC5, das konnte ich dank All-In-One sehr gut testen (Danke dafür!). Jetzt noch mal etwas Grundsätzliches. Genügt es, wenn ich einmalig bei Programmstart einen

Code: Select all

data(0)= 12
data(1)= 1
data(3)= 0
Res = IowKitWrite(iowHandles(0), 1, data(0), 3)
sende und dann zyklisch nur noch über

Code: Select all

Res = IowKitReadNonBlocking(iowHandles(0), 1, data(0), 3)
auf Eintreffen eines RC5 Codes zu prüfen? Oder muss ich vor jedem Lesen erst mal einen Write machen?
Schon komisch.... so blöd kann man sich doch eigentlich gar nicht anstellen ....Image

Danke für die Hilfe,
Gruß
Gunnar
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IO-Warrier 24 und RC5 Code in VB-Net auslesen

Post by Guido Körber »

Code: Select all

Res = IowKitWrite(iowHandles(0), 1, data(0), 8)
und

Code: Select all

Res = IowKitReadNonBlocking(iowHandles(0), 1, data(0), 8)
würden schon eher den gewünschten Effekt bringen, auf Pipe 1 benutzt der IOW24 8 Bytes.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: IO-Warrier 24 und RC5 Code in VB-Net auslesen

Post by friend-of-rq »

Code: Select all

auf Pipe 1 benutzt der IOW24 8 Bytes
oh sorry habe ich übersehen ...

Gruss Ralf
Gunnar
Posts: 6
Joined: Thu Jan 21, 2010 7:47 pm

Re: IO-Warrier 24 und RC5 Code in VB-Net auslesen

Post by Gunnar »

Hallo,
Guido Körber wrote:

Code: Select all

Res = IowKitWrite(iowHandles(0), 1, data(0), 8)
und

Code: Select all

Res = IowKitReadNonBlocking(iowHandles(0), 1, data(0), 8)
würden schon eher den gewünschten Effekt bringen, auf Pipe 1 benutzt der IOW24 8 Bytes.
super, das war mein Problem. Nun geht's.

Danke für Eure Hilfe Image

Gruß
Gunnar
Post Reply