Topic : MIDI_COM Dokumentation
Author : H. Blees
Version : MIDI_COM.hyp (21/5/1997)
Subject : Dokumentation/MIDI_COM
Nodes : 125
Index Size : 3066
HCP-Version : 3
Compiled on : Atari
@charset : atarist
@lang :
@default :
@help :
@options : +g -i -n +y +z -t4 -d10
@width : 75
View Ref-FileProgrammbeispiel
Anhand des folgenden Programmbeispieles wird das Auslesen des Puffers
beschrieben:
int (char *bufa1,int *esc,int *len)
{
int i;
konv1 help;
*esc=0;
/* Die ersten zwei Bytes sind entweder die Länge der Nachricht oder eine
ESC-Kennung. Zur Zeit gibt es davon nur eine einzige: _GET_VERW */
/* Lese-Index = Schreibindex => Puffer LEER */
if (.nl==io_ptr.nw) return(FALSE); /* Fertig */
/* kopiere 1. Byte */
help.aschar[0]=io_ptr.ibuf[io_ptr.nl++]; /* Ist das Puffer-Ende
erreicht, geht's wieder bei 0 weiter */
if (io_ptr.nl==io_ptr.size) io_ptr.nl=0;
/* kopiere 2. Byte */
help.aschar[1]=io_ptr.ibuf[io_ptr.nl++];
/* Ist das Puffer-Ende erreicht, geht's wieder bei 0 weiter */
if (io_ptr.nl==io_ptr.size) io_ptr.nl=0;
if (help.asint>4000)
{
/* Falls ESC-Kennung, dann kommt jetzt erst die Länge der Nachricht */
*esc=help.asint;
help.aschar[0]=.ibuf[io_ptr.nl++];
if (io_ptr.nl==io_ptr.size) io_ptr.nl=0;
help.aschar[1]=io_ptr.ibuf[io_ptr.nl++];
if (io_ptr.nl==io_ptr.size) io_ptr.nl=0;
*len=help.asint-2;
}
/* Nun den eigentlichen Inhalt der Nachricht kopieren Die Länge enthält
auch die beiden Bytes für die Längenangabe daher (-2) */
for (i=0;i<help.asint-2;i++)
{
bufa1[i]=.ibuf[io_ptr.nl++];
if (io_ptr.nl==io_ptr.size) io_ptr.nl=0;
}
return(TRUE);
}