代码之家  ›  专栏  ›  技术社区  ›  karamazovbros

如何像C#一样读取串行数据?

  •  0
  • karamazovbros  · 技术社区  · 7 年前

    在C_中,我使用串行端口 阅读 功能如下:

    byte[] buffer = new byte[100000];
    int bytesRead = serial.Read(buffer, 0, 100000);
    

    在处理过程中,我使用 读取字节 因此:

    byte[] buffer = new byte[100000];
    int bytesRead = serial.readBytes(buffer);
    

    在处理过程中,当我从 读取字节 功能,但是当我使用常规的 阅读 函数获取正确的值,但无法将数据捕获到字节数组中在导致我在缓冲区数组中获得错误值的代码的处理版本中,我做错了什么?

    我以同样的方式打印两个版本的数据:

    for(int i=0; i<bytesRead; i++){ 
        println(buffer[i]); 
    }
    

    C正确输出: enter image description here 处理错误输出: enter image description here

    1 回复  |  直到 7 年前
        1
  •  0
  •   Camilo Sanchez    7 年前

    Java字节是有符号的,因此超过128的任何值都将溢出。

    一个快速的解决办法是

    int anUnsignedByte = (int) aSignedByte & 0xff;
    

    到每个字节。