0

我正在尝试用软件序列号与很多 arduino 通信。将有一个主 arduino,它将有 1 个软件串行端口。并且会有很多slave arduino,它们将有3个软件串行端口。Master arduino 将连接到其中一个奴隶。从站将相互连接。我的问题是当我将某些东西发送给奴隶或奴隶发送给主人时。有时它会得到一些我没有发送的东西。

我正在发送这些数据:#1|||232|2332322|233233*

我有时会得到这样的结果:⸮⸮H⸮f⸮|2⸮ƚ⸮&f~2͒⸮⸮H

我该如何解决?

示例连接图像

传入数据

奴隶代码:

#include <SoftwareSerial.h>

#define fSRxPin 2
#define fSTxPin 3
#define sSRxPin 4
#define sSTxPin 5
#define tSRxPin 6
#define tSTxPin 7

SoftwareSerial firstSide = SoftwareSerial(fSRxPin, fSTxPin); // RX, TX
SoftwareSerial secondSide = SoftwareSerial(sSRxPin, sSTxPin);
SoftwareSerial thirdSide = SoftwareSerial(tSRxPin, tSTxPin);

char comingCharacter;

String comingData;

void setup()
{
  pinMode(13, OUTPUT);

  firstSide.begin(38400);
  secondSide.begin(38400);
  thirdSide.begin(38400);
  Serial.begin(9600);
  Serial.println("");
  Serial.flush();
}

void loop()
{

  firstSide.listen();
  if (firstSide.available() > 0)
  {
    comingData = "";
    while (firstSide.available() > 0)
    {
      comingCharacter = firstSide.read();
      comingData += comingCharacter;
    }
    Serial.println("");
    secondSide.println("");
    Serial.println(comingData);
    secondSide.print(comingData);
    Serial.flush();
    secondSide.flush();
  }

  delay(100);
}

主码:

#include <SoftwareSerial.h>
SoftwareSerial firstSide(2, 3); //RX,TX
SoftwareSerial secondSide(4, 5);

void startSeedCollecting()
{
  firstSide.println();
}

void setup()
{
  firstSide.begin(38400);  // 57600 Max speed for arduino uno
  Serial.begin(9600);
  //delay(2000);
}

void loop()
{
  firstSide.println("#1|||232|2332322|233233*");
  firstSide.flush();

  firstSide.listen();
  if (firstSide.available() > 0)
  {
    String comingData = "";
    while (firstSide.available() > 0)
    {
      char comingCharacter = firstSide.read();
      comingData += comingCharacter;
    }
    Serial.println("");
    secondSide.println("");
    Serial.println(comingData);
    Serial.flush();
  }
  delay(100);
}
4

0 回答 0