新VB串口通信程序设计典型实例修.docx

上传人:b****1 文档编号:692162 上传时间:2022-10-12 格式:DOCX 页数:48 大小:510.40KB
下载 相关 举报
新VB串口通信程序设计典型实例修.docx_第1页
第1页 / 共48页
新VB串口通信程序设计典型实例修.docx_第2页
第2页 / 共48页
新VB串口通信程序设计典型实例修.docx_第3页
第3页 / 共48页
新VB串口通信程序设计典型实例修.docx_第4页
第4页 / 共48页
新VB串口通信程序设计典型实例修.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

新VB串口通信程序设计典型实例修.docx

《新VB串口通信程序设计典型实例修.docx》由会员分享,可在线阅读,更多相关《新VB串口通信程序设计典型实例修.docx(48页珍藏版)》请在冰豆网上搜索。

新VB串口通信程序设计典型实例修.docx

新VB串口通信程序设计典型实例修

VB串口通信程序设计典型实例

利用VB开发串口通信程序既可以使用MSComm控件也可以调用WindowsAPI函数实现。

不过,只要MSComm控件可以被选用,我们推荐选择此控件实现,因为MSComm控件的功能和API调用一样强,甚至比它还好且使用起来更加简单。

在本章提供的串口通信程序设计中,除了PC与PC串口通信外,PC与单片机、PC与智能仪表、PC与PLC、PC与GSM短信模块等串口通信任务的实现均采用MSComm控件。

6.1PC与PC串口通信程序设计

当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需3根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。

本设计通过两台PC串口3线连接,介绍了利用API函数和MSComm控件设计串口通信程序的方法,包括字符与文件的发送与接收。

6.1.1PC与PC串口通信程序设计目的

(1)掌握PC与PC串口通信的线路连接方法。

(2)利用MSComm控件和API函数实现PC与PC串口通信的程序设计方法。

6.1.2PC与PC串口通信程序设计用软、硬件

本设计用到的硬件和软件清单如表6-1所示。

表6-1设计用软、硬件

序号

名称

数量

1

PC或IPC

2

2

串口通信线(三线制)

1

3

VisualBasic6.0

1

6.1.3PC与PC串口通信程序硬件线路图

线路说明,在计算机通电前,按图6-1所示将两台PC通过串口线连接起来:

计算机A串口COM1端口的TXD与计算机B串口COM1端口的RXD相连,计算机A串口COM1端口的RXD与计算机B串口COM1端口的TXD相连,计算机A串口COM1端口的GND与计算机B串口COM1端口的GND相连。

计算机A

计算机B

图6-1PC与PC串口通信线路

6.1.4设计任务

利用MSComm控件和VBAPI函数编写程序实现PC与PC串口通信。

任务要求,两台计算机互发字符并自动接收,如一台计算机输入字符串“Pleasereturnabc123”,单击“发送字符”命令,另一台计算机若收到,就输入字符串“abc123”,单击“发送字符”命令,信息返回到第一组的计算机。

实际上就是编写一个简单的双机聊天程序。

6.1.5任务实现

6.1.5.1利用MSComm控件实现字符型数据发送与接收

1.建立新工程

VB使用“工程”来管理每一个应用程序要使用的所有文件,每建立一个新程序,就要新建一个工程。

一个工程由窗体、标准模块、控件及应用所需的开发环境设置等组成。

运行VB程序,出现“新建工程”对话框,选择“标准EXE”,单击“打开”命令按钮,进入VB工程集成开发环境,窗体设计器中自动出现一个名为Form1的空白窗体。

2.程序界面设计

向空白窗体添加各种控件,以完成预定的各种功能。

开始一个项目的设计时,VB的工具箱中会有许多默认的控件让设计者予以选用,这些原本就出现在工具箱中的控件是内置控件,它提供了一些基本的系统设计组件给设计者,但功能比较特别的控件就不会出现在其中,如用来设计串口通信功能的控件MSComm就不在其中。

(1)添加串口通信控件MSComm。

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

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

选择“工程”菜单下的“部件…”子菜单,在弹出的“部件”对话框中,在“控件”选项卡属性中选中“MicrosoftCommControl6.0”复选框,单击“确定”按钮后,在工具箱中就出现了一个形似“电话”的图标,它就是MSComm控件。

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

图6-2程序窗体界面

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

(2)为了实现连续的自动接收,将工具箱中的Timer控件添加到程序窗体上。

(3)添加两个文本框控件:

Text1和Text2,用于输入要发送的字符和显示要接收的字符。

(4)添加两个标签控件:

Label1和Label2,作为发送和接收字符区的标签。

(5)添加一个按钮控件:

Command1执行发送字符命令。

程序设计界面如图6-2所示。

3.属性设置

从属性窗口设置属性时,只需从对象列表框中选择待设置属性的对象,然后从属性列表的左列选择属性,最后在属性列表的右列中输入或选择新的属性值。

程序窗体、控件对象的主要属性设置如表6-2所示。

表6-2窗体、控件对象的主要属性设置

控件类型

主要属性

功能

Form

(名称)=COMForm

窗体控件

BorderStyle=3

运行时窗体固定大小

Caption=PC与PC串口通信

窗体标题栏显示程序名称

Label

(名称)=Label1

标签控件

Caption=显示接收字符区:

标签文本

Label

(名称)=Label2

标签控件

Caption=输入发送字符区:

标签文本

TextBox

(名称)=Textsend

文本框控件

MultiLine=True

允许多行显示

ScrollBars=2-Vertical

垂直滚动条可用

TextBox

(名称)=TextReceive

文本框控件

MultiLine=True

允许多行显示

ScrollBars=2-Vertical

垂直滚动条可用

CommandButton

(名称)=Cmdsend

按钮控件

Caption=发送字符

手动发送字符

MSComm

(名称)=MSComm1

串口通信控件

其他属性在程序中设置

Timer

(名称)=Timer1

时钟控件

Enabled=True

时钟初始可用

Interval=500

设置发送周期(ms)

两台计算机中VB程序界面及属性设置应完全相同,尤其MSComm控件的InputMode和Settings属性值应相同。

4.程序代码设计

程序要实现自动发送或读取,在VB程序中有两个方式可以达到,一是查询方式,利用查询事件是否发生,当发生时,去执行默认的程序代码。

可以使用计时器控件(Timer),该控件属性中的Interval可以控制计时器被启动的时间间隔,当时间间隔一到,便会执行原先放在计时器中的程序代码。

下面是利用查询方式编写的PC与PC串口通信的参考程序,代码如下所示:

'串口初始化

PrivateSubForm_Load()

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

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

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

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

EndSub

'把字符通过串口发送出去

PrivateSubCmdsend_Click()

IfTextsend.Text=""Then

pp=MsgBox("发送的数据不能为空!

",16)

ExitSub

EndIf

MSComm1.Output=Trim(Textsend.Text)

Fori=1To20000000

Nexti

EndSub

'通过时钟控制来自动接收字符

PrivateSubTimer1_Timer()

Dimbuf$

buf=Trim(MSComm1.Input)'将缓冲区内的数据读入buf变量中

IfLen(buf)<>0Then'判断缓冲区内是否存在数据

TextReceive.Text=TextReceive.Text+Chr(13)+Chr(10)+buf//回车换行

EndIf

EndSub

'关闭通信端口,停止程序运行

PrivateSubCmdquit_Click()

MSComm1.PortOpen=False

UnloadMe

EndSub

在Windows系统环境下,串口是系统资源的一部分。

应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。

在Windows系统的系统函数中,均包含了支持通信中断的功能。

二是使用事件方式。

MSComm控件提供事件回应功能,可以利用此功能达到自动发送/接收的目的。

下面是利用事件方式编写的PC与PC串口通信的参考程序,界面设计与图6-2基本相同,区别是事件方式不需要时间控件。

'串口初始化

PrivateSubForm_Load()

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

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

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

MSComm1.RThreshold=1'接收缓冲区每收到一个字符都会使MSComm控件触发OnComm事件

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

EndSub

'把字符通过串口发送出去

'启动定时器

PrivateSubCmdsend_Click()

IfTextsend.Text=""Then

pp=MsgBox("发送的数据不能为空!

",16)

ExitSub

EndIf

MSComm1.Output=Trim(Textsend.Text)

EndSub

'MSComm的OnComm事件程序

'由CommEvent属性值的不同,将各自的程序代码写入相关的子程序中

'只要RThresold中的设定字符数到达时便会使得CommEvent属性值变成comEvReceive

'因此接收的子程序便会被执行

PrivateSubMSComm1_OnComm()

Dimbuf$

SelectCaseMSComm1.CommEvent

'通过取代每一个case表达式来处理每个事件与错误

CasecomEvCD'CD线的状态发生变化

CasecomEvCTS'CTS线的状态发生变化

CasecomEvDSR'DSR线的状态发生变化

CasecomEvReceive

buf=Trim(MSComm1.Input)'将缓冲区内的数据读入buf变量中

CasecomEvSend

EndSelect

TextReceive.Text=TextReceive.Text&buf

EndSub

'停止程序运行

PrivateSubCmdquit_Click()

UnloadMe

EndSub

'关闭通信端口,

PrivateSubForm_Unload(CancelAsInteger)

MSComm1.PortOpen=False

EndSub

5.运行程序

程序设计、调试完毕,单击工具栏快捷按钮“启动”,运行程序。

两台计算机同时运行本程序。

首先在一台计算

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

当前位置:首页 > 工作范文 > 行政公文

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

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