2024年2月21日发(作者:)

[这个贴子最后由ucgui在 2005/06/27 10:04am 第 6 次编辑]

作者:ucgui

[ucgui原创] 经过几天连夜的开发, 终于推出UCGUI-VIEW的还原版模拟器---emWin 1.0.0.0

经过连续几天的开发, 白天工作, 晚上少睡觉, 搞到二点钟, 终于推出了可以查看UCGUI模拟器的编译后的程序运行效果查看器, 关于模拟库的推出, 将在以后一两个星期之内....

只要是研究UCGUI的朋友, 肯定会知道它是提供了以下两个东东的...

1. TOOLS目录下的-------查看UCGUI程序运行结果.

2. Simulation下面的---------------将ucgui的程序编译WINDOWS下的PE文件,向作者显示UCGUI下的图形功能.

对于这两个东西, 感兴趣的朋友, 一定会产生UCGUI程序是如何在windows环境下运行并显示出其GUI函数的效果的, 我们其实可以称UCGUI中提供的是一个模拟器, WINDOWS下的模拟器, 它可以让我们看到它的图形效果. 进行UCGUI的图形程序编程. 这对于我们学习UCGUI下的图形开发非常的方便.

但是我们不应该只知其然, 不知其所以然.

其实实现的原理还是比较简单, 首先它是通过位图来实现的, 通过在内存中开一块内存, 当作显示器的一个平面, 与显示器上的每个点相对应, 将显示器上的每个象素按行一行一行的保存在这个内存区域当中, 然后再将些区域中的数据以显示位图的方式画到窗口上,

用的是SetDIBitsToDevice(同等大小),StretchDIBits(比例显示)这两个函数来实现的.

这样, 其实GUI中每个函数所操作的象素其实就是在这片内存区域中进行的, 对于8位及8位以下的, 由于显示位图时还要调色板, 所以还有一个区域专门来存放调色板信息的,

这一信息也是由模拟器来初始化的.

其实这是大致的原理, 出是了核心的一步, 具体的细节, 我将推出一系统的文章, 希望大家可以关注, 并从中与我交流...

ucgui-view模拟器v1.0.0版下载, 在今后的一段时间, 我们还将继续加强功能...

如下图所示1-1所示:

[ucgui原创] 嵌入式的一些资料的下载(ucgui/ucos等)

嵌入式的一些资料的下载(ucgui/ucos等)

1. 嵌入式图形系统uc/GUI 3.24版源码下载(包含vc下的示例程序):

/home/ucgui/

2. 嵌入式图形系统MiniGUI 1.3.0版源码下载:

/home/ucgui/

3. MiniGUI下Windows环境的模拟器及五子棋程序下载:

/home/ucgui/

4. 嵌入式图形系统 LGUI源码下载

/home/ucgui/lgui_

5. 嵌入式操作系统 uc/OS 2.52 版源码下载:

/home/ucgui/

6. Uc/os在80x86上的移值版本, 编译成DOS下的EXE文件.

/home/ucgui/

7. Uc/os在arm7~9 上的移值版本, 编译成linux下的ELF文件, 通过自由开放源码软件----skyeye虚拟仿真机运行, 在LINUX下环境下运行.

/home/ucgui/

8. Skyeye 0.9源码下载:

/home/ucgui/

9. 嵌入式的uc/fs文件系统下载:

/home/ucgui/

10. 嵌入式的网络协议实现 uc/tcpip 下载:

/home/ucgui/

11. 另外一嵌入式网络协议实现Lwip 0.6 下载:

/home/ucgui/

还有一个中文的操作系统PYOS的早期版的...

12. PYOS----国内人牛人推出的中文图形化操作,虽然现在的版本还是比较简单,我所选择的版本比现在的还要早,因为我觉得这样的话,更用利于学习的人了解一个操作系统到底是如何写成的,其实这个版本的PYOS只能算是一个开机便能自己运行的系统程序而已.是针对80X86保护模式体系下的,有自己的引导,加载部分,它一开机便能自己运行,了解这个,你可以大大的了解为什么PE文件是多么的方便与复杂,一点击就由系统来运行了, 但是要做一个自己引导自己运行的系统程序,就不那么容易,PYOS正好满足你这方面的兴趣与问题,我对此源码有一定学习,有什么问题可能交流...

以下是PYOS的一截图...

/home/ucgui/

还有一个LINUX早期版本的操作系统, linux0.11版本...

13. linux0.11版本----关于这个版本的学习, 在网上比较流行, 而且有一个论坛专门学习讨论这个版本的LINUX, , 学习这个版本的原因是, 它本身是一个比较完备然而又非常简单的早期LINUX系统, 总代码量为14000行.对于学习来说, 是比较适合的.

linux0.11中文注解源码下载...

/home/ucgui/Linux011_

linux0.11原文注解源码下载...

/home/ucgui/Linux011_

还有, 对于这个版本的学习, 最好去. 再就是下载一个Bochs-2.1.1版的虚拟机来....

另外还提供了阅读这些源码非常方便的一个工具

t3.0----非常方便的源码阅读工具,利用它你可以很方便的找到你要找的函数及变量,结构体等等的声明之处/定义之处,而不须要先编译源程序...

/home/ucgui/

15.还有UCOS的模拟器下载, 可以让使用者很方便的进行UCOS的开发,了解UCOS的多任度调原理, 在VC环境下, 对于WINDOWS的用户非常的方便...

/home/ucgui/simuos_

可惜这个模拟器没有公开源码, 我将在未来二周内,开发完UCGUI的模拟器源码后, 再开

发UCOS的模拟器..并将公开源码...希望与大家交流...

文字

35_ (19.13 KB)

下载次数:30

1970-1-1 08:00

收藏 分享 评分

回复 引用

订阅 TOP

2#

发表于 2005-6-8 21:01 | 只看该作者

ucos的GUI图形系统ucgui的模似器源码设计文档及各种资料

[这个贴子最后由ucgui在 2005/06/08 09:12pm 第 1 次编辑]

[ucgui原创]

emWin-----UCGUI的WINDOWS下模拟器的实现原理分析之一(还原emWin为C源码)

[以下分析全部通过IDA反汇编.用的是4.5版.]

使用过UCGUI的朋友..应该都知道, 我们写的GUI程序, 在VC的那个示例当中, 都是与提供GUI服务的代码是编译在一起的, 这部分代码即放在两LIB文件当中:

-----提供WINDOWS程序的接口, 负责模拟一个虚拟的显示器. 来显示出UCGUI中的图形.

----------提供GUI中各中画图的函数, 是供应用程序调用的GUI API函数.

现在我重点讨论.

一. emWin-----UCGUI的WINDOWS下模拟器的实现原理分析之一(还原emWin为C源码)

1.1模拟器的构成模块分析.

//emWin模拟器的几个模块简介...

//2005-05-20

---------------------调用用户程序的MainTask().

------------------创建模拟器窗口,mouse/keyboard处理.

SIM_--------------------初始化并检测LCD宽高及透明色(FF0000),并设置"显示器"在装备位图中的位置.

LCD_X_----------------LCD_X_Init与硬件相关的初始化.

LCDSIM_-----------------功能与类似,但是另外一种显示器输出功能.

-------------------模拟器显示窗口LCD的显示,相当于作显示器输出.

GUI_X_----------------实现系统的一些互斥等.

-----------------emWin版权信息.

[未完待续]

35_383_ (42.1 KB)

下载次数:3

1970-1-1 08:00

回复 引用

TOP

3#

发表于 2005-6-9 09:39 | 只看该作者

ucos的GUI图形系统ucgui的模似器源码设计文档及各种资料

[这个贴子最后由ucgui在 2005/06/09 09:56am 第 1 次编辑]

[更新]

[告知读贴者]

由于以上提供的各个连接地址的网站ICP备案出现一点小问题, 今天上午可以无法访问了, 但将在二天内开通, 希望继续关注, 现在将ucguiview1.0.0.2版本的源码发到这人论坛上, 供大家下载....谢谢...如急须,可以加我QQ:106719880, 通过QQ传送, 加好友时请注明是"UCGUI论坛"字样...

1. ucgui-view模拟器v1.0.2版下载推出, 2005/请大家关注.....

2.即将推出库源码, 请大家关注.....

ucgui-view模拟器v1.0.2版下载,[2005/06/09] , 这是最新版本, 修改了一些前版本的BUG,

增加了MOUSE支持, 本站将于近日推出的模拟库源码.

其实推出UCGUIVIEW的源码, 只要加一些改动, 完全就是模拟器源码, 不过它比模拟器做的事情还少一点, 不须要做一些调色板等的初始化.

35_383_ (504.37 KB)

下载次数:327

1970-1-1 08:00

回复 引用

TOP

4#

发表于 2005-6-10 11:35 | 只看该作者

ucos的GUI图形系统ucgui的模似器源码设计文档及各种资料

天吶 真是挖到寶了....

回复 引用

TOP

5#

发表于 2005-6-10 13:46 | 只看该作者

ucos的GUI图形系统ucgui的模似器源码设计文档及各种资料

好东西

学习学习

回复 引用

TOP

6#

发表于 2005-6-10 16:29 | 只看该作者

ucos的GUI图形系统ucgui的模似器源码设计文档及各种资料

UCGUI论坛网站已经恢复正常访问了...

出现了一天不能正常访问的情况,,请大家继续关注....

近几日还将推出库源码...

到时时候大家将可以在模拟器的源码与UCGUI的源码下进行UCGUI图形编程, 完全没有任何隔膜, 任何东西都是开放的...

再过一二周, 本人还将推UCOS+UCGUI的模拟器源代码, 并写出实现原理, 请大家关注...

如果没有必要回贴, 请大家不要回贴, 因为我还将在此贴中写一些技术原理,,,如果回复多了,,将不利读者看贴...谢谢....

回复 引用

TOP

7#

发表于 2005-6-13 10:28 | 只看该作者

ucos的GUI图形系统ucgui的模似器源码设计文档及各种资料

[这个贴子最后由ucgui在 2005/06/14 06:45pm 第 3 次编辑]

[更新提示: UCGUI论坛又提供了CSWORD朋友的UCGUI在DOS的移值版本,以及GUISIM源码下载,以及完整的工程文件及BORLAND3.0环境!!]

ucgui的模拟器UCGUISim 1.0.0.3源码下, 完全提供源码, 不须要库文件...

***********************************************************************

REVISION LOG ENTRY

Revision By: ucgui

Revised on 2005-6-13 0:59:52

Comments: GUISim 1.0.0.3

***********************************************************************/

//工程结构说明

project----------------------存放工程.

doc--------------------------存放文档.

Simulation-------------------模拟器源码文件.

resource---------------------资源.

gui/include------------------ucgui的各中头文件.

gui/Library------------------包含库,供调用ucGUI函数

gui/GUISource----------------UCGUI源码文件.

gui/Config-------------------UCGUI配制文件.

gui/Application--------------UCGUI应用程序文件.

1. 提供基本的汉字支持,从csword网友的ucgui在dos下的移值版中改良而来, 直接利用其HZ.C文件,但修改了他的程序中显示汉字的一个问题, 详见说明文档.

[说明:csword网友的UCGUI在DOS下的移植版本有一定的学习意义, 因为它同时也整合了UCOS, 可以进行UCGUI+UCOS的联合编程, 编译器用的是BORLAND3.0版,csword的这个东东在本站有下站.csword用的是BORLAND提供的BGI标准VGA驱动, 所以对于图形处理,

不是直接写, 而是调用BGI中的函数来写象素点]

2. 修改了创建UCGUI执行主线程的一个

3. 修改了在支持MT_MultiTasking.c示例时显示出来的一个BUG, 是关于多任务模拟的问题主要是在SIM_Start函数所在线程,即MainTask所在线程在创建完GUI应用线程后就退出,

导致在暂停及重新开启功能时出错.因为它们操作的对象即是GUI应用主线程...

有待下一版本增加功能:

1.增加键盘支持.

2.增强LOG支持, 使不仅可以用来捕捉LOG. 还可以查看LOG文件..

3.增加原示例包中有一个图形窗口的支持[指用一张模拟硬件电图中来显示LCD显示屏]

下载连接: UCGUISim 1.0.0.3 版本下载.....

/home/ucgui/

GUISimLIB库下载,

/home/ucgui/

[与上面的区别是写UCGUI应用程序时,可以直接包含这个LIB库,而不须要模拟器源码]

以下是截图:

35_383_ (92.14 KB)

下载次数:8

1970-1-1 08:00

回复 引用

TOP

8#

发表于 2005-6-17 19:13 | 只看该作者

ucos的GUI图形系统ucgui的模似器源码设计文档及各种资料

[这个贴子最后由ucgui在 2005/06/17 07:15pm 第 1 次编辑]

GUISim1.0.0.4下载, 增加键盘支持,修改了配制问题及放大时的mouse支持...

/***********************************************************************

REVISION LOG ENTRY

Revision By: ucgui

Revised on 2005-6-17 19:09:52

QQ:106719880

Email:ucgui@

Home:

Comments: GUISim 1.0.0.4

***********************************************************************/

1. 增加键盘支持.

2. 增强LOG支持, 使不仅可以用来捕捉LOG. 还可以查看LOG文件..

3. 修改BytesPerLine在16位的情况下的BUG, 这是因为本模似器采用的是显示位图的原理,

而位图是须要四字节对齐的. 原来的注解有误, +3是为了达到4字节对齐.

BytesPerLine = (XSize + 3) & 0xFFFFFFFC; //8位及以下.

BytesPerLine = (XSize* 4 + 3) & 0xFFFFFFFC; //8位以上..

4.修改配制上的问题, 在GUI下面有一个Include的目录, 原先在工程的[c++Addition

Include Directroy]设置当中, 采用的 的是GUIInclude里面的头文件, 但是在GUI的源码下面已有那些头文件, 从而导致混乱, 即使修改了其中一个头文件中的内容, 也会导到这个修改不起作用, 比如修改LCD_XMAG这个参数. 所以, 在现在的工程当中,全部不用Include目录下的文件, 只用GUISource目录下的, 这些.h的头文件散布在Core, WM等几个目录中.

另外, 在原先的工程当中, 即使修改了Config下面的预定义也不会产生效果, 是因为在GUIGUISourcecore下面也包含了那同配制文件, 在现在的工程中, 这些头文件已经清除掉.(GUIConf.h,GUITouchConf.h, LCDConf.h)

5.在官方提供的模拟器当中, 无法支持在LCD_XMAG及LCD_YMAG不为1, 即图象放大时的mouse支持,其实要支持也只须要很简单的修改, 就是在传入mouse的x,y坐标时, 分别除以LCD_XMAG,LCD_YMAG; 而且在处理mouse的点击范围时, 要扩大接收mouse消息的范围,

详见源码注解.

GUISim1.0.0.4下载

35_383_ (98.85 KB)

下载次数:8

1970-1-1 08:00

ucos的GUI图形系统ucgui的模似器源码设计文档及各种资料

汉字显示用纯字库与.C字库源码文件的区别

楼上的, 其实我们所用的显示汉字的途径是不同的. 是两种方法, 但都是以点阵来显示来处理汉字显示的, 不同点在于你的汉字点阵是与你的程序编译在一起的, 汉字点阵的数据包含在你程序当中了.

你所说的方法, 其实用的是汉字库弄出的点阵数据的.C文件, 这是别人从汉字库中生成的. 这种方法与UCGUI中本身处理文字显示的方法是相同的, 都提供了所须文字的点阵及显示文字的方法函数. 关于具体如何实现, 我将会更详细的写一篇介绍文章.

至于我的汉字显示, 说的是直接利用汉字库, 而不用什么.C的汉字库字体文件, 根本不用UCGUI中本身的一套方法, 但本质还是相同的, 以位图来显示点阵汉字, 为了显示汉字,

须要点阵汉字库, 及显示汉字的函数(WriteHZ()). 而且还要修改UCGUI中的显示字符的函数,

来特别处理汉字的显示. 因为汉字的机内码与ASCII中英文的有差别, 是从a1往上走的, 所以很容易区分开来.

关于你的. 你的是下载使用了中文字库的.C文件, 这个在网上是有.如下.

一个优化过的完全版的ucGUI汉字库_hzk12使用方法:

将解压后的hzk12.c放到ucGUI的font路径下

在GUI.H文件内加一行:extern const GUI_FONT GUI_FontHZ12;

按如下形式调用即可显示中文了:

GUI_Init();

GUI_SetColor(GUI_RED);

GUI_SetFont(&GUI_FontHZ12);

GUI_SetTextAlign(GUI_TA_LEFT);

GUI_DispStringAt("汉字库显示测试",20,20);

GUI_FontHZ12 下载.

/ucgui/ucGUI_