ich versuche mich gerade an einem kleinen Progrämmchen
mit dem gcc unter Linux.
Hier gibt es unter /dev ein Gerät, das sich als Datei behandeln läßt,
Namens "midi[Gerätenummer]", also z.B. "/dev/midi2" .
Mit ">cat /dev/midi2" spuckt mir die Kommandozeile brav die einfliegenden
Einzelbyte von einer angeschlossenen MIDI-Tastatur als Zeichen auf der Konsole aus.
Ich hätte nun aber gerne eine Konsolenausgabe als Dezimal- oder Hexwert,
zudem ist es für mich sicher eine gute Übung, diese "Rohwerte"
in einem C-Progrämmchen formatiert und interpretiert auf der Konsole auszugeben.
Das ist aber erstmal Zweitrangig und ich würde mich freuen,
wenn ich nach einem Programmaufruf, wie: ">midicat /dev/midi2" die einfliegenden
Byte als Dezimalwert zu Gesicht bekäme.
Erstmal dachte ich mir das so:
Code: Alles auswählen
#include <stdio.h>
#define uint8_t unsigned char
int main(int argc, char *argv[])
{
printf("\n\n%s:\n",argv[0]);// Erstmal nur zum Jux
uint8_t byte_in;
FILE *fp =fopen("/dev/midi2","r");
while(1)
{
fscanf(fp,"%c", &byte_in);
printf("0x%x ",byte_in);
}
return 0;
}
Ich nehme an, das bleibt am fscanf() hängen?
Naja, ich denke, man sieht wenigstens, was ich meine
und schonmal Dank fürs Gelesenhaben.