关于USB接口编程的几个问题?请帮忙解答!
我们开发了一个控制器,需要将控制器与PC连接,以便与控制器通信,自定义通信协议。
本来采用串口通信,代码已经写的差不多了,C#写的,使用SerialPort类,可以直接发送和读取通信协议。
但由于控制器的改变,现在只能使用usb连接,我对usb通信不了解,网上查了一下,但是没找到合适的方法,所以有一些问题请指点:
(1)usb是否有类似串口的端口号,比如COM1、COM2等,是否有USB1、USB2?
(2)VC或者C#是否有操作USB的类,类似于串口通信的SerialPort?
(3)是否可以直接读写USB端口?
(4)看到一些例子是找到usb设备,读取usb中的文件,我们这里不需要读取文件,只要读取和发送数据,如何实现?
(5)也看到有人说要写驱动程序,通过驱动进行通信,这样好像太复杂了吧,是否有什么简单方法?
请有类似开发经验的朋友给些指点,我现在是一头雾水,网上也没有查到有用的信息。要是有例子程序的话更好,谢谢!
[解决办法]
我有两种方法:
1、USB设备设置为HID类,不需要安装驱动,上层程序直接与HID的端点进行通信,底层响应上层程序对端点的操作,如:上层让发给USB设备让它亮灯;上层需要读取USB的数据,USB设备通过某个端点或者HID报告回传等。
这种方法上层软件的代码网上应该可以找到参考,同时硬件的USB设备也要实现相应的功能。
2、USB设备设置成CDC类,让USB设备接到PC机后模拟成一个串口(COM口),上层的程序基本上不用改什么,因为和访问普通的串口一样。
这种方法主要是在USB设备上边实现功能,安装的时候只需要提供一个安装文件,驱动WINDOWS系统是自带的,XP我试过可用,VISTA有人也试过可用。但是有一点,华硕的主板用此功能似乎有问题,我当时用华硕主板的电脑试的,装的VISTA系统,可以识别成COM口,但是收不到USB设备的数据,当时还以为是VISTA的问题,但是网上的人说在VISTA下边没问题,所以应该还是华硕主板的问题,因为那台机器装XP系统也出现同样的情况。
[解决办法]
看到一些例子是找到usb设备,读取usb中的文件,我们这里不需要读取文件,只要读取和发送数据,如何实现?
===================================================================================
对于 Windows 系统来说,所有的设备都是 file。你仿照他们来做就可以。