初级会员 
  
	- 积分
 - 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是有值的 也就是说创建控件是成功的 但是后面运行结果就和我想的不一样了 是哪里出问题了吗 我理解哪里出错了 真心求教。。。。。。。 
 
 
 
 |   
 
 
 
 |