好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

VisualBasic串口通信程序设计实例方案.docx

59页
  • 卖家[上传人]:hh****pk
  • 文档编号:342203730
  • 上传时间:2022-12-25
  • 文档格式:DOCX
  • 文档大小:350.41KB
  • 文本预览
  • 下载提示
  • 常见问题
    • 第6章 Visual Basic串口通信程序设计典型实例利用Visual Basic开发串口通信程序既可以使用MSComm控件也可以调用Windows API 函数不过,只要MSComm可以被选用,它几乎总是我们推荐的选择,因为MSComm的 功能和API调用一样好甚至比它还好且使用起来更加简单在本章提供的串口通信程序设计中,除了 PC机与PC机串口通信外,PC机与单片机、 PC机与智能仪表、PC机与PLC、PC机与GSM短信模块等串口通信任务的实现均采用 MSComm 控件6.1 PC机与PC机串口通信程序设计当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需三根线 (发送线、接收线、信号地线)便可实现全双工异步串行通信本设计通过两台PC机串口二线连接,介绍了利用API函数和MSComm控件设计串口 通信程序的方法,包括字符与文件的发送与接收6.1.1设计目的1) 掌握PC机与PC机串口通信的线路连接方法2) 利用MSComm控件和VB-API函数实现PC机与PC机串口通信的程序设计方法6.1.2设计用软、硬件本设计用到的硬件和软件清单见表6-1 表6-1设计用软、硬件 ~序号~ ~~S 数量1PC 或 IPC22串口通信线(三线制)13Visual Basic 6.016.1.3硬件线路线路说明:在计算机通电前,按图6-1所示将2台PC机通过串口线连接起来:PC机A 串口 C0M1端口的TXD与PC机B串口 C0M1端口的RXD相连;PC机A串口 C0M1端 口的RXD与PC机B串口 COM1端口的TXD相连;PC机A串口 COM1端口的GND与 PC机B串口 C0M1端口的GND相连。

      6.1.4设计任务利用MSComm控件和Visual Basic API函数编写程序实现PC机与PC机串口通信图6-1 PC机与PC机申口通信线路任务要求:两台计算机互发字符并自动接收,如一台计算机输入字符串"Please return abcl23”,单击“发送字符”命令,另一台计算机若收到,就输入字符串"abcl23”,单击“发 送字符”命令,信息返回到第一组的计算机实际上就是编写一个简单的双机聊天程序6.1.5任务实现6.1.5.1利用MSComm控件实现字符型数据发送与接收1. 建立新工程VB使用“工程”来管理每一个应用程序要使用的所有文件,每建立一个新程序,就要 新建一个工程一个工程由窗体、标准模块、控件及应用所需的环境设置等组成运行VB 6.0程序,出现“新建工程”对话框,选择“标准EXE”,单击“打开”命令按 钮,进入VB工程集成开发环境,窗体设计器中自动出现一个名为Forml的空白窗体2. 程序界面设计向空白窗体添加各种控件,以完成预定的各种功能我们开始一个项目的设计时,VB 的工具箱中会有许多默认的控件让设计者予以选用,这些原本就出现在工具箱中的控件是内 置控件,它提供了一些基本的系统设计组件给设计者,不过,功能比较特别的控件就不会出 现在其中,如用来设计串口通信功能的控件MSComm就不在其中。

      1) 添加串口通信控件MSComm由于VB的串行通信组件并不会主动出现在工具箱里中,当我们需要MSComm控件时, 首先要把它加入到工具箱中让MSComm控件出现在工具箱中的步骤如下:选择“工程”菜单下的“部件...”子菜单,在弹出的“部件”对话框中,在“控件”选 项卡属性中选中“Microsoft Comm Control 6.0”复选框,单击“确定”按钮后,在工具箱中 就出现了一个形似“”的图标,它就是MSComm控件工具箱中有了 MSComm控件,就可以选择MSComm控件的图标后将其加到程序窗体 上,利用该控件PC机就可以通过VB实现与串口设备的串口通信了由于每个使用的MSComm控件对应着一个串行端口,如果应用程序需要访问多个串行 端口,必须添加多个MSComm控件2) 为了实现连续的自动接收,将工具箱中的Timer控件加到程序窗体上3) 添加2个文本框控件:Textl和Text2,用于输入要发送的字符和显示要接收的字符4) 添加2个标签控件:Labell和Label2,作为发送和接收字符区的标签5) 添加1个按钮控件:Commandl执行发送字符命令程序设计界面如图6-2所示。

      图6-2程序窗体3. 属性设置从属性窗口设置属性时,只需从对象列表框中选择待设置属性的对象,然后从属性列表 的左列选择属性,最后在属性列表的右列中输入或选择新的属性值程序窗体、控件对象的主要属性设置见表6-2表6-2窗体、控件对象的主要属性设置控件类型主要属性功能Form(名称)=COMForm窗体控件BorderStyle = 3运行时窗体固定大小Caption = PC机与PC机串口通信窗体标题栏显示程序名称Label(名称)=Label 1标签控件Caption =显示接收字符区:标签文本Label(名称)=Label2标签控件Caption =输入发送字符区:标签文本TextBox(名称)=Textsend文本框控件MultiLine = True允许多行显示ScrollBars = 2-Vertical垂直滚动条可用TextBox(名称)=TextReceive文本柩控件MultiLine = True允许多行显示ScrollBars = 2-Vertical垂直滚动条可用CommandB utton(名称)=Cmdsend按钮控件Caption =发送字符手动发送字符MSComm(名称)= MSComml串口通信控件其它属性在程序中设置Timer(名称)=Timer 1时钟控件Enabled = True时钟初始可用Interval = 500设置发送周期(毫秒)注:2台计算机中VB程序界面及属性设置应完全相同,尤其MSComm控件的InputMode、Settings属 性值应相同。

      4. 程序代码设计程序要实现自动发送或读取,在VB中有两个方式可以达到,一是查询方式,利用查询 事件是否发生,当发生时,去执行默认的程序代码可以使用计时器控件(Timer),该控件 属性中的Interval可以控制计时器被启动的时间间隔,当时间间隔一到,便会执行原先放在 计时器中的程序代码下面是利用查询方式编写的PC与PC串口通信的参考程序:'串口初始化Private Sub Form_Load()MSComm 1 .CommPort = 1MSComml.Settings = "9600,n,8,1"MSComml .InputMode = 0MSComml .PortOpen = True'设置通信端口号为COMI'设置串口1参数'接收文本型数据'打开通信端口1End Sub1把字符通过串口发送出去Private Sub Cmdsend_Click()If Textsend.Text = "" Thenpp = MsgBox(”发送的数据不能为空! n, 16)Exit SubEnd IfMSComml .Output = Trim(Textsend.Text)For i = 1 To 20000000Next iEnd Sub1通过时钟控制来自动接收字符Private Sub Timer 1 _Timer()Dim buf$buf = Trim(MSComml .Input)'将缓冲区内的数据读入buf变量中If Len(buf) <> 0 Then,判断缓冲区内是否存在数据TextReceive.Text = TextReceive.Text + Chr(13) + Chr(10) + buf 〃回车换行End IfEnd Sub'关闭通信端口,停止程序运行Private Sub Cmdquit_Click()MSComml .PortOpen = FalseUnload MeEnd Sub在Windows环境下,串口是系统资源的一部分。

      应用程序要使用串口进行通信,必须 在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串 口)在Windows的系统函数中,均包含了支持通信中断的功能二是使用事件方式MSComm控件提供事件回应功能,可以利用此功能达到自动发送/接 收的目的下面是利用事件方式编写的PC与PC串口通信的参考程序,界面设计与图6-2 基本相同,区别是事件方式不需要时间控件'串口初始化Private Sub Form_Load()MSComml .CommPort = 1'设置通信端口号为COMIMSComml.Settings = "9600,n,8,1"'设置串口参数MSComml.InputMode = 0 ,接收文本型数据MSComml.RThreshold = 1接收缓冲区每收到一个字符都会使MSComm控件触发OnComm事件MSComm 1 .PortOpen = True ,打开通信端口 1End Sub,把字符通过串口发送出去'启动定时器Private Sub Cmdsend_Click()If Textsend.Text = "" Thenpp = MsgBox(”发送的数据不能为空! n, 16)Exit SubEnd IfMSComm 1. Output = Trim(Textsend.Text)End Sub'MSComm 的OnComm 事件程序,由CommEvent属性值的不同,将各自的程序代码写入相关的子程序中,只要RThresold中的设定字符数到达时便会使得CommEvent属性值变成comEvReceive'因此接收的子程序便会被执行Private Sub MSComml_OnComm()Dim buf$Select Case MSComm 1 .CommEvent,通过取代底下每一个case表达式来处理每个事件与错误Case comEvCD 'CD线的状态发生变化Case comEvCTS ' CTS线的状态发生变化Case comEvDSR ' DSR线的状态发生变化Case comEvReceivebuf = Trim(MSComml.Input) ,将缓冲区内的数据读入buf变量中Case comEvSendEnd SelectTextReceive.Text = TextReceive.Text & bufEnd Sub,停止程序运行Private Sub Cmdquit_Click()Unload MeEnd Sub,关闭通信端口,Private Sub Form_Unload(Cancel As Integer)MSComml .PortOpen = FalseEnd Sub5. 运行程序程序设计、调试完毕,单击工具栏快捷按钮"启动”,运行程序。

      注:2台计算机同时 运行本程序首先在一台计算机程序窗体中发送字符区输入要发送的字符,比如“我是第一组,收到请回话!单击“发送字符”按钮,发送区的字符串通过COM1 口发送出去;如果联网通信的另一台计算机程序收到字符,则返回字符串,。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.