⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.frm

📁 一个MODEM的短信软件
💻 FRM
📖 第 1 页 / 共 3 页
字号:
 MSComm1.Output = "at" & vbCrLf
Dim attext
Sleep (800)
attext = MSComm1.Input
If InStr(attext, "OK") <> 0 Then
  Command2.Enabled = True
    Command7.Enabled = True
   Command6.Enabled = True
   Command4.Enabled = True
   Command1.Enabled = True
   Command9.Enabled = True
   Command10.Enabled = True
   Command11.Enabled = True
   Label5.Enabled = True
   Text4.SelText = "设备已经连接!" & vbCrLf
   
  Else
   Text4.SelText = "串口无反应,请检查!" & vbCrLf
  
 End If
End If
OpenOnComm
End Sub



Private Sub Command9_Click()
On Local Error Resume Next

CloseOnComm
Dim TxString As String
Dim i As Integer
If Check2.Value Then
 MSComm1.Output = "at+cmgf=1" & vbCrLf
   Sleep (600)
   MSComm1.Output = "at+cmgl= """ & "REC READ" & """" & vbCrLf
   Sleep (3000)
   TxString = MSComm1.Input
   Text4.SelText = TxString
Else
MSComm1.Output = "at+cmgf=0" & vbCrLf
Sleep (600)
MSComm1.Output = "at+cmgl=1" & Chr(13) & Chr(10)
Sleep (3600)
TxString = MSComm1.Input
Dim atext() As String
'Text8.SelText = TxString
atext = Split(TxString, Chr(13) & Chr(10))
'Text8.Text = atext(4)
If Len(atext(4)) < 15 Then
   Text4.SelText = "无已读信息,请检查!" & vbCrLf
Else
  For i = 2 To (UBound(atext) - 1) / 2 - 1
 Sleep (100)
  Text8.Text = atext(i * 2)
  
SuperSMS1.ConPDU Text8.Text, P, D, T, TXT, 1, E
'Text4.Text = smsalltext
'获得解析后的数据
Text4.SelText = "电话号码:" & P & vbCrLf _
& "日期:" & D & vbCrLf _
& "时间:" & T & vbCrLf _
& "内容:" & TXT & vbCrLf _
& "错误代码:" & E & vbCrLf
'Text4.SelText = TxString
Next i
End If
End If
OpenOnComm
End Sub

Private Sub Text10_Change()
 Timer1.Interval = Val(Text10.Text) * 1000
End Sub

Private Sub Text4_KeyPress(KeyAscii As Integer)
On Error Resume Next
MSComm1.Output = Chr(KeyAscii)
End Sub
Private Sub Form_Load()
On Local Error Resume Next
   MSComm1.PortOpen = False
    MSComm1.CommPort = 1
    MSComm1.InputMode = comInputModeText
     MSComm1.Settings = "57600,N,8,1"
     'MSComm1.InBufferCount = 1
     MSComm1.InBufferSize = 30240
    MSComm1.InputLen = 0    '设置每次从串口缓冲区取的字节为全部
    MSComm1.PortOpen = True '打开串口
    Command8.Caption = "关闭串口"
    'Command8.Value = 0
    Combo1.Text = "57600"
    'CloseOnComm
    Timer1.Enabled = False
    
    MSComm1.Output = "at" & Chr(13) & Chr(10)
    Sleep (800)
    'Text4.Text = StrConv (MSComm1.Input, vbUnicode)
    Dim aafirst As String
    aafirst = MSComm1.Input
    If InStr(aafirst, "OK") = 0 Then
    MsgBox ("AT不通,请检查mode是否连接成功!")
    'Command8.Caption = "打开串口"
    Command1.Enabled = 0
    Command4.Enabled = 0
    Command6.Enabled = 0
    Command7.Enabled = 0
    Command9.Enabled = 0
    Command10.Enabled = 0
     Command2.Enabled = 0
     Command11.Enabled = 0
     Label5.Enabled = 0
    Else
    aafirst = ""
    Text4.SelText = "设备已经连接成功,请测试!" & vbCrLf
    
   ' Command8.Caption = "关闭串口"
      Command1.Enabled = 1
    Command4.Enabled = 1
    Command6.Enabled = 1
    Command7.Enabled = 1
    Command2.Enabled = 1
    Command9.Enabled = 1
    Command10.Enabled = 1
    Command11.Enabled = 1
    Label5.Enabled = 1
    MSComm1.Output = "at+cnmi=1,1,0,0,1" & vbCrLf
    Sleep 300
    MSComm1.Output = "AT+CMGF=0" & vbCrLf
    End If
    Delay 1
    aafirst = MSComm1.Input
    'inData = ""
   OpenOnComm
Open "DataLink.txt" For Append As #1
  
Close #1
End Sub
Private Sub Command1_Click()
On Local Error Resume Next
Command1.Enabled = False
Command2.Enabled = False
Command7.Enabled = False
Command11.Enabled = False
Command4.Enabled = False
Command9.Enabled = False
Command6.Enabled = False
Command10.Enabled = False

 CloseOnComm
 Dim stt1 'As String
 
 Dim atext() As String
Dim i As Integer
atext = Split(Text2.Text, ",")
'For i = 0 To UBound(atext)

 If Text1.Text <> "" Then
    MSComm1.Output = "at+csca=""" & Text1.Text & """" & Chr(13)
    Delay 2
    stt1 = MSComm1.Input
    If InStr(stt1, "OK") = 0 Then
     
       MsgBox "短信中心号码设置不成功,请检查!", vbOKOnly, "发送结果"
       Exit Sub
    End If
 End If
 Delay 1
 MSComm1.Output = "at+cmgf=1" & Chr(13)
 Sleep (600)  'wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
 Dim att 'As String
    att = MSComm1.Input
   ' Text4.Text = StrConv(att, vbUnicode)
    If InStr(att, "OK") <> 0 Then
       For i = 0 To UBound(atext)
         MSComm1.Output = "at+cmgs=""" & atext(i) & """" & Chr(13)
         Delay 2
         MSComm1.Output = Text3.Text & Chr(26)
         Sleep (3200)
    
         Dim stt 'As String
         stt = MSComm1.Input
         If InStr(stt, "+CMGS") <> 0 Then
            Text4.SelText = "发送给" & atext(i) & "成功!" & vbCrLf
         Else
            Text4.SelText = "发送给" & atext(i) & "失败,请检查!" & vbCrLf
         End If
         Sleep (100)
        Next i
        Text4.SelText = "发送完毕!" & vbCrLf
    Else
        MsgBox "短信模式设置不成功,请检查!", vbOKOnly, "发送结果"
    End If
Command1.Enabled = True
Command2.Enabled = True
Command7.Enabled = True
Command11.Enabled = True
Command4.Enabled = True
Command9.Enabled = True
Command6.Enabled = True
Command10.Enabled = True

 OpenOnComm
End Sub
Public Sub CloseOnComm()
MSComm1.RThreshold = 0
MSComm1.InputMode = comInputModeText

End Sub
Public Sub OpenOnComm()
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeBinary

End Sub
Public Sub Delay(HowLong As Date)   '延时
   Dim temptime As Date
   temptime = DateAdd("s", HowLong, Now)
    While temptime > Now
        DoEvents '让 windows 去处理其他事
    Wend
End Sub

Private Sub Text1_Change()
Conv
End Sub

Private Sub Text2_Change()

Conv
End Sub

Private Sub Text3_Change()
Conv
End Sub



Private Sub MSComm1_OnComm() '串口中断
On Local Error Resume Next
Static bFlag As Boolean
Static Xbyte As Long
'Dim TxString As String
Select Case MSComm1.CommEvent   '选择事件
Case comEvReceive '接收到字符
     
        Dim InByte() As Byte '定义一个二进制指针放接收到的数据
        InByte = MSComm1.Input '数据转移到指针
        Dim temp As Long
        Dim temp1 As Long
        Dim temp2 As Long
        Dim j As Long
        Dim counttrue As Integer
        counttrue = 1
       
        
         For j = 0 To UBound(InByte) '循环到指针上标
          ''  If ifhex = 1 Then '16进制显示处理
        '  inData = inData & Hex(InByte(j)) & " " '取出一个字节换为16进制显示用

           ' Else:
                  If InByte(j) < 128 And bFlag = 0 Then
                    If InByte(j) = 13 Then
                    inData = inData & vbCr 'Lf
                    Else
                    inData = inData & Chr(InByte(j)) 'ascii码显示处理
                    
                    End If
                  Else '此时为一个中文的前半部
                     If bFlag Then '上次收到半个中文没处理
                     temp1 = Xbyte
                     temp2 = InByte(j)
                     temp = (temp1 * 256 + temp2) - 65536
                     inData = inData & Chr(temp)
                     bFlag = 0
                     Else
                        If j <> UBound(InByte) Then
                        temp1 = InByte(j)
                        temp2 = InByte(j + 1)
                        temp = (temp1 * 256 + temp2) - 65536
                        inData = inData & Chr(temp) ' & "(*" & temp & "*) "
                        j = j + 1 '此次中断收到最后一个字节是前半个中文
                        Else
                        
                        Xbyte = InByte(j) '保存该字节
                        bFlag = 1 '置标志
                        
                        End If
                     End If
                 ' End If
            End If
         
        ' counttrue = 1
        
    Next j

 DoEvents

   ' Delay 1
 ' flag2 = False
 If InStr(inData, "^SYSS") Then
    MSComm1.Output = "AT+CNMI=2,2,0,0,1" & vbCrLf
  
 End If
  If InStr(inData, "+CMTI:") <> 0 And counttrue = 1 Then
        
            Text4.SelText = "新短信,请接收!" & vbCrLf
           ' Delay 1
            counttrue = counttrue + 1
 End If


If Check1.Value And InStr(inData, "+CMT:") <> 0 Then
 CloseOnComm
 Delay 1
 
 inData = MSComm1.Input
If Check2.Value Then
 
 Text4.SelText = inData
 MSComm1.Output = "at+cnma" & vbCrLf
 Exit Sub
End If
 Dim atext() As String
 atext = Split(inData, Chr(13) & Chr(10))
 Text8.Text = atext(1)
 SuperSMS1.ConPDU Text8.Text, P, D, T, TXT, 1, E
'Text4.Text = smsalltext
'获得解析后的数据



'  Text4.SelText = E & vbCrLf
'   MSComm1.Output = "at+cmgf=1" & vbCrLf
'   Sleep (600)
'   MSComm1.Output = "at+cmgl= """ & "REC UNREAD" & """" & vbCrLf
'   Sleep (1000)
'   TxString = MSComm1.Input
'   Text4.SelText = TxString
'   MSComm1.Output = "at+cmgf=0" & vbCrLf
'   Sleep 300
   
'   MSComm1.Output = "at+cnma" & vbCrLf
'   OpenOnComm
'   E = 0
'Else
   
Text4.SelText = "电话号码:" & P & vbCrLf _
& "日期:" & D & vbCrLf _
& "时间:" & T & vbCrLf _
& "内容:" & TXT & vbCrLf _
& "错误代码:" & E & vbCrLf
'保存到TEXT文档
Text8.Text = "电话号码:" & P & vbCrLf _
& "日期:" & D & vbCrLf _
& "时间:" & T & vbCrLf _
& "内容:" & TXT & vbCrLf _
& "错误代码:" & E & vbCrLf
Open "DataLink.txt" For Append As #1
   Print #1, Text8.Text
Close #1

Sleep (400)
MSComm1.Output = "at+cnma" & Chr(13) & Chr(10)
Sleep (600)
  inData = MSComm1.Input
 If InStr(inData, "OK") = 0 Then
    MSComm1.Output = "at+cnma" & Chr(13) & Chr(10)
    Sleep (400)
    inData = MSComm1.Input
 End If
  OpenOnComm
  

  
End If
 
  Text4.SelText = inData '将刚收到的字符串显示出来
    inData = ""
  Text4.SelStart = Len(Text4.Text) '光标置后
    
'End If
Case comEventRxOver '接收缓冲区满的处理
MsgBox "接收缓冲区满了!" '发出警告
End Select
End Sub

Private Sub Timer1_Timer()

Command1_Click

End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -