Buongiorno ragazzi.
Sto cercando di realizzare una comunicazione Visual Basic 2010 con un arduino master (arduino mega) e 3 arduino slave (arduino uno). Dunque girando in internet e nel forum ho trovato un pò di discussioni sul mio problema, ma le soluzioni trovate o non funzionano o non soddisfano il mio problema.
Io invio una stringa da Visual Basic ad esempio: codice= {from, to, azione, comando}. La stinga di nome codice, non avendo ancora un protocollo realizzato posso dichiararla di qualsiasi tipo, string, byte, int ecc.... (poi sarò un problema di Visual Basic come inviare). Anche la lunghezza e come deve essere composta posso modificarle.
Una volta inviato via seriale la stringa codice nella forma dell'esempio, dovrei farla leggere da arduino sulla seriale e associare a delle variabili i comandi della stringa. Esempio:
variabile A= from;
variabile B= to ;
variabile C= azione;
variabile D= comando.
Anche qua non avendo ancora un protocollo realizzato le 4 variabili possono essere di qualsiasi tipo, la terza variabile preferibilmente byte.
So che parecchi hanno provato e risolto questo problema ma io ancora niente. Tra i codici trovati in rete questo è quello che un pò fa quello che chiedo, ma non fà quello e come dico io.
int c = 0;
int a = 0;
int var = 0;
int variabile[] ={0,0,0,0};
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available()>0){
c= Serial.read();
if (c == ':'){
var=1;
}
if (c == ','){//con questo blocchetto mi leggo il caso 2 se trovo una virgola
var =2;
}
if (c == '#'){//con questo blocchetto mi leggo il caso 3 se trovo il #
var =3;
}
switch (var) {
case 1:
delay (10);
//di questa forse ne potrei fare a meno, ma fa tanta compagnia
a = 0;
break;
case 2:
delay (10);
//incomincio a "infilare" le mie variabili famose nell'array
variabile[a] = Serial.read();
a++;
break;
case 3://se la stringa viene chiusa con # mi comincio a leggere le mie variabili
//giusto per vedere se le mie variabili sono corrette
Serial.println(variabile[0]);
Serial.println(variabile[1]);
Serial.println(variabile[2]);
Serial.println(variabile[3]);
//riporto le mie variabili al valore di partenza
a = 0;
c = 0;
var = 0;
break;
//default:
// if nothing else matches, do the default
// default is optional
}
}
}
Qualcuno può aiutarmi?
Ho anche provato a usare il comando split, ma poi non so come associare alle 4 variabili il proprio valore.
Il codice sopra postato è solo un esempio, posso tranquillamente asfaltarlo tutto.
Grazie