问题遇到的现象和发生背景
我用QVector和Qchart来把采集到的数据放在环形缓冲区,然后从里面取一定的数据画出来。
但是采集卡跑一会,就会显示这样的错误,说我QVector不对劲。
问题相关代码,请勿粘贴截图
以下是我缓冲区的部分的代码,g_vol是一个外部变量Qvecor,因为采集卡跑线程,所以我用这个来g_vol来接一下缓冲器里的部分数据,并且画出来
QVector<QPointF>vol(len+1);
u64 Timeround = 1*1024*1024*sizeof(int8);
if (len > 0)
{
if (pValid + len > pTail)//需要分成两段copy
{
int len1 = pTail - pValid;
int len2 = len - len1;
for (int i = 0; i < len1; i++)
{
vol[i].setX(i);
vol[i].setY((double)*(pValid + i));
}
for (int i = len1; i < len2; i++)
{
vol[i].setX(i);
vol[i].setY((double)*(pHead + (i - len1)));
}
g_Vol = vol;
pValid = pHead + len2;//更新已使用缓冲区的起始
pValid += Timeround;
}
else
{
for (int i = 0; i < len; i++)
{
vol[i].setX(i);
vol[i].setY((double)*(pValid + i));
}
g_Vol = vol;
pValid = pValid + len;//更新已使用缓冲区的起始
pValid += Timeround;
}
}
else {return 0;}
validLen -= len;//更新已使用缓冲区的长度
return len;
}