无忧启动论坛
标题:
关于查找USb大容量类设备问题
[打印本页]
作者:
2010husion
时间:
2010-12-15 15:51
标题:
关于查找USb大容量类设备问题
#define MAX_DEVICE_NUM 12
typedef struct dev
{
unsigned char address;
unsigned char speed;
std_dev_descriptor dev_descriptor;
std_conf_descriptor conf_descriptor;
std_interface_descriptor interfacef_descriptor;
endpoint_info *epi_ptr[ MAX_ENDPOINT_NUM ];
#ifdef STRING_DESCRIPTOR
unsigned short *string_manufacturer;
unsigned short *string_product;
unsigned short *string_serialNum;
#endif
void *class_instance_ptr;
unsigned char topology_layer;
}device_instance;
main()
{
device_instance * dviPtr;
...
while (1)
{
dviPtr = find_class_interface(MASS_CLASS_INTERFACE,0); // 查找大容量类设备
if(dviPtr)
//注释1
{
...
}
}
}
device_instance *find_class_interface( unsigned char InterfaceClassID, unsigned char DeviceIndex )
{
device_instance *dviPtr;
int i;
for ( i = 2; i <( MAX_DEVICE_NUM); i++ )
{
if ( NULL == (dviPtr = find_device( i )) )
continue;
if ( check_interface_class_ID( dviPtr, InterfaceClassID ) )
{
if(DeviceIndex== 0x00)
return ( dviPtr );
else
DeviceIndex --;
}
}
return ( NULL );
}
device_instance *find_device( unsigned char address )
{
return ( device_list[ address ] );//
注释2
}
device_instance *device_list[ MAX_DEVICE_NUM ];//
注释3
这是一个USB作为主机查找大容量类设备的部分代码,由于太长,不能全部附上.
问题:
1.if(dviPtr)//注释1
if(dviPtr)总是不能返回True,导致不能执行Main函数以下代码;
2.find_device函数中
注释2
device_list[ address ]的address是一个变量,然而到了
注释3
device_instance *device_list[
MAX_DEVICE_NUM ]定义的时候address 变成了常量MAX_DEVICE_NUM,这个又何解?
补充:以上是运行成功的可执行代码移植过来的!
[
本帖最后由 2010husion 于 2010-12-16 08:31 编辑
]
作者:
gongjc
时间:
2010-12-15 16:32
标题:
回复 #1 2010husion 的帖子
1、可以是有异常,扑捉一下看看。
2、常量的地址指针可以改变,这种间接的方式可改变常量的值。
作者:
2010fengyun
时间:
2010-12-15 18:01
楼主这不是C语言吗。可惜我看不懂,帮你顶下!
作者:
2010yzxwxl
时间:
2010-12-15 23:49
楼主这不是C语言吗。可惜我看不懂,帮你顶下
作者:
2010husion
时间:
2010-12-20 08:27
原帖由
gongjc
于 2010-12-15 16:32 发表
1、可以是有异常,扑捉一下看看。
2、常量的地址指针可以改变,这种间接的方式可改变常量的值。
具体怎样捕捉,请版主指点一下,搞了很久没能搞定....谢谢
作者:
2010husion
时间:
2010-12-20 08:35
ISP1161已经可以实现了读写U盘的功能,现在需要换成ISP1362实现读写U盘功能,在枚举开始先获设备8个字节设备描述符时,代码在发送字
的时候就停下来了,已经更改了ISP1362的ID,其它寄存器应该怎样更改,有没有做过ISP1362的朋友指教一下,谢谢了
作者:
2010husion
时间:
2010-12-20 16:21
UP.............
作者:
2010husion
时间:
2010-12-21 08:25
UP~~~~~~~~~~~~~
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/)
Powered by Discuz! X3.3