我正在尝试创建一个函数,该函数将在 GLCD 屏幕上的特定窗口内绘制折线图。
假设窗口的 x 轴从像素 24 到 205(从左到右),y 轴从像素 55 到 5(从低到高)。
只要有新数据可用,我只需要图表添加一个新值(或点)。所以我可以在数据收集例程中调用图形刷新。那没问题。
最新的值总是需要添加到图表上最右边的位置,即 205。所以我需要清除那条线并绘制一个新的值/点。也没有问题。
T6963C_line(205, 5, 205, 55, T6963C_BLACK); //Clearing the whole line
T6963C_dot(205, posy, T6963C_WHITE); //Drawing new dot
但我不确定的是,如何在刷新时将所有先前的值/点向左移动一个位置(每次在 x 位置 205 上添加一个新值/点),直到它到达窗口的边界,即 22。
任何帮助将不胜感激!
添加:
int posy1[181];
int i1;
for(i1 = 0; i1 < 181 - 1; i1++)
{
T6963C_dot(i1 + 24, posy1[i1], T6963C_BLACK); //Erase old dots
}
for(i1 = 0; i1 < 181 - 1; i1++)
{
posy1[i1] = posy1[i1 + 1]; //Shift array
}
posy1[181] = EQ; //Add new value (EQ) to array
for(i1 = 0; i1 < 181 - 1; i1++)
{
T6963C_dot(i1 + 24, posy1[i1], T6963C_WHITE); //Redraw dots
}