You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Mit buffer[1] = buffer[1] | (value & 0x03) kannst du nur Bits setzen, aber nicht zurücksetzen.
Zum Zurücksetzen brauchst du dann sowas wie buffer[1] = buffer[1] & ~(value & 0x03)
Um es etwas verständlicher zu machen, hilft vielleicht das ganz mal Binär darzustellen:
Signal
Binär
Dezimal
1
0b00000001
1
2
0b00000100
4
1+2
0b00000101
5
Sprich du musst eigentlich nur Bit 0 und bit 2 "schalten".
Für Signal 1:
if(value){buffer[1]=buffer[1]|1;// Bit 0 setzen}else{buffer[1]=buffer[1]&~1;// Bit 0 löschen}
Für Signal 2:
if(value){buffer[1]=buffer[1]|(1<<2);// Bit 2 setzen}else{buffer[1]=buffer[1]&~(1<<2);// Bit 2 löschen}
canbus-messages (1).json
Hallo,
Ich habe in einem Byte einer Nachricht (byte1 einer 8 Byte Nachricht) verschiedene Signale ( immer 2bit).
Das setzen der Bits von 0 auf 1 funktioniert.
Signal 1 auf bit 0&1 auf 1 setzen = 1
Signal 2 auf bit 2&3 auf 1 Setzen = 4
Signal 1 & 2 auf 1 setzen = 5
Allerdings wenn ich eines der Signal auf 0 setzen möchte funktionier das nicht, der Wert bleibt unverändert.
Write Parser für Signal 1:
buffer[1] = buffer[1] | (value &0x03);
Write parser für Signal 2:
buffer[1]= buffer[1] | (value &0x03) << 2
Im Anhang die Konfiguration der Nachricht:
Signal1 --> SystemEnable (Name in der Konfiguration)
Signal2 --> BatteryCooling (Name in der Konfiguration)
Jemand eine Idee was ich falsch mache?
The text was updated successfully, but these errors were encountered: