ReadFile,C++串口通讯接收十六进制的数据,(大于127的部分)间歇性正确。求分析
接收函数如下;
DWORD CComm::ReadData(LPVOID lpBuf, DWORD dwToRead)
{
TRACE("RRRRRRRRRRRR 00\n");
if( !m_bOpened || m_hComm == NULL ) return 0;
DWORD dwRead;
if (ReadFile(m_hComm, lpBuf, dwToRead, &dwRead, &m_osReader) ) return TRUE;
if (GetLastError() != ERROR_IO_PENDING) return 0;
if (WaitForSingleObject(m_osReader.hEvent, INFINITE) != WAIT_OBJECT_0 )
return 0;
if (!GetOverlappedResult(m_hComm, &m_osReader, &dwRead, FALSE) )
return 0;
TRACE("RRRRRRRRRRRR 11\n");
return dwRead;
}
调用方式为:BYTE lpRead[10];
memset(lpRead,0,sizeof(BYTE)*10);
readLength = pDlg->m_myComm.ReadData(lpRead,sizeof(lpRead)-1);
然后,接收下位机以16进制的方式发送,数据127以下的都行,大于了127的就不行。别人的程序都能正确接收,我的就不行,
而且还时好时坏,的。本来莫名奇妙能接收127的数据了,结果重起系统继续运行,又不能接收大于127的了。
求解答。
c++ 通讯 byte
[解决办法]
是不是串口的参数设置有问题?