大侠帮帮忙,usbd_urb_status()urb状态检测发生错误

中文QNX 讨论: 欢迎大家灌水,讨论有关QNX 问题。
回复
zhangshuyuan
Senior Member
帖子: 10
注册时间: 周一 4月 13, 2009 1:49 pm

大侠帮帮忙,usbd_urb_status()urb状态检测发生错误

帖子 zhangshuyuan » 周四 6月 11, 2009 4:14 pm

请教各位大侠们
前提:QNX下USB复合设备的驱动程序的开发
操作:在PC上插入USB复合设备
现在我想通过urb从复合设备上接收Audio数据,接收数据的前提是查看urb的状态,
使用的函数是:usbd_urb_status(urb, &ustatus, &receive_len),ustatus中获取的就是urb的状态,进行下面的检查:
①查看ustatus的结果是USBD_STATUS_CMP_ERR(The operation is complete, but an error occurred),正常的ustatus是USBD_STATUS_CMP
②查看函数的返回值,返回值是EIO(I/O error)
请问各位大侠们: 发生EIO错误的可能原因有哪些?
注:个人分析了一下,可能是数据传输的过程中发生的错误,跟数据源应该没有什么关系,不知道是不是这样,如果是数据传输发生错误,那么一般是哪些错误呢?希望大侠们帮帮忙

iNFINITE
Senior Member
帖子: 82
注册时间: 周四 3月 26, 2009 8:24 am

帖子 iNFINITE » 周五 6月 12, 2009 7:49 am

高手都不在的样子。。。
我也刚搞QNX下的USB驱动1,2个月,回答错误的话还请包涵。

USB驱动最基本的步骤如下:(翻译自Jan Axelson的《USB complete》)

1。使用函数 usbd_connect( ) 连接到USB stack,并同时提供 insertion( )和removal( ) 两个回调函数。
2。在 insertion( ) 里面:
A。使用函数 usbd_attach( ) 连接到 USB 设备
B。使用函数 usbd_descriptor( )得到描述符
C。使用函数 usbd_select_config( ) 和 usbd_select_interface( ) 选择 USB设备的 configuration 和 interface
D。使用函数 usbd_open_pipe( ) 连接 pipe
3。在 removal( ) 里面,使用函数 usbd_detach( ) 摘除设备
4。使用函数系列 usbd_setup_*( ) 建立数据传输方式(bulk/interrupt/iso/control 里面选)
5。使用函数 usbd_io( ) 开始传输数据


根据描述,你的程序好像没有第1步。。。

回复