Buenas a todos.
Quiero controlar con una placa Mega un dispositivo por USB con estas características:
Baud rate: 9600
Sin paridad
Bit de parada: 1
Bit de datos: 8
Control de flujo: No
Delimitador: CR
Si conecto el dispositivo al PC vía USB y lo controlo desde el monitor serie, poniendo sólo CR como delimitador, funciona (Imagen 2)
Le he conectado al Mega, usando el Serial 3, un Arduino Nano en el que se me quemó el micro (se lo quité) pero que el FTDI funciona bien.
Si conecto el Mega y el Nano (llamemosle así aunque sea el FTDI) al PC por puertos USB distintos y miro el monitor serie de cada uno también hay comunicación. Si envío comandos por el monitor asociado al Mega estos llegan al Nano y salen por su monitor uno a continuación del otro. También desde el monitor del Nano puedo mandar mensajes al Mega y sin problema. En (Imagen 3), COM3 es el Mega y COM4 el Nano.
En resumen, el FTDI del Nano parece que sirve para comunicar el Mega y el dispositivo.
El problema lo tengo cuando conecto el FTDI al dispositivo. Le mando comandos desde el Mega pero no hace nada. Debería mandar 'OK(comando)' o 'ERR' si la transmisión es correcta.
Os adjunto el código que estoy probando:
#include <String.h>
void setup() {
Serial.begin(9600); // PC - Mega
Serial.println("SERIAL 1 ON");
Serial3.begin(9600); // Mega - Módulo
delay(1000);
}
void loop() {
if(Serial.available()) { // Mando comando desde PC
String entrada_PC = Serial.readStringUntil('\r');
entrada_PC = entrada_PC + '\r';
Serial3.print(entrada_PC);
}
if(Serial3.available()) { // Recibo mensaje del módulo
String entrada_modulo = Serial3.readStringUntil('\r');
Serial.println(entrada_modulo);
}
}
¿Puede ser que no esté enviando los strings con el formato correcto?
Gracias de antemano por vuestra ayuda.
EDIT: Corrijo el envío de entrada_PC desde Serial3