讨论了在Windows CE下串口通信软件的设计,主要包括串口参数的设置、对特定关键字的监测和多线程编程。
维普资讯 http://
摘
要
讨论了在 Wi o sC n w E下串口通信软件的设计,主要包括串口参数的设置、对特定 d关键字的监测和多线程编程。 嵌入式系统,Widw E,A n o sC RM,串口rcb f eeu来存放接收到的数据;第三个参数是待接收的字节数;
关键词
Widw E是微软公司针对嵌入式处理器推出的 3 no sC 2位、
多任务、实时的操作系统,它继承了桌面操作系统 Widw系 no s列的很多特点,界面友好,操作容易。 Wi o sC的 A I n w E d P函
第四个参数是指实际接收的字节数;第五个参数 lO elpe p vr pd a在 Widw E中不支持,设为 N L。 no s C U L 2 .串口的各种参数设置
数是桌面 Wi o s n w的一个子集,这样,大量 Wi o s d n w下的软件 d
只需要做很少修改,便可应用于 Wi os E n w,极大地加快了 d C开发速度。即使开发全新的软件,由于开发环境的类似,普通的V C开发人员也能很快上手。
串口参数设置:串口参数都包含在 D B结构体中。使用 C中需要设置的有波特率、数据位,停止位,校验位。另外 fi B- nr必须设置为 T U ay R E,因为 Widw E中不支持非二进制的 n o sC串行传输模式,其余使用默认即可。设置时一般采用读取、修改和写回的方式。G to m te ) e m Sa (可获取串口当前参数,St C t e C m Sae ) o m t (可将参数写回。 t 超时参数的设置:在从串口读取和写入数据时,Wi o s n w d
而 R 2 2串口通信是一种应用非常广泛的通信方式,在嵌 S3入式系统中更是如此,各种单片机、A M处理器、D P芯 R S
片,几乎都支持串口通信。一
、
A I P函数及参数设置
在 Widw下可以利用微软提供的 M C m nos S o m控件,但是在
Widw E下,该控件不能使用,故只能采用调用 A I no sC P函数来实现。
一
C E提供了超时机制,也就是设置等待读写操作返回的时间长度。其设置方式和上面类似, G to mTm ot(获取,St eC m i eus ) e
C m Tm ot(写回。超时操作可根据实际情况来设定。 o m i eus )
串口事
件设置:事件设为串口接收到一个 c a型字符,即 hrSto m s (C m E _XC A。 eC m Mak h o m, VR H R)
因为串口在 Widw E下属于流接口设备,故访问的时 n o sC候是通过文件 I O函数 Cet i (,Coe a d (,Wre i/ ra Fl ) lsH n l ) e e e i Fl t e
设置接收和发送缓冲区的大小:Stp o eu Cmm(用来设定发 )送和接收缓冲区的大小,以字节为单位,也可不设,系统会推荐一个合适的默认值。 清空发送和接收缓冲区:可以用 P re o m(C m ugC m h o m,PURGE T XC E L AR U JP RGE RXC E L AR)。_ _
(,R aFl(来进行的。例如打开 C M1为:h o m=Ce ) ed i ) e O Cm r a Fl( (“ O: ) G N R CR A E E I_ IE 0 ti T e e C Ml”, E E I_ E DJ N R CWRT,, GN L OP N UL, E_
E ITN,, U L;果打开成功, ra Fl XS I G 0 N L )如 Cet i e e函闭串口是 b lsR t n= Coe Coe eu r l - s
数会返回串口的句柄;如果打开失败会返回一个 I- NVALI HANDLE V L E关 D AU。_ _
H nl(C m;果返回值是非零值则表示关闭成功,为零 ade h o m)如则表示关闭失败。
二、程序实现编程环境是 E C . V 4 0+S 4补丁,用 MF P C编写。串口号、
1对串口进行写操作和读操作 .
波特率、数据位、停止位、奇偶校验为五个 C m o o控件, o bBx 字符串的输入输出用 E i控件来完成。关键之处有 O B t dt n u—t O e (函数,串口接收线程,以及关键字监测功能,如图 1 o pn ) n所示。
写操作使用 Wre i (,如 wre i (c m,sn bf, iFl ) t e iFeho m t l ed u lnt eg h,&d B ts ie w yeWrt tn,N L )第一个参数是串口句柄;第 U L;二个参数是被写缓冲区的指针,并定义了一个字符数组 sn— ed
bf u来存放待发送的数据;第三个参数是待发送的字节数;第四个参数是指实际发送的字节数;第五个参数 lO e apd在 p vd p eW
i o s E中不支持,设为 N L。 n w d C U L
点击“打开串口”按钮后,就进入 O B t n p n ) n ut O e (函数, o 读取 C mbB x的所选项,按照设置来打开串口;然后创建一 o oo个串口接收线程,再创建一个串口接收线程退出事件。创建接收线程的目的是不让主线程 (对话框的界面 )一直处于等待串口数据的到来,而是在接收线程中等待数据,实现的核心代码如下:
读操作使用 R aFl(。如 R aFl(Dg h o m,ee edi ) e ed i p l一> C m r _ e cbf12, w eg, U )第一个参数是串口的句柄;第二 u,0 4&d Lnt N L; h
个参数是存放数据的缓冲区的指针,并定义了一个字符数组