Hola espero que estén bien, llevo muy poco tiempo con usando lo que es Arduino y por lo que veo es una gran comunidad que la verdad es fabuloso, actualmente estoy trabajando en un proyecto que es un pastillero electrónico, en el cual trabaja de la siguiente manera:
- Recibe por el puerto serial y guarda en una variable String los datos de las pastillas que tiene el siguiente formato:
- NombrePast1,Cantidad1,nroHoras1,hora1|hora2|hora3...._NombrePast2,Cantidad2,nroHoras2,hora1|hora2|hora3....._NombrePast3,Cantidad3,nroHoras3,hora3|hora3|hora3....._NombrePast4,Cantidad4,nroHoras4,hora1|hora2|hora3....*
- Luego estos datos se separan y guardan mediante un método que implemente en un arreglo multidimensional de String llamado datPast[4][4].
[code]
void loop() {
if(digitalRead(pulsadorRecirDat) == HIGH){
datReci = recibirDatos(); //LLAMO A LA FUNCION PARA RECIBIR LOS DATOS datReci
separadoGuardado(datReci); //FUNCION QUE Separa los datos y Los guarda en el Array datPast[4][4]
}
}
String recibirDatos(){
String datos = "";
while(1){
if(Serial.available()>0){
delay(1000);
while(Serial.available()>0){
recibDatPC += (char)Serial.read();
}
recibDatPC.trim();
Serial.println(recibDatPC); //AGREGE ESTO PARA MOSTRARLO EN EL MONITOR
break;
}
return recibDatPC;
}
[/code]
Y es en el punto numero 1 donde tengo problemas muchas veces ya que en la mayoría de casos no me recibe todos los datos ejemplo yo inserto en el monitor serial lo siguiente
**PastillaA,1,2,15:30|15:40_PastillaB,1,2,15:50|16:0PastillaC,1,2,16:30|16:40**PastillaD,1,2,17:0|17:40
En la mayoría de casos el resultado que se muestra el monitor es el siguiente:
**PastillaA,1,2,15:30|15:40_PastillaB,1,2,15:50|16:0PastillaC,1,2,16:30|16:40**PastillaD,1,2,17
O en algunos casos
**PastillaA,1,2,15:30|15:40_PastillaB,1,2,15:50|16:0PastillaC,1,2,16:30|16:40**PastillaD,1,2,17:0
Y en extraños casos se obtienen los datos completos
**PastillaA,1,2,15:30|15:40_PastillaB,1,2,15:50|16:0PastillaC,1,2,16:30|16:40**PastillaD,1,2,17:0|17:40
Y como resultado de este problema los datos se guardan incompletos en datPast [4] [4]
Ya intente muchas cosas como subiendo los baudios en Serial.begin (115200); o otro valor intente tambien aumentando Serial.setTimeout() y también intente leer los datos usando Serial.readString (); pero no obtengo resultados favorables.
Espero que puedan ayudarme con este problema desde ya muchas gracias de antemano por su tiempo y ayuda.