簡體   English   中英

Nextion Display 與 ATmega328P 通信時發出終止命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM