[英]Having Issue Terminating Command for Nextion Display Communicating ATmega328P
為什么我在串口上打印了額外的字符?
請參閱隨附的屏幕截圖。
我的 Nextion 命令中的額外字符請參見圓圈區域
收到了 0x1A,我沒有發送回車。
我開發了一個代碼來實現 nextion display 和 ATmega328P 通過串口進行通信。
手頭的問題,試圖更新進度條。 發送到組件的第一個值將傳遞,但隨后的命令/值,模擬器返回錯誤。
我將問題追溯到這個終止字符串:“\xff\xff\xff”。
從 Nextion 編輯器模擬器。 Atmega328P 在串口上發送了一個雜散字符,我無法理解它來自這里。
我使用 Eclipse + AVR 插件,這就是我打包命令並發送的方式。 第二個 function 下來涉及串行發送。
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);
不幸的是,我不熟悉 Eclipse + AVR。 但是我可以告訴你 0x1A (ctrl^z) 是一個流行的“傳輸結束”字符。 我建議檢查您的 IDE 或 USART 處理程序的配置。
如果這根本不是問題,我無法理解您的屏幕截圖,非常抱歉。
希望我能幫上忙,斯特羅米
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.