http://www.gjwtech.com
很好的通讯方面的网站(包括串口)

解决方案 »

  1.   

    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
      
    End Sub
      

  2.   

    msdn的samples里边就自带了一个,叫做vbterm。你找不到我可以发给你一个。
      

  3.   

    编程我没有问题,但我没有AT指令集,我需要一个AT指令集  对串口的控制我没什么问题,问题在于如何拨号,如何连接,如何挂机,我没有写过和modem有关的程序,串口编程到还是比较熟悉的
      

  4.   

    谁有有关Modem拨号,呼叫,挂机的程序代码吗?
      

  5.   

    谁有有关Modem拨号,呼叫,挂机的程序代码吗?
      

  6.   

    http://vip.6to23.com/NowCan1/tech/modem.htm
    http://vip.6to23.com/NowCan1/tech/mscomm.htm
    http://vip.6to23.com/NowCan1/tech/callerid.htm
      

  7.   

    有本书vb的分布式程序与MODEM的RS232编程
      

  8.   

    既然你要用modem,modem的生产厂商会提供一本包含了AT指令集的手册。你要做的事不仅要用到编程,还涉及modem设置问题。这可不是一两句话可以讲晚的,而且使用不同的协议,不同的modem,也有不同的modem设置。