下一步不向Arduino发送数据

时间:2018-07-01 07:45:50

标签: arduino serial-port microcontroller arduino-uno

我对Nextion NX4024T032_011遇到问题。 我可以从Arduino Uno或Leonardo向其发送数据,但是当我按下按钮(Arduino板上的Rx二极管没有闪烁)时,Nextion似乎没有向Arduino发送数据。 在打开串行监视器后,我只能在串行端口上看到“ recvRetCommandFinished err”: recvRetCommandFinished err

据我所述,“下一步”按钮已正确设置。 Nextion button

我正在使用此库: https://github.com/itead/ITEADLIB_Arduino_Nextion 但我已经对其进行了一些修改。 我在NexConfig.h中更改了这一行:

 #define nexSerial Serial2

收件人:

#include <SoftwareSerial.h>
extern SoftwareSerial HMISerial;
#define nexSerial HMISerial

Arduino代码:

    /*
How to use Nextion library:
https://create.arduino.cc/projecthub/tsavascii/nextion-lcd-communicate-with-arduino-uno-188a44
*/
#include "Nextion.h"
SoftwareSerial HMISerial(10, 11);

#define ledPin 13

NexButton b0 = NexButton(0, 1, "b0");
NexButton b1 = NexButton(0, 7, "b1");
NexButton b0_page2 = NexButton(0, 1, "b0");
NexNumber n1 = NexNumber(0, 5, "n0");
NexText t0 = NexText(0, 2, "t0");
NexText t1 = NexText(0, 6, "t1");
NexText t2 = NexText(0, 3, "t2");

int myInt=0;
NexTouch *nex_listen_list[] = {&b1,NULL};
  /*
    Difference betwen Serial write and print:
    https://arduino.stackexchange.com/questions/10088/what-is-the-difference-between-HMISerial-write-and-HMISerial-print-and-when-are-they
  */

void b1PushCallback(void *ptr)
{
  digitalWrite(ledPin, HIGH);
}

void b1PopCallback(void *ptr)
{
  digitalWrite(ledPin, LOW);  
}

void nextionPrint(String objectName, String value)
{
  objectName = objectName + "=\""+ value + "\"";
  HMISerial.print(objectName);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
}

void nextionPrint(String objectName,int value)
{
  objectName = objectName + "=";
  HMISerial.print(objectName);
  HMISerial.print(value);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
  HMISerial.write(0xff);
}

void setup() 
{
  pinMode(ledPin,OUTPUT);
  nexInit();
  digitalWrite(ledPin,LOW);
  b1.attachPush(b1PushCallback); //button press
  b1.attachPop(b1PopCallback); //button release
  nextionPrint("t1.txt", "Arduino Text");
}

void loop() 
{   
    nexLoop(nex_listen_list);

    ++myInt;

    nextionPrint("n0.val", myInt);

    if(myInt>254)
    {
      myInt=0;  
    }

    if(HMISerial.available())
    {
      Serial.println(HMISerial.read());
    }

    delay(500);
}

任何提示为何我无法从Nextion获取任何数据?

2 个答案:

答案 0 :(得分:0)

首先,重新检查您声明的2个按钮的页面ID和对象ID。     NexButton b0 = NexButton(0, 1, "b0"); NexButton b0_page2 = NexButton(0, 1, "b0");

第0页上的两个按钮如何具有相同的对象ID 1

此外,重新检查Tx和Rx连接。 Tx到Rx和Rx到Tx。 我希望这能解决您的问题。

答案 1 :(得分:0)

您对使用的物理引脚Arduino充满信心吗?我总是很困惑,因此我必须恢复关于IDE的引脚名称,MCU的引脚号和板的引脚号的注释。 在我的素描中,我写道:

SoftwareSerial HMISerial(10,11); // RX,TX

我正在使用Arduino Nano和 我在标记为D10的引脚(来自USB连接器的第3个)上从Nextion(蓝线)接收数据; 我将数据传输到标有D11的引脚(USB连接器的第二个)上的Nextion(黄线)。

这不是很大的帮助,但是这就是我现在所能做的一切。 祝你好运。