BInary numbers
-
@d-healey So if I understand well, you need a single number representation of the state of all buttons at a time?
In this case, effectively this is the best solution I can see... -
@d-healey You can also switch over an array, it has the advantage of giving easy readable code, but it might not be compatible with what you want to achieve...
inline function onbtnQueryControl(component, value) { if (value) { local state = []; for (i = 0; i < buttons.length; i++) state.push(buttons[i].getValue()); Console.clear(); switch (state) { case [0,0,0,1]: Console.print("Do this"); break; case [0,0,1,0]: Console.print("Do that"); break; case [1,0,1,1]: Console.print("Do whatever"); break; default: Console.print("Do nothing"); } } }
-
@ustk Oh I didn't know that! For 4 buttons I think that's more readable, when you get up to 10+ buttons I think it might become unpleasant.
-
@ustk that works? I didn‘t knew you can use array literals as switch cases.
But if this comes in the vicinity of a realtime callback I wouldn‘t trust it not allocating so a bit fiddling might be better suited.
-
@d-healey Note that it can also be replaced by the string representation of the same binary number.
I'm not sure to agree with the fact that it can become unpleasant, because it's always easier to debug or maintain a visual representation rather than a state you don't "see", but it's a matter of taste of course... -
@christoph-hart Yep that works! I understand the allocation issue though... This is where using a string would be better
-
inline function onbtnQueryControl(component, value) { if (value) { local state = ""; for (i = 0; i < buttons.length; i++) state += Math.round(buttons[i].getValue()); Console.clear(); switch (state) { case "0001": Console.print("Do this"); break; case "0010": Console.print("Do that"); break; case "1011": Console.print("Do whatever"); break; default: Console.print("Do nothing"); } } }
-
@ustk said in BInary numbers:
a state you don't "see"
-
-
@ustk You were right, I found a cleaner way to do it without resorting to bit masks :)
-
@ustk nope, that's even worse, you're creating a string in the button callback and it might reallocate it in each loop iteration :)
-
@christoph-hart then using a reg should resolve the issue right? For a better world? :)
-
Is there a way to use bitwise operators in SNEX?