tiyi
驱动牛犊
驱动牛犊
  • 注册日期2001-06-15
  • 最后登录2002-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2247回复:4

usb设备自动断电的问题.

楼主#
更多 发布于:2001-06-27 18:01
usb设备自动断电,此时系统还是认为usb设备连接
程序一写或读(writefile/reafile),即处于等待
状态...(就是死了..)

有无好方法可解决?
fanwei7
驱动牛犊
驱动牛犊
  • 注册日期2001-06-26
  • 最后登录2002-03-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-06-27 19:11
我想你使用的设备应该是自供电设备吧。

至于你说的死机,我觉得可以这样处理。

可以对你的程序进行相应的处理,如果读写出现错误,直接BREAK即可。 或者再尝试几次后,BREAK.
共享的资源才能更快的提高
tiyi
驱动牛犊
驱动牛犊
  • 注册日期2001-06-15
  • 最后登录2002-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-28 17:44
关键是..设备掉电后.
readfile或writefile就处于等待状态..
如何break他们呢?

杀线程是可以的,但是不稳定....
argan
驱动牛犊
驱动牛犊
  • 注册日期2001-03-26
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-06-28 23:21
对usb设备自动断电,最好PC先判断设备是否处于断电状态,如果是,唤醒设备

对于超时处理
见好多人在问这个问题,我贴一段代码出来,希望对大家有帮助,也请各位指正!

#define OVERTIME  5
#define RW_BUFFER_SIZE 512

OVERLAPPED Overlapped;
char buffer_RW[RW_BUFFER_SIZE];
int i;
HANDLE hDevice;

/*打开设备hDevice
*************
*/

Overlapped.Offset=0;
Overlapped.OffsetHigh=0;
Overlapped.hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);
ReadFile(hDevice, buffer_RW, RW_BUFFER_SIZE, &nReturn, &Overlapped);
i=WaitForSingleObject(Overlapped.hEvent,OVERTIME);
if (i==WAIT_FAILED)
    return FALSE;  //function failure!
else if(i==WAIT_TIMEOUT)
    printf("Operation timeout!\n");
else if(i==WAIT_OBJECT_0)
    printf("Successfully Read!\n");
else
    printf("Other failure!");
    
CloseHandle(Overlapped.hEvent);

                         good luck!
tiyi
驱动牛犊
驱动牛犊
  • 注册日期2001-06-15
  • 最后登录2002-03-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-03 16:43
多谢多谢!
游客

返回顶部