串口通信论文.docx

上传人:b****8 文档编号:11485820 上传时间:2023-03-01 格式:DOCX 页数:60 大小:1.33MB
下载 相关 举报
串口通信论文.docx_第1页
第1页 / 共60页
串口通信论文.docx_第2页
第2页 / 共60页
串口通信论文.docx_第3页
第3页 / 共60页
串口通信论文.docx_第4页
第4页 / 共60页
串口通信论文.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

串口通信论文.docx

《串口通信论文.docx》由会员分享,可在线阅读,更多相关《串口通信论文.docx(60页珍藏版)》请在冰豆网上搜索。

串口通信论文.docx

串口通信论文

基于VB环境下的串口通信设计

摘要

串口是计算机上一种非常通用的设备通讯协议,串口同时也是仪器仪表设备通用的通讯协议,串口通讯协议也可以用于获取远程采集设备数据。

VisualBasic6.0环境下MicrosoftCommunicationcontrol(简称MSComm)是Microsoft公司提供的主要用于串行通信编程的ActiveX控件,“隐藏”了大部分串口通信的低层运行过程和许多繁琐的过程,从而可以通过简单地编程来实现串口通信。

本文主要介绍了在VisualBasic6.0环境下利用通信控件MSCOMM来实现计算机单机单串口、单机双串口、双机双串口之间串口通讯的实现。

以及利用MSCOMM控件来实现与智能仪表的通讯,利用VisualBasic6.0和数据库的连接来实现软件的登录,对数据库的增加、修改、删除操作。

关键词:

串口通讯,VisualBasic6.0,MSCOMM,数据库操作

 

前 言

随着互联网的不断发展,计算机间的相互通信已非常普遍,只要通过计算机的串行口就可以实现。

串行通讯技术具有简单且易实现的特性,许多设备和计算机都可以通过串口对外设进行控制、检测。

串口通讯日益成为计算机和外设进行通讯、获取由外设采集到的监测数据的一个非常重要的手段。

串行通讯配线数少,容易实现,长久以来一直被广泛采用,通过PC机的RS-232串行接口实现通讯是一种使用相当广泛的通信方式。

计算机一般提供了2个9针的RS-232标准串行口,简称COM1和COM2。

我们还可以通过插通信卡来获得额外的RS-232标准串行口。

利用这些串口可以与其他数字设备进行一般的数据通信,计算机串行接口主要应用于远程通信和低速输出设备。

由于串行数据通信传输线条数最少。

而且有许多较便宜的专用芯片来实现它,发送和接受器也简单。

因而对数据传输速度不高的计算机和数字设备间的进程通信,多采用串行通信实现。

通信就是两个设备之间的数据交换,是通过电信号来实现的。

VisualBasic6.0(以下简称VB)是一个Windows下简单易学、高效的可视化软件开发平台,它不但提供了良好的界面设计能力,而且在串口通信方面也有很强的功能。

它提供的MicrosoftCommunicationcontrol(简称MSComm)是Microsoft公司提供的主要用于串行通信编程的ActiveX控件,“隐藏”了大部分串口通信的低层运行过程和许多繁琐的过程,它使用户能够方便地访问Windows下串口通信驱动程序的大多数特性。

所以整个串行通信程序的开发过程变得十分简单易行,程序员不需要处理繁琐的细节,利用该通信控件,只需编写少量的代码就可实现主要应用功能和界面的设计,完成软件的开发过程。

本文主要介绍了在VisualBasic6.0环境下利用通信控件MSCOMM来实现计算机单机单串口、单机双串口、双机双串口之间串口通讯的实现。

同时引用对象库"MicrosoftADOExt2.1.ForDDLSecurity",简称为ADOX,实现软件的登录,对数据库的增加、修改、删除操作。

 

目 录

第1章计算机串口与VB及相关控件1

1.1 VB的开发环境及相关控件1

1.1.1 VB的开发环境简介1

1.1.2串口通讯控件MSCOMM简介1

1.1.3数据库控件简介4

2.2串口通信与RS-2324

1.2.1串口通讯4

1.2.2串口通信主要参数6

第2章基于VB环境下的串口通信及实现8

2.1单机但串口串口通讯9

2.1.1单机单串口硬件及其接线9

2.1.2软件设计及编程9

2.2单机双串口串口通讯13

2.2.1单机双串口硬件及其接线13

2.2.2、软件设计及编程14

2.3双机双串口通信18

2.3.1双机双串口硬件及其接线18

2.3.2软件设计及编程18

2.4其它界面及相关环节设计22

2.4.1软件其它界面设计22

2.4.2VB与数据库的连接26

2.5串口通信软件的安装31

第3章VB环境下串口通信的其它应用简介34

3.1PC与PLC通信应用简介34

3.1.1PLC通信应用简介34

3.1.2通行原理与方法34

3.1.3计算机与PLC间的通信35

3.2vb与智能仪表应用36

结束语37

参考文献38

第1章计算机串口与VB及相关控件

1.1 VB的开发环境及相关控件

1.1.1 VB的开发环境简介

1 硬件环境

(1)486DX/66MHz或更高的处理器(推荐Pentium或更高的处理器)。

(2)16MB或更多的内存。

WindowsNTWorkstation则要32MB内存。

(3)硬盘(最小安装VB至少要有30MB以上的空间,完全安装要115MB)。

(4)VGA或更高分辨率的彩色显示器。

(5)鼠标一个。

2 软件环境

Windows95及更高版本,或WindowsNTWorkstation4.0(推荐ServicePack3)或更高版本,如Windows98、Win2000或WindowsXP等。

MicrosoftVisualBasic6.0编译器

3 VisualBasic6.0简介

Visual Basic,简称VB,是一个Windows下简单、易学、高效的可视化软件开发平台,它以所见即所得的可视化界面设计风格和32位面向对象程序设计的特点,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。

成为开发人员广泛采用的编程工具。

VB不但提供了良好的界面设计能力,而且在串口通讯方面也有很强的功能。

他提供的MSComm通讯控件,该控件“隐藏”了大部分串口通信的底层运行过程和许多繁琐的过程,它使编程人员能够方便地访问Windows下串口通讯驱动程序的大多数特性。

所以整个串行通信程序的开发过程变得十分简单易行,程序员利用通信控件,编写少量的代码来实现主要应用功能和界面的设计,就可以完成软件的开发过程。

1.1.2串口通讯控件MSCOMM简介

VB提供了通信控件MSCOMM,文件名为MSCOMM.VBX。

该控件可设置串行通信的数据发送和接收,对串口状态及串行通信的信息格式和协议进行设置。

在通信过程中可以触发OnComm事件,在该事件过程进行数据检验处理及检错,还可以通过编程访问CommEvent 属性来了解通信的情况,进行收发数据的处理。

由于VB的串行通信组件并不会主动出现在工具箱里中,当我们需要MSComm控件时,首先要把它加入到工具箱中。

 

让MSComm控件出现在工具箱中的步骤如下

选择“工程”菜单下的“部件…”子菜单,在弹出的“部件”对话框中如下图1-1-1,

图1-1-1

在“控件”选项卡属性中选中“Microsoft Comm Control 6.0”复选框,如图1-1-2,单击“确定”按钮后,在工具箱中就出现了一个形似“电话”的图标,它就是MSComm控件。

如下图1-1-3所示

工具箱中有了MSComm控件,就可以选择MSComm控件的图标后将其添加到程序窗体上,利用该控件编程,PC就可以通过VB实现与串口设备的串口通信了。

 

  图1-1-2    图1-1-3

由于每个使用的MSComm控件对应着一个串行端口,如果应用程序需要访问

多个串行端口,必须添加多个MSComm控件。

通信控件的事件及基本属性如下:

 

(1)事件 

OnComm:

通信控件只提供了一个事件,该事件的触发可以对串口的通信事件及错误进行处理。

通过对CommEvent 属性的判断可知当前的通信错误和事件,分别对每个CommEvent 值进行编程就完成了对各个错误和事件的处理。

如:

CommEvent = MSCOMM—EV—SEND 表示发送事件。

(2)属性 

属性

作用

commport

设定通信连接端口代号,程序必须指定所要使用的串行端口号,windows系统使用所设定的端口与外界通信。

settings

设定通信口参数,其格式是“bbbb,p,d,s”,其中bbbb为通信速率(波特率),p为通信检查方式(奇偶校验),d为数据位数,s为停止位数,两个通信设备必须一致

portopen

设定通信口状态,若为真,通信端口打开,否则关

output

将字符写入输出缓冲区

input

读出缓冲区数据并清除缓冲区数据

inbuffercount

传回输出缓冲区中的字符数。

inputlen

设定串行端口读入字符串的长度

inputmode

设定接收数据的方式

CommEvent

设置并返回不触发OnComm事件时发送缓冲区被允许的最少字符数。

当缓冲区的字符少于设置的值时,则触发OnComm事件,并把CommEvent 设为MSCOMMM—EV—SEND。

当SThreshold =0则禁止发送触发OnComm事件,当SThreshold = 1 则发送缓冲区为空时就触发OnComm事件。

利用这一属性,就可完成发送数据后的一系列操作。

如:

对刚发送的数据进行处理,当串口是和MODEM通信时,发送完数据后可进行拆除线路联接、挂机等操作。

RThreshold

设置并返回不触发OnComm事件时接收缓冲区被允许的最多字符数。

当缓冲区的字符多于设置的值时,则触发OnComm事件,并把CommEvent设为MSCOMM—EV—RECEIVE,当RThreshold = 0 则禁止接收触发OnComm事件,当RThreshold=1则接收缓冲区有一个或更多字符时就触发OnComm事件。

利用这一属性,就可完成对串口接收数据的处理。

1.1.3数据库控件简介

DataGrid控件绑定相应数据库即可在程序运行时显示数据库的数据记录,控件添加步骤如上一节所示,添加控件名称为“MicrosoftDatagridControl6.0”,本课题只用到两个属性,如下图所示:

属性

作用

Click

选中数据库内的记录并显示在文本框内

DataSoucse

连接数据库地址

Adodc控件可以实现程序与数据库的连接并在DataGrid控件中显示数据记录,添加Adodc控件如下步骤:

选择“工程”菜单下的“部件…”子菜单,在弹出的“部件”的“控件”选项卡属性中选中“MicrosoftADODataControl6.0”复选框,如单击“确定”按钮后即可在窗口添加。

 

2.2串口通信与RS-232

通信是指计算机与外界的信息传输既包括计算机与计算机之间的传输也包括计算机与外部设备如终端、打印机和磁盘等设备之间的传输。

在通信领域内有两种数据通信方式并行通信和串行通信,在本次课题中我们只用串行通信。

1.2.1串口通讯

串口通信(SerialCommunication),是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据,每一位数据都占据一个固定的时间长度的一种通讯方式。

这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低,如图1-2-1所示。

图1-2-1

1、串行通信又可以分为两种类型:

同步通信、异步通信。

同步通信同步通信是一种比特同步通信技术,要求发收双方具有同频同相的同步时钟信号,只需在传送报文的最前面附加特定的同步字符,使发收双方建立同步,此后便在同步时钟的控制下逐位发送/接收。

发送数据格式如下图:

此时,传送的数据和控制信息都必须由规定的字符集(如ASCII码)中的字符所组成。

图中帧头为1个或2个同步字符SYN(ASCII码为16H)。

SOH为序始字符(ASCII码为01H),表示标题的开始,标题中包含源地址、目标地址和路由指示等信息。

STX为文始字符(ASCII码为02H),表示传送的数据块开始。

数据块是传送的正文内容,由多个字符组成。

数据块后面是组终字符ETB(ASCII码为17H)或文终字符ETX(ASCII码为03H)。

然后是校验码。

异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。

为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间是异步的(字符之间不一定有“位间隔”的整数倍的关系),但同一字符内的各位是同步的(各位之间的距离均为“位间隔”的整数倍)。

异步通信的数据格式如下图所示:

异步通信的特点:

不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。

2、根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。

(1)单工(simplex):

在单工通信方式下,信号只能按照一个方向上传输(正向或反向),任何时候不能改变信号的传输方向。

(2)半双工(halfduplex):

半双工通信允许信号在两个方向上传输,但某一时刻只允许信号在一个信道上单向传输。

(3)全双工(fullduplex):

全双工通信可以同时进行两个方向的信号的传输。

如下图所示:

单工半双工全双工

1.2.2串口通信主要参数

典型地串口用于ASCII码字符的传输通信使用3根线完成地线第五端口接收第二端口发送第三端口。

由于串口通信是异步的端口能够在一根线上发送数据同时在另一根线上接收数据。

其他线用于握手但是不是必须的。

串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。

对于两个进行通行的端口这些参数必须匹配:

1、波特率这是一个衡量通信速度的参数。

它表示每秒钟传送的bit的个数。

例如300波特表示每秒钟发送300个bit。

当我们提到时钟周期时我们就是指波特率例如如果协议需要4800波特率那么时钟是4800Hz。

这意味着串口通信在数据线上的采样率为4800Hz。

2、数据位这是衡量通信中实际数据位的参数。

当计算机发送一个信息包实际的数据不会是8位的标准的值是5、7和8位。

每个包是指一个字节包括开始/停止位数据位和奇偶校验位。

由于实际数据位取决于通信协议的选取术语“包”指任何通信的情况。

3、停止位用于表示单个包的最后一位。

典型的值为2位。

由于数据是在传输线上定时的并且每一个设备有其自己的时钟很可能在通信中两台设备间出现了小小的不同步。

因此停止位不仅仅是表示传输的结束并且提供计算机校正时钟同步的机会。

4、奇偶校验位在串口通信中一种简单的检错方式。

有四种检错方式偶、奇、高和低。

当然没有校验位也是可以的。

对于偶和奇校验的情况串口会设置校验位数据位后面的一位用一个值确保传输的数据有偶个或者奇个逻辑高位。

这样使得接收设备能够知道一个位的状态有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。

1.2.3RS232简介

RS-232接口标准RS-232-C接口也称标准串口是目前最常用的一种串行通讯接口。

它是在1970年由美国电子工业协会EIA联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。

它的全名是“数据终端设备DTE和数据通讯设备DCE之间串行二进制数据交换接口技术标准。

PC上使用简化了的9芯D型插座。

现在的电脑一般有两个串行口COM1和COM2你到计算机后面能看到9针D形接口就是了(如下图1-2)。

现在都把RS232接口叫做DB9。

现在有很多手机数据线或者物流接收器都采用COM口与计算机相连。

典型地,串口用于ASCII码字符的传输。

通信使用3根线完成:

(1)地线,

(2)发送,(3)接收。

由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。

其他线用于握手,但是不是必须的。

现在计算机上一般只提供DB9连接器,都为公头。

相应的连接线上的串口连接器也有公头和母头之分,见图1-2-3。

它只提供异步通信的9个信号引脚,见图1-2-4。

各引脚的信号功能描述见图1-2-5所示:

(注:

原来的RS-232C是设计用来连接调制解调器作传输之用的,因此其引脚意义通常也和调制解调器传输有关,本次课题不需要连接调制解调器)

图1-2-2计算机主板上的com接口

图1-2-3DB9公头与母头串口连接器图1-2-4DB-9串口连接器

 

针脚

符号

通信方向

功能

1

DCD

计算机→调制解调器

载波信号检测

2

RXD

计算机←调制解调器

接收数据

3

TXD

计算机→调制解调器

发送数据

4

DTR

计算机→调制解调器

数据终端准备好

5

GND

计算机=调制解调器

信号地线

6

DSR

计算机←调制解调器

数据装置准备好

7

RTS

计算机→调制解调器

请求发送

8

CTS

计算机←调制解调器

清除发送

9

RI

计算机←调制解调器

振铃信号指示

图1-2-5DB-9串口引脚功能说明

第2章基于VB环境下的串口通信及实现

在vb环境下设计单机单串口通信,单机双串口通信,双机双串口通信实现RS232全双工异步通信,本次设计vb环境下的串口通讯设计的思路如下:

启动页面首先判断数据库文件是否存在,如果不存在则建立数据文件。

然后延时两秒后进入登录界面。

输入正确的用户名和密码后登录选择串口通信方式,串口通信有三种分别为单机单串口通信、单机双串口通信、双机双串口通信。

也可以从登录界面选择账号维护按钮进行账号的维护,输入管理员密码可以修改已有用户名的密码,或者输入数据库管理员密码对用户信息数据库的添加账号,修改密码,删除用户信息的操作。

设计工艺流程图如下:

 

2.1单机但串口串口通讯

2.1.1单机单串口硬件及其接线

1、所用的硬件和软件清单见表2-2-1

序号

名称

数量

1

PC计算机(具有一个串口)

1

2

串口通信线(3线制)

1

3

VisualBasic6.0

1

表2-2-1所用软、硬件

2、线路说明

当实现单机串口通讯时,可将RS-232-C的第2引脚(RXD)与第3引脚(TXD)短路,那么由第3引脚的输出信号就会被发送到第2引脚而送到同一串行端口的输入缓冲区,即可将数据读入,即可完成本机发送本机接收的通讯。

2.1.2软件设计及编程

1添加一个窗体,为了实现连续的自动接收,将工具箱中的Timer控件添加到程序窗体上,添加两个文本框控件,添加两个标签控件添加五个按钮控件,具体清单见下表:

控件类型

名称

Caption属性

作用

Text

Text1

数据发送区

Text

Text2

数据接收区

Label

Label1

数据编辑区

Label

Label2

数据接收区

CommandButton

Command1

发送

CommandButton

Command2

清除

清除接收区数据

CommandButton

Command3

关闭

退出窗口

CommandButton

Command4

接收

手动时手动接收数据

CommandButton

Command5

自动/手动

手自动接收切换

MSComm

MSComm1

/

通讯控件

Timer

Timer1

Timer1.Interval=60

自动接收数据

1界面设计如下图所示:

3界面功能:

可以实现单机单串口中数据的的自动和手动接收,手动按钮可以改变数据的接收方式,发送按钮可以把数据编辑区内的数据写入输出缓冲区,清除按钮可以清除数据接收区的数据,接收按钮可以实现手动状态下接收缓冲区的数据,关闭按钮可以实现退出此窗口。

时间控件实现在自动状态下自动接收数据,MSCOMM控件实现连接、初始化com端口参数。

4下面是编写的PC单机串口通信的参考程序,代码如下所示:

'窗口初始化代码(波特率为9600bit/s的速度传输,不进行奇偶校验,每次传输的数据为8位,停止位是1位:

PrivateSubForm_Load()

MSComm1.CommPort=1'设置通信端口号为COM1

MSComm1.Settings="9600,n,8,1"'设置串口1参数

MSComm1.InputMode=0'接收文本型数据

MSComm1.PortOpen=True'打开通信端口1

Command4.Enabled=False'初始状态为自动接收

EndSub

'发送按钮代码

PrivateSubCommand1_Click()

MSComm1.Output=Trim(Text1.Text)'输出发送文本框的内容

IfCommand4.Enabled=FalseThen

Timer1.Enabled=True'计时器不可用

EndIf

EndSub

'接收按钮代码

PrivateSubCommand4_Click()

String1=MSComm1.Input’接收缓冲区数据

IfString1=0Then

Text2.Text=""

Else

Text2.Text=String1

EndIf

EndSub

 

'清除按钮代码

PrivateSubCommand3_Click()

Text2.Text=""‘清除数据接收区的数据

EndSub

'手自动切换按钮代码

PrivateSubCommand5_Click()

Command4.Enabled=Not(Command4.Enabled)'切换接收按钮的可否使用属性

IfCommand5.Caption="自动"Then'切换接收按钮的名称属性

Command5.Caption="手动"

Else

Command5.Caption="自动"

EndIf

EndSub

'退出按钮代码

PrivateSubCommand2_Click()

DimmyvalAsInteger

myval=MsgBox("真的要关闭此窗口吗?

",vbYesNo,"关闭窗口程序")

'myval接收msgbox的返回值

Ifmyval=vbYesThen'返回值是1时退出

IfMSComm1.PortOpen=TrueThen

MSComm1.PortOpen=False

EndIf

UnloadMe

Formxuanze.Show'选择窗口显示

Else

Cancel=1

EndIf

EndSub

 

'计时器控件代码

PrivateSubTimer1_Timer()

DimString1

IfMSComm1.PortOpen=TrueThen

Timer1.Enabled=False

String1=MSComm1.Input’接收缓冲区数据

IfString1=0Then

Text2.Text=""

Else

Text2.Text=String1

EndIf

EndIf

EndSub

5、调试运行程序后结果如下图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1