Guck mal da, so könnte das gehen
https://www.roboternetz.de/wissen/in..._Input#OVERLAY
Hallo zusammen,
ich komme hier nicht weiter.
Ich habe zwei Mega8 die ständig mit einander über RS232 kommunizieren.
Ich habe nun Long-Variablen die ich in Bytes zerlegen, über RS232 senden und auf der Gegenseite wieder zusammenbauen möcht.
Also die Kommunikation über RS232 mit Startbyte, Array und Checksum funktioniert alles einwandfrei.
Momentan gehe ich bei der Zerlegung der Variablen "mathematisch" vor. Das ist glaub ich weder effektiv noch elegant und ein Resoursenfresser.
Ich habe es bisher so beim Sender:
Mir ist wichtig das ich die Bytes der "aufgeteilten" Variablen ganz klar unterseiden kann. Also am liebsten so.Code:.... Dim Eu as Long Dim Eur1 as Long Dim Eur2 as Long Dim Eur3 as Long Dim Eu1 as Byte Dim Eu2 as Byte 'als Beispiel nur eine der insgesamt 7 Variablen des Arrays Eu= 89800 'Beispielwert Eur1 = Eu / 255 Eur3 = Eur1 * 255 Eur2 = Eu - Eur3 Eu1 = Eur1 Eu2 = Eur2 'geht das da oben nicht einfacher?????????? C = 0 D = 0 Stb = 233 B(1) = VariableX B(2) = VariableA1 B(3) = VariableA2 B(4) = T1 B(5) = T2 B(6) = Eu1 B(7) = Eu2 For D = 1 To 7 C = C Xor B(d) Next Printbin Stb ; B(1) ; C Senden und Empfangen ist kein Problem!
B(6) = Teil eins der Variablen EU
B(7) = Teil zwei der Variaben EU
Hier der Empfänger:
Ich hab irgendwie was von SHIFT usw. gelesen. Aber irgendwie peil ich das gar nicht.Code:...... Dim Eu As Long Dim Euneu3 As Long Dim Euneu2 As Byte Dim Euneu1 As Byte ' hier werden die Daten empfangen---- Euneu3 = Euneu1 * 255 Euneu = Euneu3 + Euneu2
Wie geht das denn einfacher, ohne viele Variablen zu "verbraten" und mir den Controller zukleistere?
Gruß
Markus
Guck mal da, so könnte das gehen
https://www.roboternetz.de/wissen/in..._Input#OVERLAY
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo PicNic,
...hmm klappt nicht so richtig.
Ich habe nun:
Im Terminalprogramm steht aber nur "233 0 0"Code:Dim D as Byte Dim C as Byte Dim Stb2 As Byte Dim Tvb1 As Word Dim Schwelle1 As Word Dim Dfmvolumen1 As Long Dim S2(8) As Byte At Tvb1 Overlay ....... Readeeprom Tv , 1 Readeeprom Schwelle , 10 Readeeprom Dfmvolumen , 300 cls Locate 1,1 Lcd tv Locate 1,10 Lcd schwelle Locate 2,1 Lcd Dfmvolumen Tvb1 = Tv Schwelle1 = Schwelle Dfmvolumen1 = Dfmvolumen D=0 C=0 Stb2 = 233 For D = 1 To 8 C = C Xor S2(8) Next Printbin Stb2 ; S2(8) ; C
also ist S2( leer obwohl die daten da sind und auf den LCD angezeigt werden.
Gruß
Markus
S2 (8) ist das höchst-signifikante byte vom dfvolumen1.
Wenn du in dfvolumen1 = 300 reinschreibst,
ist S2(5) = 0x2c
ist S2(6) = 0x01
ist S2(7) = 0x00
ist S2(8) = 0x00
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hm, hatten wir nicht erst ein ähnliches Thema?
https://www.roboternetz.de/phpBB2/ze...141&highlight=
@rage_empire
sorry hab ich ganz vergessen.
Das hab ich mir echt zig mal angeschaut. Beim Sender funktioniert das schon.Zitat von rage_empire
Nur wie mache ich das nun genau beim Empfänger? Siehe unten
@PickNic
ah ja richtig ich habe ja nur S2(8) im Print drin. Logisch kann net gehen.
Also müsste es dann richtig lauten:
Printbin S2(1) , 8 richtig?
Nur wie fasse ich die 8 Bytes dann am Empfänger wieder zusammen.
Reicht das wenn ich beim Empfänger schreibe:
Dim Tvb1 as Word
Dim Schwelle1 as Word
Dim Dfmvolumen1 as Long
Dim S2(8) as Byte at Tvb1 Overlay
Inbputbin S2(1) , 8
Wie weise ich dann den Variablen beim Empfänger dann wieder die richtigen Bytes zu??
Sorry aber ich check des echt noch nicht ganz.
Gruß
Markus
wenn du sendest
printbin s2(1), 8
mußt du auch empfangen
inputpin s2(1), 8
mehr isses eigentlich nicht
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
.... auf die Gefahr hin das ich nerve....
also das Senden funzt. Auf dem Terminalprogramm sehe ich es wunderbar. 8 Datenbytes gehen raus
Aber das Empfangen nicht.
Beim Empfänger hab ich:
Dim A As Word
Dim B As Word
Dim C As Long
Dim S2(8) As Byte At A Overlay
inputbin S2(1) , 8
Warum sind dann die Variablen alle mit "0" wenn ich mir es anzeigen lasse?
Beim Sender ist alles identisch halt nur mit printbin S2(1) , 8
Sorry aber ich raff dat net warum das nicht geht.
Mein Empfänger hat nix in den Variablen.
Gruß
Markus
Lesezeichen