Ich entwickle eine Anwendung, die Steuerkommandos per USB/Seriell (später Ethernet) zu einem Arduino-Mikrocontroller sendet. Dazu gehört auch Sprachausgabe (Zahlworte). Öffne ich eine 8-Bit-Wave-Datei per Folderitem/BinaryStream, lese jedes Byte und sende es, kommt es an wie erwartet und wird korrekt am Arduino ausgegeben (PWM). Nun wollte ich die Soundschnipsel direkt in der Anwendung unterbringen. Ziehe ich die Sounddaten in die RealStudio-IDE, kann ich sie zwar hier per Play abspielen, komme aber nicht an die Binärdaten heran, um sie zu versenden. Da habe ich die Sounddaten von *.wav in *.txt umbenannt - das dürfte ja den Inhalt nicht verändern. Wenn ich sie nun in die IDE ziehe, kann ich sie auch einem String zuweisen. Sende ich aber nun die Binärwerte (ASCB) der einzelnen Zeichen, kommen nur noch Geräsche, Rauschen und Kratzen aus dem Arduino, die überhaupt Nichts mit dem Original zu tun haben. Wo ist mein Denkfehler, was verändert die Daten?
>Wenn ich sie nun in die IDE ziehe, kann ich sie auch einem String zuweisen.
Ich kenne diese IDE nicht, aber es könnte ein Problem mit deinen
Binärdaten (txt Datei) und dem String liegen. Ein Datentyp String ist
nicht für das Speichern von Binärdaten ausgelegt. Stichworte:
Nullterminierter String, Escape-Sequenzen z.B. Line feed
>Wo ist mein Denkfehler, was verändert die Daten?
Ich gehe davon aus, dass die erste NULL in deiner wave (txt binär) Datei
das Ende des Strings bedeutet und deshalb das meiste deiner ausgegebenen
Daten versehentlich 'sonstige Programmdaten' sind.
-> Versuche mal deine Binärdaten einem uint8_t Array (byte array, oder
wie immer das in der IDE heißt) abzulegen.
P.S.: Nicht vergessen den Header der wav Datei abzuschneiden. Der klingt
auch schlecht!
Hat sich geklärt: UTF! "Moderne" Programmiersprachen und deren IDE betrachten Text als UTF-codiert und lesen dann eben öfters mal gleich zwei Byte, besonders, wenn es sich eigentlich um Binärdaten handelt ... Uff!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.