java - 如何在处理中以与 C# 相同的方式读取串行数据?
问题描述
在 C# 中,我使用 SerialPort Read函数,如下所示:
byte[] buffer = new byte[100000];
int bytesRead = serial.Read(buffer, 0, 100000);
在处理中,我这样使用readBytes:
byte[] buffer = new byte[100000];
int bytesRead = serial.readBytes(buffer);
在处理中,当我从readBytes函数遍历缓冲区数组时,我得到了不正确的字节值,但是当我只使用常规读取函数时,我得到了正确的值,但我无法将数据抓取到字节数组中. 我在导致我在缓冲区数组中获取错误值的代码的处理版本中做错了什么?
我在两个版本中都以相同的方式打印出数据:
for(int i=0; i<bytesRead; i++){
println(buffer[i]);
}
解决方案
Java 字节是有符号的,所以任何超过 128 的值都会溢出。
一个快速的解决方案是
int anUnsignedByte = (int) aSignedByte & 0xff;
到您的每个字节。
推荐阅读
- python - 如何修复 TypeError: +: 'int' 和 'str' 不支持的操作数类型
- .net - 可以使用不是长期运行的任务的长期任务吗?
- c# - 使用协程设置进行 PlayMode 测试
- python - 根据另一个数据框中的行条件,在一个数据框中查找值
- python - Django 服务器无法访问
- javascript - 如何替换src domian tld
- r - 将递归向量更改为原子向量以进行 t 检验
- react-native - 基于状态的条件渲染不适用于状态更改
- android - Android Pie 上的 Delphi Android API 级别 28 - 如何获得前台服务权限?
- java - 我有一个mysql连接问题,虽然我用相同的参数连接到命令行