微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 如何在 LabVIEW VISA 中使用二进制或十六进位的资料

如何在 LabVIEW VISA 中使用二进制或十六进位的资料

时间:10-02 整理:3721RD 点击:

Q:

在 LabVIEW 中 VISA 的读入与写出功能只接受字符串的资料格式,当应用需要传送以及接收二进制或十六进位值,而不是使用一般常用的 ASCII 字符来做为字符串的传送时,该怎么在 LabVIEW VISA 中使用二进制或十六进位的资料呢?


A:

当 LabVIEW VISA 函数做资料的输入与输出时需要使用字符串的方式,但将这些字符转换成字符串时并不只侷限在标准的 ASCII 字符。每个字符都是一个 unsigned 的 8-bit 整数(U8),代表为 0-255 的值。传送二进制资料的的关键为,先将这些值转换成字符串的格式,如此才能够使用 VISA 的方式来做 write 的动作。同样地,VISA read 来的字符串值,也可以被转换成需要的输出格式。

这边有几个方法可以用来传算二进制值,按照不同的来源格式介绍如下:

传送固定的十六进位值,以及用十六进位格式显示收到的资料
最简单的方法来传送固定的十六进位(hex)值,即是在 LabVIEW 中使用一个 string 的 constant,并把这个 constant 设定成 Hex Display (设定方法为在 constant 上按右件选择 Display Format)。 如此就可以把让你输入非 ASCII 字符的十六进为值到 string 的 control 或 constant 中,并直接输出到 VISA write 函数。当使用 VISA Read 来读取资料的时候,这个字符串可以直接连线到一个 hex display 模式的 indicator,这样就可以把十六进位值显示在 front panel 上。
传送与接受固定的十六进位值:


传送 U8 的正整数(单一值或 array)
为了要传送一个 byte 的资料 (U8 整数),会使用 Build Array 函数来把构成一个只有一个 element 的 array。接着这个 Byte Array to String 可以把这个 array 转换成 VISA write 所可以使用的字符串格式。这个相同的方法可以用来转换一个包含多个 byte 的 array,只是这时候不需要再使用 Build Array。
传送与接受一个单一的 U8 整数:


传送与接受多个 U8 整数的 array:


传送非U8的值或其他值构成的 array
当传送的二进制档案比一个 byte 还大的时候,必须要先将这个值或 array 先做 typecast 转换成 U8 的 array,然后把这个 array 再转成字符串以便让 VISA Write 使用。同样相反的操作步骤可以用在 VISA Read 来把读到的字符串转成二进制资料格式。这些方法可以用在单一的资料 element 或是这些 element 构成的 array 上。
传送与接受多 byte 的值:


备注: 当使用大于一个 byte 的二进制资料时(I16, U32, DBL, etc...),在远端的仪器所使用的 endianness (也就是 byte 的顺序) 会是一个需要考虑的问题。LabVIEW 预设是使用 Big Endian 的方式,所以当与使用 Little Endian 的仪器进行通讯时,必须要改变 byte 的顺序。


长见识了。讲述得很仔细。

必须得赞一个啊

标签标签标签标签

获益匪浅!感谢前辈分享学习!

多谢,这个帖子很赞

谢谢分享

必须赞一个,看看有帮助

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top