1 / 71

Windows CE

Windows CE. 应用程序开发. 艾博唯科技 Ableway Technology Co. Ltd. Microsoft Windows CE 特性. 最小、最快、最可靠的 Windows版本 支持的 Win32函数是Win32函数的子集 能量的支持 WinCE 的存储 GWES. 移植到 Windows CE注意事项. 硬件设计特性和函数 Win32API 以及扩展 API 用户界面 Unicode 环境 数据库文件 测试和调试. 管理 Windows CE 的存储器. 可用存储器的数量与设备有关

dunn
Télécharger la présentation

Windows CE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows CE 应用程序开发 艾博唯科技Ableway Technology Co. Ltd.

  2. Microsoft Windows CE 特性 • 最小、最快、最可靠的Windows版本 • 支持的Win32函数是Win32函数的子集 • 能量的支持 • WinCE的存储 • GWES

  3. 移植到Windows CE注意事项 • 硬件设计特性和函数 • Win32API以及扩展API • 用户界面 • Unicode环境 • 数据库文件 • 测试和调试

  4. 管理Windows CE的存储器 • 可用存储器的数量与设备有关 • 在你的Windows CE应用程序中减少存储器和大容量存储介质的使用。 • 减少临时文件的使用 • 简化或消除位图图象的使用 • 用运行速度换存储空间 • WM_HIBERNATE消息

  5. 管理可用的能量 • 能量来源有限 • 要避免代码中对CPU周期不必要的使用,如PeekMessage函数 • 应用程序应具备对电池电量不足的处理

  6. Window CE中的MFC • 紧密遵循标准MFC的功能和特性,但大部分功能有所简化 • 提供某些专用于Windows CE的特性,如Command-Bar控制类 • 不支持多窗口MDI

  7. ATL创建COM服务器 • 支持COM/OLE Automation以及其它进程间通信的高级方法 • COM仅支持进程内服务器DLL • 线程模式仅支持Free模式

  8. RAPI • Rapi概念 • 远程应用程序编程接口 • Rapi调用步骤 • 初始化RAPI: CeRapiInit, CeRapiInitEx • 执行程序: CeCreateProcess, CeRapiInvoke • 终止RAPI: CeRapiUninit

  9. RAPI(续) • RAPI错误处理 • 获取Rapi错误: CeRapiError • 获取非Rapi错误:CeGetLastError

  10. 移植应用程序到Windows CE的一个系统化方法 • 检查应用程序中所有的API引用-包括函数、消息和相关数据类型-然后更改或替换掉不与Windows CE API 兼容的引用。下面是一些检查的例子: • 根本不支持的一些Win32函数-不支持任何16位Windows函数。如果存在替代函数,使用替代函数替换这些函数。否则,创建一个替代函数。例如,MoveTo和LineTo绘图函数在Windows CE中已不再被支持。其替代品是PolyLine函数。

  11. 移植应用程序到Windows CE的一个系统化方法(续一) • 已被Windows CE等效函数取代的一些Win32函数。例如,工具和菜单条已合成为一个单一的Command Bar,并具有新的API。 • 支持一些Win32函数,但有限制。一些函数的一个或多个参数已不再使用。其它函数可能其参数的选择范围已减小。例如,虽然支持CreateWindow和CreateWindowEx函数,但Windows CE只支持Win32窗口风格的一个子集。

  12. 移植应用程序到Windows CE的一个系统化方法(续二) • 支持的数据类型可能需要更改。Windows CE支持所有必要的Win32结构,但一些可能不再使用。而其它结构可能不会接受所有的选项。 • 不支持一些消息-包括许多WM_*和EM_*消息。一些支持的消息也已被更改。例如,wParam 或 lParam 内容可能不同。一些Windows CE的特定消息被添加进来-比如,WM_HIBERNATE。

  13. 用户界面 • 支持有限的Win32GDI • 目标设备的屏幕尺寸和纵横比不同 • 可用的调色板非常有限 • 确保位图和图标具有目标设备上的正确格式 • 窗口和对话框的风格有限

  14. 使用Unicode • Windows CE是一种Unicode环境-它支持ASCII函数以实现文本文件的交换,但其原有的文本格式是Unicode。将ASCII应用程序转换为Unicode程序的一些通用指导方针包括: • 包含Tchar.h文件。该文件包含所有必要的转换。 • 使用Win32字符串函数(例如lstrlen)而不是C运行时态(run-time)库的函数。 • 声明中使用TCHAR、LPTSTR和其它类型。这样代码将易于编译为ASCII或Unicode格式。

  15. 使用Unicode (续) • 使用TEXT宏进行字符串映射(例如TEXT("Your Text"))。 • 牢记一个字符在长度上不再是一个字节,而字符串以两个零而不是一个零结尾。 • 当增加一个数组指针或字符记数时,使用sizeof(TCHAR) 以确保能够对ASCII或Unicode都有效。

  16. 支持Windows CE通信 • Windows CE支持四种通信APIs: • Windows Sockets (Winsock) • 电话应用程序编程接口 (TAPI) • Remote Access Server (RAS,远程访问服务器) • 串行通信 • 这四种通信APIs是相应Win32 APIs的子集。

  17. 支持Winsock • Windows CE网络栈支持TCP/IP协议。如果你的程序使用Winsock调用处理网络传输,可能会需要进行一些改动。 • IrDA规范也可通过Winsock附件来使用。但是,在Winsock中有一些限制。 • WSA函数只得到了部分的支持。你将需要仔细检查对WSA函数的使用以确定是否需要进行改动。

  18. 支持TAPI • Windows CE操作系统实现了TAPI 2.0版的要求。 • Windows CE中对TAPI的支持主要处理拨向外部的数据调用,对于拨向外部的拨号和地址转换只提供了所需的基本工具。

  19. 支持RAS • RAS是一个用于连接远程设备(RAS客户端)和主机PC(RAS服务器)的基于软件的多协议路由器。RAS应用程序通常在客户端设备上执行。 • Windows CE支持许多标准Win32 RAS函数,不过它一次只能实现一个点对点连接。该连接可以是直接串行连接或modem拨号连接。

  20. 支持串行通信 • 对于串行口通信,Windows CE支持Win32串行函数和标准文件系统函数。这些函数可用于打开、关闭和操作串行通信端口,并能够对这些端口进行读取和写入。 • Windows CE不支持交替式通信操作,但能够实现在一个设备上的多未决读/写操作。

  21. ADOCE • ADOCE 是一种能与 Windows CE Toolkits for Visual Basic 一同使用的应用程序级数据访问对象模型。 • ADOCE 能够启动对存储于本地设备中的数据库的访问功能,并为网络数据库中的数据提供复制和同步功能,从而在 Windows CE 中增加了新的数据库功能。 • ADOCE 使用简单、速度高、内存占用少、磁盘占地面积少,很适合与结构紧凑、功能强大、运行快速的 Windows CE 操作系统一同使用。

  22. ADOCE(续) • ADOCE 提供了下述功能: • 自动实现对台式主机的双向同步。 • 新的数据类型:双精度型和布尔型(与 Windows CE 数据库相比较)。 • 对 SQL 的支持。ADOCE 中的高级 SQL 支持功能是“美国国家标准委员会 (ANSI)”的 SQL 的一个子集。它所新增的数据库引擎功能可以提供字段名、多个排序关键字、较为复杂的筛选功能、表和索引的创建功能、删除和编辑功能以及多个表的联接功能。 • 熟悉的 recordset.fieldname 访问方式。

  23. 最小化使用注册表 • 小心使用Windows CE注册表(registry)以保持最少的存储器需求和最大的访问速度。通过下面的指导方针使注册表项尽可能简单: • 限制每个项(key)名称组件的长度。 • 限制得到一个值的所需项的数目。 • 不要使用NULL (默认)值名。 • 不要使用许多较小的项值;应使用一个较大的项值。 • 不要只是为了保持一致性而使用Windows 95的项命名约定。通常这不是最有效的方法。 • 保持项值尽可能的小-不要在注册表中设置数千字节的项值。

  24. 建立开发调试环境 • 硬件 • PII400,128MB,40G,10/100LAN • 软件 • Windows2000/XP,Visual Studio 6.0,MS SQL2000,WinCE SDK,eMbedded Visual C++

  25. 实验一:使用EVC++ 4.0 • 安装EVC++ 4.0 • 安装SDK • 编制应用程序helloworld.exe

  26. 用向导创建程序 • 1. 启动 eVC++ v4.0. • 2. 在菜单的File 选项中, 选择 New. • 3. 在Projects tab中, 选择 WCE Application. • 4. 工程名称取名Hello. • 5. 在CPU列表中, 选择x86. • 6.点OK. • 7.选择“A typical Hello World application”,然后点Finish。 • 8.在New Project Information窗口中点OK.

  27. 用向导创建程序

  28. 用向导创建程序

  29. 编译运行程序 • 1. 在工具条上, 在 Active WCE Configuration 列表中,选择正确的SDK。

  30. 编译运行程序 • 2. 在工具条的Set Active Configuration选择框中, 选择 Win32 (WCE x86) Debug.

  31. 编译运行程序 • 3. 可以修改代码

  32. 编译运行程序 • 4. 在Build菜单项里, 选择Build Hello.exe. eVC++ 需要设置 Platform Manager来保证程序能够下载到目标设备运行 • a. 在 Tools 菜单项里, 选择Configure Platform Manager. • b. 展开树,选择正确的目标设备. • c.点属性按钮,确认传输方式是TCP/IP,并且Startup Server 是Manual Server. • d. 点 Transport 中的Configure… 按钮. • e. 选中Fixed Port 项, 然后点 OK. • f. 点 OK 保存设置

  33. 编译运行程序

  34. 编译运行程序 • 5. 选菜单项 Build中的Execute Hello.exe。EVC会提示你在目标设备上运行CEMGRC.EXE.这时候不要点OK。 • 6.在目标设备上,运行CMD.exe 来打开一个控制窗口. • 7.在控制窗口中执行cemgrc /S /T:TCPIPC.DLL /Q /D:192.168.0.1:5000,其中192.168.0.1应该是你开发主机的IP地址。 • 8.在主机的提示运行CEMGRC.EXE的对话框中点OK,程序就会下载到目标设备上运行了。

  35. 编译运行程序

  36. 实验二:使用VS.net 2003 • 安装Visual Studio.net 2003 • 安装Compact Framework 1.1 • 安装Windows CE .NET Utilities v1.1 for Visual Studio .NET 2003 • 编制应用程序helloworld.exe

  37. 用向导创建程序 • 1. 启动 VS.net 2003. • 2. 在菜单的File 选项中, 选择 New->Project. • 3. 在Visual Basic项目中, 选择智能设备应用程序. • 4. 工程名称取名MyHelloWorld. • 5. 在平台列表中, 选择Windows CE,项目类型选择Windows 应用程序. • 6.点OK.

  38. 用向导创建程序

  39. 编译运行程序 • 1. 在窗体上编写自己的代码。

  40. 编译运行程序 • 2. 在Tools->Options->Device Tools->Devices菜单中设置好相关参数。

  41. 编译运行程序 • 3. 在目标设备上执行SDAuthUtilDevice.exe,并点Start。

  42. 编译运行程序 • 4. 在开发机上执行Tools->Smart DevicesAuthentication Utility,并输入设备IP。确定后有成功的提示。

  43. 编译运行程序 • 5.在菜单上选择Debug->Start,或者直接按F5,选择所要连接设备类型。

  44. 编译运行程序 • 6. VS.NET 2003会自动连接到设备,并且将.NET Compact Framework及所要调适的程序部署在设备内存中。部署完成后自动运行应用程序。

  45. Q & A Q U E S T I O N S A N S W E R S

  46. Windows CE 串口通讯编程 艾博唯科技Ableway Technology Co. Ltd.

  47. 串行协议和OSI模型 应用层 表示层 会话层 传输层 网络层 物理层 应用程序 串行API 数据链路层 串行设备驱动程序 串行口 IR端口

  48. 串行通信概要 • 用于串行通信的函数和结构在Winbase.h头文件中定义 • 交换数据方式类似文件读写 • 函数可以用于打开、关闭和操作串行口,传送和接收数据,以及管理连接等。 • 可以使用点对点协议(PPP)和串行线路Internet协议(SLIP)实现串行连接和拨号连接

  49. 串行通信函数(一) • CreatFile • 打开串行端口 • GetCommStat • 用指定通信设备的当前控制设置填充设备控制块(DCB结构) • SetCommStat • 按照DCB结构的说明配置通信设备。这个函数重新初始化所有硬件和控制设备,但不清空I/O队列 • GetCommTimeouts • 获得指定通信设备上所有读/写操作的超时参数

  50. 串行通信函数(二) • SetCommTimeouts • 设置指定通信设备上所有读/写操作的超时参数 • WriteFile • 向串口写数据 • ReadFile • 从串口读数据 • SetCommMask • 指定为通信设备监视的一组事件 • GetCommMask • 获得指定通讯设备的时间掩码值

More Related