Buenas foro!
Estoy trabajando en un proyecto que consiste en controlar una cámara de visión con un arduino y obtener de ella datos de la medición (si todas las piezas miden OK o si hay alguna mala).
Todo esto mediante una conexión RS232.
Adquirí el modulo para la conexión serial (el MAX232)y ya he conseguido comunicarme con la cámara y hacer que empiece la medición.
Lo único estoy atascado en el punto de recibir los datos de la medición.
Tengo que recibir algo así:
AK 0 FC
ST C7
SE 1C610049 4.63 6B
DA 2016/07/07 18:11:07 80
MS 22 44
LO BB
CH AB
IT 1 63.428 mm Diámetro001 0.000 64.000 63.000 OK 1A
IT 2 Fail mm Diámetro002 0.000 4.400 4.000 Fail DE
EN B3
CP 0 03
El problema es que solo me muestra lo que voy a adjuntar:

La idea después es con los datos que me han salido, ver si alguna me ha dado mala y en función de cual sea la mala (IT 1 o IT2 o ...) activar una salida.
A ver si puede alguien echarme un cable...
Muchas gracias de antemano!!
Adjunto el código:
//DECLARACIÓN DE VARIABLES PARA E/S
int luz_azul_ok=5;
int luz_ama_ocupado=4;
int luz_roja_error=3;
int boton=2;
//DECLARACIÓN DE VARIABLES DE DATOS
char datos1=0;
char datos2=0;
String respuesta1="";
String respuesta2="";
void setup() {
Serial.begin(115200); //INICIO COMUNICACION SERIE A 115200 BAUDIOS
pinMode (luz_azul_ok, OUTPUT); //DECLARO E/S
pinMode (luz_ama_ocupado, OUTPUT);
pinMode (luz_roja_error, OUTPUT);
pinMode (boton, INPUT);
}
void loop() {
digitalWrite(luz_ama_ocupado, HIGH);
delay (2000);
Serial.println ("SA B4"); //ENVÍO COMANDO DISPONIBILIDAD KEYENCE
digitalWrite(luz_ama_ocupado, LOW);
delay (1000);
while (Serial.available()){ //QUE AGRUPE EN RESPUESTA1 TODO LO QUE ENTRA POR EL PUERTO SERIE Y QUE VA LEYENDO EN DATOS1
char datos1 = Serial.read();
respuesta1 += datos1;
if((respuesta1)=="SA 0 04"){ //SI LA RESPUESTA ES ESTA, ESTÁ DISPONIBLE PARA ENVIAR DATOS
digitalWrite (luz_azul_ok,HIGH);
delay(1000);
Serial.println ("EX BD"); //PRIMER ENVÍO DE COMANDO MEDIR (POSICIONA LA BASE)
datos1=0;
respuesta1="";
delay (5000); //ESPERO QUE SE POSICIONE LA KEYENCE PARA EMPEZAR A MEDIR
Serial.println ("EX BD"); //ENVÍO DE NUEVO EL COMANDO PARA QUE EMPIECE A MEDIR
digitalWrite (luz_azul_ok,LOW);
delay (50000); //ESPERO 50SEG A QUE MIDA LAS PIEZAS
while (Serial.available()){ //QUE AGRUPE EN RESPUESTA2 TODO LO QUE ENTRA POR EL PUERTO SERIE Y QUE VA LEYENDO EN DATOS2 (AQUÍ VAN LOS RESULTADOS DE LA MEDICIÓN) ?¿no obtengo todos los datos?¿
delay(500);
char datos2=Serial.read();
respuesta2+=datos2;}
Serial.print (respuesta2);//esto lo hago para ver los datos que me llegan
digitalWrite (luz_roja_error,HIGH);//aviso fin secuencia
delay(60000);
digitalWrite (luz_roja_error,LOW);
datos2=0;
respuesta2="";
}
}
}