摘 要 本文介绍一种在VB中与通讯口交互信息的一种方法与技巧,以解决在程序开发过程中需要与计算机外围设备进行交互的问题。
一、引言
在计算机程序设计过程中,经常会遇到与外围设备进行交互的问题,如读鼠标、数字化仪等外围设备的串口信息以及读打印机等并口信息,应用程序通过对计算机串、并口的读写操作,满足用户需求。本文仅以读写调制解调器信息为例进行论述。
二、应用程序的编写
在VB6.0环境下,新建一标准EXE工程,工程名(Communation),工程文件名为(Communation.vbp),窗体名(Comm),窗体文件名(Comm.frm)。窗体属性Caption为“MSComm 电话拨号器”。在工程菜单部件中选择添加”Microsoft Comm Control 6.0”,窗体中添加如图1所示的各种控件。DialButton的Caption属性为“拔号”, CancelButton的Caption属性为“取消” QuitButton的Caption属性为“退出”, Label1的Caption属性为“要拔号码,请击“拔号”按钮”,BorderStyle属性设为1-Fixed Single。MSComm1的属性值采用控件默认属性。
MSComm1 DialButton CancelButton QuitButton Label1
程序实现代码如下:
‘ Comm.FRM
' 演示如何用调制解调器拨电话号码.
' 要求电话和调制解调器用同一根电话线相连
DefInt A-Z
' 当用户选择取消时设置此标志。
Dim CancelFlag
‘调用窗体Commr的事件
Private Sub Form_Load()
' 告知 MSComm1读取输入缓冲区中的全部内容。
MSComm1.InputLen = 0
End Sub
‘“取消”按钮单击事件
Private Sub CancelButton_Click()
' CancelFlag 用来告知退出拨号过程。
CancelFlag = True
CancelButton.Enabled = False
End Sub
‘“退出”按钮单击事件
Private Sub QuitButton_Click()
End
End Sub
‘“拔号”按钮单击事件
Private Sub DialButton_Click()
Dim Number$, Temp$
DialButton.Enabled = False
QuitButton.Enabled = False
CancelButton.Enabled = True
' 取得要拨的电话号码。
Number$ = InputBox$("请输入电话号码:", Number$)
If Number$ = "" Then Exit Sub
Temp$ = label1
Label1 = "正在拨号码 - " + Number$
' 拨选定的电话号码。
Dial Number$
DialButton.Enabled = True
QuitButton.Enabled = True
CancelButton.Enabled = False
Label1 = Temp$
End Sub
‘定义一拔号子过程
Private Sub Dial(Number$)
Dim DialString$, FromModem$, dummy
' AT 是贺氏兼容 ATTENTION 命令并且要求发送命令到调制解调器。
' DT "音频拨号";DP = “脉冲拨号”
' Numbers$ 为要拨的电话号码。
' 分号告知调制解调器拨号后返回命令
' 一个回车, vbCr, 当发送命令到调制解调器时被要求。
DialString$ = "ATDT" + Number$ + ";" + vbCr
' 假设”调制解调器”端口设置为 COM2
MSComm1.CommPort = 2
MSComm1.Settings = "9600,N,8,1"
' 打开通信端口
On Error Resume Next
MSComm1.PortOpen = True
If Err Then
MsgBox " COM2: 不可用。 更改 CommPort 属性使其使用其它串口"
Exit Sub
End If
' 清空输入缓冲区。
MSComm1.InBufferCount = 0
' 拨电话号码。
MSComm1.Output = DialString$
' 等待调制解调器返回信息
Do
dummy = DoEvents()
' 如果缓冲区中有数据,则把它读出来。
If MSComm1.InBufferCount Then
FromModem$ = FromModem$ + MSComm1.Input
If InStr(FromModem$, "OK") Then
' 提醒用户摘电话。
Beep
MsgBox "请您摘电话然后按“回车”键或单击“确定”"
Exit Do
End If
End If
' 用户是否选择“取消”?
If CancelFlag Then
CancelFlag = False
Exit Do
End If
Loop
' 断开与调制解调器的连接。
MSComm1.Output = "ATH" + vbCr
' 关闭端口。
MSComm1.PortOpen = False
End Sub
三、结束语
本文较为详细的提供了一种与计算机外围设备-调制解调器进行信息交互的例子,为程序员开发有关计算机与通讯口交互方面的程序提供了一个好的例子。
|