Comunicación Serial fluida PCDUINO - equipo GPS autónomo

Buenas tardes,

Les comento que estoy realizando un proyecto en el que utilizo una PCDUINO (el cual funciona casi de la misma forma que un Arduino UNO) para establecer una comunicación con un equipo GPS que funciona de manera independiente.
El equipo GPS tiene una salida DB9 RS232, por lo que estoy ocupando los pines digitales 0, 1 y GND de la tarjeta PCDUINO con un conversor RS232-ttl. La idea principal es procesar los datos recibidos por el equipo GPS y guardar esos datos en un archivo dentro de pcduino (de lo cual no hay inconvenientes).
El gran problema que tengo es que la pcduino no me lee los datos emitidos por el equipo GPS en el puerto serial y al parecer es porque el equipo no envía un caracter “\n” cuando envia algo al puerto serial. Hice unas pruebas entre PC y PCDUINO y cuando escribo algo desde el Hyperterminal por ejemplo y apreto “enter” puedo ver todo lo que escribí en la pcduino en el monitor que se abre al cargar el sketch, pero cuando no presiono el “enter” no se ve nada en pcduino. Osea la idea es que a tráves de Arduino pueda capturar todo lo que pasa por el puerto serial sin que se deba apretar un “enter”
Espero me puedan ayudar. Gracias.

Les dejo el código con las pruebas que estoy haciendo para la lectura:

void setup(){
       Serial.begin(4800);
}

void loop(){

    if(Serial.available()>0)
    {
        char test=Serial.read();
        printf("%c", test);

     }
     delay(200);

}

Hola. No tiene nada que ver el \n. El arduino estará recibiendo todo lo que venga. Lo que ocurre es que el monitor serie, y la generalidad de los terminales, no envían datos hasta que pulsas enter, para permitir corregir antes de enviar. El problema en tu caso parece que pudiera ser más de conexión. ¿Es correcto el baudrate 4800? ¿Tienes los cables cruzados? (tx arduino-rx gps y rx arduino a tx gps). Creo que tu programa debería recibir algo (aunque no sé qué pinta el delay). Te pongo una pequeña variación; pero creo que el problema no es de programación.

void setup(){
       Serial.begin(4800);
}

void loop(){
    while(Serial.available()>0)
    {
        char test=Serial.read();
        printf("%c", test);

     }
}

EDITO: Estoooo.... ¿qué pinta el printf? ¿Por dónde se supone que tendría que dar salida?

noter,

Respondiendo a tus preguntas:

  • Si, está bien a 4800, es la velocidad de comunicación del GPS
  • Los cables están correctos, de hecho al ingresar caracteres y apretar enter los envía. Además tengo la misma configuración para comunicarme con otros dispositivos y no hay problema con la conexión
  • En PCDUINO, cuando cargas el código de Arduino, se abre una ventana, es igual como cuando ejecutas un programa en C. De hecho ocupo esa función y me imprime en esa pantalla lo que quiero, en este caso, lo que hay en el puerto serie.

Tienes razón acerca de que Arduino lee todo lo que hay en el puerto serie, sin que se ingrese un \n. Lo acabo de comprobar con otro dispositivo.

Entonces, el problema es que no hay comunicación efectiva entre el dispositivo y el arduino, ¿no? Acabo de caer en lo del DB9. Ten en cuenta que hay cables que cruzan tx y rx y otros que no. ¿Has probado a cruzar los cables tx/rx?