「已注销」 2020-05-13 15:00 采纳率: 50%
浏览 1014
已采纳

Unity 如何解析接收到的串口数据

串口助手上接收到的数据格式为 FC 02 00 00 , 02 表示有两台设备连接, 后面的两个 00 表示各自的速度

成员变量

    public int ClientCount = 2;  //设备数量
    public int[] High2Arr;           //高位数组
    public int[] SpeedValueArr;  //速度数组
    public List<byte> listReceive = new List<byte>();  //存储串口数据的数组

这是读取串口数据的函数

private void readPortData() {
        try {
            while ((serialPort.ReadByte()) != null) {
                byte spDate = Convert.ToByte(serialPort.ReadByte());
                listReceive.Add(spDate);
                ParseReceive();
            }
        } catch (Exception ex) {
            sysMsg = ex.Message.ToString();
        }
 }

这是解析串口数据的函数

if (listReceive.Count < ClientCount + 2)
            return;
        for (int i = 0; i < ClientCount; i++) {
            High2Arr[i] = (listReceive[listReceive.Count - 1 - i] & 0x00) >> 6;//高两位状态
            if (High2Arr[i] == 2) { //高两位等于10=2 :前进
                SpeedValueArr[i] = (listReceive[listReceive.Count - 1 - i] & 0x3f);// 低六位速度值
            } else if (High2Arr[i] == 3) { //高两位等于11=3 :后退
                SpeedValueArr[i] = 0;
            } else if (High2Arr[i] == 0) { //高两位等于00=0 :闲置静止
                SpeedValueArr[i] = 0;
            }
        }
        listReceive.RemoveRange(0, ClientCount + 2);

可是我最后并没有接收到任何的数据,,,
请问这是怎么了
我也不知道为什么我没有C 币, 请见谅

  • 写回答

1条回答 默认 最新

  • 关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容