📄 module1.bas
字号:
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 + -