基于VB的PC机双串口通信技术研究.docx
- 文档编号:10001513
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:36
- 大小:826.30KB
基于VB的PC机双串口通信技术研究.docx
《基于VB的PC机双串口通信技术研究.docx》由会员分享,可在线阅读,更多相关《基于VB的PC机双串口通信技术研究.docx(36页珍藏版)》请在冰豆网上搜索。
基于VB的PC机双串口通信技术研究
1绪论
1.1引言
随着互联网的不断发展,计算机间的相互通信已非常普遍,只要通过计算机的串行口就可以实现。
串行通讯技术具有简单且易实现的特性,许多设备和计算机都可以通过串口对外设进行控制、检测。
串口通讯日益成为计算机和外设进行通讯、获取由外设采集到的监测数据的一个非常重要的手段[1]。
而对于串口通信的编程软件,微软公司的VisualBasic6.0(简称VB6.0)以其友好的开发界面、简单易用、实用性强等优点已在国内外得到广泛应用。
利用VisualBasic开发串口通信程序既可以使用MSComm控件又可以调用WindowsAPI函数[2]。
不过,只要MSComm控件可以被选用,它几乎总是推荐的选择,因为MSComm控件的功能使用起来更加简单。
1.2VisualBasic串口通信技术的研究背景与前景
计算机一般提供了2个25针或者9针的RS-232标准串行口,简称COM1和COM2。
我们还可以通过插通信卡来获得额外的RS-232标准串行口[3]。
利用这些串口可以与其他数字设备进行一般的数据通信,计算机串行接口主要应用于远程通信和低速输出设备。
由于串行数据通信传输线条数最少。
而且有许多较便宜的专用芯片来实现它,发送和接受器也简单。
因而对数据传输速度不高的计算机和数字设备间的进程通信,多采用串行通信实现[4]。
在MicrosoftWindows下开发串行通信使用串口通信组件如ActiveX控件MSComm.该方法比较简单,对于VisualBasic,这就是最常用的方法。
我们以MSComm控件作为底层接口,在此基础上建立一个简单的串行通信协议SPCP,并由此实现了实时通信和文件传输功能。
随着计算机的迅速普及和计算机控制技术的发展,计算机被广泛应用于自动化控制领域之中。
完成一个控制过程一般都要利用集散式计算机控制系统。
在这种控制系统中,下位机主要完成对现场数据采集和对设备一级的监控,上位机则要完成对整个系统的采集、分析、处理和控制以及数据、图形显示、打印、人机对话等工作[5]。
上位机与下位机大多是通过PC机的RS-232串行接口实现通信。
随着Windows系统的普及,使得数据采集及工业控制软件也上升到了Windows环境下。
这就给程序员提出了如何编写面向Windows的串行通信程序问题。
VisualBasic6.0(以下简称VB)是一个Windows下简单易学、高效的可视化软件开发平台,VB不但提供了良好的界面设计能力,而且在串口通信方面也有很强的功能。
它提供的MicrosoftCommunicationcontrol(简称MSComm)通信控件,“隐藏”了大部分串口通信的低层运行过程和许多繁琐的过程,它使用户能够方便地访问Windows下串口通信驱动程序的大多数特性。
所以整个串行通信程序的开发过程变得十分简单易行,程序员不需要处理繁琐的细节,利用该通信控件,只需编写少量的代码就可实现主要应用功能和界面的设计,完成软件的开发过程[7]。
通信就是两个设备之间的数据交换,是通过电信号来实现的。
计算机工具箱和窗体上的MSComm控件是Microsoft公司提供的主要用于串行通信编程的ActiveX控件。
VB6.0中的MSComm控件实际上是这些WindowsAPI函数的有机集成,它以属性和事件的形式提供了对Windows通信驱动程序的API接口,封装了API函数的低层操作,为应用程序提供了通过串行接口收发数据的简便方法[8]。
因此,编程人员只需在程序中设置和监视MSComm控件的属性和事件即可完成对串口的编程。
MSComm控件不在最常用的控件工具箱中出现,故编程的第一步应添加到工具栏上以方便编程。
具体的做法如下:
单击VB6.0菜单栏中的“工程”菜单,并选择“部件”命令,则弹出对话框。
在部件对话框中选择MicrosoftCommControl6.0,在所需要控件前面的复选框上单击,使复选框中出现“√”符号,说明已经选中此控件。
单击“确定”,则响应控件就加载进内存,此时工具箱应出现一个电话图表,这就是MSComm图标。
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。
在计算机测控系统中,主控机一般采用PC或者IPC,通过串口与测控模块相连,测控模块在连接相应的传感器和执行器,如此形成一个简单的双层结构的计算机测控系统。
这种结构主要用于单独的中小型企业或者部门,如果属于综合型企业或者部门,如电力系统监控,高速公路监控和收费系统,则可以此为基础结构进行扩充,用集线器将众多双层监控系统连接起来,再用交换机将若干集线器连接起来,统一接上路由器,从而与INTERNET互联,如此即可形成一个庞大的计算机测控网络。
2串口通信
串口是计算机上一种非常通用设备通信的协议。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信[10]。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:
(1)地线,
(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配。
2.1串口通信的基本概念
2.1.1并行通信与串行通信
终端与其它设备(如其他终端、计算机和外部设备)通过数据传输进行通信。
数据传输可以通过两种方式进行,即并行通信和串行通信。
1.并行通信
在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现的。
如果一组数据的各数据位在多条线上同时被传送,这种传输被称为并行通信。
并行数据传送的特点是:
各数据位同时传送,传送速度快、效率高,多用在实时、快速的场合。
并行数据传送只适用于近距离的通信,通常小于30m。
2.串行通信
串行通信是指通信的发送方和接收方之间的数据信息的传输是在单根数据线上,以每次一个二进制的0、1为最小单位逐位进行传输。
串行数据传送的特点是:
数据传送按位顺序进行,最少只需要一根传输线即可完成,节省传输线。
与并行通信相比,串行通信还有较为显著的特点,传送距离长,可以从几米到几千米。
在长距离内串行数据传送速率会比并行数据传送速率快,串行通信的通信时钟频率容易提高,串行通信的抗干扰能力十分强,其信号间的互相干扰完全可以忽略。
但是串行通信传送速度比并行通信慢得多,并行通信时间为T,则串行时间为NT。
2.1.2串行通信工作模式
通过单线传输信息是串行数据通信的基础。
数据通常是两个站(点对点)之间进行传送,按照数据流的方向可分成3种传送模式:
单工、半双工、全双工。
1.单工形式
单工形式的数据传送是单向的。
通信双方中,一方固定为发送端,另一方则固定为接收端。
信息只能沿一个方向传送,使用一根传输线。
单工形式一般用在只向一个方向传送数据的场合。
2.半双工形式
半双工通信使用同一根传输线,即可发送数据又可接收数据,但不能同时发送和接收。
在任何时刻只能由其中的一方发送数据。
另一方接收数据。
因此半双工形式既可以使用一条数据线,也可以使用两条数据线,
3.全双工形式
全双工数据通信分别由两根可以在不同的站点同时发送和接收的传输线进行传送,通信双方都能在同一时刻进行发送和接收操作。
在全双工方式中,每一端都有发送器和接收器,有两条传送线,可在交互式应用和远程监控系统中应用,信息传输速率较高。
在全双工方式中,每一端都有发送器和接收器,有两条传输线,可在交互式应用和远程监控系统中使用,信息传输效率较高。
2.1.3异步传输与同步传输
串行传输中,数据是一位一位按照到达的顺序依次传输的,每位数据位的发送和接收都需要时钟来控制[12]。
发送端通过发送时钟确定数据为的开始和结束,接收端需要在适当的时间间隔对数据流进行采样来正确的识别数据。
接收端和发送端必须保持步调一致,否则数据传输就会出现差错。
为了解决以上问题,串行传输可采用以下两种方法:
异步传输和同步传输[13]。
1.异步传输
异步传输方式中,字符是数据传输单位。
在通信的数据流中,字符间异步,字符内部各位间同步。
异步通信方式的“异步”主要体现在字符与字符之间通信没有严格的定时要求。
异步传送中,字符可以是连续地、一个个地发送,也可以是不连续地,随机地进行单独发送。
分为连续的串行数据发送与断续的串行数据传送。
2.同步传输
在同步传输方式中,比特块以稳定的比特流的形式传输,数据被封装成更大的传输单位,称为帧。
每个帧中含有多个字符代码,而且字符代码与字符代码之间没有间隙以及起始位和停止位。
与异步传输相比,数据传输单位的加长容易引起时钟漂移。
为了保证接收端能够正常地区分数据流中的每个数据位,收发双方必须通过某种方法建立起同步的时钟。
可以在发送器和接收器之间提供一条独立的时钟线路,在线路的一端(发送器或者接收器)定期地在每个比特时间中向线路发送一个短脉冲信号,另一端则将这些有规律的脉冲作为时钟。
这种技术在短距离传输时表现良好,但在长距离传输中,定时脉冲可能会和信息信号一样受到破坏,从而出现定时误差。
另一种方法是通过采用嵌有时钟信息的数据编码位向接收端提供同步信息。
2.1.4握手信号
握手信号实际上是控制信号,用来控制数据的传送。
通过握手信号,发送方可以通知接收方是否有数据要发送。
接收方通过握手信号统治发送方是否已经准备好了接收信号。
握手信号遵循某种协议。
当发送方和接收方处理数据的速度不一样时,可能会造成数据丢失。
1.硬件握手
在硬件握手中,发送方通过将某一个导线拉到高电平或者低电平,来表示发送方可以发送数据。
接收方已经准备好接收数据之后,也把某一个导线拉到高电平或者是低电平,来通知发送方,发送方一直在检测这个信号。
接收方可以再任何时候把这个信号变为无效,甚至是在接受一个数据块过程中。
当发送方检测到这个信号变为无效之后,就必须停止本次发送,知道这个信号变为有效。
2.软件握手
在软件握手中,以数据线上的数据信号来代替实际的硬件电路。
这种方法用在直接连接或者通过调制解调器连接的两台计算机之间进行双向通信的场合。
对于软件握手现在已经建立了一些标准协议,其中最常用的是通信协议。
通信协议是指通信双方的一种约定,约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定。
3.硬件和软件结合的握手方法
如果使用个人计算机或终端通过调制解调器和主计算机进行通信,那么调制解调器使用硬件握手方法和个人计算机联系,主计算机和调制解调器之间也使用硬件握手方法,主计算机和个人计算机之间将使用软件握手方法进行联系。
因此,个人计算机必须要编程,仅当调制解调器的DSR(有时可能使用CD)线电位变高和软件停止信号没有收到时,软件才送出一个通知信号。
一些计算机自动检测硬件握手信号,这些计算机等待硬件握手信号变高以后送出一个字符,所以程序只需要处理软件握手信号。
2.1.5通信参数
串行端口的通信方式是将字节拆分成一个接着一个的位再传送出去。
接到此电位信号的一方再将此一个一个的位组合成原来的字节,如此形成一个字节的完整传送。
在传输进行的过程中,双方明确传送信息的具体方式,否则双方就没有一套共同的译码方式,从而无法了解双方所传过来的信息的意义。
因此双方为了进行通信,必须遵守一定的通信规则,这个共同的规则就是通信端口的初始化。
通信端口的初始化必须对以下几项参数进行设置。
1.数据的传输速度
串行通信的传输受到通信双方配备性能及通信线路的特性所左右,收、发双方必须按照同样的速率进行串行通信,即收、发双方采用同样的数据传输率。
数据传输率指的是串行通信中每一秒所传送的数据位数,单位是bit/s。
经常可以看到仪器或Modem的规格书上都写着19200bit/s、38400bit/s……,所指的就是数据传输率。
2.数据的传送单位
一般串行通信端口所传送的数据是字符型,若用来传输文件,则会使用二进制的数据类型。
当使用字符型时,工业界使用到的有ASCⅡ字符码及JIS字符码;ASCⅡ使用了8位形成一个字符,而JIS码则以7位形成一个字符。
不同的情形下(依据使用的协议),会使用到不同的传输单位。
使用多少位合成一个字节必须先行确定。
3.奇偶校验位
在串口通信中一种简单的检错方式。
有四种检错方式:
偶、奇、高和低。
当然没有校验位也是可以的。
对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。
例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。
如果是奇校验,校验位位1,这样就有3个逻辑高位。
高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。
这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
4.停止位
用于表示单个包的最后一位。
典型的值为1,1.5和2位。
由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
2.2RS-232串口通信标准
RS-232-C是美国电子工业协会EIA(ElectronicIndustryAssociation)制定的一种串行物理接口标准。
RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数。
RS-232-C总线标准设有25条信号线,包括一个主通道和一个辅助通道。
如信号电平、信号线功能、电气特性、机械特性等都做了明确规定。
2.2.1电气特性
首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(DataTerminalEquipment)与数据通信设备DCE(DataCommunicationEquipment)而制定的。
因此这个标准的制定,并未考虑计算机系统的应用要求。
但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。
显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。
有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了。
其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。
由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。
RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。
在TXD和RXD上:
逻辑1(MARK)=-3V~-15V/逻辑0(SPACE)=+3~+15V
在RTS、CTS、DSR、DTR和DCD等控制线上:
信号有效(接通,ON状态,正电压)=+3V~+15V
信号无效(断开,OFF状态,负电压)=-3V~-15V
以上规定说明了RS-323C标准对逻辑电平的定义。
对于数据(信息码):
逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)V之间。
2.2.2接口连接器
由于RS-232C并未定义连接器的物理特性,因此,出现了DB-25和DB-9各种类型的连接器,其引脚的定义也各不相同。
现在计算机上一般只提供DB-9连接器,都为公头。
相应的连接线上的串口连接器也有公头和母头之分。
作为多功能I/O卡或主板上提供的COM1和COM2两个串行接口的DB-9连接器,它只提供异步通信的9个信号引脚,见图2.1,各针脚的信号功能描述见表2.1。
图2.1DB9串口连接器
表2.19针串行口的阵脚功能
针脚
符号
通信方向
功能
1
DCD
计算机→调制解调器
载波信号检测
2
RXD
计算机←调制解调器
接收数据
3
TXD
计算机→调制解调器
发送数据
4
DTR
计算机→调制解调器
数据终端准备好
5
GND
计算机=调制解调器
信号地线
6
DSR
计算机←调制解调器
数据装置准备好
7
RTS
计算机→调制解调器
请求发送
8
CTS
计算机←调制解调器
清除发送
9
RI
计算机←调制解调器
振铃信号指示
2.2.3近距离通信线路连接
当两台RS-232C串口设备通信距离较近(<15m)时,可以用电缆线直接将来台设备的RS-232C端口连接,若通信距离较远(>15m)时,需附加调制解调器(Modem)。
在RS-232C的应用中,很少严格按照RS-232C标准。
其主要原因是因为许多定义的信号在大多数的应用中并没有用上。
当通信距离较近时,通信双方不需要Modem,可以直接连接,这种情况下,只需要少数几根信号线。
最简单的情况,在通信中根本不需要RS-232C的控制联络信号,只需3根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。
三线连接是两台串口通信设备之间的最简单连接,接收脚与发送脚交叉连接是因为在直连方式时,把通信双方都当做数据终端设备看待,双方都可发也可收。
2.3计算机中的串行端口
在PC机上,有各种各样的接头,其中有两个9针的接头区,见图2.2,这就是串行通信端口。
PC机上的串行接口有多个名称:
RS-232C口、串口、通信口、COM口、异步口等。
图2.2PC机上的串行端口
2.3.1查看串行端口信息
1查看设备信息
进入Windows系统,单击“我的电脑”弹出系统属性对话框,单击“硬件”项,在“设备管理器”列表中有端口COM和LPT设备信息,见图2.3所示。
图2.3查看端口设备信息
2查看端口属性
选择通信端口COM1,单击右键,选择“属性”,可以查看端口的低级配置(见图2.4)及其资源(见图2.5)。
在端口设置选项卡中,可以看到缺省的数据传输率和其他设置,这些设置可以再端口设置中改变,也可以在应用程序中很方便地修改。
图2.4查看端口设置
图2.5查看端口资源
2.3.2串行端口的中断
1.中断概述
中断即IRQ(InterruptRequest)。
CPU一般情况下是连续进行工作,一旦外围设备(如打印机、串行端口等)需要CPU处理事件时,就会通过硬件线路(即中断线路)来通知CPU。
CPU收到通知后,就会停下正在进行的工作,转而去执行外设的请求。
IRQ由中断控制器(8259A)处理,每一个中断控制器有8个中断输入。
现在的系统一般有两个中断控制器,以功能处理16个中断,从IRQ0到IRQ15。
由于第二个中断控制器需要接收第一个中断控制器的一个输入,这样第一个中断控制器就被占用了一个中断输入,因此,中断控制器实际上只能处理15个中断。
表2.2表示了15个中断设置。
表2.2中断设置
中断号
中断设置
中断号
中断设置
IRQ0
系统定时器
IRQ9
未定
IRQ1
键盘
IRQ10
未定
IRQ3
COM1串行端口
IRQ11
未定
IRQ4
COM2串行端口
IRQ12
PS/2鼠标
IRQ5
未定
IRQ13
辅助处理器
IRQ6
软驱
IRQ14
主IDE
IRQ7
并行端口
IRQ15
从IDE
IRQ8
实时时钟
中断请求的流程如下。
(1)由设备发出中断请求
(2)8259A收到中断请求
(3)检查此中断的优先级来决定是否把中断送给CPU
(4)等到CPU接受此中断,然后向8259A送出信号
(5)中断的参数由8259A发送给CPU
(6)通过中断参数可以得到中断服务程序的入口地址
(7)CPU执行终端服务程序
2.查看计算机内的中断
进入Windows系统中,以此打开“我的电脑”和“设备管理器”项,在“查看”菜单项选择“依照类型排序资源”,打开中断请求(IRQ)项,可以看到计算机中各设备的中断分配信息,如图2.6所示。
图2.6查看计算机内设备中断信息
2.3.3串行端口的地址
1.地址概述
在计算机内,每个设备都有一个地址。
当CPU需要传送信息或者是从外围设备读取信息时,必须知道信心在什么地方,这个地方就是外围设备的地址。
在计算机内部使用16进制的方式记录每个外围设备的地址,每个设备的地址都是不一样的,这样才能保证信息的读写不会出错。
一个设备所要占用的地址号码可能不止一个,如果需要占用多个地址,那么所占用的地址一般情况连续的。
1.查看计算机内的地址
进入Windows系统中,以此打开“我的电脑”和“设备管理器”项,在“查看”菜单项选择“依照类型排序资源”,打开输入/输出(I/O)项,可以看到计算机中各段设备的地址分配信息,如图2.7所示。
图2.7查看计算机内的设备地址信息
1.串行端口的地址及寄存器
COM1与COM2的地址是3F8~3FF和2F8~2FF,在这个范围内每个地址都有不同的功能,这些功能分别通过寄存器来实现。
寄存器是用来暂时存放信息的地方,这些信息以位的形式存储,一般以一个字节作为一个单位。
读写寄存器就是读取这些位所代表的状态或控制某些功能,读写这些寄存器就可以执行与串行端口相关的功能。
2.4串口通信测试
在进行串口开发之前,一般要进行串口测试,经常使用的工具是“串口测试助手”程序。
它是一个适用于Windows平台的串口监视、串口测试程序。
它可以在线设置各种通信速率、通信端口等参数,既可以发送字符串命令,也可以发送文件,可以设置自动发送/手动发送方式,可以十六进制显示接收到的数据等,从而提高串口开发效率。
以PC机与XMT-3000A智能仪表串口通信为例介绍“串口测试助手”的使用。
2.4.1系统连接
观察所用计算机主机箱后RS-232C串口的数量、位置和几何特征,查看计算机与智能仪表的串口连接线及其端口。
在计算机与智能仪表通电前,按图2.8所示将传感器Cu50、上、下限报警器指示灯与XMT-3000智能仪表连接,通过串口线将计算机与智能仪表连接起来,线路检查无误后接通电源。
图2.8PC机与智能仪器串口通信线路
2.4.2温度测量与控制
温度测量与控制具体实施步骤:
(1)正确设置仪表参数后,仪表PV窗显示当前温度测量值。
(2)给传感器升温,当温度测量大于上限报警值30℃时,上限指示灯L2亮,仪表SV窗显示上限报警信息。
(3)给传感器降温,当温度测量值小于上限报警值30℃,大于下限20℃时,上限指示灯L2和下限L1均灭。
(4)给传感器继续降温,当温度测量值小于下限报警值20℃时,下限指示灯L1亮,仪表SV窗下限报警信息。
2.4.3计算机串口设置
进入Windows系统,单击“我的电脑”项,弹出系统属性对话框,在“设备管理器”列表中有端口COM和LPT设备信息,选中通讯端口COM1,查看其属
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VB PC 串口 通信 技术研究