NEWS
2 Hexzahlen zusammenführen
-
Hallo...
habe folgendes Problem und stehe auf dem Schlauch.
Ich bekomme einen Stream über die serielle Schnittstelle nach diesen Vorgaben:
Habe den Stream jetzt schon aufgeteilt:
Wie kann ich am Dümmsten die Werte für Pos0 und Pos1 zusammenrechnen? Einfach multiplizieren geht ja bei Nullwerten nicht. Dachte mir eine Bitaddition, aber da bräuchte ich mal einen Tip.....
Danke euch schon mal
-
@broker-tester sagte in 2 Hexzahlen zusammenführen:
Einfach multiplizieren geht ja bei Nullwerten nicht.
Das ist eine gewagte Aussage. Im node Terminal kommt folgendes Ergebnis bei einer Hex Berechnung raus:
> x=0x0*0x0 0 > x=0x0/0x0 NaN >
Gut bei der Division motzt er.
tschuess
-
Ok. Ich habe hex ja schon in dezimal umgewandelt und da ist die Multiplikation mit 0 ja 0.
-
@broker-tester
was mathematisch auch vollkommen richtig ist.da wir nicht wissen was in pos0 und pos1 für datn enthalten sind.
was würdest du dir den als Ergebnis wünschen, wenn in beiden 0 drin steht?
oder in einem 1 und im anderen 2?
das Ergebnis von Addition/Multiplikation/etc hängt nicht von der Darstellung einer Zahl in einem Zahlsystem ab (10er/Dezimalsystem, 16er/Hexadezimal, 8er/Oktal,2er/Binär) ZUurückgerechnet bspw nach Dezimal kommt auch immer das gleiche Ergebnis rausErgebnis bei 1 + 2
Binär 1+10=11
Oktal 1+2=3
Hex 1+2=3
Dez 1+2=3Ergebnis bei 1+10 (Dezimal)
Binär 1+1010=1011
Oktal 1+12=13
Hex 1+A=B
Dez 1+10=11 -
Also... es kommt eine Position an, die in 2 hex Werte getrennt wurde. Dabei kann max 0xff und 0xff und min 0x00 und 0x00 ankommen. Diese muss ich wieder zusammenrechnen. Wenn ich dec255 *dec0 rechne, stimmt es ja nicht.
-
ah ok, du bekommst ein 16bit wert in 2 einzelnen bytes zurück.
ein wert ist das high byte und das andere ist das low byte.die rechnung lautet dann wie folgt:
High byte * 256 + low byte
welches das high byte ist musst du aus der beschreibung herausfinden, da beide reihenfolgen möglich sind (HiLo und LoHi)
denke daran 0x00 bis 0xff sind 256 zustände (1-255 und die 0 kommt auch noch dazu)Nachtrag: und wenn du uns mit vollständigen Informationen gefüttert hättest, dann wäre der Weg die Beschreibung zur Vestamatic zu finden nicht so schwer gewesen.
Übrigens
LSB steht für Least Significant Byte und MSB für Most Significant Byte. Die Übersetzung nach High und Low überlasse ich dir, ansonsten nochmal fragen. -
Respekt, dass du auf Vestamatic gekommen bist...
Gibt's hier schon Fragen dazu?Ich werde das mal versuchen morgen und mich bei Fragen wieder melden... danke
-
@broker-tester
ja das geniale Tool nennt sich google und ich habe
die ersten 4 dieser Bezeichnungen dort eingetippt
und dann kam ein PDF mit genau der Beschreibung.
aber erst nach dem ich dir das mit High und Low Byte geschrieben habe -
@broker-tester Ich empfehle Dir die Buffer-Node, damit machs Du Dir das Leben einfacher.
https://flows.nodered.org/node/node-red-contrib-buffer-parser
Dadurch dass Du die Werte auch in einem Objekt hast, kannst Du mit diesen auch rechnen . Es kann auch alle Arten von 8,16,32 mit LE oder BE Notation behandeln.
So ist das einfach - 2 Bytes als uint Integer zu interpretieren:
le = low dann high byte
be = high dann low byteEs emfiehlt sich generell die Eigenschaften in einem Objekt mitzuführen oder ist es der einzige Zweck die Werte in DP zu schreiben?
-
Vielen Dank.. Das ist das, was ich gesucht habe....
Habe mir alles händisch programmiert, aber es geht ja einfacher...
Hier das erste Ergebnis. Muss noch weiter probieren und mich weiter in NODE einarbeiten..
Danke