基于嵌入式Windows CE下串行通信的实现

[来源] 达内    [编辑] 达内   [时间]2012-06-19

Windows CE是一种小型的、基于ROM的、具有Win32子集API的操作系统。它的优势在于小尺寸、Win32 API子集和对多平台的支持能力。在Windows CE下编程需要注意的是,Windows CE设备的资源很少,存储器、显示器都很小,接口也比较少,而且根据实际情况变化很大。另外,Windows CE只支...

   Windows CE 是一种小型的、基于ROM的、具有 Win32子集API的操作系统。它的优势在于小尺寸、 Win32 API子集和对多平台的支持能力。在Windows CE 下编程需要注意的是,Windows CE设备的资源很少,存储 器、显示器都很小,接口也比较少,而且根据实际情况变化很大。另外,Windows CE只支持 Unicode,这在编程中要格外注意。在Windows CE 中,除了一些基本的Windows通用控件以外,还有一些专门设计的控件,比如 CommandBarWindows CE 体积虽小,但是它的功能并不少,内存管理、文件操作、多线程、网络功能等等它都支持,可以说是麻雀虽小,五脏俱全。
  2 Windows CE下的串行通信
  串行端口在Windows CE下属于流接口设备,它是串行设备接口的常规 I/O 驱动程序调用和与通信相关的具体函数的结合。串行设备被视为用于打开、关闭、读写串行端口的常规、可安装的流设备。Windows CE 的通信函数和其它大多数Windows 的通信函数相同。特别要注意的是,Windows CE 不支持直接对串行端口的寄存器进行编程。常用的串行端口函数介绍如下:
  (1)打开和关闭串行端口
  CreateFile函数用于打开串行口。
  hPort=CreateFile(TEXT(“COM1 ”)GENERIC_READ|GENERIC_WRITE 0NULL OPEN_EXISTING0 NULL)。注意COM1 后要有一个冒号。最后一个参数dwFlagsAndAttributes必须为 0 ,因为Windows CE只支持非重叠 I/O 。第3个参数 dwShareMode也必须为0 ,通信端口不能像文件一样被共享。这个函数的返回值是已打开的串行端口的句柄或者是INVALID_HANDLE_VALUE
  关闭串行口可以调用CloseHandle(hPort)
  (2)配置串行端口
  配置串行口主要是用DCB 结构配置端口设置,包括波特率、停止位、数据位长度、校验位、流量控制等等,还有配置超时值。首先打开串行端口,用GetCommState 函数获得当前打开串口配置,然后根据需要修改DCB成员,最后用 SetCommState 函数设置新的串口配置。
  DCB PortDCB; //创建 DCB变量
  Port.DCB.DCBlength=sizeof(DCB)
  GetCommState(hPort,&PortDCB)  //获取当前串口配置修改DCB 成员
  PortDCB.BaudRate=9600; //波特率
  PortDCB.Parity=NOPARITY; //校验位
  PortDCB.StopBits=ONESTOPBIT  //停止位
  PortDCB.ByteSize=8
     SetCommState(hPort,&PortDCB) // 设置新的串口配置

资源下载