打印

usb设备断开后如何让host主机去主动连接它

[复制链接]
4015|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
langgq|  楼主 | 2010-8-26 18:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用Cypress的usb芯片做通讯,pc上采用winxp系统,通讯正常后,假若电脑进入"睡眠",再次开启电脑后,驱动就不能用了
沙发
lium| | 2010-8-26 18:46 | 只看该作者
用debug viewer输出的信息是啥

使用特权

评论回复
板凳
langgq|  楼主 | 2010-8-26 18:53 | 只看该作者
上次的驱动还能使用,但是status的状态上发现usb设备是断开状态,我从"我的电脑"-->"设备管理器"-->执行"扫描检测硬件改动"这个步骤后,我的usb设备就可以用过了。

使用特权

评论回复
地板
lium| | 2010-8-26 18:53 | 只看该作者
你写个程序模拟一下这个步骤

使用特权

评论回复
5
langgq|  楼主 | 2010-8-26 18:56 | 只看该作者
我写了个函数来模拟这个步骤,貌似不行

使用特权

评论回复
6
langgq|  楼主 | 2010-8-26 18:56 | 只看该作者
BOOL CyUSBDevice::ScanForHardwareChanges()
{
  DEVINST devInst;
  CONFIGRET status;
  status = CM_Locate_DevNode(&devInst, NULL, CM_LOCATE_DEVNODE_NORMAL);

  if (status != CR_SUCCESS) return FALSE;

  status = CM_Reenumerate_DevNode(devInst, 0);
   
  if (status != CR_SUCCESS) return FALSE;

  MessageBox(NULL,"ScanHardwarechange","",MB_OK);  
  return TRUE;
}

使用特权

评论回复
7
wangzsa| | 2010-8-26 18:59 | 只看该作者
用程序来实现window下手动执行"扫描检测硬件改动"这个过程

使用特权

评论回复
8
zhanglli| | 2010-8-26 19:00 | 只看该作者
应该是主动扫描吧,不懂帮顶!

使用特权

评论回复
9
byeyear| | 2010-8-27 10:39 | 只看该作者
这个貌似不应该通过应用程序解决
如果排除cypress的bug,那么就是驱动的问题
可能是驱动里的电源管理没有做好

使用特权

评论回复
10
lic_628| | 2010-8-27 21:56 | 只看该作者
休眠唤醒后通信是否正常?
在其他的电脑也是一样吗,如果是一样,那基本上是cypress的bug,

使用特权

评论回复
11
benedy| | 2010-8-28 12:59 | 只看该作者
这个问题感觉有点意思啊,涉及到CY的驱动就很难了,而目前最新版CY的驱动是没有公开的。

使用特权

评论回复
12
dqyubsh| | 2010-9-11 04:26 | 只看该作者
我觉得要先解决这样一个疑问:主机休眠后,USB设备是断开了,还是休眠了?断电要重枚举,休眠不用吧。

可以这样试一下,合上笔记本,再打开它,看U盘是响两声还是没响,如果响两声,表示断开重连;没响,表示仅仅是休眠。

或者,测量一下休眠后的主机USB口,看电源线上是否有供电。如果有电,则设备是休眠;没有,则是断电。

如果是USB设备休眠,则唤醒有三种方式:
1,D+线活动
2,WAKEUP管脚
3,WU2管脚。

这里可能来自主机的只有情形1,D+线上有活动信号。

猜想是不是这样:主机睡醒后,D+活动,于是,所有USB设备都醒了。

最坏的情况是,主机重启了,连在系统上的设备也会逐个连接上。这时候,每个USB设备都要响两声了。

这还真的验证下~~

使用特权

评论回复
13
benedy| | 2010-9-11 22:27 | 只看该作者
那款芯片啊?
一般都是由主机唤醒的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

932

主题

8762

帖子

1

粉丝