使用单片机控制FT800在屏幕上显示曲线,我的想法是通过很多段的直线组合成一个曲线
在屏幕上华直线没问题,
但是由于MCU资源有限,没办法定义一个大的缓存保存显示这些线段的起点和终点。
我就想一次显示一条线段,这样就不需要定义大的缓存了,
但是测试发现当显示第二条线段的时候,第一条线就会被擦掉。这个让我很郁闷。
请大神帮忙,有什么好办法
打算显示4条曲线,
void showLine (FTU32 * para)
{
FTU16 static LineDataIndex=0;
unsigned char uString[5];
FTU16 static Temp=0;
HAL_CmdBufIn(CMD_DLSTART);
//HAL_CmdBufIn(BKGND_BLOB_CLR_BRD);
// HAL_CmdBufIn(CLEAR(1,1,1));
BKGND_BLOB_GRAD_BKG;
LineDataIndex=can_buff[0].data[3];
if(0==LineDataIndex%2)
{
DotBufStart.DotX=can_buff[0].data[4]+can_buff[0].data[5]*256;
DotBufStart.DotY=can_buff[0].data[6]+can_buff[0].data[7]*256;
}
if(0!=LineDataIndex%2)
{
DotBufEnd.DotX=can_buff[0].data[4]+can_buff[0].data[5]*256;
DotBufEnd.DotY=can_buff[0].data[6]+can_buff[0].data[7]*256;
}
HAL_CmdBufIn( BEGIN(LINES) );//这条直线由于显示的位置一直在变化,所以看到在移动,而且显示第二条直线的时候,第一条就消失了。
HAL_CmdBufIn( VERTEX2II(DotBufStart.DotX, DotBufStart.DotY, 0, 0) );
HAL_CmdBufIn( VERTEX2II(DotBufEnd.DotX, DotBufEnd.DotY, 0, 0) );
HAL_CmdBufIn(DISPLAY());
HAL_CmdBufIn(CMD_SWAP);
HAL_BufToReg(RAM_CMD,0);
}
|