Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serial port Arduino到Arduino通过串行_Serial Port_Arduino_Uart - Fatal编程技术网

Serial port Arduino到Arduino通过串行

Serial port Arduino到Arduino通过串行,serial-port,arduino,uart,Serial Port,Arduino,Uart,我希望通过可用的UART端口将串行数据从Arduino Uno发送到Arduino Nano 在Nano端接收数据时,我必须检查数据是否与“a”或“b”匹配。如果有,我必须把数据送回联合国办事处 我在Nano端使用了以下代码: void GMP_OutputSerial(void) { if(Serial.available()) // Check if serial data is avaiable

我希望通过可用的UART端口将串行数据从Arduino Uno发送到Arduino Nano

在Nano端接收数据时,我必须检查数据是否与“a”或“b”匹配。如果有,我必须把数据送回联合国办事处

我在Nano端使用了以下代码:

void GMP_OutputSerial(void)
{
  if(Serial.available())                                              // Check if serial data is avaiable
  {
    unSerialAvailable = Serial.read();                                // Read the data if serial data is available
    if(unSerialAvailable == 'A' || unSerialAvailable == 'B' || unSerialAvailable == 'a' || unSerialAvailable == 'b')          // Proceed only if available data is equal to A or B
    {
      /*
      if(g_stSensorParms.stAppParms.unFinalDistance > 80 || g_stSensorParms.stAppParms.unFinalDistance < 0)   
      {
        Serial.println("Distance: Out of range");
      }
      else
      {
        */
        Serial.print("Distance: ");                                     // Output Distance text on the serial monitor
        Serial.println(g_stSensorParms.stAppParms.unFinalDistance);      // Output the actual distance on the serial monitor
    }
  }
}
然而,我看不到任何交流。两块板的电源均来自外部电源=5V

Uno的TX线连接到Nano的RX线,反之亦然

我做错了什么?

Serial.write(a)中
a
等于“a”?或者你真的是指
Serial.write('A')

p、 实际上,通过连接1ft,您可以为串行端口制作廉价的“嗅探器”。电缆连接至DB9连接器,插入COM端口(或USB连接至串行适配器),并“查看”arduino RX\TX线路上的实际数据。
serial.write(a)
a
等于“a”?或者你真的是指
Serial.write('A')

p、 实际上,通过连接1ft,您可以为串行端口制作廉价的“嗅探器”。电缆连接到DB9连接器,插入COM端口(或USB连接到串行适配器),并“查看”arduino RX\TX线路上的实际数据。

您是否在每个板的设置功能中设置了串行.begin(9600)? 如果你在UNO上发布核心运行信息也会有所帮助。 或者至少确认你已经验证了它的工作原理,比如用PC替换Nano,就像OP写的那样。 UNO在TX和RX线路上都有发光二极管,因此如果您使用的是“真实”串行端口,您可以轻松验证是否传输了任何内容。 arduino ide还提供了集成的、易于使用的串行嗅探器。

您是否在每个板的设置功能中都添加了serial.begin(9600)? 如果你在UNO上发布核心运行信息也会有所帮助。 或者至少确认你已经验证了它的工作原理,比如用PC替换Nano,就像OP写的那样。 UNO在TX和RX线路上都有发光二极管,因此如果您使用的是“真实”串行端口,您可以轻松验证是否传输了任何内容。
arduino ide还带有集成的、易于使用的串行嗅探器。

请声明
char a='a'
,然后按如下方式编写

char a='A';
void setup() 
{

    Serial.begin(9600);

}

void loop() 
{

     Serial.write(a);
     delay(10);
}

请声明
chara='a'
,然后按如下方式编写

char a='A';
void setup() 
{

    Serial.begin(9600);

}

void loop() 
{

     Serial.write(a);
     delay(10);
}

来自Arduino UNO

void setup()
{
   Serial.begin(9600);
}
void loop()
{
Serial.print("a");
}
void setup()
{
Serial.begin(9600);
if(Serial.available()>0)
{
char a = Serial.read();
}
}
来自Arduino NANO

void setup()
{
   Serial.begin(9600);
}
void loop()
{
Serial.print("a");
}
void setup()
{
Serial.begin(9600);
if(Serial.available()>0)
{
char a = Serial.read();
}
}

来自Arduino UNO

void setup()
{
   Serial.begin(9600);
}
void loop()
{
Serial.print("a");
}
void setup()
{
Serial.begin(9600);
if(Serial.available()>0)
{
char a = Serial.read();
}
}
来自Arduino NANO

void setup()
{
   Serial.begin(9600);
}
void loop()
{
Serial.print("a");
}
void setup()
{
Serial.begin(9600);
if(Serial.available()>0)
{
char a = Serial.read();
}
}

上述代码应正常工作,
我建议您在尝试传输时为字符串创建一些校验和,因为两块板之间的串行连接对于大量数据来说不够稳定。

上述代码应能正常工作,
我建议您在尝试传输时为字符串创建一些校验和,因为两块板之间的串行连接对于大量数据来说不够稳定。

在上载脚本之前,只需删除RX TX连接,在上载成功后,重新连接并再次检查。
此时设置数据速率并不重要,因为即使两个芯片之间的数据速率不匹配(这很可能发生),您将得到的错误是数据失真,因此,在上传脚本之前,您将进行传输,但不会以您想要的方式进行传输,只需删除RX-TX连接,在上传成功后,重新连接并再次切换即可。
此时设置数据速率并不重要,因为即使两个芯片之间的数据速率不匹配(这很可能发生),您将得到的错误是扭曲的数据,因此您将进行传输,但不会以您想要的方式进行传输。

“我看不到任何通信发生。”--您可能只是说您没有看到预期数据的接收。“通信”包括传输和接收。您可能还没有检查传输。您可以在Uno'x TxD pin上使用“示波器”,或者按照@Keroronsk的建议嗅探端口。“我看不到任何通信发生。”--您可能只是说没有看到预期数据的接收。“通信”包括传输和接收。您可能还没有检查传输。您可以在Uno'x TxD pin上使用“scope”,或者按照@Keroronsk的建议嗅探端口。这实际上是一个注释,而不是答案。再加上一点代表性,这实际上是一个评论,而不是一个答案。再重复一点。