你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 4695|回复: 0

UI设计新方法:使用C++builder的即见即得辅助设计

[复制链接]

4

主题

8

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2012-6-16 14:51:02 | 显示全部楼层 |阅读模式

我先介绍一下我自己吧,
我之前对MCU也是一知半解,一步步的自学过来,2008-2012
在国内某家代理商工作,工作的内容是负责st mcu FAE相关工作,
现在是在自谋职业。
 
我对UI,RTOS 的研究是源于开发 全彩LED视频处理器。
开发这个系统,是我人生中第一次编写完全系统的代码。
 准备工作时,我先去学习RTOS 的知识,特别是ucOSII,
结果是挺痛苦的,好长一段时间都没用得起来。基于我之前的FAE/AE的工作,
我对stm32 了解比较多,对Cortex-M3 这个核也了解过(工作需要).
觉得自己只要一个简单的任务调度即可以完成工作,并且自己写一个任务调度系统
要比去学/用 ucOSII 要快,并且害怕没有技术支持,所以花了几个月写了个RTOS,现在已经稳定应用
于多款产品中.
   我开发的这个全彩LED视频处理器有个小屏,需要用到菜单设置参数,我对菜单系统的理解来源于mstar 模拟TV 的菜单(我早期是做TV),
全彩LED视频处理器上理论上可以,但是这个菜单主要是个十字链表,可以把各个菜单联系起来,但是很痛苦的是,
只要改一点内容都需要去重新看这个大大的链表,以用来确定内容应填在那个节点.
 
痛苦之余,我想去选择ucGUI,等的菜单系统,但是庞大的代码,还到处看书,到最后,就关键的,移植这一关我都过不了.
可能年纪大一此了,还真的无法有把握去吃透,也没有那个精力,还真头痛.
 
十分无耐,偶儿我看到了一个消息,微软有一个micro .NET 可以做出很漂亮的界面(是去拜访客户中了解到的)
开发很方便,是在virtual studio中开发,即见即所得,可以生成在MCU中运行的菜单,我心里面迎来一丝暑光。
但是当我详细去了解这个 micro.NET的时候,,发现micro.NET编译出来的BIN 要200多K,且RAM要求很大,
当时,没有一颗ST 的MCU满足这个要求,我投身micro.NET的路被堵死了。
 
不过micro.NET 给我的启发是 嵌入式菜单也可以使用即见即所得这种设计方法.
 
联系我自己的知道的,我读高职时,就接触过的c++builder(现在一直在用,当时我电子专业,去计算机专业旁听来的)
他的VCL 菜单结构对我印像很深。
我试着以VCL的理念去设计菜单,可以问题就来了,为了实现VCL这种代码复用,窗体管理,消息派送等功能,
必需使用有c++类这种功能,才可以实现。。
头又开始痛了,怎么会一直走都是绝路呢,st 的外设库等,都是使用c的。绝大多数的MCU code都使用C,
当时IAR5.50,倒是支持c++,但他这个C++并不是标准的C++,而是由日本人发明的,工业c++,比标准的
c++俺割了很多,不通用,很多c++的概念并不支持.虽然该c++能满足我的要求,但是不流行,我查他的资料,
网上说他很少用,也很久没有更新了,并且编译出来的bin 沉余太多,效率不高,占用的空间比较小。
 
我要实现VCL 类似的功能,必需有类继承的功能才行,又遇到绝路。
 
机会来了,偶然遇到一个台湾牛人写的文章,使用了c语言本身实现了C++大部分的功能,
确实利害,在你的程序里面只要加一个头文件,就让C语言实现class,new,继承等功能,
他的这个头文件,只是用typedef     ## molloc 这三个C的基本元素,就能实现了C++大部分功能。
后续我把这个粘上,一起分享.我用起来现在都用得顺了,使用C语言,以C++的角度组织代码,
会让代码很容易管理,但是性能并不会下降,这个真的是好东西。
 
直到遇到这个好东西,所有的条件都成熟了。之后我就开始设计这些菜单的元素.
设计这个类似VCL的东西,思路也挺简单。
1.先设计一个类,  这个类包含一些特性,
    如座标,颜色,实现方法如drawing, KeyEvent 等函数。
2.这个类是可以继承的。可以动态new() 分配。
3.使用虚函数实现多态性,使得各个窗口组件都可以使用同样的接口访问.
4.使用C++Builder 的控件设计菜单,运行时,把控件的状态生成基于我们自己写的
   菜单控件,并把这些特性(颜色,座标,等赋值为c++builder 的VCL一样。
5.编写LCD底层驱动函数,只有一个基本的DrawPixel(x,y,R,G,B);
 
 
 我现在设计的这个库已经可以实现
   1.标签
   2.按钮
   3.文本框
   4.对话框
   5.图片.
menu.jpg
 
后结我需要用到新的控制,会慢慢增加.

下面是我的联系方式,我喜欢交朋友,有问题大家一起研究。
目前我主要做系统方面的研发
 专用图型芯片+FPGA+MCU  ,数据库,上位机软件等,
因为早前在代理商support ST mcu,也积累一些资料,都是自己闲时,
摆送,都很乐意与各位网友分享.
 
1.  Flash loader for stm8/stm32   (包括上下位机)
2. OS for Cortex-M3 源码,  简单,合适初学者研究,和工程应用.
3.即见即所得菜单库.(需安装c++builder2010)
 
联系人:梁祚扬
名称:深圳市洲泰科技有限公司
地址:深圳市宝安西乡107国道339号(西成工业区公交站)吉美禾大厦1018
网址:www.zoti.cc
邮件:alex_liang@zoti.cc
手机:13600442925
电话:0755-26489058
传真:0755-23048855
邮编:518000
QQ: 1516526384
 
c实现C++的一些介绍.
本文介绍一种轻量级的面向对象的C语言编程框架:LW_OOPC。LW_OOPC是Light-Weight Object-Oriented Programming in(with) C的缩写,总共一个.h文件,20个宏,约130行代码,非常的轻量级,但却很好的支持了很多面向对象的特性,比如继承、多态,可以优美的实现面向接口编程。这个框架系由台湾的高焕堂先生以及他的MISOO团队首创,之后由我继续改进优化,最后,经高焕堂同意以LGPL协议开源(开源网址参见后文)。
       用C语言实现OO?我没听错吗?这听起来真是太疯狂了!… 大家都知道,C++支持了面向对象和面向泛型编程,比C要更强大些。那么,为什么要在C语言中实践面向对象呢?为什么不直接使用C++呢?
 
为什么要用面向对象?
面向过程方式开发的系统,代码复杂,耦合性强,难以维护,随着我们所要解决的问题越来越复杂,代码也变得越来越复杂,越来越难以掌控,而面向对象改变了程序员的思维方式,以更加符合客观世界的方式来认识世界,通过合理的运用抽象、封装、继承和多态,更好的组织程序,从而很好地应对这种复杂性。
 
为什么不直接使用C++
C和C++之争由来已久,可能要持续到它们中的一种去世^_^。C语言以其简洁明快,功能强大的特点,深得开发人员的喜爱,尤其是在嵌入式开发领域,C语言更是占据了绝对老大的地位。在我看来,语言只是工具,作为程序员,我们要做的是:选择合适的语言,解决恰当的问题。我们要尊重事实,考虑开发环境(软硬件环境),考虑团队成员的水平,从商用工程的角度讲,选择团队成员擅长的语言进行开发,风险要小很多。
       一些从Java/C#转到C的程序员们,无法从面向对象切换到面向过程,但又必须与C语言同事们在遗留的C系统上开发软件,他们有时会非常困惑:C语言是面向过程的编程语言,如何实践面向对象,甚至面向接口编程呢?此时,就非常需要在C语言中实现面向对象的手段,而LW_OOPC正是应对这一难题的解决之道。
 
LW_OOPC是什么?
       简而言之:LW_OOPC是一套C语言的宏,总共1个.h文件(如果需要内存泄漏检测支持以及调试打印支持,那么还需要1个.c文件(lw_oopc.c,约145行)),20个宏,约130行代码。LW_OOPC是一种C语言编程框架,用于支持在C语言中进行面向对象编程。
 
 
 
 
 
 
 
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版