做过wince下USB驱动请进,我现在做的是关于USB协议层驱动的编写,现在可以读出:设备描述符、配置描述符、接口描述符、字符串描述符。
但是却都不到端点描述符。
如何设置断点属性呢?比如说:那个端点配置输入,那个端点配置输出,还有配置成中断方式、批量传输方式?
如果有人做过,能否发一份给我?感激不尽!
我的邮箱:lh806732@163.com
你是做HOST驱动还是DEVICE驱动?
如果是DEVICE驱动,没有获取端点描述符可能是因为你所走的协议问题,或者是之前的描述符不对,比如说在接口描述符里要告诉HOST有几个端点。
我做的是HOST驱动,主要是要接收示波器发送过来的数据。
现在端点都读不到。
我在接口描述符里面看到bNumEndpoint一直是0。
读取接口描述符我用了lpGetDescriptor却不行。不知道是不是跟第六个参数有关。
(*pUSBD->usbFuncs->lpGetDescriptor)(pUSBD->hUSBDevice,
NULL,
NULL,
USB_SHORT_TRANSFER_OK,
*pBufIn,//USB_ENDPOINT_DESCRIPTOR_TYPE,
0,
0,// 0或语言ID
sizeof(USB_ENDPOINT_DESCRIPTOR),
&EndpointDescriptor
);
读取端点描述符的时候读出来的却是配置描述符:
(*pUSBD->usbFuncs->lpGetDescriptor)(pUSBD->hUSBDevice,
NULL,
NULL,
USB_SHORT_TRANSFER_OK,
*pBufIn,//USB_STRING_DESCRIPTOR_TYPE,
0,
0,// 0或语言ID
sizeof(USB_CONFIGURATION_DESCRIPTOR),
&CfgDescriptor
);
HOST的没做过,不了解,你找下BSP中的其它USB HOST参考一下吧。
不知道为什么lpInterfaces(接口描述符指针)都是有效的,如下:
pInterface = pUSBD->lpDeviceInfo->lpActiveConfig->lpInterfaces;
if (NULL == pInterface)
{
RETAILMSG(USBOSC_ERR_MSG, (TEXT("OSC: pInterface is NULL !\r\n")));
}
这里没有打印出错误信息。
而到下一级lpEndpoints(端点描述符指针)却是空的,如下:
pEndpoint = pUSBD->lpDeviceInfo->lpActiveConfig->lpInterfaces->lpEndpoints;
if (NULL == pEndpoint)
{
RETAILMSG(USBOSC_ERR_MSG, (TEXT("OSC: pEndpoint is NULL !\r\n")));
}
这里就打印出了错误信息。
你的枚举成功了么,你现在估计还卡在枚举的问题上啊,在枚举的时候,反复发Get_Device_Descriptor是协议规定的,而且会发送好几次,最后才得到包长等数据,然后获得端口数据,然后设置地址。
现在所有的借口、端点描述符都可以读到了,接下来还需要做些什么动作吗?
比如说要怎么样来传输数据呢?
高手指点,小弟第一次做。
现在碰到一个问题:驱动里面传给应用的pBufOut在驱动里面可以正常把接口描述符打印出来,而应用里面通过pBufOut打印出来的接口描述符完全是错误的?几个同事都看了没发现什么问题!
公司不允许贴代码出来,没有权限....................要不然我会把代码贴出来。
高手不如赐教!
公司不允许贴代码出来,没有权限....................要不然我会把代码贴出来?HOST做过,可是你说的真的不是很明白啊,你的代码也不好说啊
LV GUCCI 香奈儿一比一包包 批发零售!
广州市天龙皮具厂成立于2002年。是一家有多年专业设计、生产、经营高档皮具系列产品的企业。主营LV,GUCCI,CHANEL,世界一线畅销品牌皮具产品。款式多,更新快,出货准时。质量保证,价格实惠,免费代发货至世界各地,欢迎世界各地客商及爱包包人士前来选购。 三个起批可以混批!
网址:http://www.aimosi.com
联系电话:15920907201
MSN:aimosi@live.cn
客服QQ:775035679 957840212