基于C语言的RS232串行接口通信实现_图文

第37卷第6期
、,oI.37 No.6

河北上业大学学报
JOURNAL OF HEBEI UNIVERSTTY OF TECHNOLOGY

2008年12月
December 2008

文章编号:1008—2373(2008)06—001

1.06

基于C语言的RS232串行接口通信实现
葛磊蛟,毛一之,李歧,高婧嫱
(河北J二qk大学电气与自动化学院,天津300130) 摘要 串口通信是一种广泛使用且实用的通信方式,介绍RS232串行通信的联结方式,研究利用c语言编程实

现RS232串行通信的过程.结合实际应用,在约定双方串行通信协议的基础上,运用C语言开发的串行通信软 件,实现了企业生产线产品测试平台和嵌入式EMB主控机的串行数据通信. 关键词RS232接口;串行通信;C语言编程;测试平台;企业资源计划 中图分类号TP271 文献标识码A


RS23 2 Serial Interface Communication with the C Language
GE

Lei-jiao,MAO Yi—zhi,LI Qi,GAO
University

Jing-qiang

(School ofElectrical Engineering and Automation,Hebei
Abstract Serial Communication is


ofTechnology,Tianjin 300130,China)

very broad and practical means ofcommunication.In this paper,the RS232 serial
use

communication link is introduced,the

of C—language programming RS232 serial

communication process is fully

stu—

万方数据

died.With practical applications,the two sides agreed in serial communication protocol,the communication software
completed the production line
test

platform and embedded serial

EMB Data communications,which based

on

the

use

of

C—language development in the actual system of application. Keywords

RS232interface;serialcommunication:cprogramminglanguage;testplatfonn;enterpriseresourceplan

0前言
串行通信在通讯领域被广泛应用,标准的RS232接口已成为计算机、外设、交换机和许多通讯设 备的标准接口.虽然近年来随着USB口的日趋流行,RS232接口串口作为一种传统的串口通信口有被 取代的趋势.然而由于它具有较高的性价比和传输的可靠性Ⅲ.在传输速率要求不是很高的情况下,串 口通信仍然具有其自身的优势.同时RS232标准广泛应用于微型计算机系统和大型系统中,RS232标准 还具有连线简单、通讯距离长等优点,本文将着熏介绍串口通信的连接方式以及利用C语言编程实现 串口通讯,最后以实际的工程项目应用,验证了该通讯方式的可靠性.

1.1

RS232串行接口
RS232接口简介

RS232串行接口属于个人计算机(PC)及电信应用领域中最为成功的串行数据标准.它被定义为一 种在低速率串行通信中增加通信距离的单端标准,是目前PC机与通信工业中应用最广泛的一种串行接 口嗍.现在的Pc机一般至少有两个串行口COMI和COM2.新一代的汁算机主要以9引脚的D型接头 接出所有的RS232通信信号及控制线(有的计算机的COM2仍为25引脚).

收稿日期:2008.09.01 作者简介:葛磊蛟(1984.),男(汉族),倾上.

12

河北工业大学学报

第37卷

1.2

RS232串口引脚说明(见表1) 表1引脚缩写功能说明
Tab.1 Pin acronym description

万方数据针对25针串门目前还有端几线l,9,10,11,12,13,14,15,16,17,18,19,21,23,24,25未定义
1.3串口连接器的连接方式

串口连接器是两个串行接口的连接器,RS232串口存在9针和25针两种形式,根据连接的针数,串 口通信连接方式主要分为:1)无握手连接方式;2)全握手连接方式;3)循环握手回送方式.本文开 发的软件运行在全握手连接方式下,该连接方式如表2所示.
表2全握手连接
Tab.2 AU shook hands connections

9针对9针联结方式 信号
引脚 引脚

25针对25针联结方式 信号 信号
引脚 引脚

信号

::×:: RDi×/\3

RD

三:1哭{三
GND

C娜/\5:鸭

三三哭三三 三:×:三
5·————_◆


GND

GND

7·————_



GND

第6期

葛磊蛟,等:基于C语青的RS232串行接u通信实现

13



C语言串口通信软件实现

2.1测试中的硬件设备

2.1.1单机测试方式 如果单机仅仅拥有一个RS232串口,可将RS232连接线的第2引脚(RD)与第3引脚(TD)短路, 那么由第3引脚的输出信号就会被发送到第2引脚而送到同一串行端}1的输入缓冲区,即可将数据读
入,进入测试过程.

如果单机拥有COMl和COM2口两个RS232串口,那么请选择1 3节表2中的串口连接方式,进入 测试过程. 2.1.2近距离两台设备通信测试方式 如果要在两台PC计算机之间,一台嵌入式系统主控机和一台PC计算机之间,或者上位机和下位 机之间进行串口通信,那么请选择1.3节表2中的RS232串口方式连接两台设备,进入测试过程. 2.1.3远距离两台通信测试方式 RS232标准规定,若不使用Modem,在码元畸变小于4%的情况下,DTE和DCE通信两端之间最 大传输距离为15 m.若距离较远,须附加调制解调器(Modem).其连接方式如图1所示.

万方数据
Fig.1

图l远距离串口通信连接方式
Remote
serial

communication connections

2.2

C语言的串口通信软件实现

2.2.1串口通信软件流程图

网2数据通信的流程图
Fig.2 The

flow chart

ofdata communication

14

河北工业大学学报

第37卷

2.2.2

C语言函数具体实现串口通信软件过程 由于I/O串行通信口的速度远远低于CPU的速度,在查询工作方式时,CPU长时间处于等待状态,

其效率非常低,不利于CPU的资源利用.解决这一矛盾的有效办法是采取中断的通信方式,即当通信 口自身准备就绪时,主动提出中断申请,一旦CPU响应此申请,便暂停执行的工作,转向中断服务子 程序,与外设进行数据的交换,数据交换完成后返回到主程序中的断点继续执行未完成的任务,这样就 避免了CPU资源的浪费㈨. 为此必须对异步通信适配器以及中断控制器进行控制.作为系统的外设,异步通信适配器和中断控 制器都有其对应的I/O口地址,所以本文采用C语言函数库中的寻址函数outportb()和函数inportb() 对上述芯片进行直接读写操作.其控制包括对中断控制器地址的编程,允许IRQ3,IRQ4中断,同时 置MODEM控制寄存器地址为有效,这样即可实现中断方式的通信.根据图2的串口通信流程图,其 具体实现串口通信的过程如下: 1)初始化串口函数 参数说明: ComPortAddr串口端口地址(coMl口是03F8H COM2口是02F8H) IntVectNum中断处理号(一般选择0X0b)
Baud Data Stop

波特率
数据位

停止位
奇偶校验位
ComPortAddr,unsigned char IntVectNum,im Baud,

万方数据 Parity
void

Init—COM(int

unsigned char Data,unsigned char

Stop,unsigned char Parity)

{ unsigned
int f. char High,Low;

comportaddr=ComPortAddr intvectnum=IntVectNum;
CharslnBuf=0;Circln=0;CircOut=0; 严set baud

rate设置波特率}/

乍(Baud/1 oo):
f=1152/t;High=f/256; Low=f-High木256;

outportb(ComPortAddr+3,0x80); outportb(ComPortAddr,LOW); outportb(ComPortAddr+l,High);
严set data bits,stop bits,and

parity设置数据位.停止位.校验木/

Data=(Data.5)I((Stop.1)·4);
1 8;

if(PariS2)Data=Data{0x if(Pad旷1)Data=Datalox8;
else

outportb(ComPortAddr+3,Data);
/.set

MCR(DTR,RTS=0,OUTl,OUT2=1)设置MODEM控制位·/ mode设置输入数据中断模式幸/

outportb(ComPortAddr+4,0xob);
/宰set input data ready interrupt

第6期

葛磊蛟,等:基丁c语言的RS232串行接口通信实现

15

outportb(ComPortAddr+I,Ox01);
/宰set OC interrupt disable

vector设置中断源幸/

0;

OldAsyncInt=getvect(IntVectNum); setvect(ImVectNum,AsyncInt);
enable

0;

严open

interrupt打开中断幸/

maskb=inp(Port8259+1);

if(IntVectNum一0xoc)outport(Port8259+1,maskb&Oxef);/*INT4*/
else

outport(Port8259+1,maskb&0xf7);严INT3*/



2)握手信号控制 该函数引入递归调用的方式,很好的解决了以往串口通信过程中,在握手信号方面选择发送指定特 定字符(例如”样”)所带来的误传送问题,大大提高了串口通信的成功率.
void

wait(char ch)



if(ReceiveChar(COM232)鼍h)return;//确定对方已经成功接受或者发送,就返回空
else

{ 万方数据

SendChar(ch);//把接受或者发送出去的字符重新发送;
wait(ch); ) )

//递归调用,直到对方确定接受或者发送成功为止;

3)向串行口发送一个字符 该函数的思想是先申请占有中断,后进行发送数据通信;
int SendChar(unsigned char

Char)


do

{ printf(“send waiting>>>>>>≯珍\ll”):

//在屏幕上提示用户正在等待中断进行.

)while((inportb(comportaddr+5)&0x20)一O);//检查发送端数据线是否准备好
outportb(comportaddr,ChaO://发送数据到缓冲区 return(Char);//返回发送完成的字符 4)从串行口接受一个字符 该函数的思想是先取得中断控制,后面进行接收数据通信;
int



ReceiveChar(int por0 do{ prinff(”receive waiting>>>、。'>>\n”);



∥在屏幕上提示用户正在等待中断进行.


16

河北工业大学学报

第37卷

while((inportb(eomportaddr+5)&0x01)—0);//检查接收端数据线是否准备好
return(inportb(pon));//从接收数据缓冲区取数据



实例
在企业产品测试平台和嵌入式控制系统之间,约定通信双方的协议相同,首先嵌入式EMB主控机

通过串El把控制消息发送给产品测试平台,让产品测试平台根据发送来的指令进行相关操作:同时在产 品测试平台上的测试结果信息,测试每个单项目的相关信息也通过串口传输数据到嵌入式EMB主控机; 嵌入式EMB主控机把测试相关的有效信息进行整理后,通过网络上传到Server,Server把企业所有生 产线的嵌入式EMB主控机发送来的信息进行整理和分析,在企业资源管理系统ERP上共享,让企业的 高级管理人员实时监视企业生产的进行情况,大大提高企业的办公效率,其整体工作原理图如图3所示.

网3企业生产整体工作原理图

万方数据

Fig.3

The principle chart

ofoverall production

4结论
本文所阐述的RS232串口通信软件,在具体实践中结合功能需要,综合考虑复杂程度、灵活性等因 素,选择了合适的方法,实现了串口通信过程,同时在产品测试平台和嵌入式控制系统之间,该软件得 到了充分的应用,有效地提升了企业的生产工作效率.

参考文献:
【l】陈传波,杜娟,张智杰.W1N32下基于RS232协议的串口通信方法及应用研究【J】.南昌人学学报,2005,27(3):70.75. 【2】金卫民.VC下利用串口进行数据通信的研究【JJ.计算机工程和设计,2003,24(12):120-123.
【3】谭浩强.c/C++程序设计[M】.北京:清华大学出版社,2005.205.278. 【4】Joe CompbeU.串行通信C程序员指南【M】.北京:清华大学出版社,2005.170.224.

【5】刘春雷,邹云涛.DOS与WINDOWS环境之|.日J的RS232串行通信的研究【J】.微型电脑应用,2007,23(9);34-36. 【6】黎步银,姜胜林,吕文中,等.基于c语言的串口通信程序设计【J】.传感技术学报,2002,12(3):78.81.

基于C语言的RS232串行接口通信实现
作者: 作者单位: 刊名: 英文刊名: 年,卷(期): 被引用次数: 葛磊蛟, 毛一之, 李歧, 高婧嫱, GE Lei-jiao, MAO Yi-zhi, LI Qi, GAO Jingqiang 河北工业大学,电气与自动化学院,天津,300130 河北工业大学学报 JOURNAL OF HEBEI UNIVERSITY OF TECHNOLOGY 2008,37(6) 0次

参考文献(6条) 1.陈传波.杜娟.张智杰 WIN32下基丁RS232协议的串口通信方法及应用研究[期刊论文]-南昌大学学报 2005(03) 2.金卫民 VC下利用串口进行数据通信的研究[期刊论文]-计算机工程与设计 2003(12) 3.谭浩强 C/C++程序设计 2005 4.Joe Compbell 串行通信C程序员指南 2005 5.刘春雷.邹云涛 DOS与WINDOWS环境之间的RS232串行通信的研究[期刊论文]-微型电脑应用 2007(09) 6.黎步银.姜胜林.吕文中 基于C语言的串口通信程序设计[期刊论文]-传感技术学报 2002(03)

相似文献(10条) 1.期刊论文 张长森 调度台接口CPU与调度台工控机串行通信的设计 -工矿自动化2005,""(4)
调度台接口CPU负责调度台工控机与交换机中央控制模块的通信,它与调度台工控机之间的通信采用RS232格式.采用AT89S8252作为调度台接口CPU,采 用MAX202设计一个RS232接口,并设计了AT89S8252与工控机之间的信令格式,实现了调度台接口CPU与调度台工控机之间的串行通信.

2.学位论文 刘杰 民用住宅水表出户计量系统的设计 2005
本论文介绍的抄表系统由两部分组成,一部分是居民住宅内的改装水表和楼道内安装的集中器,通过RS485接口构成一个整体;另一部分是便携式抄 表器和装载着水表计费软件的计算机,通过RS232接口构成一个整体。 本课题设计的抄表器是一种超低功耗的掌上机,最突出的特点是可靠性好、结构简单、功耗低、成本低、携带方便。它配合居民住宅内的改装水表 工作,组成户外抄表系统。以C8051F226为核心的便携式抄表器具有广泛的应用前景,不仅可以准确地实现数据采集,而且可以与计算机通讯,存储、显 示历史数据。在分析、比较串行通信接口特点的前提下,根据RS-485接口标准传输距离长和具有多站能力的特点,用多个改装水表作为下位机,抄表器 作为二次仪表,个人计算机作为上位机,建立分布式多点数据采集系统,实现对多个改装水表的控制。

3.期刊论文 黄甦 使用串行通信技术实现对Microcal T500中温校验炉的控制 -福建电力与电工2003,23(3)
介绍Microcal T500中温校验炉的通信协议,计算机串行技术,VB 6.0编程语言以及实现Microcal T500中温校验炉温度控制的方法.

4.学位论文 王睿 激光光三角法位移量测量系统的研究 2004
本文主要研究了利用CCD作为图像传感器结合光学技术对物体的位移进行非接触的测量。介绍了系统的结构、工作原理及其软件的设计思想。系统采 用了CCDTCDl500C芯片,介绍了它的特性和驱动时序,结合光学系统中的光三角原理,讲述了利用FPGA实现线阵CCD的驱动,并且用VHDL语言编制了 FPGA的设计模块,将所得数据利用RS232接口传到计算机,计算机操作界面用VB进行可视化的编程,比较容易操作。本系统具有尺寸小、线性好、速度快 、精度高、重复性好、易于安装调节等优点,是一种较为理想的非接触测量系统。

5.会议论文 高福祥.曹杰.崔秀丽.高渲 嵌入式RS232/Internet网关的设计与实现 2006
本文阐述嵌入式RS232/Internet网关的硬、软件设计和实现.首先介绍网关的功能;其次介绍以单片机和以太网控制器RTL8019AS为核心搭建的硬件结 构;最后详细介绍了软件设计.嵌入式网关主要完成具有RS232接口的设备通过Internet传送数据的问题.

6.学位论文 茅卫娟 电梯远程监控系统的设计与实现 2004
电梯是大楼的垂直交通工具。传统意义的电梯维护除了日常的例行维护外,通常是在故障出现后由用户通过电话、传真等手段与服务商或销售公司 技术人员取得联系,再由专业技术人员上门解决。随着电梯使用量的不断增加,这种被动维修手段的滞后性和时延性大大降低了工作效率同时使被困人 员承受着巨大的心理压力。[1]电梯远程监控正是为解决这些问题而提出的,它是当今电梯控制领域的先进技术。近年来,远程监控已经成为电梯企业 进行技术服务及市场竞争的重要手段之一,国外的电梯企业已经有了相对完善的远程监控系统,而国内的大部分企业还没有这样的系统,或者虽有这样 的系统,但因接口、协议等不兼容而无法通用。针对这种情况,我们设计研制一种价格低廉、通用性强、功能适用的电梯远程监控系统。 本文主要对电梯远程监控系统的现场信息采集、远程数据传输及远端的监控管理进行研究。论文分为三大部分:第一部分介绍了电梯远程监控的背 景、概念及系统的一般构成。第二部分介绍了远程监控系统的重要技术。第三部分是电梯远程监控系统各部分的设计。论文由浅入深,由理论研究到工 程实践,从而构成了循序渐进的完整过程。 本文设计的电梯远程监控系统由三部分组成:中央数据库、监控中心、现场采集器。其中前端数据采集装置设置了数字、模拟I/O口,RS232接口、 RS485接口等,可以适应于各种电梯及各种形式的接口。单片机选用可进行远程下载的芯片,大大方便了升级和管理。监控中心的操作系统为WindowsNT Workstation,软件编程用Visual Basic语言。软件采用模块化设计,接口通用,具有良好的兼容性,克服了国外同类产品只能监控一种型号设备的弊端 。监控中心采用ACCESS数据库设计,它可以方便地使监控中心建立起一套电梯运行、故障及维修档案,实现实时故障监控、诊断和数据存储。程序模块 中设计了数据统计、分析、报表打印等功能,采用专家模式实现故障、部件等电梯性能的数据分析。中央数据库采用SQL Server数据库管理开发系统 ,数据库访问工具采用ADO。系统目前选用电话网作为数据传输的介质,现场采集器通过MODEM与监控计算机连接。 数据采集和通信系统是整个系统的核心技术,论文对数据采集器的硬件结构、芯片选择、电路组成、软件流程、调试过程等进行了详细阐述。系统 正在日立、广日电梯上使用,各功能运行正常稳定,达到了设计要求,取得了很好的效果。

7.期刊论文 安东省.崔焱.An Dong-sheng.Cui Yan AT89S52单片机与PC机串行通信设计 -山西电子技术2009,""(4)
介绍了基于AT89S52单片机、RS232接口标准和MAX232电平转换器件设计的单片机和PC机通信电路,叙述了RS232接口标准的特性,绘出了MAX232电路连 接图,编写了基于RS232直连无modem方式的完整程序.

8.期刊论文 胡波.董菊华 基于Lab Windows/CVI的PC与DSP的串行通信 -电子元器件应用2009,11(9)
给出了利用LabWindows/CVI虚拟仪器软件开发工具中的RS232接口库函数来在PC机与DSP数字信号处理器之间进行串行通信的具体设计方法,给出了 PC机和DSP之间的硬件连接方式和基本的编程思路.

9.学位论文 姚俊华 新型气体渗氮计算机控制系统 2000
新型气体渗氮计算机控制系统是以分布式测控系统DCS(DISRIBUTED CONTROL SYSTEM)为设计思想,有格主机为工业控制计算机及从机为智能仪表的主 从式控制模式.主机和从机之间通过RS485接口进行了串行通信.由于计算机的串口是RS232接口,因此在主机内加入一块多功能串行通信转换卡.主从机进 行通信时必须遵循相同的通信协议,保持相同的通信速率.控制系统采用SSR(固态继电器)作为开关元件准确启动与关闭加热电源.控制系统的软件在编制 时采用VB的MSCOMM控件来控制通信过程.整套软件具有工艺设定,数据采集,结果保存,打印报表,显示图形,异常处理等多种功能,能很好地对渗氮工艺处理 过程进行控制.

10.期刊论文 衣昌明.刘璟.黎莉.Yi Changming.Liu Jing.Li Li 光纤陀螺信号的采集与处理 -舰船电子工程 2009,29(8)
介绍了一种利用LABVIEW采集光纤陀螺输出信号的方法.通过PC机上的RS232接口与光纤陀螺相连,利用LABVIEW中的串行通信模块实现及对光纤陀螺数 据的采集.分析了光纤陀螺的静态输出信号,为了抑制光纤陀螺随机噪声,利用五点三次平滑、数字滤波、小波变换分析法对光纤陀螺静态输出数据进行了 滤波处理,利用Allan方差分析了各误差源的幅度,结果表明:小波阈值滤波的方法能够有效的补偿光纤陀螺的随机误差.

本文链接:http://d.g.wanfangdata.com.cn/Periodical_hbgydxxb200806003.aspx 授权使用:江苏工业学院(jsgyxy),授权号:2a174dc3-5ab9-49cc-b48c-9de9009e5db0 下载时间:2010年9月6日


相关文档

基于C语言的RS232串行接口通信设计与实现
基于C语言的RS232串行接口通信实现_葛磊蛟
C语言设计实现RS-232标准接口串行通信的应用(半双工串行通信的发送方)
基于C语言的RS232串行接口通信实现
C语言实现RS232上下位机串行通信
C_Builder的RS232串行通信实现
串行口通信RS232概述
浅论用C语言实现RS232串口通信的方法
RS232与RS485串行接口转换电路及其编程实现
RS232与RS485串行接口转换电路及编程实现
电脑版