我已经烧录成功官方给的people count demo,现在想编写一套matlab的代码,来处理返回的数据生成一个能够反映相对雷达具体位置的实施点云。
经过文档搜查,官方给出经过处理后的uart传输数据为数据包格式,数据包结构由固定大小的帧报头组成,后跟可变数量的 TLV。每个 TLV 都有固定的标头,后跟可变大小的有效负载。字节顺序为 Little Endian。
…
TLV1 TLV2 TLVn
帧头是固定大小的 (40bytes)。结构体字段定义以下面的 MATLAB 语法显示。
既然知道是以数据包格式传输,并且帧头最开始的同步字也已经清楚。程序便有了思路,即从接收到的数据识别出同步字,随后以此为开始识别接下来的数据。并从中整理得到距离方位图。但是出现错误提示,发现接收到的数据没有与同步字相同的8个字节。
考虑到整个数据包的字节序为 小端(Little Endian)。这意味着在存储和传输时,低地址(或低字节)在前,高地址(或高字节)在后。如果我们将 0x0201040306050807 按照小端模式存储或传输,它的字节序会变成:0x07 0x08 0x05 0x06 0x03 0x04 0x01 0x02。更改程序发现问题依旧没有得到解决。
我让其显示丢失的字节
同步模式不匹配,丢弃一个字节数据。
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 03
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 02
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): FC
丢弃的数据(十六进制): 03
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 2C
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 00
丢弃的数据(十六进制): 0A
丢弃的数据(十六进制): D7
丢弃的数据(十六进制): 23
丢弃的数据(十六进制): 3C
丢弃的数据(十六进制): 0A
丢弃的数据(十六进制): D7
丢弃的数据(十六进制): 23
......................................................................................................................................................................................
其中出现大量00,不由得让我怀疑是否官方给出的数据接收格式有问题。同时也猜疑是否因为接受数据包过大,一个一个字节的丢弃工程量会相当之大。导致不能及时生成距离方位点云图。