科技资讯
科技资讯S I N &T NOLOGY I NFORM TI ON 2008N O.03
SCI ENC E &TEC HNO LO GY I N FO RM A TI ON I T 技术使用S P Co mm 控件实现P C 机与单片机
A T89C51的串口通信
刘雪亭韩鹏(四川信息职业技术学院四川广元市628017)
摘要:本文介绍一种基于C++b ui l de r 语言利用Sp c om m 控件实现PC 机与单片机串口通讯的软硬件实现方法。关键词:C ++b ui l d er SPC o m m 控件串口通信单片机A T89C 51
中图分类号:TP311文献标识码:A 文章编号:1672-3791(2008)01(c)-0097-021引言
作为一种基本而又灵活方便的通信方
式,串口通信被广泛应用于P C 与P C 或者
P C 与单片机之间的数据交换以及其它工
业控制与自动化控制中。C++bui l de r 是
Bo r l a nd 公司推出的一个功能强大的应用
程序开发工具,它不仅具有De l p h i 的简
单,功能强大和高效率等特点,而且还结
合了C ++灵活性强,编译执行快速的优
点。
通常要实现串口通信,可以采用的方
法以及第三控件有很多。例如C ++bui l de r
自身支持的W I N32API 函数,M i c r os of t
vi s u a l 系列开发工具中的M SComm 控件,
利用第三控件S P C o mm 串口通信控件等。
相比较而言,利用S P Co mm 控件则相对较
简单,并且该控件具有丰富的与串口通信
密切相关的属性及时间,提供对串口的各
种操作,而且还支持多线程。因此使用
S P C o mm 控件实现P C 机与单片机的串口
通信是一种高效,简便的方式。
2浅析SPC om m 控件
S P Co mm 是台湾小猪工作室开发的第
三方串口控件,是MS C o mm 的增强版本,
功能强大,编程非常简单。S P Co mm 的另
一个显著特点是它是一个PA s(Pasc al )文件,
而非一个组件包,因此不依赖于
C++Bui l der 的具体版本,通用性强,程序的
可移植性好。采用S P Co mm 作为串口通信
控件的另一个主要原因在于它以源码形式
提供。这样,可以在保证开发进度的同时,
修改S P Co mm 的源代码,实现可能出现的
特许通讯要求,从而使开发更具灵活性。
2.1安装SPCom m 控件
C++bui l der 开发工具中没有SPCom m
控件,因此需要在C ++bui l de r 中安装。在
C ++bui l der 中,选择“Com ponent ”菜单
里的“I nst a l l C om ponent ...”菜单项。在
弹出的I nt o exi st i ng pack-a ge 属性页U ni t
f i l e nam e 输入框中选择SPCom m .pa s 文件,
单击两次“OK ”按钮后,可以将S P Co mm
控件安装到C++Bui dl e r 的Sys t e m 组件页
中。
2.2SPCom m 的属性、方法和事件
2.2.1S PCom m 属性
a .Com mNa m e :表示COM 1、COM 2等
串口的名字;
b.B a udR a t e :根据实际需要设定的波特
率,在串口打开后也可更改此值,实际波特率随之更改;c.Pa r i t yChec k :表示是否需要奇偶校验;
d.B yt e Si ze :根据实际情况设定的字节长度;e.Par i t y :奇偶校验位;f.St opB i t s :停止位;g.SendD a t aEm pt y :这是一个布尔型属性,为t r u e 时表示发送缓存为空,或者发送队列里没有信息;为f a l s e 时表示发送缓存不为空,或者发送队列里有信息。2.2.2SPCom m 方法a.St a r t c om m 方法用于打开串口,当打开失败时通常会报错。错误主要有7种:⑴串口已经打开;⑵打开串口错误;⑶文件句柄不是通信句柄;⑷不能够安装通信缓存;⑸不能产生事件;⑹不能产生读进程;⑺不能产生写进程;b.S t op Co m m 方法用于关闭串口,没有返回值;c.W r i t e Com m Da t a (pDa t a ToW r i t e :PC har ;dwSi z eof D a t aToW r i t e:W or d)方法是个带有布尔型返回值的函数,用于将一个字符串发送到写进程,发送成功返回t r ue ,发送失败返回f al s e 。执行此函数将立即得到返回值,发送操作随后执行。该函数有两个参数,其中pDa t aToW r i t e 是要发送的字符串,dwSi z eof Dat aToW r i t e 是发送字符串的长度。2.2.3SPCom m 事件a.O nR e ce i veDat a 接收事件O nR e cei ve D at a :pr oc edur e (Sender ::T O bj ect ;B uf f er ::Poi nt er ;B uf f er L e ngt h:W or d)of obj ect 当有数据输入缓存时将触发该事件,在这里可以对从串口收到的数据进行处理。B uf f er 中是收到的数据,B uf f er L engt h 是收到的数据长度。b.OnR e c ei veEr r or 串口出错事件O nR e cei ve E r r or :pr oce dur e(Se nde r :T Obj e c t ;Eve nt M a s k :DW ORD)当接收数据出现错误时将触发该事件。3串口通信程序设计串口通信模块的程序设计分为两方面:一方面是为P C 上位机的通信程序,另一方面是以AT 89C51单片机为核心的通信程序。通信的执行需要统一的设置,为保证上下位机的可靠通信,现约定其通信方式如下:串口通信波特率串口通信波特率为12500;帧格式为8位数控件的使用
据位,1位停止位;奇偶校验位为第9位,表示为8;通信可以有中断传送方式和查询方式;在此采用中断方式查第1个发送位,利用查询方式进行发送和接收通信;联络方式为机主动联络AT 89C51单片机;P C 机采用COM 1通信。3.1上位机的编程实现S P C o mm 控件接收和发送数据分别在两个线程内完成,接收线程负责收到数据时触发O n R e c e i v e D a t a 事件;用W r i t e Com m Da t a ()函数将待发送的数据写入输出缓冲器,发送线程会在后台完成数据发送工作。在接收和发送数据前需要初始化串口,用St a r t Comm ()方法打开串口,退出程序时用St o pCo m ()方法关闭串口。3.1.1SP Comm 控件的配置,打开和初始化序Com m 1->Ba udRa t e =12500;//波特率:12500Co m m1->Pa r i t y =None ;//奇偶检验:无Com m 1->Byt e Si z e =-8;//数据位:8Com m 1->St opBi t s =1;//停止位:1Com m 1->St a r t Co m m ();//打开串口3.1.2上位机发送数据程序发送数据采用异步I /O 方式,即将要发送的数据用W r i t e Com m Da t a 方法发送到写线程,然后立即返回。该方法所有的操作均在后台进行,如果发送成功,返回Tr ue ,发送失败,返回Fa l s e 。V o i d _f a s t c a l l T F o r m1::Com m 1W r i t e Com m Da t a (pDa t a ToW r i t e :PC har ;dw Si z eof D a t a T oW r i t e :W or d){………;C om m 1->W r i t e Com m Dat a (Se nd,n);//发送数据………;}3.1.3事件驱动方式接收数据程序上位机采用事件驱动方式接收数据。当下位机传送一帧数据上来输入缓存时,将触发SPCom m 的OnRe ce i ve D a t a 事件,对数据进行接收。然后对接收的数据进行判断,分别转相应的处理程序。
97C E CE E CH A

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。