windows下可以通过调用ClearCommError来获取接收的串口数据的长度。
代码如下:
UINT GetDataSize()
{
DWORD dwError = 0;
COMSTAT comstat;
memset(&comstat, 0, sizeof(COMSTAT));
UINT size = 0;
if (ClearCommError(m_hCom, &dwError, &comstat))
{
size = comstat.cbInQue;
}
return size;
}
但是通过ClearCommError获取到的并不一定是正确的数据长度,因为在你调用此函数时,数据不一定接收完成,所以在多次调用函数获得的返回值不变时,才能保证数据长度的正确。
下面修改为阻塞型(有数据函数才会返回):
UINT GetDataSize()
{
DWORD dwError = 0;
COMSTAT comstat;
m