Arduino 的 C# GUI:串行数据不工作

C# GUI to Arduino: Serial Data Not Working

我正在尝试通过 USB 连接向我的 arduino 发送一个整数。使用草图监视器时,我可以验证代码是否有效;但是,在使用 C# .NET GUI 时,我无法正常工作。

我知道数据是通过 arduino 上亮起的 LED 发送的。

我在文本框中输入 RPM,将其转换为 4 个字节(整数)并写入。这是 GUI 代码:

RPMMove = Convert.ToInt32(tbRPM.Text);
byte[] bRPM = BitConverter.GetBytes(RPMMove);
port.Write(bRPM, 0, 4);

在arduino上:

void setup()
{
Serial.begin(9600);
Serial.setTimeout(100);
}
void loop()
{
while (Serial.available() > 0)
  {
      i = Serial.parseInt();
      stepper.setRPM(i); //move motor of other library
      //Serial.println(i); //I get the correct integer via the arduino monitor here.
  }
}
    

parseInt 以及当您在控制台中键入数字时它起作用的事实都表明设备希望将字符串作为文本发送。所以不要使用BitConverter,而是:

byte[] bRPM = Encoding.Ascii.GetBytes($"{RPMMove}\r\n");

您可能需要调整行尾,自然地使用在您的终端仿真器(“控制台”)中配置的相同行尾应该可以。