工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 移动开发 > 正文
EVC开发实例之保存信息(一)
[文章信息]
作者:付林林
时间:2004-08-27
出处:
责任编辑:方舟
[文章导读]
Windows CE下开发的软件大多和硬件紧密相关
advertisement
热点推荐
· 真没想到VB也可以这样用之指针技术
· 禁止QQ登录的方法
· 给你的XML文件做个数字签名
· ImageReady制作“焰火”小动画
· Java加密和数字签名编程快速入门
[正文]
  Windows CE下开发的软件大多和硬件紧密相关。如果写和硬件相关的技术,那只有极少数甚至没有人受益。相反写出来的文章,应该让更多的人受益,都能学而用之。任何一篇文章我都会遵循此原则。当然,本人资质甚浅。只能尽力而为。

  题目中的信息是指很少量的数据。比如配置信息、注册表数据等。在其它Windows 操作系统中,这些信息一般都被保存在*.ini文件或注册表中。

  嵌入式设备没有统一的要求。有的不需要保存任何数据,有的将数据保存到RAM中,在关闭设备时仍然给RAM提供电源。有的将数据保存到永久存储设备中。不同的情况有不同的解决方案,这就造成了在保存信息方面,相关的技术很繁杂,要弄明白需要时间和实践。

   在这篇文章中我主要讲解在Windows CE下如何将数据保存到永久存储器中。将数据保存到永久存储器中应用广泛,不易丢失数据,可以保存大量的数据,也不必在系统关闭后还要提供电源。相比较将数据保存到RAM中要不间断地提供电源,存储空间也大大受限制。
保存到*.ini文件中

  要想让你定制的内核支持永久存储设备,需要加入对永久存储设备的支持(就是驱动程序),再加入一种文件系统。现在假如我们的存储硬件采用IDE接口,使用一种简单实用的文件系统,FAT是合适的选择。那么对应的操作步骤如下:先使用新内核生成向导,生成一个内核工程后(采用哪个平台模板都行),在PB右边“catalog”窗口中加入对存储设备的支持。在PB v4.1下具体位置为“device drivers”-“storage devices”-“ATAPI PCI/IDE Storage Block Driver”。单击右键,在弹出菜单中单击“add platform”,PB立刻将相关驱动程序源码或者编译后的文件,还有相关环境变量加到你的内核工程中。之后再加入FAT文件系统驱动。FAT组件的具体位置为:

“Core OS”-“display based devices”-“file system and data store”-“storage manager”-“FAT File System”。

  也用同样方法加入到左边内核工程中。之后设置环境变量。方法是单击PB菜单“platform”-“settings”-“environment”-“new”,输入环境变量名“IMGRAM64”,再输入值“1”。准备工作完成后,编译整个内核。你定制的内核就应该支持永久存储了。

   先不考虑注册表问题。假如我们的产品不需要保存注册表数据,但是需要将一些软件使用的配置信息保存到永久存储器中,那么采用ini文件方式比较适合。不采用注册表保存数据的原因是在定制内核时需要进行复杂的设置,来保证内核能在每次启动时加载保存到永久存储设备上的注册表数据。如果只是几个软件需要使用配置信息,那就没必要为了能够保存注册表数据而设置内核。把话说简单一点:除非必要,能不用注册表保存最好。

  虽然在EVC帮助文件中提到了MFC库中有CWinApp::WriteProfileInt和CWinApp::WriteProfileString 。而且在EVC下编译也通过了。但实际执行起来函数返回值为0,说明没有任何数据被写到硬盘上。在硬盘或者\windows目录下也没找到ini文件。这看起来很蹊跷,如果你使用EVC开发过,你就见怪不怪了。下面顺便说说我遇到过的“蹊跷”:

   A、有的函数在帮助文件中提到过,说CE支持此函数。但在编译时EVC不识别,或者链接时不识别。一种原因可能是你在安装了CE和EVC后,没有调整EVC的编译和链接目录,也就是包含头文件和库文件的目录。EVC在安装后,默认包含头文件和库文件的目录为Standard SDK目录,Standard SDK是专为模拟器准备的,自然内容很少,找不到某个函数也在情理中。解决办法是修改EVC的包含头文件和库文件的目录。位置在菜单“tools”-“options”-“directories”。在“CPUs”栏里选择你的CPU类型,然后分别添加头文件和库文件的目录,添加的头文件目录和库文件目录是安装Windows CE时SDK的目录。举例来说,假如开发平台使用的是x86 CPU。那么在“CPUs”中选择“Win32 (WCE x86)”,然后在“Show directories”中选择“include files”,接着在下面“Directories”栏里添加几个目录。如图1所示(SDK指软件开发包,OAK指OAL开发包,DDK指驱动开发包)。接着在“Show directories”中选择“library files”,把库文件目录也添加进去。如图2所示。另一种原因就是真的没有此函数。CE的帮助文件做的并不好。很多函数的说明、例子代码都是照抄于VC下的帮助文件。只有编译或者运行程序时你才知道这个函数是否存在。

  注:如果你是在PB下创建工程编写程序,就不必设置了。


图一


图二

   回到正题。CWinApp::WriteProfileInt和CWinApp::WriteProfileString函数既然不能写数据到永久存储设备。那就必须自己写这两个函数和对应的读取数据函数GetProfileString和GetProfileInt。因为这四个函数使用频率很高,故我将此函数写出来,当你需要的时候就不用再写了。

  注:1、函数中所有字符串均为UNICODE。2、采用了MFC类库。3、具体问题见代码。

  付林林:毕业时间:2001年,专业:计算机。从毕业起一直从事软件开发工作。目前从事 Windows CE 下操作系统内核定制和应用程序开发。在两年的时间里积累了CE下开发的一点点经验。希望和 CE 下开发者交流、探讨,更希望你们能不吝赐教。


天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • EVC开发实例之窗口切换
  • Windows CE串口通讯类的实现
  • 民营家电商排队造手机 设备商全面杀入
  • 英特尔澄清杨旭任职传闻 官方没宣布此消息
  • 国资委河北密制联通拆分方案
  • 垃圾邮件害人害企害国 清除垃圾邮件不手软
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索