es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Teniendo problema para finalizar el comando para la comunicación del display Nextion con el ATmega328P.

¿Por qué se está imprimiendo un carácter adicional en el puerto serial?
Mira la captura de pantalla adjunta, por favor.

Carácter adicional en mi comando Nextion, ver área marcada en círculo.
Está recibiendo un 0x1A y yo no estoy enviando un retorno de carro.

Desarrollé un código para implementar la comunicación entre la pantalla Nextion y el ATmega328P a través del puerto serial.
El problema que tengo es al intentar actualizar la barra de progreso. El primer valor enviado al componente se muestra correctamente, pero al enviar comandos/valores posteriores, el simulador devuelve errores.
Rastreé el problema a esta cadena de terminación: “\xff\xff\xff”.
Desde el simulador del editor Nextion, el ATmega328P envía un carácter erróneo a través del puerto serial y no logro entender de dónde viene.

Uso Eclipse + el complemento AVR, así es como empaqueto el comando y lo envío. La segunda función que se muestra a continuación es la que se encarga del envío serial.

void setValue(uint8_t* value) {
char buf[40]={};
sprintf(buf, “%s.val=%u”, get_name(), *value);
return send_cmd_reply(buf);
}

bool send_cmd_reply(const char* cmd)
{
UsartString(cmd);
UsartString(“\xff\xff\xff”);
return (TRUE);
}

int UsartString(const char* fmt, …)
{
char buff[200];
va_list args;
va_start(args, fmt);
int status = vsnprintf(buff, sizeof(buff), fmt, args);
va_end(args);
uint8_ts = (UI8_t *)&buff;
while (
s) {UsartChar(*s++);}
return (status);
}

Cuando intenté utilizar el IDE de Arduino y su implementación serial como se muestra a continuación, todo funcionó correctamente.

String Tosend = “j1.val=”;
Tosend += String(value);
Serial.print(Tosend);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el carácter adicional impreso en el puerto serial se debe a la cadena de terminación “\xff\xff\xff”. Esta cadena es enviada por el microcontrolador ATmega328P después de que se ejecuta el comando, y no es necesaria para el correcto funcionamiento de la pantalla Nextion.

    Una posible solución sería eliminar esta cadena de terminación del código y probar si la comunicación entre el ATmega328P y la pantalla Nextion sigue siendo funcional. Otra solución podría ser modificar la configuración de la pantalla Nextion para ignorar esta cadena de terminación.

    También es importante tener en cuenta que la implementación de la comunicación serial en el código utilizando Eclipse + el complemento AVR puede diferir de cómo se implementa en el entorno de desarrollo Arduino IDE, lo que podría explicar por qué el problema no está presente al utilizar este último.

Comments are closed.