嵌入式WinCE系统定制与应用程序开发

1)   PB5.0(platform builder 5.0):适用于定制系统,编写驱动程序,编写shell

(2)   EVC4.0(eMbedded Visual C++ 4.0) + sp4:适用于开发应用程序

(3)   如果需要开发数据库方面,不想用原始的的ole操作数据库,如果用ADO来操作,需要Adoce31组件库的支持。


一、EVC开发经验

下面介绍一下EVC的配置,特别在无网络情况下EVC的配置。

(1)   有网络支持下配置:这种的情况比较简单,只要把相关SDK进行安装,然后在建工程的时候选择所安装的SDK即可编译。

(2)   无网络支持下配置:按照有网络那种配置来编译程序,发现模拟器可以启动,但是程序下载不到模拟器上面,更不用说调试程序了。这时候我们就得在无网络情况下配置一个虚拟网络后才可以像有网络那样调试程序。配置步骤如下(windows XP系统环境):点击’开始’菜单->点击’控制面板’->进入控制面板后点击’添加硬件’->弹出添加硬件向导,点击’下一步’->进入硬件是否连接选项,选择’是’点击’下一步’->在已安装硬件列表中选择’添加新的硬件设备’然后’下一步’->进行是否自动安装或手动安装向导,选择’手动安装’然后’下一步’->在硬件类型中选择’网络适配器’然后’下一步’->在添加网卡向导中,在厂商列表选’Microsoft’,在网卡列表中选’Microsoft Lookback Adapter’然后下一步以完成硬件添加。在网络连接中就可以看到这个新建的连接没有打叉的标志。接下来设置这个虚拟连接的IP地址和子网掩码后EVC就可以像有网络支持的情况下那样工作了。


熟悉VC6.0开发的程序员就能快速掌握EVC程序的开发,不过特别注意的是VC6.0中的很多函数在EVC中并不支持。打开EVC安装目录查看MFC中的源代码会发现在函数的声明前加上WCE_DEL宏标志的函数是不被EVC所走支持的。特别是EVC工程中工具栏的标准控件Edit在文字右对齐或居中出现不正常显示情况,我上网查了发现其它的控件也有一些bug(这是我在做一个计算器发现的,哈哈)。在进行Wince应用程序开发时一定要记住内存管理与效率等方面的全面考虑。还有在进行界面组件扩展时候EVC不支持很多的重画,因为在platform builder5.0里面的各界面组件的源代码中行为代码和重画代码是分离的。随着C++的发展,模板库的运用越来越多,因为EVC中不支持C++的异常,所以SDK自带的模板在程序中使用并不是一个很好的选择,因为自带的模板中有用到C++异常。

  

在PDA上面最重要的是信息的处理和存储,这时在数据库的选择方面有很多种,比较嵌入式Oracle数据库,SQLCE数据库,AccessCE数据库,SQLite数据库,系统自带的数据库等。系统自带的数据库存储容量小,操作不方便因为不被常用。SQLite是一种轻量级数据库,但SQL支持比不上SQLCE。因为PocketPC或SmartPhone有支持AccessCE数据库且有自带Jet引擎,但是原始Wince并没有自带Jet引擎,而且网上很难找。嵌入式Oracle支持大容量的数据,SQLCE支持中大容量数据,并且Platform Builder可以定制一个包含SQLCE数据库操作引擎,因此我选择Adoce等组件来操作SQLCE。在用Platform Builder定制含有SQLCE数据库操作引擎的系统后,导出该系统的SDK安装程序(下一部份详细讲解系统定制和各种配置及SDK的导出),然后安装该SDK,然后在EVC的工程配置项中就可以看见该SDK选项,选择该SDK选项就可以在该SDK相应的模拟器中调试程序。但是在编译程序时会编译不过,这时就需要在EVC中的菜单tools->options下设置库的路径。在弹出的Options对话框中在Platform选项中选择安装和SDK选项,然后在Show directories选项中选择Library files,修改正确的路径即可。在用Adoce组件(微软网站上面有下)开发程序后启动模拟器来调试,这时要把adoce组件拷到模拟器中注册并保存模拟器状态以便下次启动不用重新拷贝,还有一种方法就是把adoce组件用platform builder集成然后导出SDK也可以。拷贝文件方法是选择EVC的tools->Remote File Viewer打开Remote File Viewer工具,在Remote File Viewer工具中选择file->Export Files就可把文件导入到模拟器中。注册组件就用EVC安装目录下的WCE400/TARGET中的REGSVRCE.EXE程序。这些工作做好之后就可以调试数据库程序了,在下面我会给出一个对adoce和adoxce组件封装好的数据库操作引擎并给出这个类库的操作方法。好了EVC就说这么多了,其实开发就是摸索和学习过程。


二、Platform Builder开发经验

在Platform Builder进行系统定制过程中最难是定制的系统怎样来支持这个硬件平台,然后是驱动开发,最后才是shell的开发。由于定制的系统和硬件有关,驱动开发也和硬件有关,我没有硬件相关的知识,只有软件开发的相关知识,所以这里只讲讲shell的集成和开发。定制一个在模拟器上面能运行的系统只需要根据向导来一步一步完成即可。为了添加更多的特性,只需在Feature Catalog选择所需的特性加入即可,然后编译系统设置选择模拟器下载选项就可以观察定制的系统。导出定制后的系统的SDK步骤也只在Platform->SDK菜单项中根据向导一步一步完成。


Shell的开发和集成

Shell的开发最好用SDK直接开发,因为用Windows api直接编写的程序在消息同步时控制会比较好。用MFC来开发比较快速,但要加载MFC相关的库。大家如果按书上所讲的开发Shell程序时,注册好桌面窗口类,注册好了任务栏窗口类后并调整了工作区。或者按书上所讲的修改taskman程序来做成相关的shell程序时,会不会发现为什么有讲窗口创建或销毁时相关的shell消息(HSHELL_WINDOWCREATED、HSHELL_WINDOWDESTROYED)的例子,我却按书上所讲的来做却运行不了。而且发现WM_SHELLNOTIFY消息的定义或头文件在哪里找不到。我原来也没找到,但我用Remote Spy程序跟踪程序运行后的消息传递发现该值为0x0400和WM_USER定义的值一样。经过一番研究发现原来在定制的系统的目录下/WINCE500/Emulator_x86/cesysgen/oak/inc/中的hshell.h头文件中定义。现在的shell开发的差不多消息都已经知道了,现在就可以用编写windows SDK程序一样编写Shell程序了。

    Shell程序写完了,我要怎么把它变为桌面Shell并替换掉原始的桌面Shell程序呢,其实很简单,在ParameterView下展开树列表可以看到common.reg、platform.reg、project.reg。而在platform.reg添加[HKEY_LOCAL_MACHINE/init]

"Launch50"="shell程序名.exe"

"Depend50"=hex:14,00,1e,00

和在project.reg中的效果是一样,不过在后者中添加只修改当前工程,所以最后在后者添加这个注册表项就可以了。这样重新编译系统并下载模拟器上就可以看到替换的shell桌面。那么原来的那个shell程序要不要删除,我觉得没必要,因为该程序相关的组件很多,而且这个程序的占用空间不是很大,有了你的桌面程序后这个程序也运行不了。其实就这么简单,网络上面也有很多相关介绍,都讲了一大堆东西,www.vckbase.com上面也有。我的这个方法就是这么简单。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值