Ho partorito questa cosa ma non funziona ![]()
Invio da vb !!CC!0xB0!0x01!0x7F!*
Mi visualizza solo due byte e se riprovo non visualizza più nulla.
Help please
#include <MIDI.h>
char string[25];
int i=0;
int string_len;
int inByte;
int last_inByte;
int counter=0;
String TipoComando;
String Comando;
String Data1;
String Data2;
void setup() {
Serial.begin(9600); //INTIALISING THE MIDI SERIAL PORT
Serial1.begin(9600); //INTIALISING THE CONTROLLER SERIAL PORT
}
// La stringa in arrivo deve avere un ! per ogni lettera e deve terminare con un *
// All'inizio va raddoppiato !! altrimenti perdo la prima lettera
// Esempio !!P!R!O!V!A*
void loop() // LOOP FUNCTION
{
inByte = Serial1.read();
string_len=0;
if (inByte == '!') read_serial(); // If Start of line ("!") is found, call read_serial() function
}
void read_serial() // FUNCTION FOR READING THE SERIAL MESSAGE
{
Serial.println ("SOL FOUND and reading"); // THE SOL (Start of Line) found notice.
Serial1.print("READ : !\n"); //Saying that it has read "!" on the serial port
while (inByte!= '*') // As long as EOL not found, keep reading
if (Serial1.available() > 0) // if new data is available
{
inByte = Serial1.read(); // Read new byte
Serial.print("READ : "); // Display the new byte
string[string_len] = (int)inByte; // Save the data in a character array
Serial.println(string[string_len]); // Print the characters that was recieved
string_len++;
}
else if (Serial1.available() == 0)
{
Serial.println("EOL not available, data string invalid"); // If EOL not in the string
Serial1.print("$N"); //FAIL SIGNATURE
break;
}
if (inByte == '*')
{
Serial1.println ("$Y"); //SUCCESS SIGNATURE
Comando=((String)string[3]+(String)string[4]+(String)string[5]+(String)string[6]);
Data1=((String)string[8]+(String)string[9]+(String)string[10]+(String)string[11]);
Data2=((String)string[13]+(String)string[14]+(String)string[15]+(String)string[16]);
//Serial.println(Comando);
//Serial.println(Data1);
//Serial.println(Data2);
String mystr1;
String mystr2;
String mystr3;
char valcmd[6];
char valdt1[6];
char valdt2[6];
String cmd=Comando;
mystr1=cmd.substring(0,4);
mystr1.toCharArray(valcmd,3);
String dt1=Data1;
mystr2=dt1.substring(0,4);
mystr2.toCharArray(valdt1,3);
String dt2=Data2;
mystr3=dt2.substring(0,4);
mystr3.toCharArray(valdt2,3);
Serial.println(valcmd);
Serial.println(valdt1);
Serial.println(valdt2);
Serial.write(valcmd);
Serial.write(valdt1);
Serial.write(valdt2);
}
}