Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

C - Bytes prüfen und ggf. Aktion durchführen





Frage

Hi, ich empfange MIDI-Signale (Bytes), die in eine Variable geschrieben werden. Nun möchte ich folgende Verarbeitung realisieren: 1. prüfen, ob die zwei Bytes 0XBE und 0X0B hintereinander empfangen wurden 2. wenn ja, dann das dritte darauffolgende Byte auslesen und in die Variable "position" schreiben Das Problem ist, dass die Bytes einzeln empfangen werden und man ja glaube ich irgendwie durchzählen muss?! Denn die Bytes lassen sich nur verwenden, wenn sie vollständig sind, da sie drei Informationen enthalten, die für die Handlung notwendig sind... Ich weiß, dass das Forum nicht dazu da ist, damit einem alles gecodet wird, aber kann mir jemand ein grobes If-Schleifen-Gerüst mit Byte-Erkennung auf die Beine stellen? Das wäre wirklich klasse, ich komme da überhaupt nicht weiter. Eben weil 3 Bytes hintereinander abgefragt werden... Danke im Vorraus für jegliche Hilfe!

Antwort 1 von kicia

Hallo,
Ich bin nicht so fit in C, aber:
Ich würde ein Array benutzen, in das immer die neuesten 2 Bytes geschrieben werden.
So könntest Du vielleicht immer dieses Array mit einem zweiten Array vergleichen, welches 0XBE und 0X0B enthält, und wenn sie gleich sind, das nächste Byte laden.

Irgendwie so oder ähnlich:

int compareBytes[ 2 ] = { 0XBE, 0X0B };
int receivedBytes[ 2 ] = { 0X00, 0X00 };

while( !EndeDerDaten )
{
	receivedBytes[ 0 ] = receivedBytes[ 1 ];
	receivedBytes[ 1 ] = ladeNeuesByte();
	if ( compareArrays( receivedBytes, compareBytes ) )
	{
		position = ladeNeuesByte();
	}
}


Anmerkung:
EndeDerDaten, ladeNeuesByte() und compareArrays() stehen natürlich nur stellvertretend für zur verfügung stehenden funktionen / parametern / Daten.


Gruß,
kicia