硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1914|回复: 6
收起左侧

[emWin] 快速变化的字符显示不全

[复制链接]

3

主题

22

回帖

31

积分

新手上路

积分
31
发表于 2018-1-23 17:05:04 | 显示全部楼层 |阅读模式
开启了内存设备
WM_SetCreateFlags(WM_CF_MEMDEV);


case WM_PAINT:
GUI_DispDecMin(abc++);
显示某个变量


case WM_TIMER:
      if (WM_GetTimerId(pMsg->Data.v) == 1)
      {
        WM_InvalidateWindow(hWin);
        WM_RestartTimer(pMsg->Data.v, 300);
      }
      break;

定时器中失效窗口

在main中刷新
while(1)
  {
    GUI_Delay(20);
  }


实际效果是,abc并不是每300ms加1,仿真发现程序会不断的进入WM_PAINT,abc加的非常快。
屏幕上显示的变量也不全,会错乱
222.jpg 111.jpg
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2018-1-23 17:10:14 | 显示全部楼层
这个优先测试下你的这个延迟GUI_Delay(20);是不是20ms执行一次,可以弄个IO翻转,示波器看下。
另外你的这个数值刷新不要使用这种方式,推荐使用TEXT文本控件,直接在WM_TIMER消息里面调用TEXT控件的API刷新就好,另外这个控件仅支持字符显示,可以使用sprintf转换下数值为字符。

TEXT文本控件的刷新是局部刷新。
回复

使用道具 举报

3

主题

22

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2018-1-23 17:18:42 | 显示全部楼层
恩,我目前的解决方案就是使用TEXT控件,但是毕竟比较麻烦,有时候就是想观察一些变量,就在WM_PAINT中打印出来,结果总是不能正常显示。
有什么办法呢
回复

使用道具 举报

3

主题

22

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2018-1-23 17:29:08 | 显示全部楼层
GUI_Delay(20)不是20ms,因为用的是串口,刷新比较慢,间隔接近350ms
回复

使用道具 举报

3

主题

22

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2018-1-23 17:37:23 | 显示全部楼层
我其实就是想知道类似于GUI_DispDecMin这样的函数的正确使用方法。
我改成GUI_Delay(1000)也不行,刷新出来的也是乱码。
把定时器也改成1000并没有什么变化。
那像GUI_DisoDecMin这样的函数该如何用呢。
回复

使用道具 举报

3

主题

22

回帖

31

积分

新手上路

积分
31
 楼主| 发表于 2018-1-23 17:54:21 | 显示全部楼层
自己解决了。
在timer里面不能失效整个窗口,失效区域就行了
case WM_TIMER:
      if (WM_GetTimerId(pMsg->Data.v) == 1)
      {
        r.x0 = 20;
        r.x1 = 100;
        r.y0 = 50;
        r.y1 = 100;
        WM_InvalidateRect(hWin, &r);
        WM_RestartTimer(pMsg->Data.v, 300);
      }
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115749
QQ
发表于 2018-1-24 01:42:00 | 显示全部楼层
johnzhy 发表于 2018-1-23 17:54
自己解决了。
在timer里面不能失效整个窗口,失效区域就行了
case WM_TIMER:

推荐TEXT文本控件,后面你用习惯了会发现非常方便的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-16 02:29 , Processed in 0.337322 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表