Problem beim Ausgeben von Hex-Zahlen als ASCII-Zeichen

Hallo Welt,

ich habe ein Problem mit dem Ausgeben von ASCII-Zeichen, die in einem uint8_t - Array vorliegen. Das Array wird durch das Objekt SysExMessage aus der Control Surface-Bibliothek zur Verfügung gestellt. Hier mein Code:

void onSysExMessage(MIDI_Interface &, SysExMessage sysex) override {  
    Serial.println("sysex length: " + String(sysex.length));
    int i;
    for (i = 1; i < sysex.length - 1; i++) {
      Serial.print((char)sysex.data[i]);
      Serial.print(" ");
   }
}
 
} callback {};

Teste ich das Programm mit der SysEx-Message "F0 35 33 37 34 37 32 36 39 36 45 36 37 37 33 F7", gibt der o.a. Code auf dem seriellen Monitor folgendes aus:


sysex length: 16
5 3 7 4 7 2 6 9 6 E 6 7 7 3

Das heißt: Es wird statt ASCII nur jede zweite Ziffer der Hex-Folge ausgegeben - und das in Klarschrift (also statt der ASCII-Wert, der eigentliche Zahlenwert).

Was übersehe ich?

Mist, habe gerade selbst entdeckt, wo der vermeintliche Fehler liegt :see_no_evil: Die Werte der Testmessage bestehen genau aus den ausgegebenen Ziffern. Heißt: Die Ausgabe ist voll korrekt - nur die Test-SystemExclusiveMessage war einfach daneben...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.