Hallo zusammen,

ich drehe bald am Rad. Folgendes Problem:

Ich muss von einem Mega8 auf einen anderen über RS232 permanent Daten übertragen. Das Ganze wird als Array mit Starbit, 5 Nutzdatensätze, Checksum übertragen.

Das Problem ist: Die Nutzdatensätze können nicht alle als Byte definiert werden, da die Wertegrößen teilweise im Tausender Bereich liegen. Also sind die 5 Datensätze gemischt mit "Byte" und "Long" definiert.

Ich bekomme zwar die Daten gesandt, aber am Empfänger nicht ausgewertet. Habe schon etliche Versuche auch mit Hilfe mit veränderungen hinter mir. Nix geht.

Hier mal der Sendercode:

Code:
$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600

Dim Tank As Byte
Dim Eu As Word
Dim Tanum As Long
Dim Dfmimpulse As Long

Dim Stb As Byte
Dim C As Long
Dim B(5) As Long
Dim D As Long

'-----------------------------------------------------------------
'hier ist  die Do-Loop  mit dem Sammeln und schreiben der Daten
'sind alle Daten abgefragt folgt der Sprung ins Sub "Datensenden"
'-----------------------------------------------------------------


'------------------------------
'Sub Datensenden
'------------------------------

Datensenden:

Stb = 15                   'Starbyte
C = 0
B(1) = Tank              'Wert von 1 - 20
B(2) = Eu                  'Wert vom ADC 0-1023
B(3) = Tanum            'Wert von 0 - 10.000
B(4) = 55                  'Testwert
B(5) = Dfmimpulse     'Wert von 0 - 90.000

For D = 1 To 5
 C = C Xor B(d)
Next
Printbin Stb ; B(1) ; C

Waitms 250



Return
Und hier der Empfänger:

Code:
$regfile = "m8def.dat"
$crystal = 3686400
$baud = 9600

'----------------------------------------
'Hauptschleife Abfrage RS232
'---------------------------------------

D = 0
C = 0

Do


   If Ischarwaiting() = 1 Then Gosub Empfang
   If D = 7 Then Gosub Auswertung

 '-------------------------------------
'Hier werden die Daten bearbeitet und am LCD visualiesiert
'--------------------------------------------
   
D = 0                                                    
C = 0



Loop

'----------------------------------------
'Subroutinen für RS232
'---------------------------------------

Empfang:
A = Inkey()
If D > 0 Then Goto Empfang2
If A = 15 Then Incr D
Return

Empfang2:
If D < 6 Then B(d) = A
C = C Xor A
Incr D
Return

Auswertung:
If C <> 0 Then
   D = 0
   C = 0
   Return
   End If

   B(1) = Tank
   B(2) = Euneu
   B(3) = Tvnum
   B(4) = Gosetup
   B(5) = Dfmimpulse

   D = 0
   C = 0
Return

Was ist denn hier noch machbar? Gerade das Problem mit den Variablen die nicht als "Byte" definiert sind?


Gruß
Markus