阅读:1210回复:3
D12上层的死机问题
各位大虾:
我们用的是D12,我在用ReadFile在跟硬件联调时,经常会出现死机的现象,我该如何把ReadFile在收不到东西时激活(或超时退出),具体的程序该如何写??Thanx! |
|
沙发#
发布于:2003-08-15 15:08
调试一下吧,不难的
|
|
|
板凳#
发布于:2003-08-12 15:47
呵!!!
|
|
|
地板#
发布于: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; } |
|