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

📄 module1.bas

📁 通过串口与手机模块收发短信。已经用sim100测试过
💻 BAS
📖 第 1 页 / 共 5 页
字号:
                    
                            Do While (Not GSM_Cmd_ResWaitSuc)
                               DoEvents
                            Loop
                            
                    Frm_Main.T_GSM_CmdSenPro = False
                   
                   
                            If GSM_Cmd_ProcessOver = True Then
                            Gsm_CommonRev_Way = "gsmnone"
                              If Frm_Main.MSComm1.PortOpen = True Then
                                Frm_Main.MSComm1.Output = Chr(27)
                              End If
                                Call FlashMessage("终端无响应")
                                
                                GSM_Cmd_ResWaitSuc = False
                                Call FlashMessage("清空所有队列")
                                
                                For GsmMesSend_Temp = 0 To UBound(GsmSenArray)
                                     If GsmSenArray(GsmMesSend_Temp).Sen_Order > 0 Then
                                            GsmSenArray(GsmMesSend_Temp).Sen_Order = 0
                                            SenArray = SenArray - 1
                                            Frm_Main.Sta_Mes.Panels.Item(3).Text = "有" & SenArray & "个队列待发送"
                                     End If
                                Next GsmMesSend_Temp
                                Call SoftReset
                               
                            End If
                            
            If Not GSM_Cmd_ProcessOver Then
            
                            Gsm_CommonRev_Way = "Gsm_MesSenStr"
                            GSM_Str_ResWaitSuc = False
          
              If Frm_Main.MSComm1.PortOpen Then
                 Frm_Main.MSComm1.Output = GsmSenArray(GsmMesSend_i16).Sen_data
                 
                 
              End If
                     
                     Frm_Main.T_Gsm_StrSenPro = True
                            Do While (Not GSM_Str_ResWaitSuc)
                               
                               DoEvents
                            Loop
                    Frm_Main.T_Gsm_StrSenPro = False
                    
'                            If GSM_Str_ProcessOver = True Then
'
'                                Call FlashMessage("终端无响应")
'
'                                GSM_Str_ResWaitSuc = False
'                                GSM_Str_ProcessOver = False
'
'
'                                'Call CommonClearRev
'                                Gsm_CommonRev_Way = "gsmnone"
'
'                                Call FlashMessage("清空所有队列")
'
'                                For GsmMesSend_Temp = 0 To UBound(GsmSenArray)
'                                     If GsmSenArray(GsmMesSend_Temp).Sen_Order > 0 Then
'                                            GsmSenArray(GsmMesSend_Temp).Sen_Order = 0
'                                            SenArray = SenArray - 1
'                                            Frm_Main.Sta_Mes.Panels.Item(3).Text = "有" & SenArray & "个队列待发送"
'                                     End If
'                                Next GsmMesSend_Temp
'                                GsmMesSend_proloc = False
'                                Exit Sub
'
'
'
'
'                            End If
                            
                      GSM_Str_ResWaitSuc = False
                     If Not GSM_Str_ProcessOver Then
                            If GSM_Str_MesSenSuc Then
                               GSM_Str_MesSenSuc = False
                               Gsm_CommonRev_Way = "gsmnone"
                               SenArray = SenArray - 1
                               FlashMessage ("消息发送成功")
                               
                               Frm_Main.Sta_Mes.Panels.Item(3).Text = "有" & SenArray & "个队列待发送"
                               GsmSenArray(GsmMesSend_i16).Sen_Order = 0
                               If Frm_Main.Client.State = 7 Then
                                Frm_Main.Client.SendData Chr(36) & "OK"
                               End If
                              
                               
                            Else
                               If GsmSenArray(GsmMesSend_i16).ReSen_Times > 1 Then
                                 GsmSenArray(GsmMesSend_i16).ReSen_Times = GsmSenArray(GsmMesSend_i16).ReSen_Times - 1
                                 Dim GsmMesSendTempCount As Long
                                    GsmMesSendTempCount = 200000
                                    Do While GsmMesSendTempCount
                                       DoEvents
                                       GsmMesSendTempCount = GsmMesSendTempCount - 1
                                    Loop
                                    
                               Else
                               Gsm_CommonRev_Way = "gsmnone"
                               FlashMessage ("消息发送失败")
                               GsmSenArray(GsmMesSend_i16).Sen_Order = 0
                               SenArray = SenArray - 1
                               Frm_Main.Sta_Mes.Panels.Item(3).Text = "有" & SenArray & "个队列待发送"
                               End If
                            End If
                       Else
                         GSM_Str_ProcessOver = False
                       End If
             
                   Else
                    GSM_Cmd_ProcessOver = False
                   End If
                    
          Else
                  
               If RevArray > 0 Then
                  GsmMesRev_i13 = 1
                
                    For GsmMesRev_i11 = 0 To UBound(GsmSenArray)  '寻找一个有效的队列号
                    
                         GsmMesRev_i12 = GsmRevArray(GsmMesRev_i11).Rev_Order
                         
                        If GsmMesRev_i12 >= GsmMesRev_i13 Then
                           GsmMesRev_i15 = GsmMesRev_i12
                           GsmMesRev_i16 = GsmMesRev_i11
                           Exit For
                        End If
                        
                    Next GsmMesRev_i11
                    
                    For GsmMesRev_i11 = 0 To UBound(GsmRevArray)  '寻找最小的队列号
                    
                         GsmMesRev_i12 = GsmRevArray(GsmMesRev_i11).Rev_Order
                         
                       If GsmMesRev_i12 < GsmMesRev_i15 And GsmMesRev_i12 > 0 Then
                         GsmMesRev_i15 = GsmMesRev_i12
                         GsmMesRev_i16 = GsmMesRev_i11
                       End If
                    
                        
                    Next GsmMesRev_i11
         
                   Call GsmDepacket(GsmRevArray(GsmMesRev_i16))
                   
                   Call GsmDeDisplay(GsmRevArray(GsmMesRev_i16))
                   Call MesSendServer(GsmRevArray(GsmMesRev_i16))
               End If
          End If
       
        
       Loop
        GsmMesSend_proloc = False
        Frm_Main.ShockwaveFlash1.GotoFrame 0
   End If
     
     
End Sub

Public Sub GsmMessage(Message As String, ReDcs As String)
   
   Dim i1 As Integer
   Dim i2 As Integer
   Dim i3 As Integer
   Dim i4 As Integer
   
   i3 = 0
   i4 = -1
    
     For i1 = 0 To UBound(GsmSenArray)  '寻找最大的队列号
          i2 = GsmSenArray(i1).Sen_Order
          If i3 < i2 Then
            i3 = i2
          End If
     Next i1
   
   For i1 = 0 To UBound(GsmSenArray)   '寻找队列空位
      If GsmSenArray(i1).Sen_Order = 0 Then
          i4 = i1
          Exit For
      End If
   Next i1
   
  If i4 = -1 Then                     '找不到空位则添加空位
   ReDim Preserve GsmSenArray(UBound(GsmSenArray) + 1)
       i4 = UBound(GsmSenArray)
  End If
  
  GsmSenArray(i4).Sen_Order = i3 + 1
  GsmSenArray(i4).ReSen_Times = 6
    'i4为空位号
    'i3为队列号
  Select Case SendAccess
  
    Case "GsmPacket"
    
    
    GsmSenArray(i4).Sen_Str.SCA = ScaCode(Delspace(Frm_Pro.ScaTxt))
    GsmSenArray(i4).Sen_Str.PDU = rPDU
    GsmSenArray(i4).Sen_Str.MR = rMR
    GsmSenArray(i4).Sen_Str.DA = ComCode(Delspace(Frm_Pro.ComCode))
    GsmSenArray(i4).Sen_Str.PID = rPID
    GsmSenArray(i4).Sen_Str.DCS = ReDcs
    GsmSenArray(i4).Sen_Str.VP = rVP
    
        
          
     Select Case GsmSenArray(i4).Sen_Str.DCS
       Case "00"
             GsmSenArray(i4).Sen_Str.UDL = AscToHex((Len(Message) - 1) / 2 + ((Len(Message) - 1) / 2) / 8)
             GsmSenArray(i4).Sen_Str.UD = Message
        
             GsmSenArray(i4).Sen_data = GsmSenArray(i4).Sen_Str.SCA & _
                                        GsmSenArray(i4).Sen_Str.PDU & _
                                        GsmSenArray(i4).Sen_Str.MR & _
                                        GsmSenArray(i4).Sen_Str.DA & _
                                        GsmSenArray(i4).Sen_Str.PID & _
                                        GsmSenArray(i4).Sen_Str.DCS & _
                                        GsmSenArray(i4).Sen_Str.VP & _
                                        GsmSenArray(i4).Sen_Str.UDL & _
                                        GsmSenArray(i4).Sen_Str.UD
            GsmSenArray(i4).Sen_len = Len(GsmSenArray(i4).Sen_data) _
                                - Len(GsmSenArray(i4).Sen_Str.SCA) - 1
            GsmSenArray(i4).Sen_len = GsmSenArray(i4).Sen_len / 2
       Case "08"
             GsmSenArray(i4).Sen_Str.UDL = AscToHex((Len(Message) - 1) / 2)
             GsmSenArray(i4).Sen_Str.UD = Message
        
             GsmSenArray(i4).Sen_data = GsmSenArray(i4).Sen_Str.SCA & _
                                        GsmSenArray(i4).Sen_Str.PDU & _
                                        GsmSenArray(i4).Sen_Str.MR & _
                                        GsmSenArray(i4).Sen_Str.DA & _
                                        GsmSenArray(i4).Sen_Str.PID & _
                                        GsmSenArray(i4).Sen_Str.DCS & _
                                        GsmSenArray(i4).Sen_Str.VP & _
                                        GsmSenArray(i4).Sen_Str.UDL & _
                                        GsmSenArray(i4).Sen_Str.UD
            GsmSenArray(i4).Sen_len = Len(GsmSenArray(i4).Sen_data) _
                                - Len(GsmSenArray(i4).Sen_Str.SCA) - 1
            GsmSenArray(i4).Sen_len = GsmSenArray(i4).Sen_len / 2
         Case "05"
             GsmSenArray(i4).Sen_Str.UDL = AscToHex((Len(Message) - 1) / 2)
             GsmSenArray(i4).Sen_Str.UD = Message
        
             GsmSenArray(i4).Sen_data = GsmSenArray(i4).Sen_Str.SCA & _
                                        GsmSenArray(i4).Sen_Str.PDU & _
                                        GsmSenArray(i4).Sen_Str.MR & _
                                        GsmSenArray(i4).Sen_Str.DA & _
                                        GsmSenArray(i4).Sen_Str.PID & _
                                        GsmSenArray(i4).Sen_Str.DCS & _
                                        GsmSenArray(i4).Sen_Str.VP & _
                                        GsmSenArray(i4).Sen_Str.UDL & _
                                        GsmSenArray(i4).Sen_Str.UD
            GsmSenArray(i4).Sen_len = Len(GsmSenArray(i4).Sen_data) _
                                - Len(GsmSenArray(i4).Sen_Str.SCA) - 1
            GsmSenArray(i4).Sen_len = GsmSenArray(i4).Sen_len / 2
        End Select
            
         
    Case "GsmNoPacket"
    
     GsmSenArray(i4).Sen_data = Message
     GsmSenArray(i4).Sen_len = (Len(GsmSenArray(i4).Sen_data) - 19) / 2
     
    End Select
    
    SenArray = SenArray + 1
    Frm_Main.Sta_Mes.Panels.Item(3).Text = "有" & SenArray & "个队列待发送"
    Call GsmMesSend
End Sub

Public Sub GsmInitCmd()
   Static GsmInitCmd_proloc As Boolean
      If Not GsmInitCmd_proloc Then
        GsmInitCmd_proloc = True
        
           GsmInitCmd_ResWaitSuc = False
           Gsm_CommonRev_Way = "Gsm_MesInit"
           GsmInitCmd_ProcessOver = False
          
           'Call CommonClearRev
           'Frm_Main.MSComm1.RThreshold = 1
                If Frm_Main.MSComm1.PortOpen = True Then
                 Frm_Main.MSComm1.Output = "ATE0" & Chr(13)
                End If
                
                    Frm_Main.T_GsmInit = True
                    
                           Do While (Not GsmInitCmd_ResWaitSuc)
                              DoEvents
                           Loop
                           
                    Frm_Main.T_GsmInit = False
                    
                           GsmInitCmd_ResWaitSuc = False
                           If GsmInitCmd_ProcessOver = True Then
                               
                               GsmInitCmd_ProcessOver = False
                          
                               'Call CommonClearRev
                               Gsm_CommonRev_Way = "gsmnone"
                               
                               Call FlashMessage("通信模块初始化失败")
                               GsmInitCmd_proloc = False
                               
                               
                               
                               Exit Sub
                           End If
                           
              'Call CommonClearRev
            Gsm_CommonRev_Way = "Gsm_MesInit"
            'Frm_Main.MSComm1.RThreshold = 1
                If Frm_Main.MSComm1.PortOpen = True Then
                  Frm_Main.MSComm1.Output = "AT+CMGF=0" & Chr(13)
                End If
                        
                       Frm_Main.T_GsmInit = True
                               Do While (Not GsmInitCmd_ResWaitSuc)
                                  DoEvents
                               Loop
                       Frm_Main.T_GsmInit = False
                        
                               GsmInitCmd_ResWaitSuc = False

                               If GsmInitCmd_ProcessOver = True Then
                               
                          
                               'Call CommonClearRev
                               Gsm_CommonRev_Way = "gsmnone"
                               
                               GsmInitCmd_ProcessOver = False
                               'Gsm_MesInit = False
                               Call FlashMessage("通信模块初始化失败")
                               GsmInitCmd_proloc = False
                               Exit Sub

                               End If
                               
               'Call CommonClearRev
              Gsm_CommonRev_Way = "Gsm_MesInit"
              'Frm_Main.MSComm1.RThreshold = 1
            If Frm_Main.MSComm1.PortOpen = True Then
                 Frm_Main.MSComm1.Output = "AT+CSMS=0" & Chr(13)
            End If

                     
                     Frm_Main.T_GsmInit = True
                            Do While (Not GsmInitCmd_ResWaitSuc)
                               DoEvents
                            Loop
                     Frm_Main.T_GsmInit = False
                   
                            GsmInitCmd_ResWaitSuc = False

                            If GsmInitCmd_ProcessOver = True Then
                               
                           
                               'Call CommonClearRev
                               Gsm_CommonRev_Way = "gsmnone"
                               
                               GsmInitCmd_ProcessOver = False
                               'Gsm_MesInit = False
                               Call FlashMessage("通信模块初始化失败")
                               GsmInitCmd_proloc = False
                               Exit Sub

                           End If
                           
             'Call CommonClearRev
             Gsm_CommonRev_Way = "Gsm_MesInit"
             'Frm_Main.MSComm1.RThreshold = 1
                If Frm_Main.MSComm1.PortOpen = True Then
                   Frm_Main.MSComm1.Output = "AT+CNMI=2,2,2,0,0" & Chr(13)
                End If
 '除class2外都直接送到串口。class2要保存到SIM卡中。短消息发送成功有回执

⌨️ 快捷键说明

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