串口通讯接收时数据丢失?
在波特率115200下、接收对方0.01秒间隔发送的数据(数据大约30字节),发现接收到的数据丢失的很厉害(只收到约30%多)。接收是如下方式的:
HANDLE h = CreateEvent(NULL,TRUE,FALSE,NULL);
while (true)
{
memset(&o,0,sizeof(o));
o.hEvent = h;
if (WaitCommEvent(hComm, &flag, &o))
{
}
WaitForSingleObject(o.hEvent,INFINITE); //5000
ClearCommError(hComm,&dwErr,&comstat);
size = comstat.cbInQue;
if (size == 0)
return 0;
if(!ReadFile(hComm,&data[index],size,&dw, &o))
{
GetOverlappedResult(hComm,&o,&dw,TRUE);
ResetEvent(o.hEvent);
CloseHandle(o.hEvent);
//index++;
}
else
index+=dw; //读到指定的内容
if (dw > 0) break;
ResetEvent(o.hEvent);
}
CloseHandle(o.hEvent);
因为发送方不是我写的,无法使用流控,请问大家有什么方法可以解决?