论文部分内容阅读
摘要:本文主要介绍利用VB6.0串行通信编程的方法,利用MSComm控件实现计算机与计算机间的串口通信。
关键词:串口通信;VB6.0;MSCOMM控件
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c
随着互联网的不断发展,计算机间的相互通信已非常普遍,只要通过计算机的串行口就可以实现。而对于串口通信的编程软件,微软公司的Visual Basic 6.0(简称VB6.0)以其友好的开发界面、简单易用、实用性强等优点已在国内外得到广泛应用。
VB6.0提供了许多供用户选择的控件,这些控件以.OCX为文件后缀名,其中MSComm.OCX即是用于串行通信的控件。如果需要使用该控件,可将控件添加到工具箱内,这样就可以利用该控件进行串行通信程序的设计。
下面这个例子,说明如何进行串行通信程序设计,该程序在Windows98环境下已调试通过。在调试程序时,很难做到一个人同时占有两台计算机。为此,可通过直接短接串口的2、3两个脚,即将串行口的2、3脚连接在一起,从而使发送的信息直接被本机接收。这样,就可以在一台计算机上调试程序。
1 MSComm控件常用属性
Commport 设置并返回通信端口号。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen设置并返回通信端口的状态,也可以打开和关闭端口。
InBufferSize 设置并返回接收缓冲区的字符数。
Input 从接收缓冲区返回和删除字符。
InputLen设置并返回Input属性从缓冲区读取的字符数。
OutBufferSize以字符形式设置并返回传输缓冲区的大小。
Output向传输缓冲区写数据。
2 用户界面设计
首先新建一个“标准EXE”工程,然后选择“工程/部件”菜单项,在“部件”对话框中选择Microsoft Comm Control6。0 即可添加MSComm控件;再在窗体中依次布置如下控件并设置其属性。
图1 运行主界面
3 编写程序代码
编写的程序代码如下:
Private Sub Form_Load()
Msc1.commport=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() ‘清除信息
RTB2.Text = " "
IfMsc1.PortOpen = True Then
Msc1.PortOpen = False
End If
RTB2.Visible = False
End Sub
‘清除接收文本框中信息,关闭串行口,结束通信,并使接收文本框不可见。
4 几点说明
为了使该设计更加便于操作,本设计在界面上加入了菜单栏的设计,通过对菜单按钮的操作,能实现对通信信息的发送与接收。此外,为了实现对通信信息的打开、保存及打印,本设计引用了VB6.0中的控件RichTextBox,利用该控件的RichTextBox.LoadFile, RichTextBox.SaveFile,RichTextBox.selprint Printer.hDC属性即可实现上述功能。鉴于篇幅有限,该程序代码没有给出。总之,使用VB6.0开发Windows98下计算机间的串口通信程序是非常简单的。
参考文献:
[1]周轶峰,等.Visual Basic 6.0实用编程技术[M].中国水利水电出版社,1999.
[2]郑阿奇.Visual Basic实用教程[M].电子工业出版社,2000.
[3]俞旭明,等.Visual Basic 6.0网络开发技术[M].人民邮电出版社,1999.
[4]李玉东,等.Visual Basic 6.0控件大全[M].电子工业出版社,2000.
关键词:串口通信;VB6.0;MSCOMM控件
中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c
随着互联网的不断发展,计算机间的相互通信已非常普遍,只要通过计算机的串行口就可以实现。而对于串口通信的编程软件,微软公司的Visual Basic 6.0(简称VB6.0)以其友好的开发界面、简单易用、实用性强等优点已在国内外得到广泛应用。
VB6.0提供了许多供用户选择的控件,这些控件以.OCX为文件后缀名,其中MSComm.OCX即是用于串行通信的控件。如果需要使用该控件,可将控件添加到工具箱内,这样就可以利用该控件进行串行通信程序的设计。
下面这个例子,说明如何进行串行通信程序设计,该程序在Windows98环境下已调试通过。在调试程序时,很难做到一个人同时占有两台计算机。为此,可通过直接短接串口的2、3两个脚,即将串行口的2、3脚连接在一起,从而使发送的信息直接被本机接收。这样,就可以在一台计算机上调试程序。
1 MSComm控件常用属性
Commport 设置并返回通信端口号。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen设置并返回通信端口的状态,也可以打开和关闭端口。
InBufferSize 设置并返回接收缓冲区的字符数。
Input 从接收缓冲区返回和删除字符。
InputLen设置并返回Input属性从缓冲区读取的字符数。
OutBufferSize以字符形式设置并返回传输缓冲区的大小。
Output向传输缓冲区写数据。
2 用户界面设计
首先新建一个“标准EXE”工程,然后选择“工程/部件”菜单项,在“部件”对话框中选择Microsoft Comm Control6。0 即可添加MSComm控件;再在窗体中依次布置如下控件并设置其属性。
图1 运行主界面
3 编写程序代码
编写的程序代码如下:
Private Sub Form_Load()
Msc1.commport=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() ‘清除信息
RTB2.Text = " "
IfMsc1.PortOpen = True Then
Msc1.PortOpen = False
End If
RTB2.Visible = False
End Sub
‘清除接收文本框中信息,关闭串行口,结束通信,并使接收文本框不可见。
4 几点说明
为了使该设计更加便于操作,本设计在界面上加入了菜单栏的设计,通过对菜单按钮的操作,能实现对通信信息的发送与接收。此外,为了实现对通信信息的打开、保存及打印,本设计引用了VB6.0中的控件RichTextBox,利用该控件的RichTextBox.LoadFile, RichTextBox.SaveFile,RichTextBox.selprint Printer.hDC属性即可实现上述功能。鉴于篇幅有限,该程序代码没有给出。总之,使用VB6.0开发Windows98下计算机间的串口通信程序是非常简单的。
参考文献:
[1]周轶峰,等.Visual Basic 6.0实用编程技术[M].中国水利水电出版社,1999.
[2]郑阿奇.Visual Basic实用教程[M].电子工业出版社,2000.
[3]俞旭明,等.Visual Basic 6.0网络开发技术[M].人民邮电出版社,1999.
[4]李玉东,等.Visual Basic 6.0控件大全[M].电子工业出版社,2000.