Sprich mit dem Code hier:
Senden von 5 Bytes
Sender:
Empfänger: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
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.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
Sehe ich das soweit richtig ?







Zitieren

Lesezeichen