当前位置:首页 > 通信技术 > 通信设计应用
[导读]   1. Windows CE通信简介   Windows CE是一个面向移动计算和嵌入式应用的操作系统,其突出的优点是模块化、可定制、完备性、实时性、通信功能强大和基于Win32应用程

  1. Windows CE通信简介

  Windows CE是一个面向移动计算和嵌入式应用的操作系统,其突出的优点是模块化、可定制、完备性、实时性、通信功能强大和基于Win32应用程序编程接口。Windows CE支持两种基本的通信技术:串行通信和网络通信。

  讨论Windows CE所支持的两种基本通信技术,即串行通信和网络通信,并通过Win32 API描述了基于Windows CE的平台如何建立各种串行连接和网络连接。对于各种连接实现途径,指出其与桌面计算机的区别。

  2. Windows CE中的串行通信

  串行通信要求收、发双方有直接的点对点的连接。通过串行电缆或红外线收发器(即IR收发器)均可实现这种通信方式。从软件的观点来看,各种串行通信设备都是用COM端口名来标识的(如COMl、COM2等)。在Windows CE 2.x中,COM端口被存贮在注册表的HKEY_LOCAL_MACHINEDrivers主键下,如果系统中已经安装了某种串行设备,则可以通过注册表的HKEY_LOCAL_MACHINEAcTIve主键来查看。基于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所示。

  

 

  图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最常用的几种高层协议,讨论其网络通信实现方法。

  3.1发送ICMP请求

  ICMP(Internet Control Message Protocol)是一个网络层的Internet协议,用来通过其它主机了解有关IP服务的状况。典型的用法是发送ICMP请求去测试某台主机是否连接到Internet(称为“Ping”操作)。其方法是通过发送一个信息包到所访问的主机(IP地址),并等待其应答,从而确定该主机是否可用。基本步骤描述如下:

  1)调用IcmpCreateFile,建立一个请求发送的句柄:

  HANDLE WINAPI IcmpCreateFile(VOID)://该函数调用成功时.返回ICMP句柄

  2)调用IcmpSendEcho,请求ICMP应答;

  DWORD WINAPI IcmpSendEcho(HANDLE IcmpHandle, //指定由IcmpCreateFile打开的ICMP句柄

  IPAddr DestinationAddress, //请求应答主机的IP地址

  LPVOID RequestData, //发送缓冲区所含的数据

  WORD RequestSize, //发送缓冲区的字节数

  LPVOID ReplyBuffer, //应答缓冲区

  DWORD ReplySize, //应答缓冲区的字节数

  DWORD Timeout //请求应答的等待时间.以毫秒为单位);

  3)调用IcmpCloseHandle,关闭由IcmpCreateFile建立的ICMP句柄。

  BOOL WINAPI IcmpCloseHandle(HANDLE IcmpHandle);

  

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭