|

楼主 |
发表于 2017-4-20 10:45:20
|
显示全部楼层
回 caicaptain2 的帖子
caicaptain2:控件Graph有个函数,GRAPH_SetUserDraw()
这个里面有个case GRAPH_DRAW_LAST
在这个里面调用GUI_DrawGraph()就可以在控件的表面画图。
 (2017-04-18 17:34)  主函数中,这个线程就是不停的调用ADDVALUES 子函数
while(1)
{
GUI_Delay(10);
_AddValues();
GUI_Exec();
}
子函数中 frame_cnt代表刷新帧频(也就是调用ADDVALUES的次数),然后随便添加一个点,以便触发回调函数GRAPH_SetUserDraw()
void _AddValues(void){
frame_cnt++;
GRAPH_DATA_YT_AddValue(_ahData[0], 0);
}
最后在回调函数中,使用DrawGraph 进行 600个点的绘制
static void _UserDraw(WM_HWIN hWin, int Stage) {
if (Stage == GRAPH_DRAW_LAST) {
for(i=0;i<GUI_COUNTOF(aY);i++)
{
aY = frame_cnt%400;
}
GUI_DrawGraph(aY,GUI_COUNTOF(aY),50,0);
}
经测试,这种方法可以将刷新率提高到10帧/秒,比直接循环调用 YT_AddValue 600次后更新 要快一倍。但是还是有点不太够。。。如果能有20帧/秒刷新就可以了。
我也试过减少点数,比如300点,但是发现帧率还是10帧/秒,所以不知道哪里还能提高了。 |
|