问题描述
- 各位看一看这代码有什么问题吗?单步执行没有问题,一去掉断点就出错
-
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("%srn"),(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 pendingrnrn")); break; } default: { MessageBox(NULL,_T("数据写入失败!"),_T("提示:"),MB_OK); return false; } } } TRACE(_T("Writefile over!")); return true;
}
这代码有什么问题吗?单步执行没有问题,一去掉断点,运行就出错,发出的数据总是不对,前几天再起他项目中也是用的这个,就没有问题,,,这是为什么呢?
急等啊,,,
解决方案
这个应该是指针指错了
解决方案二:
断点会阻塞消息等,而去掉以后就直接运行了。是不是你代码同步等没处理好。
解决方案三:
代码完全相同,但是在你这就报错?,断电又能通过,运行就不行?报错写的啥?
解决方案四:
是不是发送之前应该清理一下hid驱动的缓冲啊?
时间: 2024-09-14 18:47:33