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?