Public data As StringPrivate Sub finish_Click() InitC.WindowState = 1 End SubPrivate Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then MSComm1.Output = Text2.Text & vbCr Text2.Text = "" End If
End Sub Private Sub Form_Load() '端口号 For i = 1 To 5 cport.AddItem "COM" & Trim$(str$(i)) Next i cport.ListIndex = 1 '波特率 brate.AddItem "4800" brate.AddItem "9600" brate.AddItem "14400" brate.AddItem "19200" brate.AddItem "28800" brate.AddItem "38400" brate.AddItem "56000" brate.AddItem "57600" brate.AddItem "115200" brate.ListIndex = 8 brate.Text = "9600" cport.Text = "COM1"
Text1(3) = "+8613800371500"
End Sub'初始化数据猫 Private Sub init_Click() MSComm1.RThreshold = 1 MSComm1.InputLen = 0 '设置接收的长度 MSComm1.CommPort = Val(Right(cport.Text, 1)) '设置打开的端口 MSComm1.Settings = brate.Text & ",N,8,1" '设置端口属性 MSComm1.PortOpen = True If MSComm1.CTSHolding Then Text1(0).BackColor = &HFF00& Else Text1(0).BackColor = &HFF& End If data = MSComm1.Input data = "" MSComm1.Output = "AT+CNMI=2,2,0,0,0;+CMGF=1;+CLIP=0;+CREG?" & Chr(13) MSComm1.Output = "AT+CSMP=17,167,0,240;+CSCA" End SubPrivate Sub MSComm1_OnComm() On Error GoTo over Select Case MSComm1.CommEvent
' 事件 Case comEvCD ' CD 线状态变化。 Case comEvCTS ' CTS 线状态变化。
If MSComm1.CTSHolding Then Text1(0).BackColor = &HFF00& Else
Text1(0).BackColor = &HFF& MSComm1.PortOpen = False init.Visible = True finish.Visible = False Cflag = False End If Case comEvDSR ' DSR 线状态变化。 Case comEvRing ' Ring Indicator 变化。 Case comEvReceive '收到 RThreshold # ofchars DoEvents data = data & MSComm1.Input If InStr(data, "+CMT:") Then If Find3(data) = 3 Then Text3.Text = data MsgHandle (data) data = "" End If
ElseIf InStr(data, "ERROR:") Then If Right(data, 2) = vbCrLf Then Text3.Text = data If InStr(data, "+CMS ERROR:") Then Sflag = False End If data = "" End If
ElseIf InStr(data, "+CMTI:") Then If Find3(data) = 2 Then Text3.Text = data 'MsgHandle (data) data = "" End If ElseIf data = vbCrLf & "RING" & vbCrLf Or InStr(data, "+CLIP:") And Right(data, 2) = vbCrLf Then Text3.Text = data data = "" MSComm1.Output = "ATH" & Chr(13) Else If Right(data, 4) = "OK" & vbCrLf Then Text3.Text = data If InStr(data, "+CMGS:") Then Sflag = True
End If If InStr(data, "+CREG: 0,1") Then 'MsgBox "creg" Text1(1).BackColor = &HFF00& init.Visible = False finish.Visible = True Cflag = True End If data = "" End If If Right(data, 7) = "ERROR" & vbCrLf Then Text3.Text = data data = "" End If End If Case Else
End Select Exit Sub over: ' data = MSComm1.Input data = "" End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
response = MsgBox("关闭此窗口,系统将失去监控和调度功能!", 68, "警告信息") If response = vbYes Then ' 用户按下“是”。 If MSComm1.PortOpen = True Then MSComm1.PortOpen = False Cancel = False Cflag = False End If Else ' 用户按下“否”。 Cancel = True End If
InitC.WindowState = 1
End SubPrivate Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
MSComm1.Output = Text2.Text & vbCr
Text2.Text = ""
End If
End Sub
Private Sub Form_Load() '端口号
For i = 1 To 5
cport.AddItem "COM" & Trim$(str$(i))
Next i
cport.ListIndex = 1
'波特率
brate.AddItem "4800"
brate.AddItem "9600"
brate.AddItem "14400"
brate.AddItem "19200"
brate.AddItem "28800"
brate.AddItem "38400"
brate.AddItem "56000"
brate.AddItem "57600"
brate.AddItem "115200" brate.ListIndex = 8
brate.Text = "9600"
cport.Text = "COM1"
Text1(3) = "+8613800371500"
End Sub'初始化数据猫
Private Sub init_Click() MSComm1.RThreshold = 1
MSComm1.InputLen = 0 '设置接收的长度
MSComm1.CommPort = Val(Right(cport.Text, 1)) '设置打开的端口
MSComm1.Settings = brate.Text & ",N,8,1" '设置端口属性
MSComm1.PortOpen = True
If MSComm1.CTSHolding Then Text1(0).BackColor = &HFF00&
Else
Text1(0).BackColor = &HFF&
End If
data = MSComm1.Input
data = ""
MSComm1.Output = "AT+CNMI=2,2,0,0,0;+CMGF=1;+CLIP=0;+CREG?" & Chr(13)
MSComm1.Output = "AT+CSMP=17,167,0,240;+CSCA"
End SubPrivate Sub MSComm1_OnComm()
On Error GoTo over
Select Case MSComm1.CommEvent
' 事件
Case comEvCD ' CD 线状态变化。
Case comEvCTS ' CTS 线状态变化。
If MSComm1.CTSHolding Then
Text1(0).BackColor = &HFF00&
Else
Text1(0).BackColor = &HFF&
MSComm1.PortOpen = False
init.Visible = True
finish.Visible = False
Cflag = False
End If
Case comEvDSR ' DSR 线状态变化。
Case comEvRing ' Ring Indicator 变化。
Case comEvReceive '收到 RThreshold # ofchars DoEvents
data = data & MSComm1.Input
If InStr(data, "+CMT:") Then
If Find3(data) = 3 Then
Text3.Text = data
MsgHandle (data)
data = ""
End If
ElseIf InStr(data, "ERROR:") Then
If Right(data, 2) = vbCrLf Then
Text3.Text = data
If InStr(data, "+CMS ERROR:") Then
Sflag = False
End If
data = ""
End If
ElseIf InStr(data, "+CMTI:") Then
If Find3(data) = 2 Then
Text3.Text = data
'MsgHandle (data)
data = ""
End If
ElseIf data = vbCrLf & "RING" & vbCrLf Or InStr(data, "+CLIP:") And Right(data, 2) = vbCrLf Then
Text3.Text = data
data = ""
MSComm1.Output = "ATH" & Chr(13)
Else
If Right(data, 4) = "OK" & vbCrLf Then
Text3.Text = data
If InStr(data, "+CMGS:") Then
Sflag = True
End If
If InStr(data, "+CREG: 0,1") Then
'MsgBox "creg"
Text1(1).BackColor = &HFF00&
init.Visible = False
finish.Visible = True
Cflag = True
End If
data = ""
End If
If Right(data, 7) = "ERROR" & vbCrLf Then
Text3.Text = data
data = ""
End If
End If
Case Else
End Select
Exit Sub
over:
' data = MSComm1.Input
data = ""
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
response = MsgBox("关闭此窗口,系统将失去监控和调度功能!", 68, "警告信息")
If response = vbYes Then ' 用户按下“是”。
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
Cancel = False
Cflag = False
End If
Else ' 用户按下“否”。
Cancel = True
End If
End Sub
http://vip.6to23.com/NowCan1/tech/mscomm.htm
http://vip.6to23.com/NowCan1/tech/callerid.htm