LabVIEW中与USB设备进行通信1
2004-12-15 11:10
295 查看
这段时间一直在做LabVIEW与USB设备通信的试验,对象是一台固伟的数字示波器,GDS-815C。LabVIEW提供了两个USB接口函数,usb control in.vi和usb control out.vi,但这两个只能用于和USB设备的0 endpoint 通信,而且其参数与USB标准文档上的并不完全一样,所以实际上用这两个函数与USB设备的0 endpoint通信并不方便,加上LabVIEW只对测试和测量类的USB设备提供了即插即识别的支持,将其放到USB INSTR类型里,对其他的设备全部归纳到USB RAW类型中,实际通信仍通过VISA来进行。而且VISA必须升级到3.2版本以上才能与USB设备进行通信。对于USB RAW类型的设备,必须使用VISA Driver Development Wizard安装设备驱动以告诉LabVIEW和Windows有这么一个设备在。前提只需知道设备的VID和PID号,这两个号可以从设备提供的驱动程序中找到。实际中并不需要也不能安装厂商提供的驱动,安装了厂商提供的设备驱动在LabVIEW中反倒无法与设备进行通信。因为按照USB技术文档规定,厂商可以自定义第三层协议,LabVIEW中自然无法获得相关数据。
由于固伟没有提供USB的指令集,只提供了一个示例程序,且只能显示当前的波形数据,所以我采用了USB Sniffer来截取USB数据包,以此来获得相关指令。在使用USB Sniffer的时候犯了一个错误,就是没有注意到它在对USB数据包进行编号的时候将上行和下行对应的数据包用一个编号代表,并使用down和up来进行区分,而它所显示的数据包总数则将其分开统计,也就是说,当Sniffer暂停在844这个包的时候,实际上对应的应当是422(当然也有可能是附近的某个数据包,应为可能存在只有上行或只有下行数据包的情况,比如在使用中断方式通信的时候,有比如相应数据包很晚才接收到,都会造成实际对应的不是422的结果。)因此,开始的时候我一直在844附近找相关指令,当然是找不到了。当发现这个情况时才真正找到了指令。这时通过VISA与设备进行通信。
由于固伟没有提供USB的指令集,只提供了一个示例程序,且只能显示当前的波形数据,所以我采用了USB Sniffer来截取USB数据包,以此来获得相关指令。在使用USB Sniffer的时候犯了一个错误,就是没有注意到它在对USB数据包进行编号的时候将上行和下行对应的数据包用一个编号代表,并使用down和up来进行区分,而它所显示的数据包总数则将其分开统计,也就是说,当Sniffer暂停在844这个包的时候,实际上对应的应当是422(当然也有可能是附近的某个数据包,应为可能存在只有上行或只有下行数据包的情况,比如在使用中断方式通信的时候,有比如相应数据包很晚才接收到,都会造成实际对应的不是422的结果。)因此,开始的时候我一直在844附近找相关指令,当然是找不到了。当发现这个情况时才真正找到了指令。这时通过VISA与设备进行通信。
相关文章推荐
- LabVIEW中与USB设备进行通信2
- linux设备如何通过USB网络共享与手机通信(包含安卓手机以及iphone)
- 【网络通信】Wince 和 PC 通过USB 用Socket 进行通信
- Linux 下串口USB等设备通信编程入门2
- 用户态应用程序直接与USB设备通信(不需要USB设备Driver)
- c#_HidUsb设备通信
- 如何通过xcode编程使MAC机器和HID的USB单片机设备进行通讯
- 设备VMnet0 上网络桥接当前未运行该虚拟机能无法与主机或网络上其机器进行通信
- Windows主机端与自定义USB HID设备通信详解
- stm32的usb与上位机通过中断传输进行通信控制led--LibUsbDotNet
- Linux 下串口USB等设备通信编程入门1
- UE4_TCPSocket进行不同设备之间的通信
- Windows主机端与自定义USB HID设备通信详解
- BBB 通过USB虚拟的RNDIS与PC的vmware ubuntu 进行网络通信
- Windows主机端与自定义USB HID设备通信详解 - Windows - 阿Min的BLOG
- PC与Android设备通过USB建立通信连接
- 关于利用android-serialport-api实现在安卓设备上进行串口通信,附精简版demo,亲测可用。
- Windows主机端与自定义USB HID设备通信详解
- 【网络通信】Wince 和 PC 通过USB 用Socket 进行通信
- 根据GUID和PID和USB设备通信的方法