为什么我在串口上打印了额外的字符?
请参阅随附的屏幕截图。
我的 Nextion 命令中的额外字符请参见圆圈区域
收到 0x1A 并且我没有发送回车。
我开发了一个代码来实现 nextion display 和 ATmega328P 通过串口进行通信。
手头的问题,在尝试更新进度条。发送到组件的第一个值将传递,但随后的命令/值,模拟器返回错误。
我将问题追溯到这个终止字符串:“\xff\xff\xff”。
从 Nextion 编辑器模拟器。Atmega328P 在串口上发送了一个杂散字符,我无法理解它来自这里。
我使用 Eclipse + AVR 插件,这就是我打包命令和发送的方式。第二个功能涉及串行发送。
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_t*s = (UI8_t *)&buff;
while (*s) {UsartChar(*s++);}
return (status);
}
当我尝试使用 Arduino IDE 及其串行实现如下时,一切都很好。
String Tosend = "j1.val=";
Tosend += String(value);
Serial.print(Tosend);
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);