Sprich mit dem Code hier:
Senden von 5 Bytes
Sender:
Code:
Dim Daten(5) As Byte
Dim Minuten As Byte
Dim Sekunden As Byte
Rs485 Alias Porta.6
Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 3036
On Timer1 Timer_irq
Rs485 = 1
Minuten = 0
Sekunden = 0
Daten(1) = 128
Daten(2) = 255
Daten(3) = 1
Daten(4) = 1
Daten(5) = 20
Enable Timer1
Enable Interrupts
Do
If Minuten = 0 And Sekunden = 20 Then
Printbin Daten(1) ; 5
Porta.0 = 1
Waitms 5000
Porta.0 = 0
End If
Loop
Timer_irq:
Timer1 = Timervorgabe
Incr Sekunden
If Sekunden = 60 Then
Incr Minuten
Sekunden = 0
End If
Return
Empfänger:
Code:
Dim A As Bit
Dim B As Byte
Dim Daten(5) As Byte
Dim Datenspeicher(5) As Byte
A = 0
Rs485 = 0
Cursor Off
Cls
Locate 1 , 1
Lcd "RS485 Empfaenger"
Do
If A = 1 Then
Locate 2 , 1
Lcd Datenspeicher(3)
A = 0
End If
Loop
End
Isrlabel:
Daten = Udr
For B = 1 To 5
Datenspeicher(b) = Daten(b)
Daten(b) = 0
Next B
If Datenspeicher(1) = 128 And Datenspeicher(2) = 255 Then
A = 1
End If
Return
Müsste es so funktionieren ? Also meiner auffassung nach sendet der Sender jetzt hintereinander weg die 5 Byte. Der Empfänger bekommt sie und schreibt sie in die Variable Daten. Dann geht es zu for B = 1 To 5, sprich B bekommt den Wert 1 zugewiesen und damit wird Datenspeicher(1) der Wert von Daten(1) übergeben. Danach wird Daten 1 gelöscht. Bei next geht er wieder zum For nur das B diesmal 2 annimmt und das geht dann weiter bis 5. Wenn dann alle Bytes in den Datenspeicher geschrieben sind, geht die If Anweisung auf und damit wird dann A=1 gesetzt, womit dann die If in der Main aufgeht und Datenspeicher(3) auf dem Display ausgegeben wird.
Sehe ich das soweit richtig ?
Lesezeichen