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

更新时间:2024-01-13 21:58:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

利用VB开发串口通信程序既可以使用MSComm控件也可以调用Windows API函数实现。不过,只要MSComm控件可以被选用,我们推荐选择此控件实现,因为MSComm控件的功能和API调用一样强,甚至比它还好且使用起来更加简单。

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

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

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

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

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

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

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

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

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

表6-1 序 号 1 2 3 PC或IPC 串口通信线(三线制) Visual Basic 6.0 设计用软、硬件 名 称 数 量 2 1 1 6.1.3 PC与PC串口通信程序硬件线路图

线路说明,在计算机通电前,按图6-1所示将两台PC通过串口线连接起来:计算机A串口COM1端口的TXD与计算机B串口COM1端口的RXD相连,计算机A串口COM1端口的RXD与计算机B串口COM1端口的TXD相连,计算机A串口COM1端口的GND与计算机B串口COM1端口的GND相连。

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

PC机AA 计算机PC机BB 计算机TXDCOM1RXDGNDTXDRXDGNDCOM1

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

6.1.4 设计任务

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

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

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

6.1.5 任务实现

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

1.建立新工程

VB使用“工程”来管理每一个应用程序要使用的所有文件,每建立一个新程序,就要新建一个工程。一个工程由窗体、标准模块、控件及应用所需的开发环境设置等组成。

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

2.程序界面设计

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

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

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

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

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

– 173 –

Visual Basic数据采集与串口通信测控应用实战

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

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

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

(3)添加两个文本框控件:Text1 和Text2,用于输入要发送的字符和显示要接收的字符。

(4)添加两个标签控件:Label1和Label2,作为发送和接收字符区的标签。

(5)添加一个按钮控件:Command1执行发送字符命令。 程序设计界面如图6-2所示。 图6-2 程序窗体界面

3.属性设置

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

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

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

主 要 属 性 (名称) = COMForm Form BorderStyle = 3 Caption = PC与PC串口通信 Label (名称) = Label1 Caption = 显示接收字符区: (名称) = Label2 Caption = 输入发送字符区: (名称) = Textsend TextBox MultiLine = True ScrollBars = 2-Vertical (名称) = TextReceive TextBox MultiLine = True ScrollBars = 2-Vertical CommandButton MSComm (名称) = Cmdsend Caption = 发送字符 (名称) = MSComm1 其他属性在程序中设置 (名称) = Timer1 Timer Enabled = True Interval = 500 – 174 –

窗体控件 运行时窗体固定大小 窗体标题栏显示程序名称 标签控件 标签文本 标签控件 标签文本 文本框控件 允许多行显示 垂直滚动条可用 文本框控件 允许多行显示 垂直滚动条可用 按钮控件 手动发送字符 串口通信控件 时钟控件 时钟初始可用 设置发送周期(ms) 功 能 Label 第6章 VB串口通信程序设计典型实例

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

4.程序代码设计

程序要实现自动发送或读取,在VB程序中有两个方式可以达到,一是查询方式,利用查询事件是否发生,当发生时,去执行默认的程序代码。可以使用计时器控件(Timer),该控件属性中的Interval可以控制计时器被启动的时间间隔,当时间间隔一到,便会执行原先放在计时器中的程序代码。

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

' 串口初始化

Private Sub Form_Load()

MSComm1.CommPort = 1 ' 设置通信端口号为COM1 MSComm1.Settings = \ ' 设置串口1参数 MSComm1.InputMode = 0 ' 接收文本型数据 MSComm1.PortOpen = True ' 打开通信端口1 End Sub

' 把字符通过串口发送出去 Private Sub Cmdsend_Click() If Textsend.Text = \

pp = MsgBox(\发送的数据不能为空!\ Exit Sub End If

MSComm1.Output = Trim(Textsend.Text) For i = 1 To 20000000 Next i End Sub

' 通过时钟控制来自动接收字符 Private Sub Timer1_Timer() Dim buf$

buf = Trim(MSComm1.Input) ' 将缓冲区内的数据读入buf变量中 If Len(buf) <> 0 Then ' 判断缓冲区内是否存在数据

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

' 关闭通信端口,停止程序运行 Private Sub Cmdquit_Click() MSComm1.PortOpen = False Unload Me End Sub

在Windows系统环境下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。在Windows系统的系统函数中,均包含了支持通信中断的功能。

二是使用事件方式。MSComm控件提供事件回应功能,可以利用此功能达到自动发送/接收的目的。下面是利用事件方式编写的PC与PC串口通信的参考程序,界面设计与图6-2基本相同,区别是事件方式不需要时间控件。

'串口初始化

Private Sub Form_Load()

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

– 175 –

Visual Basic数据采集与串口通信测控应用实战

MSComm1.Settings = \ '设置串口参数 MSComm1.InputMode = 0 '接收文本型数据

MSComm1.RThreshold = 1 '接收缓冲区每收到一个字符都会使 MSComm 控件触发OnComm 事件 MSComm1.PortOpen = True '打开通信端口1 End Sub

'把字符通过串口发送出去 '启动定时器

Private Sub Cmdsend_Click() If Textsend.Text = \

pp = MsgBox(\发送的数据不能为空!\ Exit Sub End If

MSComm1.Output = Trim(Textsend.Text) End Sub

'MSComm 的 OnComm 事件程序

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

'只要 RThresold 中的设定字符数到达时便会使得 CommEvent 属性值变成 comEvReceive '因此接收的子程序便会被执行 Private Sub MSComm1_OnComm() Dim buf$

Select Case MSComm1.CommEvent

'通过取代每一个 case 表达式来处理每个事件与错误 Case comEvCD ' CD 线的状态发生变化 Case comEvCTS ' CTS 线的状态发生变化 Case comEvDSR ' DSR 线的状态发生变化 Case comEvReceive

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

TextReceive.Text = TextReceive.Text & buf End Sub

'停止程序运行

Private Sub Cmdquit_Click() Unload Me End Sub

'关闭通信端口,

Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False End Sub

5.运行程序

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

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

首先在一台计算机程序窗体中发送字符区输入要发送的字符,如“我是第一组,收到请回话!”,单击“发送字符”按钮,发送区的字符串通过COM1口发送出去。

如果联网通信的另一台计算机程序收到字符,则返回字符串,如“收到,我是第2组!”,如果通信正常该字符串将显示在接收区中。

程序运行界面如图6-3所示。

– 176 –

Visual Basic数据采集与串口通信测控应用实战

MsgBox \无效设备 DCB 块 \错误: \ retval = CloseHandle(ComNum) Init_Com = False Exit Function End If

Init_Com = True handelinitcom: Exit Function End Function '关闭程序

Private Sub BTNCloseCom_Click() Unload Me End Sub '关闭端口

Private Sub Form_Unload(Cancel As Integer) CloseHandle (ComNum) End Sub

4.运行程序

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

(1)首先在程序窗体中发送字符区输入要发送的字符,单击“发送数据”按钮,发送区的字符串通过COM1口发送出去。

(2)另一台计算机发送数据,本计算机自动读入并显示在接收数据区中。

程序运行界面如图6-5所示。

图6-5 程序运行界面

6.1.5.3 利用MSComm控件实现PC双串口互通信

如果一台计算机有两个串口,可通过串口线将两个串口连接起来:COM1端口的TXD与COM2端口的RXD相连,COM1端口的RXD与COM2端口的TXD相连,COM1端口的GND与COM2端口的GND相连,如图6-6(a)所示,这是串口通信设备之间的最简单连接(即三线连接),图中的2号接收脚与3号发送脚交叉连接是因为在直连方式时,把通信双方都当作数据终端设备看待,双方都可以发送也可以接收。

COM15 9 COM2 1 6 43 8 2 7 6 1 5 43 8 2 5 43 8 2 7 6 1 9 7 9 (a) (b)

图6-6 串口设备最简单连接

– 182 –

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

如果一台计算机只有一个串行通信端口可以使用,那么将第2脚与第3管脚短路,如图6-6(b)所示,那么第3脚的输出信号就会被传送到第2脚,用以发送到同一串行端口的输入缓冲区,程序只要再由相同的串行端口上作读取的操作,即可将数据读入,一样可以形成一个测试环境。

设计的参考代码如下:

' 串口初始化

' 串口1与串口2的通信参数应一致 Private Sub Form_Load()

MSComm1.CommPort = 1 ' 设置通信端口号为COM1 MSComm1.Settings = \ ' 设置串口1参数 MSComm1.InputMode = 0 ' 接收文本型数据

MSComm1.PortOpen = True ' 打开通信端口1 //设置串口 MSComm2.CommPort = 2 ' 设置通信端口号为COM2 MSComm2.Settings = \ ' 设置串口2参数 MSComm2.InputMode = 0 ' 接收文本型数据 MSComm2.PortOpen = True ' 打开通信端口2 End Sub

' 把字符通过串口发送出去 ' 启动定时器

Private Sub Cmdsend_Click()

MSComm1.Output = Trim(Textsend.Text) //发出数据 Timer1.Enabled = True End Sub ' 接收字符

Private Sub Timer1_Timer() Dim buf$

Timer1.Enabled = False

buf = Trim(MSComm2.Input) ' 将缓冲区内的数据读入buf变量中 If Len(buf) = 0 Then ' 判断缓冲区内是否存在数据 TextReceive.Text = \ Else

TextReceive.Text = buf End If End Sub

' 停止程序运行

Private Sub Cmdquit_Click() Unload Me End Sub

' 关闭通信端口,

Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False MSComm2.PortOpen = False End Sub

程序运行界面如图6-7所示。

图6-7 程序运行界面

– 183 –

Visual Basic数据采集与串口通信测控应用实战

6.2 PC与单片机串口通信程序设计

目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往往只负责数据的采集和通信,而上位机通常以基于图形界面的Windows系统为操作平台。为便于查询和保存数据,还需要数据库的支持,这种应用的核心是数据通信,它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而单片机和上位机之间数据通信则是整个系统的基础。

单片机和PC的通信是通过单片机的串口和PC串口之间的硬件连接实现的。

图6-8是本设计使用的单片机实验板。有关单片图6-8 单片机实验板 机实验板的详细信息请查询电子开发网http://www.dzkfw.com/。

6.2.1 PC与单片机串口通信程序实训目的

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

(2)掌握PC与单片机串口通信的Keil C51和VB程序设计方法。

6.2.2 PC与单片机串口通信程序设计用软、硬件

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

表6-4 序 号 1 2 3 4 PC(计算机) 单片机实验板(AT89C51、MAX232等) 串口通信线(三线制) VB 6.0 设计用软、硬件 名 称 数 量 1 1 1 1 6.2.3 PC与单片机串口通信程序硬件线路图

线路说明,如图6-9所示,数据通信的硬件上采用三线制,将单片机和PC串口的3个引脚(RXD、TXD、GND)分别连在一起,即将PC和单片机的发送数据线TXD与接收数据RXD交叉连接,两者的地线GND直接相连,而其他信号线如握手信号线均不用,采用软件握手的方式,这样既可以实现预定的任务又可以简化电路设计。

但由于单片机的TTL逻辑电平和RS-232C的电气特性完全不同,RS-232C的逻辑0电平规定为+3~+15V之间,逻辑1电平为?3~?15V之间,因此,在将PC和单片机的RXD和TXD交叉连接时必须进行电平转换,这里使用的是MAX232电平转换芯片。

– 184 –

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

PC机MAX232RXDCOM1TXDGNDTOUTRINTINROUTTXDRXDGNDAT89C51 图6-9 PC与单片机串口通信线路

单片机系统有LED显示器模块、继电器输出模块、蜂鸣器模块等。

6.2.4 设计任务

利用Keil C51和VB编写程序实现PC与单片机串口通信。任务要求。 1.设计任务1

PC通过串行口将数字(00,01,02,03…,FF,十六进制)发送给单片机,单片机收到后回传这个数字,PC接收到回传数据后显示出来,若发送的数据和接收到的数据相等,则串行通信正确,否则有错误。启始符是数字00,结束符是数字FF。

2.设计任务2

(1)测试通信状态。

先在文本框中输入字符串“Hello”,单击“测试”按钮,将字符串“Hello”发送到单片机,若PC与单片机通信正常,在PC程序的文本框中显示字符串“OK!”;否则,显示字符串“ERROR!”。

(2)循环计数。

单击“开始”按钮,文本框中数字从0开始累加,0、1、2、3??,并将此数发送到单片机的显示器上显示。当累加到10时,回到0重新开始累加,依次循环。任何时候,单击“停止”按钮,PC程序中和单片机显示器都停止累加,再单击“开始”按钮,接着停下的数继续累加。

(3)控制指示灯。

在单片机继电器接线端子的两个通道上分别接上两个指示灯,在PC程序界面上选择指示灯号,如1号灯,单击界面“打开”按钮,单片机上1号灯亮,同时蜂鸣器响;单击界面“关闭”按钮,1号灯灭,蜂鸣器停止响;同样控制2号灯的亮灭(蜂鸣器同时动作)。

6.2.5 任务实现

单片机和PC通信,在程序设计上涉及两个部分的内容。

一是单片机的C51程序,二是PC的串口通信程序和界面的编制。

6.2.5.1 利用Keil C51实现单片机与PC串口通信任务1

– 185 –

Visual Basic数据采集与串口通信测控应用实战

网络详细地址为:http://www.china-pub.com/51161。

6.2.5.2 利用VB实现PC与单片机串口通信任务1

1.程序界面设计

运行VB,创建标准的工程项目文件,设计程序窗体。设计的程序界面如图6-11所示。 (1)添加一个MSComm控件:默认的工具箱中没有MSComm串口通信控件,因此,首先要把它添加到工具箱中,再将MSComm控件添加到程序窗体上。

(2)添加两个按钮控件CommandButton,用于发送数字和关闭程序。

(3)添加一个框架控件Frame,用于功能显示。 图6-11 程序窗体界面 (4)添加一个文本控件TextBox,用于输入数字。 (5)添加一个标签控件Label,用于显示通信状态。

2.属性设置

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

表6-5 控 件 类 型 Form Frame TextBox Label CommandButton CommandButton MSComm

网络详细地址为:http://www.china-pub.com/51161。

名 称 MainForm Frame1 numText Label1 Cmdsend Cmdquit MSComm1 窗体、控件对象的主要属性设置

主 要 属 性 BorderStyle = 3 Caption = PC与单片机串口通信 Caption = 输入数据 Text = 0 Caption = 通信状态? Caption = 发送 Caption = 关闭 在程序中设置 功 能 运行时窗体固定大小 窗体标题栏显示程序名称 测试功能区 数据输入框 显示串口通信状态 发送数据命令 关闭程序命令 串口参数设置 6.2.5.3 利用Keil C51实现单片机与PC串口通信任务2(方法1)

网络详细地址为:http://www.china-pub.com/51161。

6.2.5.4 利用VB实现PC与单片机串口通信任务2(方法1)

1.程序界面设计

运行VB,创建标准的工程项目文件,设计程序窗体。

– 186 –

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

① 添加一个MSComm控件。默认的工具箱中没有MSComm串口通信控件,因此,首先要把它添加到工具箱中,再将MSComm控件添加到程序窗体上。

② 为了实现连续的字符发送和循环计数,添加两个Timer控件。

③ 为了功能分类,添加3个Frame控件。 ④ 为了选择指示灯号,添加两个OptionButton控件。 ⑤ 添加其他控件。两个文本控件TextBox,6个

按钮控件CommandButton。

图6-13 程序窗体界面 设计的程序界面如图6-13所示。

2.属性设置

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

表6-6 控 件 类 型 Form Frame Frame Frame TextBox TextBox OptionButton OptionButton CommandButton CommandButton CommandButton CommandButton CommandButton CommandButton MSComm Timer 名 称 MainForm Frame1 Frame2 Frame3 ReturnText NumText Option1 Option2 CmdTest CmdStart CmdStop CmdOpen CmdClose Cmdquit MSComm1 Timer1 窗体、控件对象的主要属性设置

主 要 属 性 BorderStyle = 3 Caption = PC机与单片机串口通信 Caption = 测试通信状态 Caption = 循环计数 Enabled = False Caption = 控制指示灯 Enabled = False Text = Hello Text = 0 Caption = 1号灯 Value = True Caption = 2号灯 Caption = 测试 Caption = 开始 Caption = 停止 Caption = 打开 Caption = 关闭 Caption = 退出 在程序中设置 Enabled = False Interval = 1000 功 能 运行时窗体固定大小 窗体标题栏显示程序名称 测试功能区 循环计数功能区 初始不可用 控制指示灯功能区 初始不可用 测试信息显示框 循环计数显示框 1号指示灯,初始选择 2号指示灯 测试单片机命令 开始计数命令 停止计数命令 打开指定指示灯命令 关闭指定指示灯命令 关闭程序命令 串口参数设置 时钟初始不可用 循环计数周期 3.编写程序代码

以下是实现PC与单片机串口通信任务2(方法1)的参考程序:

网络详细地址为:http://www.china-pub.com/51161。

– 187 –

Visual Basic数据采集与串口通信测控应用实战

6.2.5.5 利用Keil C51实现单片机与PC串口通信任务2(方法2)

以下是完成单片机与PC串口通信任务2(方法2)的C51参考程序:

网络详细地址为:http://www.china-pub.com/51161。

6.2.5.6 利用VB实现PC与单片机串口通信任务2(方法2)

程序界面设计如同方法1,如图6-13所示。

以下是实现PC与单片机串口通信任务2(方法1)的参考程序: '网络详细地址为:http://www.china-pub.com/51161。

6.3 PC与智能仪器串口通信程序设计

目前仪器仪表的智能化程度越来越高,大量的智能仪器都配备了RS-232通信接口,并提供了相应的通信协议,能够将测试、采集的数据传输给计算机等设备,以便进行大量数据的储存、处理、查询和分析。图6-15是某型号智能仪器示意图。

通常个人计算机(PC)或工控机(IPC)是智能仪器上位机的最佳选择,因为PC或IPC不仅能解决智能仪器(作为下

位机)所不能解决的问题,如数值运算、曲线显示、数据查询、

图6-15 智能仪器示意图

报表打印等;而且具有丰富和强大的软件开发环境。

6.3.1 PC与智能仪器串口通信程序设计目的

(1)掌握PC与智能仪器串口通信的线路连接方法。 (2)掌握PC与智能仪器串口通信的VB程序设计方法。

6.3.2 PC与智能仪器串口通信程序设计用软、硬件

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

表6-7 序 号 1 2 3 – 188 –

PC(计算机) XMT-3000A型智能仪表(需配置RS-232通信,上、下限报警继电器,DC24V电源等模块) 串口通信线(三线制) 设计用软、硬件 名 称 数 量 1 1 1 第6章 VB串口通信程序设计典型实例

4 5 6 热电阻传感器(Cu50) 指示灯(DC24V) Visual Basic 6.0 1 2 1 6.3.3 PC与智能仪器串口通信程序硬件线路图

1.线路说明

观察所用计算机主机箱后RS-232C串口的数量、位置和几何特征;查看计算机与智能仪器的串口连接线及其端口。

在计算机与智能仪器通电前,按图6-16所示将传感器Cu50、上、下限报警指示灯与XMT-3000A智能仪器连接。

PC机 PCCOM1TXDRXDGND 3 2 5 RS232141516RXDTXD GND常开2021 L2 ALM2 +24 25- DC24VXMT-3000A234910ALM1常开AC220VCu50 L11213 图6-16 PC与智能仪表串口通信线路

通过串口线将计算机与智能仪器连接起来:智能仪器的14端子(RXD)与计算机串口COM1的3脚(TXD)相连,智能仪器的15端子(TXD)与计算机串口COM1的2脚(RXD)相连,智能仪器的16端子(GND)与计算机串口COM1的5脚(GND)相连。

连接仪器与计算机串口线时,仪器与计算机严禁通电,否则极易烧毁串口。

2.XMT-3000A智能仪器的参数设置

XMT-3000A智能仪器在使用前应对其输入/输出参数进行正确设置,设置好的仪器才能投入正常使用。关于XMT-3000A智能仪器的通信协议参见第5.6.2节。

请按表6-8所示设置仪器的主要参数。

表6-8

仪器的主要参数设置

– 189 –

Visual Basic数据采集与串口通信测控应用实战

参 数 HiAL LoAL Sn diP ALP Addr bAud 参 数 含 义 上限绝对值报警值 下限绝对值报警值 输入规格 小数点位置 仪器功能定义 通信地址 通信波特率 30 20 传感器为:Cu50,则Sn=20 要求显示一位小数,则diP=1 ALP =10 1 4800 设 置 值 有关XMT-3000A智能仪表的详细信息请查询网站http://www.njcy.com/。

6.3.4 设计任务

编写VB程序实现PC与智能仪表串口通信。任务要求。 (1)自动连续读取并显示智能仪器温度测量值(十进制)。 (2)统计测量温度的平均值、最大值、最小值等。 (3)绘制温度实时变化曲线。

6.3.5 任务实现

网络详细地址为:http://www.china-pub.com/51161。

6.4 PC与PLC串口通信程序设计

可编程序逻辑控制器(简称PLC)主要是为现场控制而设计的,其人机界面主要是开关、按钮、指示灯等。其良好的适应性和可扩展能力而得到越来越广泛的应用。采用PLC的控制系统或装置具有可靠性高、易于控制、系统设计灵活、能模拟现场调试、编程使用简单、性价比高、有良好的抗干扰能力等特点。但是,PLC也有不易显示各种实时图表/曲线(趋势线)和汉字、无良好的用户界面、不便于监控等缺陷。

二十世纪90年代后,许多的PLC都配备有计算机通信接口,通过总线将一台或多台PLC相连接。计算机作为上位机可以提供良好的人机界面,进行系统的监控和管理,进行程序编制、参数设定和修改、数据采集等,既能保证系统性能,又能使系统操作简便,便于生产过程的有效监督。而PLC作为下位机,执行可靠有效的分散控制。用一台计算机(上位机)去监控下位机(PLC),这就要求PC与PLC之间稳定、可靠的数据通信。 图6-19是某型号PLC示意图。 图6-19 PLC产品示意图

– 190 –

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

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

(1)掌握PC与PLC串口通信的线路连接方法。 (2)掌握PC与PLC串口通信的VB程序设计方法。

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

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

表6-10 序 号 1 2 3 4 5 6 7 PC(计算机) PLC(西门子:S7-200,CPU224) PLC(三菱:FX2N-32MR) SC-09编程电缆,PC/PPI电缆 开关,指示灯(DC24V) 直流电源(OUT:DC24V) Visual Basic 6.0 设计用软、硬件

名 称 数 量 1 1 1 各1 各10 1 1 6.4.3 PC与PLC串口通信程序设计硬件线路图

线路说明:西门子S7-200PLC系统为用户提供了灵活的通信功能。集成在S7-200中的点对点接口(PPI)可用普通的双绞线作波特率高达9600bit/s的数据通信,用RS-485接口实现高速用户可编程接口,可使用专用位通信协议(如ASCII)做波特率高达38.4 kbit/s的高速通信并可按步调整。而PC的接口为RS-232,两者之间需要进行电平转换。利用西门子公司的PC/PPI电缆,可将S7-200CPU与计算机连接起来组成PC/PPI网络,实现点对点通信,如图6-20所示。

+DC24V-PC1L0.00.10.22L0.40.50.63L0.71.01.1NS7-200 PLC编程口DC24V1M0.00.10.20.30.42M1.01.11.21.3ML+L1AC220VRS232COM1RS485PC/PPI 图6-20 PC与S7-200PLC串口通信线路

FX2N型PLC可以通过自身的编程口和PC通信,也可以通过通信口和PC通信。通过编程口,PC只能和一台PLC通信,实现对PLC中软元件的间接访问(每个软元件具有惟一的

– 191 –

Visual Basic数据采集与串口通信测控应用实战

地址映射);通过通信口,一台PC可以和多台PLC通信,并实现对PLC中软元件的直接访问,两者使用不同的通信协议。PC通过FX2N的编程口构成的二级控制系统如图6-21所示,按钮、行程开关等的常开触点接PLC开关量输入1通道,PLC开关量输出1通道接指示灯。

+PC-DC24VSC-09编程电缆COM1RS232转换器RS422COM1Y0Y1Y2编程口X17X16X15Y8Y9Y10FX2N PLCY15Y16Y17X5X4X3X2X1X0COMNLAC220V

图6-21 PC与FX2NPLC串口通信线路

6.4.4 设计任务

利用VB编写程序实现PC与PLC串口通信。任务要求。

(1)开关量输入。利用继电器开关改变某个输入端口的状态,程序读取该端口的输入状态(打开/关闭),并在程序中显示。

(2)开关量输出。程序运行界面中指定元件地址,单击置位/复位命令按钮,设置指定地址的元件端口(继电器)状态为ON或OFF,使线路中指示灯亮/灭。

6.4.5 任务实现

6.4.5.1 PC与西门子S7-200PLC串口通信

网络详细地址为:http://www.china-pub.com/51161。

6.4.5.2 PC与三菱FX2N-32MRPLC串口通信

1.PLC端(下位机)程序

为了保证FX2N-32MR型PLC能够正常与PC进行通信,需要在PLC中运行如图6-24所示的一段程序。其功能是设置PLC的通信参数:波特率为9600b/s,7位数据位,1位停止位,偶校验,站号为0。

– 192 –

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

图6-24 PLC通信参数设置程序

2.PC端(上位机)VB程序

(1)程序界面设计。

运行VB,创建标准的工程项目文件,设计程序窗体。 ??添加串口通信控件MSComm和时钟控件Timer。 ??添加其他控件。两个Frame控件,4个Label控件,两个ComboBox控件,两个Shape控件,4个CommandButton控件。 设计的程序界面如图6-25所示。 (2)属性设置。 程序窗体、控件对象的主要属性设置如表6-12所示。

表6-12 控 件 类 型 Form Frame Frame ComboBox ComboBox Shape1 Shape2 Label Label CommandButton CommandButton CommandButton CommandButton Timer MSComm 窗体、控件对象的主要属性设置 名 称 frmMain Frame1 Frame2 ListInAddr ListOutAddr InAlarm OutAlarm Label1 Label2 Cmdset Cmdreset Cmdtest Cmdquit Timer1 MSComm1 主 要 属 性 Caption = PC与PLC串口通信 Caption = 开关量输入 Caption = 开关量输出 Style = 0 Style = 0 FillStyle = 0-Solid Shape = 3-Circle FillStyle = 0-Solid Shape = 3-Circle Caption = 地址: Caption = 状态: Caption = 置位 Caption = 复位 Caption = 回路测试 Caption = 退出 Interval = 500 在程序中设置 功 能 窗体标题栏显示程序名称 显示输入地址、端口状态信息 显示输出地址、端口状态信息 列出元件所有输入地址 列出元件所有输出地址 填充样式,实线 圆形,输入端口信号指示 填充样式,实线 圆形,输出端口信号指示 地址输入框标签 端口信号指示灯标签 置指定地址端口为ON 置指定地址端口为OFF 检查串口连接是否正常 关闭程序 定时查询输入端口状态 串口参数设置

图6-25 程序窗体界面

(3)程序代码设计。

网络详细地址为:http://www.china-pub.com/51161。

6.5 PC与读卡器串口通信程序设计

– 193 –

Visual Basic数据采集与串口通信测控应用实战

由于非接触式ID卡使用时,无须接触,卡片无源防水、防污,使用寿命长等,因此,

已经大量应用于门禁系统中的发卡器,俱乐部管理,机房管理,网吧管理,图书馆,学生学籍、听课、准考、上机、借书、消费管理,考勤管理,就餐管理,游泳池管理,银行账户管理、回单柜管理,证券营业部股民交易查询系统等。

本节介绍北京远兴时代科技有限公司生产的YX-K4-232型

ID卡读卡器与PC串口通信的VB程序设计方法。图6-27是读

图6-27 读卡器产品示意图 卡器示意图。

6.5.1 PC与读卡器串口通信程序设计目的

(1)掌握PC与读卡器串口通信的线路连接方法。 (2)掌握PC与读卡器串口通信的VB程序设计方法。

6.5.2 PC与读卡器串口通信程序设计用软、硬件

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

– 194 –

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

表6-13 序 号 1 2 3 4 5 PC(计算机) 串口通信线(三线制) 读卡器(YX-K4-232型) ID卡 Visual Basic 设计用软、硬件

名 称 数 量 1 1 1 1 1 6.5.3 PC与读卡器串口通信程序硬件线路图

线路说明。在计算机通电前,按图6-28所示将PC与YX-K4-232型IC卡读卡器通过串口线连接起来。

PC机串口连接电缆COM1读卡器COM 图6-28 PC与读卡器串口通信线路

当卡片靠近读卡器时,读卡器与卡片之间通过内部的射频电路和感应天线感应,使读卡器获得特定的加密信号,进而翻译后成为某种格式的卡号,以某种通讯协议输出给目标设备(如PC等)。

有关读卡器的详细信息请查询网站http:// www.yxcard.com/。

6.5.4 设计任务

利用VB编写程序实现PC与读卡器串口通信。任务要求。 由读卡器读取ID卡的卡号,并显示在程序运行界面中。

6.5.5 任务实现

网络详细地址为:http://www.china-pub.com/51161。

6.6 PC与GSM模块串口通信程序设计

在很多监控领域,各种监控设备大多还是有线方式传输,当距离遥远时,监控设备的安装、维护非常不便,因为监控端远离采集端,铺设电缆的投入有时可以说是巨大的。通过无线方式来交换数据,则可以有效地避免这些问题。

GSM网络是目前国内覆盖范围最广,应用最普遍的无线通信网络,利用GSM网络构建远程监测系统时,完全可利用现成的GSM无线网络而无需再新建基站。

利用GSM网络短消息业务(SMS)实现监测领域的应用具有以下优点:通信网络覆盖面广、网络设施完备,不需投资建设基础设施;实施与运行费用低;可以实现在无人情况、环

– 195 –

图6-31 GSM模块示意图

Visual Basic数据采集与串口通信测控应用实战

境恶劣、超远距离的情况下控制信息的收集和传送。

GSM短信模块是专门用于短信接收发送的模块,具有RS-232通信口,可与单片机、计算机相连。

图6-31是某型号GSM短信模块示意图。

6.6.1 PC与GSM模块串口通信程序设计目的

(1)掌握计算机(PC)与GSM模块串口通信的线路连接方法。 (2)掌握PC与GSM模块串口通信的VB程序设计方法。

6.6.2 PC与GSM模块串口通信程序设计用软、硬件

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

表6-15 序 号 1 2 3 4 5 PC(计算机) GSM模块(西门子:TC35) 串口通信线(三线制) 手机或SIM卡 Visual Basic 6.0 设计用软、硬件 名 称 数 量 1 1 1 2 1 6.6.3 PC与GSM模块串口通信程序硬件线路图

1.线路说明

如图6-32所示,在数据采集站,传感器检测的数据送入单片机模拟量输入口,单片机通过串口线与GSM模块相连;在监控中心,GSM模块通过串口线与PC直接相连。

用户手机 GSM网络 用户手机监控中心 数据采集站 传感器 单片机RS-232 PC 传感器检测的数据经单片机MCU单元的处理,编辑成短信息,通过串行口传送给GSM模块后以短消息的方式将数据发送到监控中心的计算机或用户的GSM手机。

同样,监控中心PC通过串行口向GSM模块TC35发送命令,通过TC35以短消息形式

– 196 –

GSS模块 GSM RS-232 模块〓图6-32 PC与GSM模块串口通信线路

COM1

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

把设置命令发送到下位机系统的GSM模块,对单片机进行控制。

用户手机通过GSM模块与PC和单片机可以实现双向通信。

2.AT指令

与SMS有关的GSM AT指令(from GSM07.05)如表6-16所示。

表6-16

AT指令 AT+CMGC AT+CMGD AT+CMGF AT+CMGL AT+CMGR AT+CMGS AT+CMGW AT+CNMI AT+CPMS AT+CSCA 发出一条短消息命令 删除SIM卡内存的短消息 选择短消息信息格式:0-PDU;1-文本 列出SIM卡中的短消息 读短消息 发送短消息 向SIM内存中写入待发的短消息 显示新收到的短消息 选择短消息内存 短消息中心地址 常用AT指令

功 能 6.6.4 设计任务

编写VB程序实现PC与GSM短信模块串口通信。任务要求。

(1)指定GSM模块SIM卡中已有的短信位置,读取该短信及相关信息。

(2)在程序中输入短信内容,指定接收方手机号码,将编辑的短信息发送到指定手机。 (3)用户手机向GSM模块发送短信,程序运行界面自动显示短信内容及相关信息。 (4)拨打指定电话。

6.6.5 任务实现

网络详细地址为:http://www.china-pub.com/51161。

6.7 PC与调制解调器串口通信程序设计

调制解调器用于传输两部设备(通常是计算机)之间的数据。由于电信网络非常普及,触角延伸到全球各角落,用以作为网络通信的媒介非常适合,不过电话线仅适合音频的模拟

信号传输,计算机内部则是数字信号的处理,必须经过调制解调器将数字信号转换为模拟信号,再以模拟信号送上电话系统。这些模拟信号经过电信局交换机处理后到达目的地,目的地的调制解调器再将模拟信号还原为数字信号,

图6-39 调制解调器产品示意图 – – 197

Visual Basic数据采集与串口通信测控应用实战

接着送入计算机的总线上。

图6-39是某型号调制解调器示意图。

6.7.1 PC与调制解调器串口通信程序设计目的

(1)掌握PC与调制解调器串口通信的线路连接方法。 (2)掌握PC与调制解调器串口通信的VB程序设计方法。

6.7.2 PC与调制解调器串口通信程序设计用软、硬件

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

表6-18 序 号 1 2 3 4 设计用软、硬件 名 称 PC(计算机) 调制解调器 串口通信线 VB 数 量 2 2 2 1 6.7.3 PC与调制解调器串口通信程序硬件线路图

线路说明。在计算机通电前,按图6-40所示将PC与调制解调器通过串口线连接 起来。

PC机1PC1 调制解调器1RS-232COMCOMCOM调制解调器2RS-232COMPC机2PC2

图6-40 PC与调制解调器串口通信线路

6.7.4 设计任务

利用VB编写程序实现PC与调制解调器串口通信。

6.7.5 任务实现

6.7.5.1 用VB编程实现向调制解调器发送指令并接收返回的字符

– 198 –

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

使用VB控制调制解调器之前,必须对调制解调器的控制指令有所了解,这样才能根据调制解调器的命令格式来作控制。首先,我们了解一下调制解调器的相关指令。

调制解调器分成两种模式,命令模式与连线模式,一个为针对调制解调器功能设置的模式,另一个为数据传输的模式。

当调制解调器未与其他设备连接时,其处于命令模式,这时候下达给调制解调器的指令是作为调制解调器本身设置或操作之用。当调制解调器已经和其他的调制解调器或设备连接上时,此调制解调器就是处于连线模式,所有在此时由计算机送至调制解调器的信息都将经由电话线传送到另一部计算机上。

专门使用于调制解调器的指令集被称为“AT指令集”,此指令集是由美国Hayes公司发展的数据传输通信接口,目前已成为全球通用标准,任何与Hayes兼容的调制解调器都可接收这些指令。通过AT指令集,从最基本的音量控制 到内置参数的改变,都可用VB编程经过串行端口对调制解调器下达控制指令。

调制解调器通过RS-232串行端口和计算机连接,从AT指令集可以看出,调制解调器接收字符串指令后操作,因此,编程利用VB中的MSComm控件,由RS-232传送指令便可控制调制解调器。

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

网络详细地址为:http://www.china-pub.com/51161。

图6-41 程序界面

6.7.5.2 调制解调器与调制解调器连线通信

送出拨号指令后,可以促使调制解调器通过电话线与远程的另—部调制解调器或设备取

得连线;调制解调器连线成功后,双方的计算机便处于连线的状态,这也就是连线模式;由一方的计算机中的串行端口送出的字符串会出现在另一端的串行端口的接收缓冲区中,对方串行端口便可以从接收缓冲区将字符串接收进来。

计算机连线后,一样可以通过送出AT指令集中的

“+++”指令,命令本地调制解调器回到命令模式,接受本地计算机的其他指令;当本地端的指令做完后,可以再用AT指令集中的“ATO0”或“ATO1”将命令模式转回到连线模式,而此时的两端的调制解调器便再次连线,两端的计算机也就再次连接上了,可以再进行数据

的传输。

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

以下是参考程序代码:

网络详细地址为:http://www.china-pub.com/51161。

图6-42 程序界面

– 199 –

Visual Basic数据采集与串口通信测控应用实战

6.8 PC与云台控制系统串口通信程序设计

云台是一种设备,专门用于监控时调整摄像头位置。摄像头安装于云台之上,通过开关电源,就可实现摄像头在垂直方向进行俯仰运动、水平方向进行摆动,从而调整监视位置。

云台镜头控制系统除了控制摄像头的俯仰和水平运动控制外,通常还要控制电子镜头(安装于摄像头前端、电机控制的光学镜头)的聚焦、光圈和变倍等,以便调整视野范围和清晰度。对于室外摄像头,通常将其放在防护罩内,再安装于云台之上。此时,控制系统通常要考虑控制防护罩上雨刷。夜间工作情况下,还要进行射灯的开关控制。

上述云台镜头控制系统的各项控制通常由两种方式来实现。

(1)通过电子设备的操作平台,手工按下相关的机械按钮,控制对应的继电器,达到各个电源开关的闭合,从而实现上述各项控制功能。

(2)通过计算机串/并口,发送控制指令到解码器,再由解码器控制相应的继电器达到各个电源开关的闭合,从而实现上述各项控制功

能。图6-43是某型号云台示意图。

本设计介绍串口技术在云台镜头控制系统中的应用。

图6-43 云台示意图

6.8.1 PC与云台控制系统串口通信程序设计目的

(1)掌握PC与云台解码器串口通信的线路连接方法。

(2)掌握PC与云台解码器串口通信的VB程序设计方法。

6.8.2 PC与云台控制系统串口通信程序设计用软、硬件

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

表6-19 序 号 1 2 3 设计用软、硬件 名 称 PC(计算机) 云台及解码器 VB 数 量 1 各1 1 6.8.3 PC与云台控制系统串口通信程序硬件线路图

一台计算机可通过一套解码器控制多个云台(包括摄像头、雨刷),控制系统的布局和连线示意如图6-44所示。用户通过计算机串口发出相应的控制指令,解码器解析指令,获知操作对象(具体哪个云台)、操作动作(俯仰、左右摆动等)后,通过继电器接通/断开相应的线路,从而使相应电机运转或停止,达到控制目的。

– 200 –

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

PC机PC COM解码器RS232COM云台1云台2...云台n

图6-44 PC与云台控制系统串口通信线路

6.8.4 设计任务

利用VB编写程序实现PC与云台控制系统串口通信。任务要求。

控制云台镜头的俯仰和水平运动;控制电子镜头的聚焦、光圈和变倍等,以便调整视野范围和清晰度。

6.8.5 任务实现

下面仅列出部分程序界面及代码,完整的项目文件请参考配套光盘。 设计的程序主界面如图6-45所示。

图6-45 云台动作和状态控制面板

网络详细地址为:http://www.china-pub.com/51161。

6.9 PC与电机驱动系统串口通信程序设计

电机是电能生产及应用的基本装备。现代化电机的单机容量已经大大增加,应用领域日益扩大,与其组成的系统的自动化程度日益提高,运行条件更加复杂化。电机控制系统成为工业自动化系统中的关键部分,称作运动控制系统。从目前的发展趋势看,运动控制系统的设计正逐步形成系列化、规范化和标准化,许多控制软件和硬件逐渐成为通用化的产品。一

– 201 –

本文来源:https://www.bwwdw.com/article/h74o.html

Top