我需要帮助, 我将用HPBASIC编写的程序转换成python VNA网络分析器。 其数据格式为: 数据传输格式: FMB选择IEEE-754 64位数据传输格式。你知道吗
二进制数据传输消息格式:
MSB模式:字节计数字节计数字节
以下是摘录:
输出@Vna360B;“FMB MSB”!传输格式64位,最高有效字节!FMB(64位)3068(最大收集点数)。 输出@Vna360B;“of v”!输出频率值。 输入@Vna360B;P,S!返回两个整数。 输入@Vna360b;Freqs(*)!返回阵列频率。你知道吗
这是我得到的Pyvisa 我应该通过解码2.6 Ghz的值得到:
输出:['\x00\x08A\x08A\xe3\x1b@\x00\x00']
我的问题是: 这是什么格式,二进制,六进制? 如何让python解码“\x00\x08A\x08A\xe3\x1b@\x00\x00”?你知道吗
谢谢你的帮助。你知道吗
格式
数据是字节列表。你可以用多种不同的方法解码字节。例如,我们可以遍历字节并将解码的字节列为整数:
或者我们可以将每个字节视为ASCII字符:
请注意,这些字符中的大多数是不可见的。有些是退格字符!ASCII code table可以显示每个字节是如何被解码的。上述两种方法都分别考虑每个字节。一个字节太小,无法存储2.6 GHz的值。你知道吗
解码较大格式
struct
module用于将压缩字节数组读入python可读值,并将python值写入字节数组。Struct是一个内置包,您不必单独安装它。首先,让我们从已知值开始:2.6ghz。我们将其打包为bytearray,并查看它与从仪器接收到的值的比较:这看起来就像我们从仪器上读取的数组的结尾!唯一的区别是顺序是向后的。仪器必须使用“big endian”而不是“little endian”字节顺序。(要了解有关字节顺序的更多信息,请参阅struct docs。)我们可以使用
>
而不是<
来切换字节顺序。你知道吗这与数组的结尾完全匹配!(在原来的示例中,粘贴结果时可能已将其中一个零切掉。)前4个字节可能有其他含义,有关详细信息,您必须查看网络分析器的手册。为了读取字节并转换为浮点值,我们将使用
unpack
:输出以元组的形式返回。由于只有足够的字节用于一个浮点值,所以元组的长度为1。你知道吗
相关问题 更多 >
编程相关推荐