MagTek 99875125 User Manual
Page 65

Section 5. Example Applications
HANDLE oev_write = CreateEvent(NULL,TRUE,FALSE,NULL);
OVERLAPPED
ov_write;
DWORD
dwWriteStatus=0;
ZeroMemory(&ov_write,
sizeof
(OVERLAPPED));
ov_write.hEvent = oev_write;
DWORD dwLen = strlen(lpParam);
BOOL
bDone=FALSE;
while
(!bDone)
{
if
(!WriteFile(*phMTD, lpParam,dwLen,lpdwWritten,&ov_write))
{
dwWriteStatus
=
WaitForSingleObject
(ov_write.hEvent,COMM_TIMEOUT);
switch
(dwWriteStatus)
{
case
WAIT_OBJECT_0:
{
GetOverlappedResult(phMTD,&ov_write, lpdwWritten, TRUE);
bDone=TRUE;
}
break
;
default
:
{
//No data was writted to the serial port
return
FALSE;
}
};
}
bDone=TRUE;
}
return
TRUE;
}
//----------------------------------------------------------------------------------
BOOL ReadMTD(PHANDLE phMTD, LPTSTR lpParam,DWORD pdwReadSize,DWORD *lpdwRead)
{
if
(phMTD==INVALID_HANDLE_VALUE)
{
return
FALSE;
}
BOOL
bDone=FALSE;
HANDLE oev_read = CreateEvent(NULL,TRUE,FALSE,NULL);
OVERLAPPED
ov_read;
DWORD
dwReadStatus=0;
ZeroMemory(&ov_read,
sizeof
(OVERLAPPED));
ov_read.hEvent = oev_read;
while
(!bDone)
{
if
(!ReadFile(*phMTD, lpParam, pdwReadSize,lpdwRead, &ov_read))
{
dwReadStatus = WaitForSingleObject (ov_read.hEvent, COMM_TIMEOUT);
switch
(dwReadStatus)
{
case
WAIT_OBJECT_0:
{
GetOverlappedResult(phMTD,&ov_read,
lpdwRead,
FALSE);
bDone=TRUE;
}
break
;
default
:
{
//No data was read from the serial port
return
FALSE;
}
};
}
bDone=TRUE;
}
return
TRUE;
}
57