Page 1 of 1

Midi Component Bug (erledigt)

Posted: Tue Jan 15, 2019 9:53 am
by DirkB
Hallo,

ich habe schon 2 mal den Fehler gepostet aber keine Antwort erhalten,
daher noch ein Post im deutschen Forum.
Es gibt einen Bug im Midi Component. Ein Status-Byte 0xF1 und höher
ergibt eine Variable von 0x00. Es ist nicht möglich Realtime-Messages
zu empfangen. Das gilt für alle Versionen von Flowcode.

Hier der Custom Code "ReceiveMIDI"

Code: Select all

  	MX_UINT8 idx, current_data = 0;

	%a_Received_MIDI[0] = 0;								//Reset Status Byte
	%a_Received_MIDI[3] = 0;								//Reset Real Time Message

  	for (idx = 1; idx < 3; idx++)
  	{
		%a_Received_MIDI[idx] = 255;						//Clear old MIDI data
	}

	for (idx = 0; idx < 3; idx++)
	{
		current_data = %a_UART_Receive(cTimeout);
		if (current_data == 255)
			return 0;										//Timeout Occurred

		if (current_data >= 0xf8)							//If real time message received
			%a_Received_MIDI[3] = current_data;
		else												//Else normal message / data
			%a_Received_MIDI[idx] = current_data;
	}
	return %a_Received_MIDI[0];  							//Return status byte
Gibt es eventuell einen Time Out bevor eine Realtime Message empfangen wird?
Kann man den Code ändern damit das funktioniert?
Auch sollte es möglich sein, das man nur 1 oder auch nur 2 Bytes senden kann, da ein Program Change
nur aus 2 und eine Realtime Message nur aus 1 Byte, das Status Byte besteht. Das ist momentan nicht möglich, man muss
alle 3 Bytes senden. So ist das Programmieren einer Remote Control und auch ein Midi-Panic nicht möglich.
Alle anderen Midi-Funktionen sind bei mir kein Problem.

Ich habe sehr viele Programme mit Flowcode 5 programmiert und benötige auch ein Bug Fix für Ver. 5, also
eigentlich für alle Flowcode Versionen bis Flowcode 8. Ein Import von Ver. 5 ist nicht möglich, da das Programm
danach etwas größer wird und nicht mehr in den Chip passt. Ich verwende sehr oft den PIC 12F1840 und den
PIC 16F1825. Bitte helft mir.

Vielen Dank

Dirk

Re: Midi Component Bug

Posted: Wed Jan 16, 2019 1:16 pm
by Benj
Hallo Dirk,

Please refer to this thread.
viewtopic.php?f=76&t=20828

Re: Midi Component Bug (erledigt)

Posted: Wed Jan 16, 2019 3:51 pm
by DirkB
Hallo,

ich habe den angepassten Code der Midi_Component wie folgt editiert:

Code: Select all

  	MX_UINT8 idx, current_data = 0;

	%a_Received_MIDI[0] = 0;								//Reset Status Byte
	//%a_Received_MIDI[3] = 0;								//Reset Real Time Message   (ausgeklammert)

  	for (idx = 1; idx < 3; idx++)
  	{
		%a_Received_MIDI[idx] = 255;						//Clear old MIDI data
	}

	for (idx = 0; idx < 3; idx++)
	{
		current_data = %a_UART_Receive(cTimeout);
		if (current_data == 255)
			return 0;										//Timeout Occurred

		if (current_data >= 0xf8)							//If real time message received     (geändert auf DataByte [0])
			%a_Received_MIDI[0] = current_data;
		else												//Else normal message / data
			%a_Received_MIDI[idx] = current_data;
	}
	return %a_Received_MIDI[0];  							//Return status byte
Nun funktioniert alles wie es soll.

Vielen Dank an alle

Dirk