Hier der code, wie gesagt ich empfange ein packet mit 8 bytes, davon soll er das 2. mit '006' vergleichen.

desweiteren hab ich noch ein Problem mit der Checksummen berechnung, er läst mich bei einer bitverschiebung das ergebnis nicht in eine seperate variable schreiben.

Code:
  $regfile = "m16def.dat"

$crystal = 20000000                                         'Quarz: 3.6864 MHz
$baud = 19200

Dim I As Byte
Config Lcdpin = Pin , Db4 = Porta.6 , Db5 = Porta.5 , Db6 = Porta.4 , Db7 = Porta.3 , E = Porta.7 , Rs = Porta.2       ' Natürlich so wie es wirklich angeschlossen ist (4-Bit-Modus)
Dim A As Byte
Config Lcd = 20 * 4                                         'Baudrate der UART: 9600 Baud

Config Pind.1 = Input
Config Pind.0 = Output


Config Pind.5 = Output
Config Pind.2 = Input


Dim Clc_l As Byte
Dim Clc_h As Byte
Dim New , New1 , New2 , New3 As Byte
Dim Tmp As Byte
Dim Bcclo As Byte
Dim Bcchi As Byte
Dim X As Byte

Dim Packets(10) As Byte
Dim Packete(8) As Byte
Declare Sub Sendewr
Declare Sub Empfangewr
Declare Sub Clc
Declare Sub Lcdout
Declare Sub Status
Dim Line1 As String * 20
Dim Line2 As String * 20
Dim Line3 As String * 20
Dim Line4 As String * 20

'PowerLED
Portd.5 = 1


'Init Packets
Packets(1) = 002
Packets(2) = 050
Packets(3) = 000
Packets(4) = 032
Packets(5) = 032
Packets(6) = 032
Packets(7) = 032
Packets(8) = 032
Packets(9) = 9
Packets(10) = 10



'LCD init
Initlcd
   Line1 = "test"
   Line2 = "     S T A R T!"
   Line3 = " com"
   Line4 = "www.ich.de"
Gosub Lcdout

Do

   'Taster 1
   If Pind.2 = 1 Then
      Line2 = "       reset"
       Line3 = " com"
      Print "reset"
     Gosub Lcdout
   End If

   'Taster 2
   If Pind.4 = 1 Then
      Gosub Sendewr
      Gosub Empfangewr
      'Gosub Status

   End If
Loop

'SUBs

'Anfrage an WR stellen
Sub Sendewr
   Line2 = "   sende Anfrage"
   Line3 = " com"
   Printbin Packets(1) ; 10
   Gosub Lcdout
   'Gosub Clc

Return
End Sub Sendewr

'Status vom WR empfangen
Sub Empfangewr
   Line2 = "  warte auf Daten"
   Gosub Lcdout
   Inputbin Packete(1) , 8

   Gosub Status
Return
End Sub Empfangewr


'Checksumme berechnen
Sub Clc
   'Init
   Bcclo = &H0XFF                                           'setze high
   Bcchi = &H0XFF                                           'setze high
   New = &B11011001                                         'lade byte

   New = New Xor Bcclo
   Tmp = Shift New , Left , 4                               'Fehlermeldung
   New = Tmp Xor New
   Tmp = Shift New , Right , 5                            'Fehlermeldung
   Bcclo = Bcchi                                            'setze gleich
   Bcchi = New Xor Tmp
   Tmp = Shift New , Left , 3                              'Fehlermeldung
   Bcclo = Bcclo Xor Tmp
   Tmp = Shift New , Right , 4                           'Fehlermeldung
   Bcclo = Bcclo Xor Tmp 
'Gosub Lcdout

   Return
End Sub Clc


'LCD Ausgabe
Sub Lcdout
   Cls
   Locate 1 , 1                                             '1. Zeile
   Lcd Line1
   Locate 2 , 1                                             '2. Zeile
   Lcd Line2
   Locate 3 , 1                                             '3. Zeile
   Lcd Line3
   Locate 4 , 3                                             '4. Zeile
   Lcd Line4
   Return
End Sub


'Status Auswertung
Sub Status
    If Packete(2) = 006 Then       'Vergleich ob das 2.Byte den wert 6 trägt
         Line3 = "kein Fehler"
         Print "kein fehler"
       Else
         Line3 = "  Fehler"
         Print "fehler"
      End If
Gosub Lcdout
Return
End Sub Status


End                                                         'end program
wär nett wenn mir jemand helfen könnte das mit dem vergleich und der checksumme hintzkriegen.

mfg

xeus


Moddy: Code-Tags ausgebessert