阅读:1437回复:4
100分!!!请教USB数据实时采集的问题
51+D12准备做一个数据的实时采集系统,现在已经枚举成功,主机已经认出MASS STORAGE设备,现在就是比较的迷茫,不只到后面该怎么做???
1:我用的SCSI命令集,完成了INQUIRY(12H)的函数编写,我知道后面还需要READ(28H),WRITE(2AH),除此以外,我还需要对其他的scsi命令进行操作吗??? 2:我看了一些关于USB驱动的书籍,已经安装了VC6+DRIVERSTUDIO+WIN2000DDK,我对于在实时采集系统中,上位机和下位机之间的流程不是非常得明白,能否给我讲讲这个方面的内容!!! 3:还有一个疑问,原来我参考一个朋友的程序编写了一个U盘的程序,在那个程序中,上位机的驱动程序我根本不用考虑,用的是WIN2000自带的,现在我想编写实时系统的驱动,不知道在设备描述符中需要做那些改动呢???? |
|
沙发#
发布于:2005-06-20 10:08
关于第三个问题,我在补充一下:设备枚举正确完成以后,主机就会报告用户找到新的USB设备,并为设备选择一个正确的驱动程序,但是,我的程序中没有出现要求添加驱动程序的对话框,估计是我是用的还是原来U盘的设备描述符的缘故,但是,我不知道该如何修改!!
VENDOR ID:0471(PHILIPS D12) PRODUCT ID:0728(我自己任意定的) |
|
板凳#
发布于:2005-06-20 10:37
把你的设备类改一下
把你得VID和PID改一下 应该就OK了 |
|
地板#
发布于:2005-06-20 14:29
非常感谢jinghuiren,你在两个贴子中都回答了我的问题,尽管现在问题还没有解决,不过还是要多多感谢!!!
你说的方法我早就试过了,还是一样的!! 至于前面一个贴子《d12问题集,每个问题10分》中晶振20s以后自动消失的原因,我查阅了半天的资料,个人认为,是主机三次get description失败以后,就把usb总线挂起了,我观察过usb的中断,发现晶振消失以后,int引脚一直为低,中断寄存器中读出的数值也是一直为0,不过我对这个解释也始终不满意,可惜没有得到很好的解释!!! 后来,我把端点2in和out的中断程序补充完毕以后,发现晶振消失的问题莫名的没有了!!!非常奇怪!! 你那里有没有实时数据采集系统的设备描述符的例子啊??可不可以给我看看!! |
|
地下室#
发布于:2005-06-20 14:43
我现在是彻底糊涂了,请看下面用bushound抓到的数据:
14.0 CTL GET DESCRIPTOR 420.1.0 31ms 80 06 00 01 00 00 40 00 14.0 LEN 16 420.2.0 4.8ms 10 00 00 00 14.0 DI ................ 420.3.0 6us 12 01 10 01 00 00 00 10 c4 07 00 04 13 01 00 00 14.0 CTL GET STATUS 421.1.0 41us a3 00 00 00 02 00 04 00 14.0 LEN 4 421.2.0 29us 04 00 00 00 14.0 DI .... 421.3.0 3us 03 01 00 00 14.0 CTL SET FEATURE 422.1.0 21us 23 03 04 00 02 00 00 00 14.1 LEN 1 423.1.0 73ms 01 00 00 00 14.1 DI . 423.2.0 8us 04 14.0 CTL GET STATUS 424.1.0 19us a3 00 00 00 02 00 04 00 14.0 LEN 4 424.2.0 25us 04 00 00 00 14.0 DI .... 424.3.0 3us 03 01 10 00 14.0 CTL CLEAR FEATURE 425.1.0 8us 23 01 14 00 02 00 00 00 14.0 CTL SET ADDRESS 426.1.0 31ms 00 05 02 00 00 00 00 00 14.0 CTL GET DESCRIPTOR 427.1.0 15ms 80 06 00 01 00 00 12 00 14.0 LEN 18 427.2.0 4.8ms 12 00 00 00 14.0 DI ................ 427.3.0 2us 12 01 10 01 00 00 00 10 c4 07 00 04 13 01 00 00 .. 427.3.16 00 01 14.0 CTL GET DESCRIPTOR 428.1.0 23us 80 06 00 02 00 00 09 00 14.0 LEN 9 428.2.0 3.9ms 09 00 00 00 14.0 DI .......@. 428.3.0 3us 09 02 2e 00 01 01 00 40 80 14.0 CTL SET CONFIG 429.1.0 18us 00 09 01 00 00 00 00 00 到了set config以后就不断的循环,又重新开始枚举,我跟踪断点,发现已经进入bulk-in 和out的中断服务程序,同时接受到了主机发来的cbw包,先是12H(INQUIRY),23H(READ CAPACITY),03H(REQUIRY SENSE).我用的是UFI命令集,更正一下!!! 但是现在我不是做U盘,所以那位兄弟指点一下,谢谢!!! |
|