NEWS
(erledigt) Bitweise "and" in Blockly
-
Wie schreibt man in Blockly
c= a and b
Ich benötige ein bestimmtes Bit aus einem Wert.
Beispiel :
a ist 43
b ist 2
Ergebnis 2
Beispiel:
a ist 13
b ist 2
Ergebnis: 0Ich brauche nur das Bit 2
oder geht das nur in JS? -
@ubecker Du meinst den &-Operator?
43 ist 0010 1011 02 ist 0000 0010 ---------------- 0000 0010
Wäre in JavaScript
const c = 42 & 2
. Kann man auch binär schreiben:const c = 0b101011 & 0b10
.Einen Baustein gibts dafür aktuell nicht. Am einfachsten über eine selbst definierte Funktion:
return param & 2;
oderreturn param & 0b10;
-
@haus-automatisierung said in Bitweise "and" in Blockly:
Du meinst den &-Operator?
ja genau.
ok. Dan werde ich wohl alles in JS schreiben. Ist immer eine gute Übung.
danke -
@ubecker sagte in Bitweise "and" in Blockly:
Dan werde ich wohl alles in JS schreiben.
Kannst ja bei Blockly bleiben und einfach eine JS-Funktion mit einem Einzeiler erstellen.
-
@ubecker sagte: Ich benötige ein bestimmtes Bit aus einem Wert.
Siehe checkBit(val, bit)
-
@paul53 said in Bitweise "and" in Blockly:
@ubecker sagte: Ich benötige ein bestimmtes Bit aus einem Wert.
Siehe checkBit(val, bit)
Danke, gelesen und nicht alles verstanden. Ist noch etwas zu hoch für mich. (Bin Hardwerker und kein Softwerker)
Hab aber eine einfache JS Lösung für mich gefunden.
brauch doch nur 3 Bits.let Bit_0 = 1; let Bit_1 = 2; let Bit_2 = 4; let ID_WR2Haus = 'javascript.0.PV_WR2Haus'; let ID_Batt_charge = 'javascript.0.PV_Batt_charge'; let ID_Batt_discharge = 'javascript.0.PV_Batt_discharge'; let ID_System_state = 'alias.0.Energie.PV_Anlage.Betriebsstatus'; let System_state = getState(ID_System_state).val; let Batt_charge = getState(ID_Batt_charge).val; let WR2Haus = getState(ID_WR2Haus).val; // 0 = not charging ; 2 = Charging; setState(ID_Batt_charge , (System_state & Bit_1), true); // 0 = not discharging ; 4 = discharging; setState(ID_Batt_discharge , (System_state & Bit_2), true); // 0 = no Power from PV; 1 = power from PV setState(ID_WR2Haus , (System_state & Bit_1), true); on({ id: [].concat(ID_System_state), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; System_state = (obj.state ? obj.state.val : ''); setState(ID_Batt_charge , (System_state & Bit_1), true); setState(ID_Batt_discharge , (System_state & Bit_2), true); setState(ID_WR2Haus , (System_state & Bit_0), true); });