本人在写了一串口通讯驱动程序,测了下使用其receive函数的时间竟然要>=240ms太郁闷了,要是我一次循环多读几组那不一次循环下来得要2、3秒啊。这是怎么回事啊,有没碰到过的给指点下谢谢!
简化如下:
for(i<n)
{
1.send()发
...
2.receive收
}
上面1和2之间没花啥时间,就执行2后要花>=240ms

解决方案 »

  1.   

    设置超时时间(得指出读出来的最大数据量,如果数据量太大则会延时到指定的超时时间)
    COMMTIMEOUTS OutTime;
    OutTime.ReadIntervalTimeout=200;//0xffffffff
    OutTime.ReadTotalTimeoutMultiplier =10;
    OutTime.ReadTotalTimeoutConstant=100;
    OutTime.WriteTotalTimeoutMultiplier=10;
    OutTime.WriteTotalTimeoutConstant=100;
      

  2.   

    数据量也不大,不超过250且
    设置超时时间如下:
    COMMTIMEOUTS OutTime;
    OutTime.ReadIntervalTimeout=0;//0xffffffff
    OutTime.ReadTotalTimeoutMultiplier =1;
    OutTime.ReadTotalTimeoutConstant=100;
    OutTime.WriteTotalTimeoutMultiplier=1;
    OutTime.WriteTotalTimeoutConstant=100;
    也能正常收发只是时间
    receive时花时间太长了>=240ms
      

  3.   

    补充下:我在设置串口时为setupComm(hComm,1024,1024)
    在send和receive所申请的pBuf都<250
      

  4.   

    你接收到的数据大小知道吗
    如果知道把ReadFile的最大值改为数据大小,
      

  5.   

    ReadFile的最大值本来就是知道的,且也是定义的也是刚好大小的<250