定制一个eVC上的中文模拟器

 中文模拟器这个问题实在被问得太多了,eVC自带的STANDARDSDK_500 Emulator用起来显然不顺手,存在以下缺点:
(1) 不支持中文的,只支持英文。中文显示上去一堆框框。
(2) 不支持Folder Sharing。模拟器开起来后,菜单里的Emulator->Floder Sharing是灰的,点不了。导致要用到的所有文件都得用Remote File Viewer传上去,不仅麻烦,而且上传的大小总量还有限制。比如你打算用模拟器上的播放器,放个100M的视频文件,这在STANDARDSDK_500 Emulator上就不可能了
(3) 组件有限。想用的API没有。比如计划的最终产品上有IE和WMP,你想用Internet Client接口,但标准模拟器上就是没有。

自己定制模拟器的前提是安装了Platform Builder for Windows CE 5.0。定制步骤如下:
一、建立PBWorkspace,定制语言和组件,编译run-time image
(1) 打开Platform Builder, 从菜单File->New Platform新建一个PBWorkspace, 注意在 New Platform Wizard - step 3 选BSP时要钩选EMULATOR:X86。在step 4的Design Template我选了Mobile Handheld,带的组件比较多,省事。一路NEXT下去。
(2) 在step 4选完Design Template后,别点Finish, 要点Next进到下一步。在这里把Standard SDK for Windows CE都选上, 再下一步把网络都勾上。ActiveSync和TCP/IP都是连接模拟器的调试手段,多勾点没什么坏处。在eVC里我比较郁闷的是用ActiveSync作Transport的话,连不上模拟器;而用TCP/IP连接模拟器时有个不好,就是网卡不能处于断开状态,得随便找个路由或者MODEM连上,程序才能下载到模拟器上。这个是后话了。
(3) NEXT到头后,PBWorkspace建好了,自己点菜,往里头加组件吧,应用开发比较常用到的也就是Applications and Services Development,Graphics and Multimedia Technologies, Shell and User Interface三个目录下面的东东,还有里我的建议是在产开发初期就把所需的组件定好,然后定制模拟器给应用开发人员用,BSP开发好后,同样也加上模拟器上用的那些组件来编译产品的IMAGE,这样应用开发才不会走样。
(4) 大家最关心的一步,中文。从PB菜单的Platform->Settings点进去,选择Locale页,然后在Locales:下面的复选框里慢慢找中文吧。其实就在最后一个:中文(中国)。加好后,在Default Language下拉菜单里就可以选“中文(中国)”了。 默认的拉丁文国家是在太多了,我一般先点Clear All,然后再找英文(美国)和中文(中国)就够了。
(5) 选完语言后,顺便拜访一下Build Options页。Full Kernel Mode我是比较喜欢,可惜据说运行起来会不稳定,还是别勾了;Enable KITL勾上,多个调试通路也好。
(6) 编译生成一个run-time image. 从菜单里Build OS->Sysgen. 等半个小时吧。从编译和SDK的原理来说,这步不是必须的。但是如果不SYSGEN而直接BUILD SDK,会弹出下图这个警告框。怕怕,还是SYSGEN一下好了

二、编译SDK
(1) 终于等完SYSGEN,现在可以导出SDK了,从PB菜单里点Platform -> SDK -> New SDK. 出来个对话框,如下图。这里面的Locale只能选U.S.English和Japanese,这步和SDK的语言没关系,我们选English. 点NEXT

(2) 第二步选编程支持,eMedded Visual C++ 4.0 support是必选的,其他看开发规划了。然后就FINISH了
(3) 别急着点Build SDK, 在Configure SDK里还很多好玩的。从PB菜单里点Platform->SDK->Configure SDK, 出来个N多内容的对话框。
A) 比较重要的,切到Emulation页,在Configuration里默认的可能是None, 选成Emulator: x86_Release,然后就可以配置内存大小、分辨率和色深了,这点比较重要,以前我还不懂自己定制模拟器时,就在分辨率和色深上吃过亏,模拟器上作好的东西,放到板子上跑完全走了样
B) 首先选Transports页,看看TCP/IP, ActiveSync, KITL三种调试手段都勾上没,选个自己喜欢的作默认。
C) 然后切到Splash Screen页, 可以弄张BMP图片作为SDK安装包启动时的广告界面。我原来以为是可以替换掉每次WINCE模拟器启动时显示的Windows CE那张LOGO图片,看来还没那么好玩。
(4) 编译SDK了。Platform->SDK->Build SDK。这个很快,两三分钟就搞定了。
三、安装SDK,开始爽吧
在WINCE500\PBWorkspaces\%your_workspace%\SDK\ 里面可以找到刚才编译出来的SDK。先关闭eVC再安装它。安装完后,重新打开eVC,就可以选择这个模拟器了,用法和STANDARDSDK_500模拟器一样,但是功能强多了,有自己定制的组件、分辨率和色深、可以Folder Sharing。我自己弄的一个,发张PP


Feedback#1楼    回复  引用  查看     2007-04-27 21:22 by good [未注册用户]
这么好的文章居然没有人顶!
#2楼    回复  引用  查看     2007-05-19 20:10 by kimi [未注册用户]
照着做了 非常感谢 以后还请多多指教
#3楼    回复  引用  查看     2007-05-19 20:21 by kimi [未注册用户]
请问在 configure SDK时,你提到过“在 Emulator: x86_Release,然后就可以配置内存大小” 我的初始值是48,请问这个值是否受到主机(HOST)的物理内存的限制,譬如HOST机内存是1G,那么配置内存是否能大于1G呢!谢谢
#4楼 [楼主]   回复  引用  查看     2007-05-19 23:39 by Walzer
@kimi
嘿嘿,这个我倒没试,你可以试一把,估计是不行。
WINCE最多也只能管512M内存,我一般设置成128M就足够用了。
到了设备上,有个64M物理内存就谢天谢地了,有128M就要笑歪了,现在的设备制造商都很节省BOM的。
#5楼    回复  引用  查看     2007-05-20 20:50 by kimi [未注册用户]
首先,非常感谢你的回答。another question
我现在有块2410的板子(带LCD),采用NANDFLASH启动WinCE,想做一个WinCE启动就能自动运行的界面程序类似一些工控的组态软件(但我现在还没有确定这个界面所要包含的功能,不用去考虑,仅仅是一个界面而已)。我对VC的界面编程不太熟悉,对EVC就知道的更少了。
请问我是否应该现看看VC方面的UI编程知识,我希望能够有针对性的看,那样会感觉进步快一点。
glad to hear from you!

#6楼 [楼主]   回复  引用  查看     2007-05-21 17:11 by Walzer
@kimi
EVC和VC看起来不多,主要区别应该只在SDK/CPU类型的选择,和远程调试方法上面。
关于调试方法,我BLOG的随笔分类里的TOOLS栏目里有一些入门的文章可以参考 http://www.cnblogs.com/walzer/category/61900.html
关于UI编程,在UI分类里有些可以参考 http://www.cnblogs.com/walzer/category/92488.html 如果你对FLASH空间的开销不敏感的话,就用MFC;如果对成本敏感,那么就可以用GWES的方案,目前我就是在这基础上做的。GWES的说明位于WINCE500的产品文档的Windows CE Features > Shell and User Interface > Graphics, Windowing and Events里面
#7楼    回复  引用  查看     2007-05-21 20:26 by kimi [未注册用户]
虽然现在还不太明白,不过很快就会知道了^_^
#8楼    回复  引用  查看     2007-05-23 21:52 by kimi [未注册用户]
你好,Walzer!
我想在WinCE下做数据库的开发,现在用的是模拟器,据说要装一个什么
AdoCE Manger,我下载下来后,通过EVC的remote File Viewer,将所有的安装文件都export到emulator下(o(∩_∩)o),想进行安装,结果失败,不仅如此,所有我传送到emulator系统的.exe文件都不能执行,譬如我还传过winRAR.exe ,请问这是问什么,你有好的建议吗!

谢谢!!!!
#9楼 [楼主]   回复  引用  查看     2007-05-24 08:59 by Walzer
1、数据库开发我只是预研过,没真正做过。在CE5组件里Core OS->Windows CE devices -> Applications and Services Development -> SQL Server CE 2.0 不知道合用不,但这个实在太大了。
2、我不曾在EMULATOR上装过软件,重启一下就没了,(VS2005的模拟器改进了这一点),你传过去的EXE文件不能执行,我猜三种情况:1、你下载EXE文件时CPU类型选得不对,比如拿个ARMV4的下载到EMULATOR X86上;2、操作系统类型不对,比如EXE是用于Win Mobile或Win XP的;3、你自己定制的EMAULTOR里少组件,典型的比如少 CAB File Installer / Uninstaller

#10楼    回复  引用  查看     2007-06-25 00:44 by akay [未注册用户]
博主,按你所说的方法,我已成功生成sdk,并安装.在vs2005中可以看到该sdk.
但无法运行对应的模拟器.即vs2005无法部署应用程序.

请问该如何才能得到对应的模拟器呢?

我是下载的ms DeviceEmulatorBSP,在pb5中生成的arm模拟,不是x86的.这应该没关系吧.
#11楼 [楼主]   回复  引用  查看     2007-06-25 11:31 by Walzer
@akay
呵呵,你在CE6的那篇博客里似乎找到了答案,上面这篇是CE5的。CE6的模拟器无法正确启动,的确很可能就是Virtual Machine Network Driver导致的。如果你用的是无线网卡,还会多些麻烦,最好把无线网卡关掉。

#12楼    回复  引用  查看     2007-08-22 18:44 by ttgzs [未注册用户]
楼主还得麻烦你帮我看看我的pb编译是怎么了!我定制了
os后 Sysgen后出现如下提示
=================
Sysgening platform E:\progromfiles\WINCE500\platform\Emulator
Sysgening platform E:\progromfiles\WINCE500\platform\Emulator
\progromfiles\WINCE500\build.err
E:\progromfiles\WINCE500\build.log
E:\progromfiles\WINCE500\build.err
已复制 2 个文件。

BLDDEMO: There were errors building Mydemo


Mydemo - 0 error(s), 0 warning(s)
=================
之后我又Make run-time image后
出现如下提示
====================
--------------------Configuration: Emulator: x86_Release--------------------
Starting Build: makeimg
==============
makeimg for Windows CE (Release) (Built on Feb 13 2004 16:16:30)
makeimg: Change directory to E:\progromfiles\WINCE500.
makeimg: run command: cmd /C E:\progromfiles\WINCE500\public\common\oak\misc\pbpremakeimg
Generating PBWorkspace Custom makeimg build step batch Files to E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\WINCE500\Emulator_x86\oak
Done Generating PBWorkspace Custom makeimg build step batch Files
makeimg: Check for E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\PreMakeImg.bat to run.
makeimg: Found localization settings.
makeimg: LOCALE: 0804 LOCALE3: (null) TargetDir: 0804 CodePage=936 LocaleId: 804 PrimaryLandId: 4 SubLangId: 2
makeimg: Building international version for locale 0804
makeimg: Check E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\tokens\0804\ for tokens.
makeimg: Read string substitutions from E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\intltrns\0409\
makeimg: No .str files found.
makeimg: Copy files from E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\intlfile\0409\ to release directory.
makeimg: Read string substitutions from E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\intltrns\0804\
makeimg: No .str files found.
makeimg: Copy files from E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\intlfile\0804\ to release directory.
makeimg: Not creating E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\nlscfg.out because E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\nlscfg.out is up-to-date with respect to E:\progromfiles\WINCE
500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\postproc\nlscfg.inf.
makeimg: run command: fmerge -txt E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x86_Release\postproc\nlssrc.txt E:\progromfiles\WINCE500\public\common\oak\files\locale.txt E:\progromfiles\WINCE500\PBWorkspaces\Mydemo\RelDir\Emulator_x
86_Release\nlssrc.txt
fmerge for Windows CE (Release) (Built on Jan 29 2004 17:34:26)
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).
makeimg: FATAL ERROR: Command returned non-zero exit code 1 (dec).

Mydemo - 2 error(s), 0 warning(s)
====================
始终不成功!我真找不出问题所在了,请指教。
Email:ttgzs_wt◎163.com 谢谢了
#13楼 [楼主]   回复  引用  查看     2007-08-23 16:24 by Walzer
building过不了,making就不用运行了.
你可以从 E:\progromfiles\WINCE500\build.err 文件里看看ERROR在哪里,光从你上面的信息里是看不出问题所在的

 

#14楼    回复  引用  查看     2007-08-23 16:53 by ttgzs [未注册用户]
build.err文件内容


C:\WINCE500\build.log(1) : error SYSGEN0000: error(s) in sysgen phase

麻烦帮忙解释一下,我在网上也查了,有很多人也有类似情况
#15楼    回复  引用  查看     2007-08-23 16:55 by ttgzs [未注册用户]
http://www.embedu.cn/viewthread.php?tid=3608
我遇到的情况和这个帖子的问题一样
#16楼    回复  引用  查看     2007-08-31 09:38 by tina [未注册用户]
博主,你好
请教一个问题:我在pb5中生成的arm模拟的sdk,要怎样能让它支持MFC library呢?目前在EVC下编译程序总是出现mfc的文件没有添加进工程之类的问题,但是我在pb下生成SDK的时候把支持MFC的都选上了呀!
还有你有做过把标准shell显示出来画面中的鼠标箭头去掉吗?
路过的朋友有遇到类似问题的给些建议。
我的msn:tina-lan3068@hotmail.com
#17楼 [楼主]   回复  引用  查看     2007-09-03 09:35 by Walzer
@tina
想要MFC支持的话,在PB里有两个地方要加.一个是CATLOG里面把Core OS->Windows CE devices->Applications and Services Development->MFC这个组件加到你的WORKSPACE里面,然后SYSGEN. 第二个地方才是你说的导出SDK设置里面的勾选MFC.

隐藏鼠标箭头的话,参考这篇文章
http://blog.yesky.com/114/vincentzhou/1641614.shtml
#18楼    回复  引用  查看     2007-11-02 08:59 by cageling [未注册用户]
在打了一些补丁后,用博主的的方法终于生成了自己的模拟器,在这首先要感谢博主!
现在我有一个疑问是:用上述方法生成的模拟器是基于X86 CPU的,能否通过一些些方式生成一个能支持ARM CPU的模拟器呢?
我安装了微软提供的DeviceEmulatorBSP.msi,但用生成的SDK却无法启动模拟器,可能是我的操作有误吧,望各位有这方面经验的人士能给些提示,谢谢!!!
#19楼    回复  引用  查看     2007-11-02 16:58 by cugthh [未注册用户]
想问下阿 我的SYSGEN后出现错误 是不是就不行拉
还有博主 能不能加我QQ:8504677 我可以细说

#20楼 [楼主]   回复  引用  查看     2007-11-02 22:38 by Walzer
@cageling
微软提供一个ARMULATOR的BSP下载, 你可以去找找, 不过那个只能在CE6上跑,CE5上是没有的.

@cugthh
SYSGEN后出现什么样的错误? 把PB里出错提示的那几句贴上来瞧瞧
#21楼    回复  引用  查看     2007-11-14 23:35 by baixiancheng [未注册用户]
博主,请教一个入门级的问题:
1.WinCE5.0 基于S3C2440生成的SDK安装后在.net2003中如何才能看见;

2.在.net2003的C#中,怎样调用WinCE生成的DLL中的方法?我每次调用DLL中的方法,在模拟器上运行时总是报“未处理的“System.MissingMethodException”类型的异常出现在 WinCEprogram.exe 中。”感觉DLL引入不成功。

#22楼 [楼主]   回复  引用  查看     2007-11-16 22:04 by Walzer
@baixiancheng
不好意思,(1)我只做C/C++开发, 所以CE5.0的SDK只弄过在EVC中可见,而没试过在VS2003中可见. (2)我只懂用C/C++调用DLL中的接口, 彻底没用过C#,就无能为力了.


#23楼    回复  引用  查看     2007-11-17 21:52 by baixiancheng [未注册用户]
首先感谢博主的热心回复,我是刚接触WinCE,没有做过实际的项目,平时都用java写代码,在学校时用C写过一些简单的代码;这次也是看书上的例子是用C#,所以就用C#了,如果时间允许,我会考虑改用EVC,这个效率要高很多;但博主能否给我解答下WinCE的驱动是如何作用于应用程序和内核的:比如我要写一段IO的驱动,我需要做些什么,WinCE如何编译我的驱动,内核怎么知道我的驱动,我的应用程序如何调用驱动,这一块核心的东西我还不清楚,博主有时间能否给我回答下,或者有什么比较好的书籍请博主推荐一二,小弟万分感谢!

 

posted @ 2008-11-28 17:27  googlegis  阅读(299)  评论(0编辑  收藏  举报

坐标合肥,非典型GIS开发人员 GitHub