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:
Und hier der Empfänger: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
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







Zitieren

Lesezeichen