Hinweis.
Das hier
1 | if ((results.value, HEX) == code) {
|
macht NICHT das, was du denkst das es tut.
Dei Angabe HEX ist vollkommen überflüssig.
Im Computer sind alles Binärzahlen. Alles ist einfach nur ein Bitmuster.
So etwas wie HEX oder Dezimal oder Binär existiert im Computer nicht.
Alles sind einfach nur Bitmuster. Wenn du schreibst
1 | i = 49;
|
2 | i = 0x31;
|
3 | i = '1',
|
4 | i = 0b00111001;
|
dann läuft das im Rechner alles aufs selbe hinaus. Im Speicher wird an
der Speicherstelle 'i' das Bitmuster 0011 1001 abgelegt. Denn das ist
das einzige, mit dem der Computer umgehen kann. Das bei den Zuweisungen
einmal eine Dezimalzahl steht und mal eine Binärzahl oder überhaupt
gleich der ASCII Code eines Zeichens, das löst bereits der COmpiler
entsprechend auf, so dass der Computer nur mehr die Operation: Lege das
Bitmuster 0011 1001 in der Speicherzelle, die 'i' genannt wurde ab.
D.h. wenn die Zahlen im Programm verwendet wird, dann hast du dem
Compiler durch die Schreibweise einen Hinweis hinterlassen, in welchem
System du deine Angabe gemacht hast. Der Compiler nimmt diesen Hinweis
und generiert mit deiner Angabe und diesem Hinweis das zugehörige
Bitmuster.
Aber bei der Ausgabe kann der Compiler bzw. der Code den er generiert
nicht wissen, wie du die Ausgabe gerne hättest, daher musst du das
angeben
D.h.
1 | Serial.println(results.value, HEX);
|
bedeutet NICHT, dass es sich bei results.value um eine Hex-Zahl handeln
würde. Denn die existiert im Computer nicht. Die Angabe HEX ist die
Aufforderung an println eine Hexadezimale Ausgabe zu erzeugen! Aber das
Bitmuster der Zahl ändert sich dadurch ja nicht, nur weil du dir das
Bitmuster anders aufbereeitet ansehen willst.
Nach dem Vorgeplänkel. Das hier
1 | if ((results.value, HEX) == code) {
|
ist unsinnig. Denn du brauchst hier nicht sagen, ich will Hex-Zahlen
vergleichen. Du vergleichst Zahlen (eigentlich Bitmuster). Wie du die
Zahlen angibst ist dein Bier. Das interessiert aber den Computer nicht,
denn der COmpiler wandelt das alles sowieso um auf einen Vergleich von
Bitmustern.
Dein Pech ist nur, dass
1 | .... (results.value, HEX) ...
|
ein gültiger Ausdruck mit dem Kommaoperator ist. Nur macht der etwas
ganz anderes als du erwartet hättest.