flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:4880回复:38

[请教] usb setup 包 问题

楼主#
更多 发布于:2003-12-05 11:32
我使用 WinDriver 向mfp(多功能机 打印 扫描) 发送 setup 包。
可是每次都不成功。
可以读取描述符。

发送 0C 09 00 00 00 00 02 00

 
rror (0x80000004) - Unrecognized error code.

Transferred 0 Bytes to Pipe00

2 x The device has been plugged into the system


Stop listening to Pipe82

2 x The device has been plugged into the system


Failed transferring 2 Bytes from Pipe00.
Error (0x20000003) - Conflict between read and write operations.

Transferred 0 Bytes from Pipe00
 


请指教,谢谢!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-05 14:37
错误原因好像是你的setup包的内容不对
你那个0C 09 00 00 00 00 02 00是set config命令吗?
那应该是00 09 吧。
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-12-05 14:52
大哥 谢谢了 是我写错了
你看一下这两个 帮我分析一下

Setup Data:  C0 09 00 00 00 00 02 00
---------------------------------------
 Direction:  Device-to-host
      Type:  Vendor
 Recipient:  Device
---------------------------------------
  bRequest:  0x09

    wValue:  0x0000

    wIndex:  0x0000

   wLength:  2

 
Setup Data:  C0 0D 00 00 00 00 04 00
---------------------------------------
 Direction:  Device-to-host
      Type:  Vendor
 Recipient:  Device
---------------------------------------
  bRequest:  0x0D

    wValue:  0x0000

    wIndex:  0x0000

   wLength:  4

 


谢谢了
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-05 15:18
你写清楚frist byte是00?c0?0c?区别很大的。0d我看不出来是什么,估计是厂商命令
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-12-05 18:42
确实是 0c
这个是我 拦截 程序发出的包
可是使用windriver 却发不出去
请你们帮帮我
谢谢了
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-06 09:12
0c 0d根本没有这个请求,你要是想法这个包出去,试试bushound 5.0
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2003-12-08 10:21
是 c0 0d 00 00 00 00 04 00
是厂商自己开发的命令吧
我使用 windriver 发不出去
bushound 没有Windriver 好使
问一下 厂商自己开发的 怎么 模仿呢
是不是有什么特别的呢
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2003-12-08 10:30
使用 WinDriver 发送 setup packet 的时候 出现下面的错误
c0 09 00 00 00 00 02 00 (这是发送的内容)
error (0x20000003) - Conflict between read and write operations.


[编辑 -  12/8/03 by  flylionking]
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-12-08 11:32
是 c0 0d 00 00 00 00 04 00
是厂商自己开发的命令吧
我使用 windriver 发不出去
bushound 没有Windriver 好使
问一下 厂商自己开发的 怎么 模仿呢
是不是有什么特别的呢

既然是厂商请求,除非你有源程,否则只能监测其通讯过程再去模仿咯。
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2003-12-08 12:47
它的 通信过程 我都抓到了
每一个包 我都找到了
可是不知道怎么模仿呢
mailxufeng
驱动牛犊
驱动牛犊
  • 注册日期2003-10-15
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-12-08 13:31
c0 0d 00 00 00 00 04 00
确实是厂商请求,0d即为具体请求号,最后的(04 00)表示数据长度为4(实际组合为0004),厂商请求一般是从主控端点发出去的,具体的API函数可用DeviceIoControl,源代码的话你可以参考PHILIPS对D12的测试程序D12test.exe,这个程序的源码应该很容易找到。从你一开始的错误信息看,你发的SETUP包是从pipe00走的,而pipe00一般是指端点1而不是主控端点。其实厂商请求也是模仿的WINDOWS的枚举格式,你同WINDOWS本身发SETUP包仔细对照一下就可以发现连每个字节的具体含义都是一样的,比如最后两个字节表示数据长度(低位在前,高位在后)。希望对你有所帮助。
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2003-12-08 14:04
mailxufeng

谢谢你
WinDriver 是否能够做到呢?
不能的话,自己要写驱动吗?

分析截取的包 是长度为4 的 数据 可是却没有看到数据呢?

是否 C0 开头的 setup 包 都不能使用 pipe00 发送呢?



[编辑 -  12/8/03 by  flylionking]
mailxufeng
驱动牛犊
驱动牛犊
  • 注册日期2003-10-15
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-12-08 16:43
WinDriver能不能做到我不清楚,如果不能的话也不要改驱动啊,你可能对厂商请求这个概念不是很清楚,c0 0d 00 00 00 00 04 00
中的数据长度4是说明下一趟的传输数据的长度是4个字节,而一般厂商请求的话也是由主机发出,告诉下位机紧接下来的数据是从主机到设备还是从设备的主机,数据长度是多少等等,而这4个字节的数据怎么定义就无所谓了,只要跟下位机相配合就行了,而这4个字节也可以说是真正的具体请求(按你的情况,其他也有可能是6个,8个等等),一般是从端点1走的,而不是主控端点,而接下来的话才是真正数据传输,从设备到主机或者从主机到设备,如果你命令正确而下位机也有代码配合的话。至于c0 0d ,这是厂商自己定义的,也有可能40 0c或者其他什么的,简单的说只要你自己设计了一套命令,上位机和下位机都有程序配合的话那么一切都OK了,至于从哪个端点走都是无所谓的。只不过现在的厂商请求做成了WINDOWS标准SETUP包的形式从主控端点走罢了,谁让WINDOWS这么NB呢。好了,下面概括一下:c0即为某个厂商设定的厂商请求标志,0d即指向这个厂商设定的很多厂商请求中的一个(注:还只是个大类),04 00即为下一次具体命令的长度,而接下来由主机发送的4个字节的数据或者说是命令呢就是大类中的子类,即具体请求,比如我要下位机发送它的版本号或者某个端点缓冲区大小什么的,具体怎么定义要看你的东西了,我可不知道啊,呵呵,是不是很罗嗦,希望对你有所帮助哈。
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2003-12-09 07:55
mailxufeng
再次的感谢你。
请问主控端点 和 pipe00 有什么不同呢?
WinDriver 里面 只有 pipe00, 没有主控端点,怎么才能够做到呢?
下面是我的截取数据的画面,请你看一下:
再感谢!
mailxufeng
驱动牛犊
驱动牛犊
  • 注册日期2003-10-15
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-12-09 10:11
从图上看,只能看出厂商请求确实是用SETUP包的形式发送的,比如
0xB4 3 0 0x0A..即为标准的SETUP包PID+地址+端点号+CRC校验,我想问一下你这个截取的数据是厂商提供的程序与USB设备通讯的数据吗,还是你自己通过WINDRIVER向USB设备发送的数据,因为从图上看,我发现SETUP包以后并没有包中指定长度的数据进行传输,比如第一个SETUP包中的2字节和后一个SETUP包中的4字节的数据,这个不符合通讯规则啊,假如是你自己发的数据,那么可以看出WINDRIVER是可以从主控端点发数据的(即端点0),而且也可以解释你为什么没有看到你需要的数据了,从你图上看,我所能解释的只有这么多。
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2003-12-09 10:25
谢谢
这是我截取的 厂商的程序发送的 数据包。

能否与你联系呢?
我的邮箱:stone.liu@liteon.com
qq : 8509823

[编辑 -  12/9/03 by  flylionking]
mailxufeng
驱动牛犊
驱动牛犊
  • 注册日期2003-10-15
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-12-09 10:38
那么按一般的常理的话,在31067和31068这两个包之间应该还有一个2字节的数据包或者31071包中的数据不应该为空,我没用过这个软件,你如果方便的话可以用BUSHOUND监测一下,看看c0 09 00 00 00 00 02 00后面紧跟的是什么数据,从你的图上实在看不出来,呵呵。
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
17楼#
发布于:2003-12-09 10:52
我使用的是 USB Chief, 公司买的,抓的数据应该没有什么问题吧?

BUSHOUND 我使用的时候总是看不到什么数据。

怎么样能联系到你呢?
wushenghua
驱动牛犊
驱动牛犊
  • 注册日期2002-11-13
  • 最后登录2005-09-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-12-09 11:11
flylionking

:如何起步开发USB驱动
flylionking
驱动牛犊
驱动牛犊
  • 注册日期2002-04-12
  • 最后登录2017-02-10
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望21点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
19楼#
发布于:2003-12-09 11:17
wushenghua
我也在学习当中。
多看一些书, 你要是会开发驱动,看看usb相关的东西。
上一页
游客

返回顶部