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

📄 form1.frm

📁 用MODEM来发短信
💻 FRM
📖 第 1 页 / 共 2 页
字号:
Sleep (1600)
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

OpenOnComm
End Sub

Private Sub Command6_Click()
CloseOnComm
MSComm1.Output = "at+cmgf=0" & Chr(13) & Chr(10)
Sleep (600)
MSComm1.Output = "at+cmgl=4" & Chr(13) & Chr(10)

Sleep (3800)
Dim smsalltext As String
smsalltext = MSComm1.Input
Dim atext() As String
Dim i As Integer
atext = Split(smsalltext, Chr(13) & Chr(10))
Dim j As Integer

If Len(atext(4)) < 15 Then
  Text4.SelText = "内存为空,无短信" & vbCrLf
Else
For j = 2 To (UBound(atext) - 1) / 2 - 1
 Sleep (100)
Text8.Text = atext(j * 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
Next j
End If
OpenOnComm
End Sub
Sub Conv()

SuperSMS1.SMS_Phone = Text9.Text
SuperSMS1.SMS_CSCA = Text1.Text
SuperSMS1.SMS_STXT = Text3.Text
Text5.Text = SuperSMS1.SMS_SMain
'Text8.Text = SuperSMS1.ANSIText(Text7.Text)
Text6.Text = SuperSMS1.SMS_SLen
End Sub

Private Sub Command5_Click()
Text4.Text = ""
End Sub



Private Sub Command7_Click()
CloseOnComm


MSComm1.Output = "at+cmgd=" & Text7.Text & vbCrLf
Dim deltext As String
Delay 1
deltext = MSComm1.Input
If InStr(deltext, "OK") <> 0 Then
   Text4.SelText = "删除短信" & Text7.Text & "成功" & vbCrLf
   deltext = ""
Else
   Text4.SelText = "删除短信" & Text7.Text & "失败,请重新检查" & vbCrLf
    deltext = ""
End If
OpenOnComm
End Sub


Private Sub combo2_dropdown()

Dim SCom As Integer
  Dim hKey As Long, ret As Long, lenData As Long, typeData As Long
    Dim Name As String, lenName As Long
    Dim idx As Integer, j As Integer
    Dim SSCom(0 To 50) As String
    ret = RegOpenKey(HKEY_LOCAL_MACHINE, "HARDWARE\DEVICEMAP\SERIALCOMM", hKey)
   ' If ret <> 0 Then Exit Sub
   ' SCom = ret
    ret = 0
    idx = 0
    Dim s As String
    Dim SArr() As String
    
    
    While ret = 0
        lenName = 256
        Name = String(256, Chr(0))
        ret = RegEnumValueAsAny(hKey, idx, Name, lenName, ByVal 0, typeData, _
                                ByVal vbNullString, lenData)
        If ret <> 0 Then
            RegCloseKey hKey
          '  Exit Sub
        End If
        
        lenName = Len(Name)
    
        s = String(lenData, Chr(0))
        RegEnumValueAsAny hKey, idx, Name, lenName, ByVal 0, typeData, ByVal s, lenData

        s = Left(s, InStr(s, Chr(0)) - 1)

        'Debug.Print s
      
      '  Text1.SelText = s
        SSCom(idx) = s
        DoEvents
        
        idx = idx + 1
        SCom = idx
    Wend
    RegCloseKey hKey
    
Combo2.Clear
Dim i As Integer
For i = 0 To SCom - 2
Combo2.AddItem SSCom(i), i
'Combo7.AddItem "com2", 1
Next
End Sub
Private Sub Command8_Click()
'On Error Resume Next
CloseOnComm

If InStr(Command8.Caption, "关闭串口") <> 0 Then
   MSComm1.PortOpen = False
   Command8.Caption = "打开串口"
   Command7.Enabled = False
   Command6.Enabled = False
   Command4.Enabled = False
   Command1.Enabled = False
   Command9.Enabled = False
   Command10.Enabled = False
   Command2.Enabled = False
   Command11.Enabled = False
   Label5.Enabled = False
   
 Else
 
  MSComm1.PortOpen = 1
  Command8.Caption = "关闭串口"
'  If flag2 = True Then
 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()
CloseOnComm
Dim TxString As String
Dim i As Integer

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

Private Sub Text4_KeyPress(KeyAscii As Integer)
On Error Resume Next
MSComm1.Output = Chr(KeyAscii)
End Sub
Private Sub Form_Load()
    On 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
    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
    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 Error Resume Next
Static bFlag As Boolean
Static Xbyte As Long
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, "+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
 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 = "电话号码:" & 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) '光标置后
    

Case comEventRxOver '接收缓冲区满的处理
MsgBox "接收缓冲区满了!" '发出警告
End Select
End Sub

⌨️ 快捷键说明

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