硬汉嵌入式论坛

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

[μCGUI] 最新版的ucGUI源代码哪里可以下载?

[复制链接]

6

主题

231

回帖

249

积分

高级会员

积分
249
发表于 2016-9-22 08:42:55 | 显示全部楼层 |阅读模式
最近想给自己的开发板增加GUI功能,在研究ucGUI,我得到的ucGUI 代码是3.9版,请问哪里可以下载最新的ucGUI源代码?

另外说一下我的心得,我觉得ucGUI的窗口管理效率太低了,主要体现在:

1、内存管理低效,进行一次内存分配需要线性查找,时间开销不确定。
static GUI_HMEM _FindFreeHandle(void) {
  int i;
  for (i=1; i< GUI_MAXBLOCKS; i++) {
    if (aBlock【i】.Size ==0)
   return i;
  }
  GUI_DEBUG_ERROROUT1("Insufficient memory handles configured (GUI_MAXBLOCKS == %d (See GUIConf.h))", GUI_MAXBLOCKS);
  return GUI_HMEM_NULL;
}

static GUI_HMEM _FindHole(GUI_ALLOC_DATATYPE Size) {
  int i, iNext;
  for (i=0; (iNext = aBlock.Next) != 0; i = iNext) {
    int NumFreeBytes = aBlock[iNext].Off- (aBlock.Off+aBlock.Size);
    if (NumFreeBytes>=Size) {
      return i;
    }
  }
  /* Check last block */
  if (GUI_ALLOC_SIZE - (aBlock.Off+aBlock.Size) >= Size) {
    return i;
  }
  return -1;
}

2、内存管理开销很大,每一份内存分配都得开辟一个记录。
typedef struct {
  GUI_ALLOC_DATATYPE Off;       /* Offset of memory area          */
  GUI_ALLOC_DATATYPE Size;      /* usable size of allocated block */
  HANDLE Next;         /* next handle in linked list     */
  HANDLE Prev;
} tBlock;

3、窗口句柄的查找方法采用的是线性遍历,时间开销不确定。
void WM__RemoveFromLinList(WM_HWIN hWin) {
  WM_Obj* piWin;
  WM_HWIN hiWin;
  WM_HWIN hNext;
  for (hiWin = WM__FirstWin; hiWin; ) {
    piWin = WM_H2P(hiWin);
    hNext = piWin->hNextLin;
    if (hNext == hWin) {
      piWin->hNextLin = WM_H2P(hWin)->hNextLin;
      break;
    }
    hiWin = hNext;
  }
}

int WM__IsWindow(WM_HWIN hWin) {
  WM_HWIN iWin;
  for (iWin = WM__FirstWin; iWin; iWin = WM_H2P(iWin)->hNextLin) {
    if (iWin == hWin) {
      return 1;
    }
  }
  return 0;
}

4、扩展控件Widgets跟核心窗口系统WM部分揉合到一起,架构不清晰。

这些都是非常低效的管理方法,我怀疑,如果窗口得数量多的话ucGUI会变得非常卡。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107527
QQ
发表于 2016-9-22 09:57:24 | 显示全部楼层
后面比较新的就是uCGUI3.98了,再新的没有了。
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
 楼主| 发表于 2016-9-22 10:10:23 | 显示全部楼层
为什么emWin版本去到5.x而ucGUI只有3.98呢?是不是后来不公开代码了还是ucGUI版本没有怎么更新?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107527
QQ
发表于 2016-9-22 10:21:53 | 显示全部楼层

回 novice 的帖子

novice:为什么emWin版本去到5.x而ucGUI只有3.98呢?是不是后来不公开代码了还是ucGUI版本没有怎么更新?
 (2016-09-22 10:10) 
花钱买,9800欧元一套源码。

uCGUI和emWin是一样的,没有任何区别,仅仅是发布时的logo不一样。uCGUI最新的也升级到5.34版本了,我在论坛上传了。进入5.xx版本后就没有再开源了,早期的3.xx是什么情况就不清楚了,也许是当年也是没有开源的,只有库,源码是购买的人发出来的,这些都有可能。

当年最uCGUI最火的www.ucgui.com论坛已经关门了,这些问题就无法考证了。
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
 楼主| 发表于 2016-9-22 10:42:41 | 显示全部楼层
花9800欧元肯定不实际,而且我本人可能有代码洁癖,对ucGUI的代码质量不怎么认同,找代码是想借鉴一下它的实现方法。
打算自己写一套用于嵌入式的GUI,目标是简洁、高效、高扩展性、高移植性、不做花哨功能。对32位MCU优化,不照顾8位机了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107527
QQ
发表于 2016-9-22 10:47:54 | 显示全部楼层

回 novice 的帖子

novice:花9800欧元肯定不实际,而且我本人可能有代码洁癖,对ucGUI的代码质量不怎么认同,找代码是想借鉴一下它的实现方法。
打算自己写一套用于嵌入式的GUI,目标是简洁、高效、高扩展性、高移植性、不做花哨功能。对32位MCU优化,不照顾8位机了。 (2016-09-22 10:42) 
裸机就可以了,我们的出厂程序就行的,简单自己编写几个API函数就行了,比如我们的这个项目
就是裸机编写的,简单方便。做工控界面很方便的,简单实用
http://www.armbbs.cn/forum.php?mod=viewthread&tid=20359

自己可以少花点时间,弄一些API函数处理就足够用了,应对工控界面还是松松的。
回复

使用道具 举报

6

主题

231

回帖

249

积分

高级会员

积分
249
 楼主| 发表于 2016-9-22 11:21:36 | 显示全部楼层
我这个产品打算上脚本引擎的,容许客户二次开发,因此必须要有一套GUI系统。
搞一套简单的GUI没有什么问题,因为我对这方面非常熟悉,毕竟我写了十多年程序了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107527
QQ
发表于 2016-9-22 12:06:25 | 显示全部楼层

回 novice 的帖子

novice:我这个产品打算上脚本引擎的,容许客户二次开发,因此必须要有一套GUI系统。
搞一套简单的GUI没有什么问题,因为我对这方面非常熟悉,毕竟我写了十多年程序了。 (2016-09-22 11:21) 
[s:151]
回复

使用道具 举报

13

主题

87

回帖

126

积分

初级会员

积分
126
发表于 2016-10-19 08:31:47 | 显示全部楼层

回 novice 的帖子

novice:我这个产品打算上脚本引擎的,容许客户二次开发,因此必须要有一套GUI系统。
搞一套简单的GUI没有什么问题,因为我对这方面非常熟悉,毕竟我写了十多年程序了。 (2016-09-22 11:21) 
这位同志  你GUI写出来了吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 21:05 , Processed in 0.240128 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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