基于Windows CE的通信技术研究
摘要:讨论Windows CE所支持的两种基本通信技术,即串行通信和网络通信,并通过Win32 API描述了基于Windows CE的平台如何建立各种串行连接和网络连接。对于各种连接实现途径,指出其与桌面计算机的区别。
1 Windows CE通信简介
Windows CE是一个面向移动计算和嵌入式应用的操作系统,其突出的优点是模块化、可定制、完备性、实时性、通信功能强大和基于Win32应用程序编程接口。目前,随着运行于Windows CE平台的手持电脑(HPC)、掌上电脑(PPC)、个人数字助理(PDA)的逐渐普及,许多谙熟Windows桌面平台的Win32开发者开始转向为这些数据终端和移动设备开发应用软件。尽管Windows CE平台上的应用软件也基于应用编程接口API,但Wndows CE API与Win32 API是有明显区别的,前者只是后者的一个子集,而且,为了满足不同设备的硬件功能,Windows CE API还进行了许多特殊扩展。在这些扩展中较为人所关注的是Windows CE平台上各种通信功能的实现方法。
Windows CE对通信的支持是十分灵活的,可完成的通信任务包括:从网络或台式机下载文件;基于Windows CE的设备之间的信息交换;发送和接收电子邮件;向服务器发送数据;浏览Internet;阅读条形码等。为了实现这些不同的通信要求,Windows CE能支持多种通信硬件,如串行电缆、红外线收发器,无线收发器、调制解调器和条形码阅读器等。针对这些硬件,Windows CE支持两种基本的通信技术:串行通信和网络通信。
2 Windows CE中的串行通信
串行通信要求收、发双方有直接的点对点的连接。通过串行电缆或红外线收发器(即IR收发器)均可实现这种通信方式。从软件的观点来看,各种串行通信设备都是用COM端口名来标识的(如COMl、COM2等)。在Windows CE 2.x中,COM端口被存贮在注册表的\HKEY_LOCAL_MACHINE\Drivers主键下,如果系统中已经安装了某种串行设备,则可以通过注册表的\HKEY_LOCAL_MACHINE\Active主键来查看。基于COM端口的串行通信与文件的读、写所使用的API函数是相同的。
与桌面平台情况不同的是,当使用IR收发器时,Windows CE支持两种红外串行通信途径。一种途径是将IR收发器当作串行电缆对待,称为raw IR方式。“raw”的含义是指传送的数据未经任何方式的加工处理,收、发双方的应用程序负责冲突检测和其它潜在问题的处理。分配给raw IR的COM口由原始设备制造商(OEM)确定且列于注册表中。特别需要引起注意的是必须通过EscapeCommfunction函数将该串口设置为IR模式(SETIR),而不是普通串行模式(CLRID)。另一种途径是源于一种IrDA网络协议的简化串行通信方式,称为IrComm方式。它允许应用程序采用与raw IR方式完全相同的方法去使用IrDA网络协议。从编程者的观点来看,raw IR与IrComm两种方式较主要的区别在于它们有不同的COM端口的分配。此外,对于IrComm,也不必调用EscapeCommFunction函数来指明相应串口为IR模式。无论是采用串行电缆的普通连接方式,还是采用红外线收发器的raw IR或IrComm方式,在Windows CE的应用程序中实现串行通信的步骤均可描述如下:
1)通过注册表确定需要打开的COM端口;
2)调用CreateFile,用lpFileName设置COM端口名(如COMl);
HANDLE CreateFile (LPCTSTR lpFileName,DWORD dwDesiredAccess );
lpFileName为COM端口名指针,dwDesiredAccess为访问(读、写)模式。
3)如果是raw IR方式,调用EscapeCommFunction,设置COM端口为IR模式;
BOOL EscapeCommFunction(HANDLE hFile,DWORD dwFunc);
hFile为通信设备句柄,该句柄由CreateFile返回,dwFunc取值SETIR,即串口为IR模式。
4)调用SetCommTimeouts,设置通信暂停时间参数;
BOOL SetCommTimeouts (HANDLE hFile,LPCOMMTIMEOUTS lpCommTimeouts);
其中,lpCommTimeouts为用来设置时间参数的结构指针变量。
5)调用ReadFile和WriteFile发送和接收数据;
BOOL ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead);
BOOL WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite);
其中,hFile为读/写文件句柄,lpBuffer为读/写数据缓冲区指针,nNmnberOfBytesToRead为读/写数据字节数。
6)调用CloseHandle,关闭串口。
BOOL CloseHandle(HANDLE hObject);
上述步骤除第3步外,对三种串行通信方式都是相同的。
3 Windows CE中的网络通信
Windows CE的网络通信基于一个按层组织的网络堆栈(network stack),如图1所示。
网络堆栈实际上是Windows CE的一个组件,它负责对网络中的数据传输进行处理,将来自于应用程序的数据分解成若干小段,并为每小段加上相关地址和段的分割信息,组成可以存贮转发的信息包(packets),信息包中的地址确保数据达到较终的目的端点。访问网络堆栈有如下三种方式:第一种是Winsock(端口套接字)方式。这是一个中间层的传输接口协议,WinSock负责对建立的信息包的所有头信息细节进行处理,但可以不管其数据格式。Windows CE的网络通信都直接或间接地使用Winsock。采用IrDA协议实现基于红外线套接字(Irsock)的客户/服务器网络通信是Windows CE平台的一个特色。第二种为WinInet API方式。WinInet API是微软公司基于Win32平台的互联网函数接口。Windows CE的WinInet API对其进行了某些限制或扩展,它提供的高级数据协议除了常见的超文本传输协议(HTTP)和文件传输协议(FTP)外,还提供了对Internet密码协议SST和PCT的支持。API方式避免了直接使用WinSock访问网络的操作,简化了网络编程。第三种为CIFS重定位器方式。Windows CE通过对远程访问服务(RAS)客户的支持,允许基于Windows CE的设备与远程主机建立连接。这里针对Windows CE较常用的几种高层协议,讨论其网络通信实现方法。
摘要:讨论Windows CE所支持的两种基本通信技术,即串行通信和网络通信,并通过Win32 API描述了基于Windows CE的平台如何建立各种串行连接和网络连接。对于各种连接实现途径,指出其与桌面计算机的区别。
1 Windows CE通信简介
Windows CE是一个面向移动计算和嵌入式应用的操作系统,其突出的优点是模块化、可定制、完备性、实时性、通信功能强大和基于Win32应用程序编程接口。目前,随着运行于Windows CE平台的手持电脑(HPC)、掌上电脑(PPC)、个人数字助理(PDA)的逐渐普及,许多谙熟Windows桌面平台的Win32开发者开始转向为这些数据终端和移动设备开发应用软件。尽管Windows CE平台上的应用软件也基于应用编程接口API,但Wndows CE API与Win32 API是有明显区别的,前者只是后者的一个子集,而且,为了满足不同设备的硬件功能,Windows CE API还进行了许多特殊扩展。在这些扩展中较为人所关注的是Windows CE平台上各种通信功能的实现方法。
Windows CE对通信的支持是十分灵活的,可完成的通信任务包括:从网络或台式机下载文件;基于Windows CE的设备之间的信息交换;发送和接收电子邮件;向服务器发送数据;浏览Internet;阅读条形码等。为了实现这些不同的通信要求,Windows CE能支持多种通信硬件,如串行电缆、红外线收发器,无线收发器、调制解调器和条形码阅读器等。针对这些硬件,Windows CE支持两种基本的通信技术:串行通信和网络通信。
2 Windows CE中的串行通信
串行通信要求收、发双方有直接的点对点的连接。通过串行电缆或红外线收发器(即IR收发器)均可实现这种通信方式。从软件的观点来看,各种串行通信设备都是用COM端口名来标识的(如COMl、COM2等)。在Windows CE 2.x中,COM端口被存贮在注册表的\HKEY_LOCAL_MACHINE\Drivers主键下,如果系统中已经安装了某种串行设备,则可以通过注册表的\HKEY_LOCAL_MACHINE\Active主键来查看。基于COM端口的串行通信与文件的读、写所使用的API函数是相同的。
与桌面平台情况不同的是,当使用IR收发器时,Windows CE支持两种红外串行通信途径。一种途径是将IR收发器当作串行电缆对待,称为raw IR方式。“raw”的含义是指传送的数据未经任何方式的加工处理,收、发双方的应用程序负责冲突检测和其它潜在问题的处理。分配给raw IR的COM口由原始设备制造商(OEM)确定且列于注册表中。特别需要引起注意的是必须通过EscapeCommfunction函数将该串口设置为IR模式(SETIR),而不是普通串行模式(CLRID)。另一种途径是源于一种IrDA网络协议的简化串行通信方式,称为IrComm方式。它允许应用程序采用与raw IR方式完全相同的方法去使用IrDA网络协议。从编程者的观点来看,raw IR与IrComm两种方式较主要的区别在于它们有不同的COM端口的分配。此外,对于IrComm,也不必调用EscapeCommFunction函数来指明相应串口为IR模式。无论是采用串行电缆的普通连接方式,还是采用红外线收发器的raw IR或IrComm方式,在Windows CE的应用程序中实现串行通信的步骤均可描述如下:
1)通过注册表确定需要打开的COM端口;
2)调用CreateFile,用lpFileName设置COM端口名(如COMl);
HANDLE CreateFile (LPCTSTR lpFileName,DWORD dwDesiredAccess );
lpFileName为COM端口名指针,dwDesiredAccess为访问(读、写)模式。
3)如果是raw IR
相关阅读:
- ...2009/12/07 10:37·基于W78E516B的液晶显示控制器显示系统设计
- ...2009/12/07 10:24·基于WinCE5.0的电子纸系统设计
- ...· Efinix® 全力驱动AI边缘计算,成功推出Trion™ T20 FPGA样品, 同时将产品扩展到二十万逻辑单元的T200 FPGA
- ...· 英飞凌亮相进博会,引领智慧新生活
- ...· 三电产品开发及测试研讨会北汽新能源专场成功举行
- ...· Manz亚智科技跨入半导体领域 为面板级扇出型封装提供化学湿制程、涂布及激光应用等生产设备解决方案
- ...· 中电瑞华BITRODE动力电池测试系统顺利交付北汽新能源
- ...· 中电瑞华FTF系列电池测试系统中标北京新能源汽车股份有限公司
- ...· 中电瑞华大功率高压能源反馈式负载系统成功交付中电熊猫
- ...· 中电瑞华国际在电动汽车及关键部件测评研讨会上演绎先进测评技术