位置:51电子网 » 技术资料 » 通信网络

Windows CE下串行通信的实现

发布时间:2008/5/29 0:00:00 访问次数:378

摘要:windows ce是微软公司推出的一种嵌入式的操作系统、用于系统资源有限的小型设备。它采用模块化的结构,支持多种外部接口,包括最常用的rs232串行接口。本文就windows ce系统串行接口的编程进行讨论,并给出与gps设备的接口程序。

关键词:windows ce 串行通信 gps

1 windows ce简介

windows ce是一种小型的、基于rom的、具有win32子集api的操作系统。它的优势在于小尺寸、win32 api子集和对多平台的支持能力。在windows ce下编程需要注意的是,windows ce设备的资源很少,存储器、显示器都很小,接口也比较少,而且根据实际情况变化很大。另外,windows ce只支持unicode,这在编程中要格外注意。在windows ce中,除了一些基本的windows通用控件以外,还有一些专门设计的控件,比如commandbar。windows ce体积虽小,但是它的功能并不少,内存管理、文件操作、多线程、网络功能等等它都支持,可以说是麻雀虽小,五脏俱全。

2 windows ce下的串行通信

串行端口在windows ce下属于流接口设备,它是串行设备接口的常规i/o驱动程序调用和与通信相关的具体函数的结合。串行设备被视为用于打开、关闭、读写串行端口的常规、可安装的流设备。windows ce的通信函数和其它大多数windows的通信函数相同。特别要注意的是,windows ce不支持直接对串行端口的寄存器进行编程。常用的串行端口函数介绍如下:

(1)打开和关闭串行端口

createfile函数用于打开串行口。

hport=createfile(text(“com1:”),generic_readgeneric_write,0,null,open_existing,0,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); //设置新的串口配置

对串行端口来说,必须配置超时值,否则程序可能陷入到一个循环来等待来自串口的字符。这对采用windows ce的设备来说,将大大减少设备电池的使用时间,所以超时值是需要配置的。另外一种解决办法就是采用多线程。多线程将在下一部分讲述。

通常,配置超时值和配置串口类似。首先用getcommtimeouts函数获得当前串口的超时值。然后可以修改commtimeout成员,最后用setcommtimeouts函数设定超时值。

commtimeouts commtimeouts; //定义commtimeouts结构

getcommtimeouts(hport,&commtimeouts); //获得当前的超时值

//修改commtimeout成员

commtimeouts.readintervaltimeout=maxdword;

commtimeouts.readtotaltimeoutmultiplier=0;

commtimeouts.readtotaltimeoutconstant=0;

commtimeouts.writetotaltimeoutconstant=1000;

commti

摘要:windows ce是微软公司推出的一种嵌入式的操作系统、用于系统资源有限的小型设备。它采用模块化的结构,支持多种外部接口,包括最常用的rs232串行接口。本文就windows ce系统串行接口的编程进行讨论,并给出与gps设备的接口程序。

关键词:windows ce 串行通信 gps

1 windows ce简介

windows ce是一种小型的、基于rom的、具有win32子集api的操作系统。它的优势在于小尺寸、win32 api子集和对多平台的支持能力。在windows ce下编程需要注意的是,windows ce设备的资源很少,存储器、显示器都很小,接口也比较少,而且根据实际情况变化很大。另外,windows ce只支持unicode,这在编程中要格外注意。在windows ce中,除了一些基本的windows通用控件以外,还有一些专门设计的控件,比如commandbar。windows ce体积虽小,但是它的功能并不少,内存管理、文件操作、多线程、网络功能等等它都支持,可以说是麻雀虽小,五脏俱全。

2 windows ce下的串行通信

串行端口在windows ce下属于流接口设备,它是串行设备接口的常规i/o驱动程序调用和与通信相关的具体函数的结合。串行设备被视为用于打开、关闭、读写串行端口的常规、可安装的流设备。windows ce的通信函数和其它大多数windows的通信函数相同。特别要注意的是,windows ce不支持直接对串行端口的寄存器进行编程。常用的串行端口函数介绍如下:

(1)打开和关闭串行端口

createfile函数用于打开串行口。

hport=createfile(text(“com1:”),generic_readgeneric_write,0,null,open_existing,0,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); //设置新的串口配置

对串行端口来说,必须配置超时值,否则程序可能陷入到一个循环来等待来自串口的字符。这对采用windows ce的设备来说,将大大减少设备电池的使用时间,所以超时值是需要配置的。另外一种解决办法就是采用多线程。多线程将在下一部分讲述。

通常,配置超时值和配置串口类似。首先用getcommtimeouts函数获得当前串口的超时值。然后可以修改commtimeout成员,最后用setcommtimeouts函数设定超时值。

commtimeouts commtimeouts; //定义commtimeouts结构

getcommtimeouts(hport,&commtimeouts); //获得当前的超时值

//修改commtimeout成员

commtimeouts.readintervaltimeout=maxdword;

commtimeouts.readtotaltimeoutmultiplier=0;

commtimeouts.readtotaltimeoutconstant=0;

commtimeouts.writetotaltimeoutconstant=1000;

commti

相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!