用VB6.0实现计算机间串口通信
作者:李永胜
来源:《电脑知识与技术·学术交流》2008年第08
        摘要:本文主要介绍利用VB6.0串行通信编程的方法,利用MSComm控件实现计算机与计算机间的串口通信。
        关键词:串口通信;VB6.0MSCOMM控件
        中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c
       
        随着互联网的不断发展,计算机间的相互通信已非常普遍,只要通过计算机的串行口就可以实现。而对于串口通信的编程软件,微软公司的Visual Basic 6.0(简称VB6.0)以其友好的开发界面、简单易用、实用性强等优点已在国内外得到广泛应用。
        VB6.0提供了许多供用户选择的控件,这些控件以.OCX为文件后缀名,其中MSComm.O
CX即是用于串行通信的控件。如果需要使用该控件,可将控件添加到工具箱内,这样就可以利用该控件进行串行通信程序的设计。
        下面这个例子,说明如何进行串行通信程序设计,该程序在Windows98环境下已调试通过。在调试程序时,很难做到一个人同时占有两台计算机。为此,可通过直接短接串口的23两个脚,即将串行口的23脚连接在一起,从而使发送的信息直接被本机接收。这样,就可以在一台计算机上调试程序。
       
        1 MSComm控件常用属性
       
        Commport 设置并返回通信端口号。
        Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
        PortOpen设置并返回通信端口的状态,也可以打开和关闭端口。
        InBufferSize 设置并返回接收缓冲区的字符数。
        Input 从接收缓冲区返回和删除字符。
        InputLen设置并返回Input属性从缓冲区读取的字符数。
        OutBufferSize以字符形式设置并返回传输缓冲区的大小。
        Output向传输缓冲区写数据。
        2 用户界面设计
        首先新建一个标准EXE”工程,然后选择工程/部件菜单项,在部件对话框中选择Microsoft Comm Control60 即可添加MSComm控件;再在窗体中依次布置如下控件并设置其属性。
        完成后的界面如图1所示。
        1 运行主界面
       
        3 编写程序代码
visual basic还有人用       
        编写的程序代码如下:
        Private Sub Form_Load()
        Msc1mport=1‘使用串行口1
        Msc1.settings=”9600,N,8,1”‘波特率9600,奇校验,8个数据位,1个停止位
        Msc1.InputLen=0 ‘读取接收缓冲区的所有字符
        Msc1.InBufferSize = 2048‘设置接收缓冲区为2048字节
        Msc1.OutBufferSize = 1024 ‘设置发送缓冲区为1024字节
        Msc1.PortOpen=True‘打开串行口
        End Sub
        Private Sub Command1_Click()‘发送信息
        Dim n As String
        On Error Resume Next
        IfRTB1.Text = " " Then
        n = MsgBox("发送信息为空,请输入发送信息!", vbOKCancel + vbQuestion, "发送信息出错")
        End If
        m = Len(RTB1.Text)‘取发送信息的字符长度
        If m > Msc1.OutBufferSize Then
        Msc1.Output = Mid(RTB1.Text, 1, Msc1.OutBufferSize / 2)
        RTB1.Text = Mid(RTB1.Text, Msc1.OutBufferSize / 2 + 1)
        Else
        Msc1.Output = RTB1.Text
        RTB1.Text = ""
        RTB1.Visible = False
        End If
        ‘如果发送信息的字符长度大于发送缓冲区的大小,按发送缓冲区的大小发送信息,发送文本框保留未发送信息;否则将信息全部发送,并将发送文本框清空。
        End Sub
        Private Sub Command2_Click() ‘接收信息
        RTB2.Visible = True
        RTB2.Text = ""
        DoEvents‘该语句使程序可以在此处响应其他事件
        If Msc1.InBufferCount > 0 Then
        Timer1.Enabled = True
        RTB2.Text = Msc1.Input
        End If
        Msc1.PortOpen = False
        Timer1.Enabled = False
        ‘如果接收缓冲区字符数不为零,则将接收缓冲区字符在接收文本框中显示;否则关闭串行口,结束通信。
        End Sub
        Private Sub Command3_Click() ‘清除信息

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。