Windows CE 是微软早期推出的嵌入式设备和移动设备的开发运行平台,虽然目前移动端几乎都是android和ios的天下,但是,在嵌入式设备领域,Windows CE仍然占有一块地盘。很多用户希望让ESFramework通信框架和轻量级的通信引擎StriveEngine能支持Windows CE 客户端,基于这个需求,前几个月,我将ESFramework和StriveEngine的客户端引擎移植到了WinCE平台。

  在WinCE平台下,可以使用.NET(Compact Framework),这是个好消息,但是移植的过程还是碰到了很多麻烦,特别是部署WinCE的开发环境就摸索了很久。

一.部署WinCE开发环境

1.安装VS2005以及SP1

  更高的VS版本已经不直接支持WinCE了,VS2005对WinCE开发的支持应该说是最方便的。

2.安装Windows Embedded CE 6.0

  这个比较坑爹,在MS官网居然找不到一个6.0的完整安装包,可能是因为太老了。转折N久之后,还是从这个地方批量下载一个个安装文件,才算凑成了一个完整的安装程序。

3.安装ActiveSync 4.5

  ActiveSync在baidu搜索就很容易找到下载地址,下载后安装也还是很顺利的。

二.使用WinCE进行开发、调试

  在上述的环境准备就绪后,我们就可以开始创建WinCE项目并进行调试了。

1.创建WinCE项目。

  使用VS2005创建项目,在左侧菜单中,可以选择“智能设备->WinCE”,其是基于.NET 2.0 Compact Framework的。然后,就可以像开发普通的.NET应用一样来编写代码了。

2.开始调试

(1)启动ActiveSync。

  并点击“文件”—>“连接设置”,在“允许连接到以下其中一个端口”下选择“DMA”。

(2)打开仿真设备管理器(VS2005->tools->仿真设备管理器)。

(3)让模拟器可以联网。

  在仿真设备管理器界面上,可以看到仿真程序列表,在某个列表项上(比如 Pocket PC 2003 SE 仿真程序)右键->Connect,连接成功后,再右键->cradle。

  如此,模拟器相当于与当前电脑位于同一个局域网,如果,服务端程序在当前电脑上运行,那么,模拟器上运行的客户端程序要连接的是当前电脑的局网IP地址,而不能是“127.0.0.1”。我们需要把模拟器当作一个独立的电脑设备。

(4)接下来,我们就可以在WinCE程序中设置断点,进行跟踪和调试了。

三.关于反射(Reflection)在WinCE上的运行

  将ESFramework的某些功能移植到WinCE时,需要使用Reflection来动态获取和设置object的某个属性的值,就像这样:

 object val = type.InvokeMember(propertyName, BindingFlags.Default | BindingFlags.GetProperty, null, targetObj, null);

  代码的编写和编译都是没有问题的,但是运行到这句时,会抛出NotSupportException。于是,我换了一个反射的方式:

 PropertyInfo pro = type.GetProperty(propertyName);
object val = pro.GetValue(targetObj, null);

  这样,居然就能正常运行了,这是个有点奇怪的事情。

移植到Windows CE 的经验的更多相关文章

  1. windows ce.net开发概述

    依据开发所处的层次以及开发工具的不同,能够将嵌入式系统开发分为系统开发和应用开发. 系统开发所涉及的内容包含三个方面:系统定制.驱动程序开发.操作系统一致(BSP开发). 一系统开发 (1)      ...

  2. E-Form++ for Windows CE源码库2020,嵌入式开放源码!

    E-Form++ for Windows CE源码库2020! 现在就把这个下载到您的Windows CE中,体验极致HMI触摸.  Windows CE评估版下载! 1. E-Form++ for ...

  3. windows CE 6.0编译报BLDDEMO: There were errors building MY283错误解决办法

    今天开始正式进入windows ce程序开发. 第一次编译windows ce6.0的系统,25分钟编译后报:BLDDEMO: There were errors building MY283 错误. ...

  4. C# windows ce编程-----我的第一次

    最近公司要求开发抄表软件,软件分为PC端和手持终端(简称HHU),HHU是基于英文版的windows ce6.0操作系统,开发环境要求VS2005+SQLite数据库,开发语言为C#,因为是第一次基本 ...

  5. Windows CE Notification API的使用方法

    1 引言      以Windows CE 为操作系统的掌上电脑(如PocketPC或HPC),除具备PC的功能外,还具备很强的自身控制能力.Windows CE API超越微软其他操作系统的 API ...

  6. LEDAPS1.3.0版本移植到windows平台----HuPm参数初始化模块

    这个是2012年左右放在百度空间的,谁知百度空间关闭...转移到博客园. 最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富. LEDAPS的调用顺序是:HuPm--&g ...

  7. LEDAPS1.3.0版本移植到windows平台----HuSr大气校正模块

    这个是2012年左右放在百度空间的,谁知百度空间关闭...转移到博客园. 最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富. HuSr是将LEDAPS项目中的TM/ET ...

  8. LEDAPS1.3.0版本移植到windows平台----HuCsm云掩膜模块

    这个是2012年左右放在百度空间的,谁知百度空间关闭...转移到博客园. 最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富. HuCsm是将LEDAPS项目中的TM/E ...

  9. LEDAPS1.3.0版本移植到windows平台----HuCal定标模块

    这个是2012年左右放在百度空间的,谁知百度空间关闭...转移到博客园. 最近项目用到3.1.2版本的LEDAPS,新版本的使用情况会在后续文章中慢慢丰富. HuCal是将LEDAPS项目中的TM/E ...

随机推荐

  1. Brocade,Cisco SAN Switch命令对比

  2. ---Arch Linux 之AUR

    只需下载压缩包,解压,进入文件夹,里面好像也只有一个PKBUILD文件,makepkg -s (自动下载程序然后编译打包), 然后pacman -U xxxx.pkg.xz 就好了

  3. 自定义控件EditText

    public class defineEditText extends EditText { Context context; Drawable d; public defineEditText(Co ...

  4. 【229】Raster Calculator - 栅格计算器

    参考:分段函数进行复制,利用语句 参考:ArcGIS栅格计算器 - CSDN 参考:ArcGIS栅格计算器con条件函数使用 参考:ArcGIS栅格计算器 - 电脑玩物 ("lyr" ...

  5. mysql问题小结

    1.数据表存在,但查询时提示不存在 原因:默认情况下,mysql在windows对表名大小不敏感(lower_case_table_names=1),在linux上大小敏感(lower_case_ta ...

  6. firefox广告拦截插件

    firefox广告拦截插件: Adblock Plus  Adblock Edge Adblock Plus Pop-up Addon 如果不能更新,则需要修改HOST: 117.18.232.191 ...

  7. Nginx配置配置文件nginx.conf的设置

    引用自:http://www.ha97.com/5194.html #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_pro ...

  8. background-orgin属性

    重点内容是:背景的显示范围是在元素的内边距之内的,如果要想改变显示范围,可以使用background-orgin和background-clip进行调整. (1)background-orgin有三个 ...

  9. java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

  10. jsp学习--基本语法和基础知识

    一.JSP简单介绍 1.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于 ...