bool CMyUsbHid::WriteToPort(CString sendData)
{
BOOL bResult;
char strsend[256];
strsend[0]=0;
memset(&strsend,0,256*sizeof(char));
DWORD sendlen=0;
OVERLAPPED m_oswrite;
memset(&m_oswrite,0,sizeof(OVERLAPPED));
m_oswrite.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL);
for(int i=0;i<sendData.GetLength();i++)
strsend[i+1]=sendData.GetAt(i);
Sleep(100);
if (m_devHandle!=INVALID_HANDLE_VALUE)
{
bResult=WriteFile
(
m_devHandle,
strsend,
Capabilities.OutputReportByteLength,
&sendlen,&m_oswrite
);
TRACE(_T("%s\r\n"),(CString)(strsend+1));
}
else
{
MessageBox(NULL,_T("设备打开失败!"),_T("提示:"),MB_OK);
return false;
}
if (!bResult)
{
DWORD dwError=GetLastError();
switch (dwError)
{
case ERROR_IO_PENDING:
{
TRACE(_T("write pending\r\n\r\n"));
break;
}
default:
{
MessageBox(NULL,_T("数据写入失败!"),_T("提示:"),MB_OK);
return false;
}
}
}
TRACE(_T("Writefile over!"));
return true;
}
这代码有什么问题吗?单步执行没有问题,一去掉断点,运行就出错,发出的数据总是不对,前几天再起他项目中也是用的这个,就没有问题,,,这是为什么呢?
急等啊,,,