我正在编写一个程序,该程序是一个数据采样程序.被采集的设备的数据通USB传输到电脑上.
请问我应该如何在VC中实现访问USB并接收数据呢?
我看了USB大全上的程序,该书讲述的HID类设备的数据接收和发送方法.而我的数据采集设备不应该是属于HID类吧.我也看过USBPort程序代码,它讲述的内容和USB大全是一样的.
DDK中的USBView确实是提供了很好的参考,我现在可以枚举USB设备.
但是对于怎么对USB进行读写还是没有概念.
有些问题想请大家澄清一下.
我的第一个问题:
在鱼欢的代码中,他是枚举了主控制器并打开,那我的问题是,打开主控制器是不能进行读写的吧,是不是要确定到主控制器上的根集线器的哪一个端口才有可能用CreateFile打开并进行设备的读写.
第二个问题:
CreateFlie是应该打开端口还是应该打开与端口连接的设备进行读写?
第三个问题:
鱼欢的代码中的读写是不是利用虚拟串口进行的,如果是这样,可以介绍一下USB虚拟串口的做法吗?
第四个问题:
HID和USB之间最主要的区别是什么?为什么利用HID类却发现不了优盘之类的设备.
呵呵
问题多多,请大家指点迷津,谢谢先
请问我应该如何在VC中实现访问USB并接收数据呢?
我看了USB大全上的程序,该书讲述的HID类设备的数据接收和发送方法.而我的数据采集设备不应该是属于HID类吧.我也看过USBPort程序代码,它讲述的内容和USB大全是一样的.
DDK中的USBView确实是提供了很好的参考,我现在可以枚举USB设备.
但是对于怎么对USB进行读写还是没有概念.
有些问题想请大家澄清一下.
我的第一个问题:
在鱼欢的代码中,他是枚举了主控制器并打开,那我的问题是,打开主控制器是不能进行读写的吧,是不是要确定到主控制器上的根集线器的哪一个端口才有可能用CreateFile打开并进行设备的读写.
第二个问题:
CreateFlie是应该打开端口还是应该打开与端口连接的设备进行读写?
第三个问题:
鱼欢的代码中的读写是不是利用虚拟串口进行的,如果是这样,可以介绍一下USB虚拟串口的做法吗?
第四个问题:
HID和USB之间最主要的区别是什么?为什么利用HID类却发现不了优盘之类的设备.
呵呵
问题多多,请大家指点迷津,谢谢先
看看这个吧
LPCSTR c_lpszSubKey1 = "SYSTEM\\CurrentControlSet\\Control\\DeviceClasses\\{5dd901c0-bcf4-11d1-9738-008029e6a5b3}";
LPCSTR c_lpszSubKey2 = "SYSTEM\\CurrentControlSet\\Control\\DeviceClasses\\{a5dcbf10-6530-11d2-901f-00c04fb951ed}";
LPCSTR c_lpszSubKey3 = "SYSTEM\\CurrentControlSet\\Enum\\USB\\Vid_04b8&Pid_0202";
OSVERSIONINFO Sos;
Sos.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&Sos);
if (Sos.dwMajorVersion == 5) //Identifies the OS version.(2000 / XP)
{
SHDeleteKey(HKEY_LOCAL_MACHINE,c_lpszSubKey0);
SHDeleteKey(HKEY_LOCAL_MACHINE,c_lpszSubKey1);
SHDeleteKey(HKEY_LOCAL_MACHINE,c_lpszSubKey2);
SHDeleteKey(HKEY_LOCAL_MACHINE,c_lpszSubKey3);
}正好我做的工程里有这样的判断!
问题是对于枚举了的设备,假设我已经知道数据采集设备已经连接在哪个端口,那么我要如何才能从这个端口读取数据呢?
"这只老鼠不会游泳",呵呵,名字好长,那个我已经看过拉,他也是做到枚举设备,但是没有涉及读写设备的问题.
"碧螺春"能不能把你所说的CreateFile问题详细一点.另外,bulkusb是不是已经涉及到驱动程序的问题,能不能直接用Api读写呢?不过,我还是仔细看看.
请大家继续给个提示或是思路吧,呵呵!
有劳啦!