0

我有一些代码允许我使用 Arduino 通过串行端口接收和发送数据

void setup() {
  Serial.begin(1200);
  Serial1.begin(1200);
}

void loop() {
  // Send data
  if (Serial.available() > 0) {
    char inChar = Serial.read();
    //...
  }
  else {
    Serial1.println(0xAA); // need to transmit always
    digitalWrite(13, HIGH); delay(5);
    digitalWrite(13, LOW); delay(5);
  }

  // Receive data
  if (Serial1.available() > 0) {
    char inChar = Serial1.read();
    //...
  }
}

我需要这条线Serial1.println(0xAA);,因为我的电路需要始终传输某些东西才能工作(噪声问题)。如果我没有else声明它工作得很好,但我需要让串行端口也总是传输一些东西。

问题在于我的 C# 应用程序(我在 C# 中的发送/接收代码),我在其中键入要发送的消息,但我无法发送任何数据。我认为这是因为缓冲区总是满的。我读了一些关于双缓冲和线程的东西,但我不知道它是如何使这项工作的,也不知道我需要改变哪一方面(arduino 或 c#)。有什么想法吗?

注意:如果没有else语句,一切都可以正常工作。现在我需要一些方法来让其他代码使用它。

4

0 回答 0