总是从串行端口获取 254
Always getting 254 from serial port
我正在通过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。
相关文章:
- Qt Q串行端口未编程设备未关闭
- 在 linux c++ 中没有通过串行端口发送的数据
- 检查串行端口Linux中是否有传入数据(cbInQue for linux)
- 在不传输的情况下更改 Win32 中的串行端口波特率
- 增强 ASIO 和串行端口异步读取
- 串行端口写入究竟如何从缓冲区实际写入数据?
- 如何将参数这些串行端口传递到函数中
- 从 C/C++ 访问 Android 中的串行端口
- Qt两个串行端口发送和接收
- 通过串行端口从GPS传感器读取
- 提升 asio 串行端口"end of file"
- 通过串行端口发送多个值
- 与QSerialPort配合使用的串行端口仿真
- 如何通过boost::asio和shared_ptr创建串行端口
- 串行端口编码
- 使用来自串行端口的字符串数据来操作振镜扫描仪在更高的速度下会出错
- 写入和读取十六进制 TRAM QT 串行端口
- Qt串行端口数据接收
- Qt modbus 串行端口流量控制处理
- 总是从串行端口获取 254