'检测可用串口 For C = 1 To 4 If MSComm1.PortOpen Then MSComm1.PortOpen = False MSComm1.CommPort = C If Not MSComm1.PortOpen Then MSComm1.PortOpen = True If MSComm1.PortOpen Then MSComm1.PortOpen = False If COMX = 0 Then COMX = C FORM_LOAD_1: Next C If COMX = 0 Then End On Error GoTo 0 Option1(COMX - 1).Value = True Exit Sub ERRORFORMLOAD: Option1(C - 1).Enabled = False Resume FORM_LOAD_1 End Sub '选择串行口 Private Sub Option1_Click(Index As Integer) COMX = Index + 1 Call INIT_MODEM End Sub '初试化Modem Private Sub INIT_MODEM() If MSComm1.PortOpen Then MSComm1.PortOpen = False MSComm1.CommPort = COMX If Not MSComm1.PortOpen Then MSComm1. PortOpen = True MSComm1.Output = "AT#CID=1" + vbCr '检查Modem命令是否完成 Call CHK_MODEM MSComm1.Output = "ATS0=0" + vbCr End Sub '检查Modem命令是否完成 Private Sub CHK_MODEM() Dim T As Single Dim L As Integer T = Timer Do COMBUF = COMBUF + MSComm1.Input L = InStr(1, COMBUF,"OK") Loop Until L <> 0 Or Timer - T > 1 If L = 0 Then Line1.Visible = True Line2.Visible = True Form1.Show MsgBox "MODEM未联机",vbOKOnly+vbCritical,"测试MODEM" Else Line1.Visible = False Line2.Visible = False End If End Sub '串行口接收事件处理 Private Sub MSComm1_OnComm() Dim CH, ST As String Dim LC As Integer Select Case MSComm1.CommEvent '接收到Rthreshold个字符 Case comEvReceive COMBUF = COMBUF + MSComm1.Input '读取串口数据 Do LC = InStr(1, COMBUF, Chr(10)) If LC = 0 Then Exit Do COMLIN = Left(COMBUF, LC) COMBUF = Mid(COMBUF, LC + 1) CH = Left(COMLIN, 1) If " " < CH And CH < Chr(127) And DEBFLG = 1 Then Text5.Text = Text5.Text + COMLIN Text5.SelStart = Len(Text5.Text) End If '截取来电号码,并显示 If InStr(1, COMLIN"NMBR=")<> 0 Then ST = Mid(COMLIN, 8) Text2.Text=" "+Left$(ST,Len (ST) -2) + " " Form1.WindowState = 0 Timer1.Enabled = True Call BEEP_NO '截取来电日期,并显示 ElseIf InStr(1, COMLIN, "DATE = ") <> 0 Then Text3.Text = Str(Year(DATE)) + "."+ Mid(COMLIN, 8, 2) + "." + Mid(COMLIN, 10, 2) + " " '截取来电时间,并显示 ElseIf InStr(1, COMLIN, "TIME = ") <> 0 Then Text4.Text = " " + Mid(COMLIN, 8, 2) + ":" + Mid(COMLIN, 10, 2) '检测振铃个数 ElseIf InStr(1, COMLIN, "RING") <> 0 Then Call BEEP_NO If HANGUP = 1 Or BEEPNO = 15 Then Call HANG_UP '检测是否停止振铃 ElseIf Left(COMLIN, 3) = "000" Then BEEPNO = 0 Timer1.Enabled = False Form1.WindowState = 1 ProgressBar1.Value = 0 Frame3.Caption = "振铃数" End If Loop '其他事件处理 Case comEvCTS Case comEvDSR Case comEvCD Case comEvRing Case comEventBreak Call INIT_MODEM Case Else MsgBox "串口接收事件号:" & MSComm1.CommEvent & " ", vbOKOnly + vbCritical, "测试串行口" End Select End Sub
VB Mscomm控件应用下 |