Hallo.
Ich bin Neuling, ich bitte um Nachsicht...
Ich kann eine Datei (*.syx) die ich aus dem Programm MIDI-OX erstellt habe binär einlesen.
Diese Datei ist ein MIDI Bulk Dump (Speicherabbild eines Harddisk-Recorders, als SysEx-Befehl).
Sie ist in etwa so aufgebaut:
F0 43 00 7E 02 60 4C .... 00 00 04 F7
Als erstes benutze ich den Replace Befehl um die Leerzeichen zu entfernen.
alltext = Replace(alltext, " ", "") --- "alltext" ist meine String Variable, alle Leerzeichen weg ---
Dann mache ich (für alle Fälle) mit UCase alle Buchstaben groß.
alltext = Ucase(alltext)
Die ersten beiden Zeichen "F0" sind der SysEx-Startbefehl.
Die letzten beiden Zeichen "F7" sind der SysEx-Endbefehl.
Nun zu meinem Problem:
Ich muss eine Prüfsumme Berechnen, das sind die beiden Vorletzten Zeichen "04".
Um das hinzu bekommen muss ich den String aus der Datei in Hexadezimal Werte bekommen, um damit zu Rechnen.
Ich komme nicht dahinter, wie ich aus einem 2stelligen String den Richtigen Wert bekomme.
Ich habe es mit der "StringToHex"-Funktion versucht, der gibt mir etwas wie "3443" statt "76" für "4C" raus.
Was mache ich Falsch ?
Ich weiss das ich die Umwandlung nicht schaffe, ich glaube ich stehe im Wald und sehe das Meer......
Danke im Voraus.
Joshi aus Hamburg.
Ich bin Neuling, ich bitte um Nachsicht...
Ich kann eine Datei (*.syx) die ich aus dem Programm MIDI-OX erstellt habe binär einlesen.
Diese Datei ist ein MIDI Bulk Dump (Speicherabbild eines Harddisk-Recorders, als SysEx-Befehl).
Sie ist in etwa so aufgebaut:
F0 43 00 7E 02 60 4C .... 00 00 04 F7
Als erstes benutze ich den Replace Befehl um die Leerzeichen zu entfernen.
alltext = Replace(alltext, " ", "") --- "alltext" ist meine String Variable, alle Leerzeichen weg ---
Dann mache ich (für alle Fälle) mit UCase alle Buchstaben groß.
alltext = Ucase(alltext)
Die ersten beiden Zeichen "F0" sind der SysEx-Startbefehl.
Die letzten beiden Zeichen "F7" sind der SysEx-Endbefehl.
Nun zu meinem Problem:
Ich muss eine Prüfsumme Berechnen, das sind die beiden Vorletzten Zeichen "04".
Um das hinzu bekommen muss ich den String aus der Datei in Hexadezimal Werte bekommen, um damit zu Rechnen.
Code:
Public Sub checksum()
Dim sumarray(351) As String 'ist wohl falsch Dimensioniert
Dim startch As Long
Dim endch As Long
Dim chksumloop As Long
startch = 13
endch = 715
For chksumloop = startch To endch Step 2
sumarray(chksumloop) = Mid$(main.dumpin2.Text, chksumloop, 2)
'hier ist ja alles noch ein String und kein Hexadezimal Wert.
main.chksum2.Text = StringToHex(sumarray(chksumloop))
'Achtung StringToHex ist eine Funktion, nicht von mir...
countersen = countersen + 1
Next chksumloop
End Sub
Ich komme nicht dahinter, wie ich aus einem 2stelligen String den Richtigen Wert bekomme.
Ich habe es mit der "StringToHex"-Funktion versucht, der gibt mir etwas wie "3443" statt "76" für "4C" raus.
Was mache ich Falsch ?
Ich weiss das ich die Umwandlung nicht schaffe, ich glaube ich stehe im Wald und sehe das Meer......
Danke im Voraus.
Joshi aus Hamburg.