flywill
驱动牛犊
驱动牛犊
  • 注册日期2003-05-29
  • 最后登录2004-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1210回复:3

D12上层的死机问题

楼主#
更多 发布于:2003-08-11 17:23
各位大虾:
    我们用的是D12,我在用ReadFile在跟硬件联调时,经常会出现死机的现象,我该如何把ReadFile在收不到东西时激活(或超时退出),具体的程序该如何写??Thanx!
usb_anywhere
驱动小牛
驱动小牛
  • 注册日期2003-07-29
  • 最后登录2005-11-22
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-15 15:08
调试一下吧,不难的
驱网是你们的,也是我们的,归根结底还是大家的!
maxipeiz
驱动小牛
驱动小牛
  • 注册日期2003-01-28
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-12 15:47
呵!!!
天高任鸟飞
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-12 11:27
你用readfile不成功时会返回false,那你就能解决出错问题。但是如果要写的好,建议参考:
BOOLEAN PRODLG::ReadD12EP2(BYTE* pData, int bytes)
{
DWORD dwRead = 0;
DWORD dwTimeout = 20;
OVERLAPPED ovInternal;
memset(&ovInternal, 0, sizeof(OVERLAPPED));
ovInternal.hEvent = CreateEvent(NULL,
TRUE,
FALSE,
NULL);
LPOVERLAPPED lpOverlapped;
lpOverlapped = &ovInternal;
if(!ReadFile(hDevicer, pData, bytes, &dwRead, lpOverlapped))
{
long lLastError = ::GetLastError();
if(lLastError != ERROR_IO_PENDING)
{
switch(::WaitForSingleObject(ovInternal.hEvent, dwTimeout))
{
case WAIT_OBJECT_0:
if(!::GetOverlappedResult(hDevicer,
lpOverlapped,
&dwRead,
TRUE))
{
}
break;
case WAIT_TIMEOUT:
::CancelIo(hDevicer);
default:
break;
}
}
return FALSE;
}
return TRUE;
}
游客

返回顶部