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
しかし、私が確信していないのは、ウィンドウの境界に達するまで、以前のすべての値/ドットをリフレッシュ時に左に1つシフトする方法です(新しい値/ドットが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
}