java解析串口数据解析,异或不太懂,求大佬帮忙给点思路实现解析

发布于 2022-09-12 02:23:59 字数 543 浏览 24 评论 0

所传送的数据为:每帧数据由 12 组数据组成。格式如下
异或=2⊕3⊕……8⊕9

第 X 字节内 容 及 注 解
102(XON) 开始
2+或- 符号位
3数据 高位
数据
数据
8数据 低位
9小数点位数 从右到左(0~4)
10异或校验 高四位
11异或校验 低四位
1203(X0FF) 结束

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浪推晚风 2022-09-19 02:23:59

解析步骤

  1. 从串口读取 12 字节,存成数组变量 bs
  2. 若首字节不是 2,报错
  3. 若尾字节不是 3,报错
  4. bs[8] 不在 04 范围,报错
  5. 计算数据段的异或值 xValue(伪代码)

    xValue = bs[1] ^ bs[2] ^ bs[3] ^ bs[4] ^ bs[5] ^ bs[6] ^ bs[7] ^ bs[8] 
  6. bs[9] 不是 xValue >> 4,报错
  7. bs[10] 不是 xValue & 0xf,报错
  8. 计算数据值 realValue(伪代码)

    // 提取 big-endian 整数。
    n = 0;
    for (i=3; i<=8; i++) {
        n = (n << 8) | bs[i-1];
    }
    
    // 符号,假定零为正,非零为负。
    // 此处需要确认!!!
    if (bs[1] != 0) {
        n *= -1;
    }
    
    // 转成小数。
    // 有多种转法,结果精度可能不同,请根据实际情况做选择。比如用字符串。
    realValue = n * 1.0;
    for (i=0; i<bs[8]; i++) {
        realValue /= 10;
    }
浮生未歇 2022-09-19 02:23:59

应该说的是异或(第10和第11个字节)等于第2到第9个字节的异或。但是怎么拆成两个字节了,这个没有其他说明吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文