Hallo Vitis,
nach einigen versuchen habe ich es heraus gefunden.
Zunächst kommen eine ganze Kette von Zeichen wenn der erste Interrupt ausgelöst wird. Scheinbar wir die Variable "S" mit irgent etwas gefüllt?!
Ich habe dieses Problem gelöst in dem ich sie zu beginn des Programms einfach fülle.
Die nachsten 4 Sonderzeichen (obern beschrieben) kommen dann mit jeder Übertragung (jedem neuen Interrupt). Ich verstehe zwar nicht woher aber ich habe es mit Right und Left gelöst. Mid funktionierte merkwürdiger weise auch nicht.
Jetzt habe ich noch mal eine andere Frage:
Ich möchte den übertragenen Text/Code gerne auswerten.
Aus diesem Grund habe ich einiges vergeblich ausprobiert.
Durch Zufall habe ich einen Anweisung im Code nicht geändert und hatte plötzlich das gewünschte Ergebnis. Jetzt verstehe ich die Welt nicht mehr!!
Eigentlich sollte in der Anweisung "Z2 = Left(x , 3) " statt dem x ein a stehen.
Mit a geht es nicht. Mit x bekomme ich die ersten 3 Zeichen meines Codes angezeigt.
Wo bekommt die Variable X ihren Inhalt her? Ich begreifs nicht
Code:
$regfile = "m8def.dat"
$crystal = 7372800
$baud = 4800
'Initialisierung LCD Display
Config Lcd = 20 * 4 'LCD-Display mit 20 Zeichen in 4 Zeilen verwendet
Config Lcdbus = 4 '4 bit mode
Config Lcdmode = Port
Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = Portc.4 , E = Portc.5 , Rs = Portd.6 'war Portc.6
Dim S As String * 11
Dim A As String * 11
Dim X As String * 10
'S = "Testanzeige" '11Stellen
Dim Z1 As String * 10
Dim Z2 As String * 10
Dim Z3 As String * 10
On Urxc Onrxd
Enable Urxc
Enable Interrupts
Cls
Lcd "RS485 Test"
Do
Z2 = Left(x , 3) ' wo bekommt die Veriable X ihren Inhalt her?
'Lcd "erste Zeile"
Locate 1 , 1
'LCD "zweite Zeile"
Locate 2 , 1
Lcd Z2
'Lcd "vierte Zeile"
Locate 4 , 1
Lcd Z1
Loop
' **** RS485 Aktivieren und Bus prüfen
' Übertragener Text: z.B. $t1-10101
Onrxd:
S = S + Chr(udr)
If Len(s) > 9 Then
A = Right(s , 11)
Z1 = Left(a , 9)
Else
A = ""
End If
Return
'***********
Kannst du mir das erklären?
Tobias
Lesezeichen