Intellibox probleme mit XEvent

Für alle Diskussionen rund um digitale Modellbahntechnik und alles zum Thema Software Modellbahnplanung und Modellbahnsteuerung
Antworten
faja8283

Intellibox probleme mit XEvent

Beitrag von faja8283 » Sonntag 16. Mai 2010, 17:58

Hallo,

ich versuche gerade ein Programm in C# zur Steuerung meiner Modellbahnanlage zu schreiben.
Ich kann auch schon alles steuern.

Bekomme aber die Events, z. Bsp. die Rückmeldung der S88 oder beim Stellen der Weichen mit der IB, nicht mit dem Befehl XEvent (C8h) zurück.
Die Antwort der IB ist immer 2 Byts mit dem Wert 0. Was mache ich falsch? Muss ich da noch irgendetwas an der IB einstellen?
Das Demoprogramm in QBasic von Uhlenbrock liefert alle Ereignisse (Events) die ich brauche, dennoch werde ich aus dem Programm nicht schlau.

Ich hoffe mir kann jemand helfen.

Vielen Dank im Voraus.

Benutzeravatar
Bernie-Bärchen
Forumane
Beiträge: 472
Registriert: Sonntag 3. August 2008, 00:15

Re: Intellibox probleme mit XEvent

Beitrag von Bernie-Bärchen » Sonntag 16. Mai 2010, 19:21

Das hier ist mein Codeschnipsel, allerdings in VB6. Vielleicht kannst Du ja was damit anfangen.

Private Sub S88_Timer_Timer()
Static a, B, c, D, E, F As String
Static I, H As Integer
a = ""
B = ""
c = ""
D = ""
E = ""
F = ""

'alle Zeichen des InputBuffers liefern
Modem2.InputLen = 0

'InputBuffer lesen und damit LÖSCHEN
' --- (damit er 'sauber' ist)
a = Modem2.Input
D = Modem2.Input

'evtuellen Schrott in A und D löschen
a = ""
D = ""

'--- 1. S88 ----
Modem2.Output = Chr(193)
'warten, bis 2 Bytes empfangen wurden
Do While Len(a) < 2
a = a & Modem2.Input
DoEvents
Loop

'--- 2. S88 ----
Modem2.Output = Chr(194)
'warten, bis 2 Bytes empfangen wurden
Do While Len(D) < 2
D = D & Modem2.Input
DoEvents
Loop

' --- empfangene Daten auswerten
' --- 1. S88 ---
' --- bitweise in String eintragen
B = Asc(Left(a, 1)) ' --- Bytes einzeln lesen
For I = 7 To 0 Step -1 ' --- vom höchsten Bit an...
c = c & Sgn(Val(B) And 2 ^ I)
Next

B = Asc(Right(a, 1)) ' --- Bytes einzeln lesen
For I = 7 To 0 Step -1 ' --- vom höchsten Bit an...
c = c & Sgn(Val(B) And 2 ^ I)
Next

' --- empfangene Daten auswerten
' --- 2. S88 ---
' --- bitweise in String eintragen

E = Asc(Left(D, 1)) ' --- Bytes einzeln lesen
For H = 7 To 0 Step -1 ' --- vom höchsten Bit an...
F = F & Sgn(Val(E) And 2 ^ H)
Next

E = Asc(Right(D, 1)) ' --- Bytes einzeln lesen
For H = 7 To 0 Step -1 ' --- vom höchsten Bit an...
F = F & Sgn(Val(E) And 2 ^ H)
Next

byte1 = Asc(Left(a, 1))
byte2 = Asc(Right(a, 1))
byte3 = Asc(Left(D, 1))
byte4 = Asc(Right(D, 1))

S88 byte1, byte2, byte3, byte4

' --- Anzeige der empfangenen Daten ---
StatusBar1.Panels(6).Text = "[" & byte1 & " / " & byte2 & "]"
StatusBar1.Panels(7).Text = "[" & byte3 & " / " & byte4 & "]"

lblRmM(0).Caption = Left(c, 4) & " " & Mid(c, 5, 4) & " " & Mid(c, 9, 4) & " " & Right(c, 4)
lblRmM(1).Caption = Left(F, 4) & " " & Mid(F, 5, 4) & " " & Mid(F, 9, 4) & " " & Right(F, 4)
End Sub

:wink: BB

faja8283

Re: Intellibox probleme mit XEvent

Beitrag von faja8283 » Montag 17. Mai 2010, 20:42

Hallo Bernie-Bärchen,

danke für die schnelle Antwort es hat mir sehr weiter geholfen :P

Vielen Dank

Antworten