USB D12 PHILIPS 读取数据异常,求教各位朋友
我在项目开发中,采用USB D12 PHILIPS的进行通信,但是在开发过程中,发现读取数据出现问题,比如我应该读取2字节数据"AB",而读出的却是两字节都是0,采用重叠模型,同事返回的字节数是正确的,就是内容不正确.
我用Usb调试助手1.2工具,可以读出正确内容.用以下代码却不行,请各位朋友看看,代码那里出错了?
// 1.变量声明
HANDLE m_hIDComDev;
CString m_sDevPath;
HANDLE hOut;
OVERLAPPED m_OverlappedRead, m_OverlappedWrite;
//2.打开设备
CString szPort;
CString szDevPath;
szPort.Format("\\PIPE%d",1);
szDevPath = m_sDevPath + szPort ;
m_hIDComDev = CreateFile(
szDevPath.GetBuffer(szDevPath.GetLength()),
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
NULL
);
if (m_hIDComDev == NULL) return FALSE;
memset( &m_OverlappedRead, 0, sizeof( OVERLAPPED ) );
memset( &m_OverlappedWrite, 0, sizeof( OVERLAPPED ) );
m_OverlappedWrite.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
m_OverlappedRead.hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
// 3.读取USB接收缓冲数据
BOOL bStatus;
DWORD dwBytesRead = 0;
if(nSize <= 0) return 0;
if(m_hIDComDev == NULL) return 0;
bStatus = ReadFile( m_hIDComDev, buffer, nSize, &dwBytesRead, &m_OverlappedRead );
if(!bStatus)
{
if(GetLastError() == ERROR_IO_PENDING)
{
switch(WaitForSingleObject(m_OverlappedRead.hEvent, 20))
{
case WAIT_OBJECT_0:
if (!GetOverlappedResult(m_hIDComDev,&m_OverlappedRead,&dwBytesRead,TRUE))
{
TRACE("GetLastError() return %d",GetLastError());
return 0;
}
m_OverlappedRead.Offset += dwBytesRead;
break;
case WAIT_TIMEOUT:
CancelIo(m_hIDComDev);
break;
default:
break;
}
}
TRACE("GetLastError() return %d\n",GetLastError());
}