r Reference Manual and the NI-VISA User Manual。两个文件皆可以通过本文最后的链接获得。如果需
要有效指令清单,请与仪器制造商联系。
3.用NI-VISA 与USB设备进行通讯
本节将说明如何使用NI-VISA 3.0 及以上版本与您的USB设备进行通讯。前面讲过,USB设备有两类。而通讯方式就取决于设备的种类。
3.1 USB INSTR型(USBTMC)
符合“USB 测试与测量类(USBTMC)”的设备使用NI-VISA USB INSTR 类函数。它们使用488.2 标准通讯。对于这些设备,您只需以与GPIB仪器通讯同样的方式,使用“VISA 打开”、“VISA关闭”、“VISA 读取”和“VISA 写入”功能。
图7 显示了与USBTMC 设备进行通讯的LabVIEW VI 。在该例中,对USB 设备打开了一个VISA 对话框。指令被写入设备,并读取回馈信息。此例中,所发送的具体指令是询问设备的ID。请向设备制造商询问设备的指令集。结束所有通讯结束后,VISA对话框关闭。
图7. USBTMC LabVIEW结构图实例
3.2 USB RAW类
与USB RAW 类设备进行通讯要更加复杂,因为每个设备可以使用各自的通讯协议。请与设备供货商联系,以取得设备通讯协议的详细资料。
USB通过四种类型进行通讯:控制、批量、中断和同步。每种类型的管道都传输不同的信息。此外,任何数量的端点都可以是任何端点类型。可以将端点想像成通讯插槽。如果想了解USB 结构的具体详细情况,请查阅以下链接的USB说明书。
NI-VISA 支持三种类型的USB管道:控制、批量和中断。NI-VISA探测到USB仪器时,它会对仪器进行自动扫描,寻找各种类型的最低可用端点。
VISA探测到最低可用端点后,即将该值赋于适当的VISA属性。bulk in 端点和bulk out 端点分别存储在 VI_ATTR_USB_BULK_IN_PIPE 属性和VI_ATTR_USB_BULK_OUT_PIPE 属性之中。interrupt in 端点存放在VI_ATTR_USB_INTR_IN_PIPE 属性之中。如果值为-1,则表示USB 设备不支持这种类型的管道。对于控制型管道,只有端点0才受到支持。如果您使用的是C API,则应该使用viSetAttribute功能来更改端点。在LabVIEW中,应使用“Write VISA Property(写入VISA属性)”节点。
NI-VISA有四种通过USB管道传输数据的功能。在能够使用这些功能与设备进行通讯之前,还需要使用VISA USB 属性建立通讯协议。以下是对可用功能的描述
? 使用VISA USB Control In和VISA USB Control Out 来通过控制型管道传输数据。 ? 使用VISA Read和VISA Write来通过批量型管道传输数据。
? 如果您正在使用LabVIEW,则VISA还有使用中断型管道的其他功能: VISA 获得USB 中断
数据。在C API中,您可以通过访问VI_EVENT_USB_INTR事件目标的VI_ATTR_USB_RECV_INTR_SIZE属性与VI_ATTR_USB_RECV_INTR_DATA 属性做到这一点。参见《NI-VISA 程序员参考手册》,以了解有关“VISA 事件”的更多详细资料。