采样数据解析

问题

假设我们现在使用acq400采到了数据,通过udp传输到了Host,并且保存为一个名为"udp_data"的二进制文件,我们应该如何读取这个文件?

里面一个sample的组织形式是怎样的?

解析

假设就开启了site1,并且设定了spp(sample per packet,每个包几个sample)为1,这时一个包内只有一个sample

1个sample里面有32个通道的模拟输入和16个SPAD(Scratchpad)

SPAD为插入到每个sample中的标注信息,包含sample count,时间戳等等信息

这样1个sample的大小为32*2+16*4等于128个字节

也就是说(当只开启了1个site时)应该以128个字节读取"udp_data"

实践

在linux系统下,可以使用hexdump方便在控制台打印"udp_data"的信息

hexdump -e '32/2 "%04x," 16/4 "%08x," "\n"'  < udp_data   

这个命令表示首先打印32个2字节,表示32个模拟输入,然后打印16个4字节,表示16个SPAD,然后换行

(这样每行会有48列,窗口需要很大)

hexdump -e '32/2 "%04x," 16/4 "%08x," "\n"'  < udp_data | cut -d, -f33

在上个命令的基础上,只显示第33列,即SPAD0的信息,即sample count

hexdump -e '32/2 "%04x," 16/4 "%08x," "\n"'  < udp_data | cut -d, -f1-4,33-36

只显示1-4,33-36列的信息,即只打印前4个通道的模拟输入和前4个SPAD信息


本文章使用limfx的vscode插件快速发布