1、建立如下的Form:
需要使用ActiveX控件MSCOMM32.OCX
方法:选择“Insert”-〉“Control”-〉“OLE...”-〉“Insert Object”-〉“Insert Control”-〉“Microsoft Communications Control”
2、在“连接”按钮的点击事件中,写入如下代码:
String s
Integer k
Integer l
Integer i
Integer p
String ss
//使用COM1端口。
ole_1.object.CommPort = Integer(Right(ddlb_1.Text,1))
//设置速率为9600,无奇偶校验,8 位数据,一个停止位。
ole_1.object.Settings = "9600,N,8,1"
//读入整个缓冲区的数据。
ole_1.object.InputLen = 1
//打开端口
ole_1.object.PortOpen = True
lb_1.Reset()
lb_1.AddItem("已连接,正在监听...")
//等待数据。
Do while True
Do
Yield()
//从Com端口取数据
if not ole_1.object.portopen then Return
s += ole_1.object.Input
LOOP Until(Pos(s, char(85) + char(85) + char(85) + char(85) + char(85) + char(85)) > 0) //Hex=55
Do
Yield()
s = ole_1.object.Input
Loop Until s <> ""
K = Asc(s)
Do
Yield()
s = ole_1.object.Input
Loop Until s <> ""
l = Asc(s)
i = 0
ss = ""
Do
Yield()
s = ole_1.object.Input
If s <> "" Then
ss = ss + s
i = i + 1
End If
Loop Until i >= l
//复合数据格式
If k = 128 Then //Hex=80
p = Pos(ss, Char(1))
if p > 0 Then
l = Asc(Mid(ss, p + 1, 1))
lb_1.AddItem("来电时间: " + Mid(ss, p + 2, l))
End If
p = Pos(ss, Char(2))
If p > 0 Then
l = Asc(Mid(ss, p + 1, 1))
lb_1.AddItem("来电号码: " + Mid(ss, p + 2, l))
End If
End If
// 单数据格式
If k = 4 Then
lb_1.AddItem("来电时间: " + Mid(ss, 1, 8))
lb_1.AddItem("来电号码: " + Mid(ss, 9, l - 8))
End If
ss = ""
Loop
3、在“关闭”按钮的点击事件中,写入如下代码:
ole_1.object.PortOpen = FALSE
lb_1.AddItem("已关闭连接")
注意:本程序需要使用“记得来电显示管理器”
参考文章:http://www.kosen.com.cn/news/showatc.asp?id=103