新手上路
- 积分
- 35
- 金钱
- 35
- 注册时间
- 2019-11-13
- 在线时间
- 11 小时
|
20金钱
循环使用绘制波形的函数会死机,且死机时间不定函数如下:
datas:显示的数据,dataNums:数据个数。
static void _AddGraphValues(uint16_t * datas,int dataNums,float zoom,float zoomY,int startPoint) {
unsigned i=0 ,j=0;
int avaDatasNum = dataNums-startPoint;
GRAPH_DATA_YT_Clear(_ahData[0]);//emwin固件库接口
my_printf("dataNums:%d,zoom:%f,zoomY:%f,startP:%d", dataNums,zoom,zoomY,startPoint);
for (j = 0; j <GraphWidth; j++) {
if(i==0){
#ifdef MAX_SAMPLE_GRAPH
int16_t tmp = 0;
for(int k = 0;k<zoom;k++){
int index = startPoint+zoom*j+k;
if(index>=dataNums)
datas[index]=0x7FFF;
tmp = datas[index]/200>tmp?datas[index]*zoomY/200:tmp;
}
_aValue = tmp;
#else
_aValue = datas[(int)(startPoint+j*zoom)]*zoomY/200;
#endif
if (_aValue > MAX_VALUE) {
_aValue = MAX_VALUE;
} else if (_aValue < 0) {
aValue=0x7FFF;
}
GRAPH_DATA_YT_AddValue(_ahData, _aValue); //emwin固件库接口
}
}
}
里面有两个EMIWN的API接口,只有把两个都注释掉才能不死机,留下任意一个都会在一段时间后死机. _有试过把aValue = datas[(int)(startPoint+j*zoom)]*zoomY/200;这一句改成aValue = j%100;,这样做屏蔽了发送过来的数据,但还是死机。
|
|