阅读:2712回复:14
谁知道EZUSB GPD的IOCTL_EZUSB_BULK_READ是否可以一次传输>64B的数据
如果可以,是否是FIRMWARE要在很短的时间内不断的更新IN?BUF[]和EP?BC,还是通过什么其它的方式。
我觉得好象IOCTL_EZUSB_BULK_READ执行的很慢,我用循环去每次取64B的速度为256kbps数据时跟不上,有丢数的现象了,或者还有其它的什么办法? |
|
沙发#
发布于:2001-08-09 17:17
只需要FIRMWARE作工作就行了,每次传输数据的最大长度一般说来是64KB.
|
|
板凳#
发布于:2001-08-09 18:07
刚才用逻辑分析仪作了测试,结果是完成一次IOCTL_EZUSB_BULK_READ居然用了2ms,如果每次传64B的话,每秒最高只能传32KB,显然不行。
但是现在就有问题,我没有发现2131的GPD IOCTL_EZUSB_BULK_READ 有可以设定一次传输>64B的参数,我改了FIRMWARE,但不行,好象它每次只读64B. 各位DX能不能回答这个问题? |
|
地板#
发布于:2001-08-10 21:16
好像不行吧
只有同步方式才可以 |
|
地下室#
发布于:2001-08-11 01:04
为什么要改firmware?跟它何相干?MAX最大就只能是64.
[sunkai 编辑于 2001-08-11 01:26] |
|
5楼#
发布于:2001-08-11 01:10
你完全可以一次读64KB的数据回来.deviceioctrol()的第5个参数随便你设置.
[sunkai 编辑于 2001-08-11 01:30] |
|
6楼#
发布于:2001-08-11 02:00
你完全可以一次读64KB的数据回来.deviceioctrol()的第5个参数随便你设置,主机会安排任务,无须你控制.看看"GPD note.pdf", IOCTL_EZUSB_BULK_READ没有可以决定firmware中的64B的参数.
如果我没有理解错的话,每次最大64KB的限制可以在驱动程序中修改为更大,不知道哪位大虾有异议? |
|
7楼#
发布于:2001-08-11 12:44
64B是USB本身的限制,如果要传输超过64B的,只有分两次传输。解决这个问题制定一个自己的传输协议就行,将数据在firmware端分解,在驱动端组合。用EZUSB的通用驱动,那就写个DLL接口吧。另外,同步传输可以超过这个限制,但没有错误更改功能。
|
|
|
8楼#
发布于:2001-08-13 08:44
我同意sunkai的看法,我也知道在驱动中改变传输包的大小,但是不知道微软的USB.SYS,USBDI.sys里面是否已经写死了(为了遵守USB 规范)。
|
|
9楼#
发布于:2002-08-08 23:15
各位谁手头有ez-usb bulk的驱动,可以给小弟发一份吗?
|
|
10楼#
发布于:2002-08-09 00:06
在此
|
|
11楼#
发布于:2002-08-09 08:02
你完全可以一次读64KB的数据回来.deviceioctrol()的第5个参数随便你设置. 老兄:郑这么简单吗?! |
|
12楼#
发布于:2002-08-09 09:57
确实如此,刚开始时我也是这样的,但只要上端应用程序一次尽可能读取较多的数据,就明显可以提高速度,最高可以设定为64K,驱动会每毫秒到固件的缓冲区读取一次数据,按1.1协议,每毫秒读取的数据量最大可以达到19*64byte.yin
|
|
13楼#
发布于:2002-08-09 16:27
设备的处理速度要足够快才行.
|
|
|
14楼#
发布于:2002-08-10 22:12
to sunkai:
谢谢了! |
|