16,548
社区成员




// 读数据
// m_bSend == FALSE 读下位机数据 //@00FA00400000000101000000000000059D000066FB203B00020000000000089815CB29C4974D03B50085B54E*\r // 正常返回16个字
// m_bSend == TURE 读下位机数据 "@00FA00400000000102000040*\r"
ASSERT( sizeof( m_pReadBuffer ) > nReadLen );
int len = m_serialPort.Read( m_pReadBuffer, nReadLen ); // 上传数据,格式参见网络记事
if( !len ) // 考虑一次读不完的情况
{
if( m_bKilling )
return TRUE; // 正在终止线程,不抛出异常,直接返回
THROW( new HException( L"接收数据错误1" ) );
}
if( m_bKilling )
return TRUE; // 正在终止线程,直接返回
while( len < nReadLen ) //粘包
{
int len2 = nReadLen - len;
len2 = m_serialPort.Read( m_pReadBuffer + len, len2 );
if( !len2 ) // 考虑一次读不完的情况
{
THROW( new HException( L"接收数据错误2" ) );
if( m_bKilling )
return TRUE; // 正在终止线程,不抛出异常,直接返回
}
if( m_bKilling )
return TRUE; // 正在终止,直接返回
len += len2;
}
if( m_bKilling )
return TRUE; // 正在终止,直接返回
return result;