我正在尝试用软件序列号与很多 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);
}