急!evc下串口同步采集的数据有时候多有时候少有时候正确
如提:
evc环境 串口通信, 同步。
方法:单片机中已经采集的48000直接的数据,存在一个rom中,上位机从中读取。
在release版本下,数据一般正确,有时候不正确
在debug版本下,数据一直不正确
代码执行过程:
先发送一个字符0x03,然后开始读取数据 采集,
采集代码是:
do
{
if(!ClearCommError(hPort,&dwErrorFlags,&ComStat))//清除串口状态标志,并返回当前状态
if (ComStat.cbInQue == 0)
{
str3=_T("缓冲区中已无数据, 退出循环");
break;
}
if(ComStat.cbInQue>=1000)
dwLength=1000;
else
dwLength=ComStat.cbInQue;
//读入数据,并返回数据长度,采用同步方式
dwReturnLength=0;
fReadState=ReadFile(hPort,RXBuff,dwLength,&dwReturnLength,NULL);
。。。其他处理
Wwhile(true)
通过循环一直读取rom中数据,但是数据本来应该是48000,有时候数据还没有读到48000,但是ComStat.cbInQue == 0,就跳出循环了。
修改了超时参数,在单片机中没发一个直接的数据然后延时都没有用。
顺便说一下:资料中说ComStat.cbOutQue 在进行非重叠操作时,此值为0,但是我发送了开始字符0x03后,发现该参数就变成1了,调用PurgeComm还是1。这个是否对采集有影响,
望大侠赐教