初级会员
- 积分
- 50
- 金钱
- 50
- 注册时间
- 2016-7-5
- 在线时间
- 13 小时
|
我用的是老版本的ucgui 还能看到源代码的那一种 也没有上操作系统 没有外扩SRAM等 主控芯片是STM32F103ZET6 因为是老版本的ucgui 所以也没有画图控件 只有一个按照数组显示静态曲线的函数GUI_DrawGraph。
我的想法是直接调用这个函数 然后每一个循环把新的数据放到数组里面 如此循环 但是这样会重叠在一起 所以需要清屏幕的函数来把上次的图形清除掉 但是这样的话又会让屏幕在绘图的时候闪烁不停。
上一周发现了存储设备这样东西 貌似可以在内存中直接画出组合好的图形然后直接显示 所以想直接在内存里面画好黑色背景 然后叠加每次的静态波形 这样看起来就是动态的了。
存储设备部分程序我是这么写的
hMem = GUI_MEMDEV_Create(Rect.x0, Rect.y0, Rect.x1 - Rect.x0, Rect.y1 - Rect.y0);
GUI_MEMDEV_Select(hMem);
_Draw(liu,i);
GUI_MEMDEV_CopyToLCD(hMem);
第一行创建存储设备 第二行选择存储设备 第三行画图 两个参数分别是liu 要画图的数组名 i 数组现在的长度
static void _Draw(I16* p,int i)
{
Lcd_ColorBox(Rect.x0,Rect.y0,Rect.x1,Rect.y1,BLACK);
GUI_DrawGraph(p,i,Rect.x0,399);
}
第四行拷贝到LCD上
现在的问题是
(1)依然屏幕闪烁 好像没有任何区别
(2)我认为第三行应该是往存储设备里面写东西的 到第四句才真的显示到屏幕上 但是实际上去除第四行屏幕也还是可以正常显示 依然闪烁不停
(3)拷贝到屏幕上的那个函数还有一个void GUI_MEMDEV_CopyToLCDAt(GUI_MEMDEV_Handle hMem, int x, int y);这个里面的xy在手册里面是
这两个参数到底是什么意思 是填写坐标还是什么?如果是坐标 用哪个点呢?
注:单步调试发现 hMem是有值的 也就是说创建控件是成功的 但是后面运行结果就和我想的不一样了 是哪里出问题了吗 我理解哪里出错了 真心求教。。。。。。。
|
|