总是从串行端口获取 254

Always getting 254 from serial port

本文关键字:获取 串行端口      更新时间:2023-10-16

我正在通过Windows表单应用程序将一个字节数组传递到arduino板上的bluesmirf uno中。我能够从蓝牙读取信号并通过串行打印出来,但输出始终是 254,我不知道为什么。

下面是C++代码。

const int led = 8;
int incomingByte = 0;
#define RxD 10
#define TxD 11
#include <hmi.h>
SoftwareSerial mySerial(RxD, TxD); // RX pin, TX pin
void setup() {
 pinMode(led, OUTPUT);
 pinMode(RxD, INPUT);
 pinMode(TxD, OUTPUT);
 Serial.begin(9600); 
 mySerial.begin(11520); 
}
void loop() {
  incomingByte = mySerial.read();
  if(incomingByte > 0){
   Serial.println("Here is: ");
    Serial.println(incomingByte);
    digitalWrite(led,HIGH);
   }
}

下面是相关的 c# 代码。

        int MyInt = 1;
        byte[] b = BitConverter.GetBytes(MyInt);
        serialPort1.Write(b, 0, 4);

我能够使用 c# 代码获取输出 248 的代码:

serialPort1.Write(new Byte[] { 1, 1, 1, 1 }, 0 , 4);

和 192 来自

byte[] b = { 0, 1, 1, 1, 1, 1, 1, 1 };
serialPort1.Write(b, 0, 7);

但我不知道为什么,返回的数字似乎基于字节数组中传递的元素数,而不管数组中实际是什么。

您应该尝试较低的波特率。 SoftwareSerial使用大量的CPU,微控制器可能无法处理所有数据。

参考文献: https://arduino.stackexchange.com/a/30117/32059, http://forum.arduino.cc/index.php?topic=96271.0 和 http://forum.arduino.cc/index.php?topic=140299.msg1063344#msg1063344

当我只是在敲打它时,这个问题是随机解决的。

我认为该问题的解决方法是我将波特率设置为 11520 而不是Gre_Gor所说的 115200。