📄 frm_rcv.frm
字号:
VERSION 5.00
Object = "{248DD890-BB45-11CF-9ABC-0080C7E7B78D}#1.0#0"; "MSWINSCK.OCX"
Begin VB.Form Frm_sndMT
Caption = "发送短消息 MT"
ClientHeight = 4485
ClientLeft = 60
ClientTop = 345
ClientWidth = 6690
LinkTopic = "Form1"
ScaleHeight = 4485
ScaleWidth = 6690
StartUpPosition = 3 '窗口缺省
Begin VB.CommandButton Command1
Caption = "建立winsock连接"
Height = 435
Left = 1260
TabIndex = 6
Top = 2520
Width = 1590
End
Begin VB.Timer Timer1
Enabled = 0 'False
Interval = 1000
Left = 4515
Top = 210
End
Begin VB.CommandButton Command2
Caption = "发送消息"
Height = 435
Left = 3255
TabIndex = 2
Top = 2520
Width = 1170
End
Begin VB.TextBox Txt_no
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 435
Left = 1365
TabIndex = 1
Top = 210
Width = 2010
End
Begin VB.TextBox Txt_msg
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 1170
Left = 1365
MultiLine = -1 'True
ScrollBars = 2 'Vertical
TabIndex = 0
Text = "Frm_rcv.frx":0000
Top = 1050
Width = 3165
End
Begin MSWinsockLib.Winsock WsockMT
Index = 0
Left = 3885
Top = 210
_ExtentX = 741
_ExtentY = 741
_Version = 393216
End
Begin VB.Label Lbl_show
Caption = "Label1"
Height = 645
Left = 105
TabIndex = 5
Top = 3360
Width = 6210
End
Begin VB.Label Label1
Caption = "手机号:"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 435
Index = 0
Left = 0
TabIndex = 4
Top = 210
Width = 1065
End
Begin VB.Label Label1
Caption = "内容:"
BeginProperty Font
Name = "宋体"
Size = 12
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 435
Index = 2
Left = 105
TabIndex = 3
Top = 1260
Width = 1065
End
End
Attribute VB_Name = "Frm_sndMT"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim msgMO_bin() As Byte '接收短消息的原始数据
Dim msgMT_bin() As Byte '发送短消息的数据
Dim RS As New ADODB.Recordset
Dim BoolCN As Boolean
Private Sub Command1_Click()
WsockMT(0).Connect
End Sub
Private Sub Command2_Click()
Timer1_Timer
End Sub
Private Sub Form_Load()
WsockMT(0).RemoteHost = "" '网关的IP
WsockMT(0).RemotePort = 8801
Open App.Path & "\log\log" & Date & ".txt" For Append As #1 'save to a log file
Print #1, Time & " MT 发送TCP连接"
Close #1
End Sub
Private Sub Form_Unload(Cancel As Integer)
Open App.Path & "\log\log" & Date & ".txt" For Append As #1 'save to a log file
Print #1, Time & " MT 程序关闭"
Close #1
End Sub
Private Sub Timer1_Timer()
Lbl_show = sckState(WsockMT(0).State)
'定时发送Submit
'从T_snd表中读出手机号、代码、短消息
'.Open "select * from t_snd where flag=0", Cn, 1, 2
'While Not .EOF And SequNum < 30
If WsockMT(0).State = 7 And SequNum < 32 Then
'winsock正常可以发送
BoolCN = False
SubMT.ChargeNumber = "86" & Txt_no & Chr(0) '手机号
SubMT.UserNumber = "86" & Txt_no & Chr(0)
SubMT.ServiceType = "01" & Chr(0) '业务代码
SubMT.MessageContent = Txt_msg ' 短消息内容
SendSubmit WsockMT(0), SubMT '调用发送函数
'已发送一条Submit
SequNum = SequNum + 1
'计为发送一次
Open App.Path & "\log\log" & Date & ".txt" For Append As #1 'save to a log file
Print #1, Time & "MT 发送一条Submit," & Txt_no & Txt_msg
Close #1
Else
BoolCN = True
End If
If BoolCN Then
'winsock不正常,断开重联
If WsockMT(0).State = 6 Then
'正在连接
ElseIf WsockMT(0).State = 0 Then
WsockMT(0).Close
WsockMT(0).Connect
DoEvents
ElseIf WsockMT(0).State <> 0 Then
WsockMT(0).Close
Open App.Path & "\log\log" & Date & ".txt" For Append As #1 'save to a log file
Print #1, Time & " MT winsock不正常,断开重联"
Close #1
End If
End If
End Sub
Private Sub WsockMT_Close(Index As Integer)
'断开连接
WsockMT(0).Close
Open App.Path & "\log\log" & Date & ".txt" For Append As #1 'save to a log file
Print #1, Time & " MT SMG断开连接" & Index
Close #1
End Sub
Private Sub WsockMT_Connect(Index As Integer)
'物理连接成功后,协议连接
SendBind WsockMT(0)
Open App.Path & "\log\log" & Date & ".txt" For Append As #1 'save to a log file
Print #1, Time & " MT 发送Bind。" & Index
Close #1
End Sub
Private Sub Wsockmt_DataArrival(Index As Integer, ByVal bytesTotal As Long)
'有数据传输
Dim s1 As Long
Dim Msg_bin() As Byte
Dim XuLieHao() As Byte
WsockMT(Index).GetData Msg_bin, vbByte, 4 '包长度
WsockMT(Index).GetData Msg_bin, vbByte, 4 'ID
s1 = GetID(Msg_bin)
WsockMT(Index).GetData XuLieHao, vbByte, 12 '节点'时间'序号
Open App.Path & "\log\log" & Date & ".txt" For Append As #1 'save to a log file
Print #1, Time & " MT 收到一个SMG消息,winsock序号:" & Index & "。消息头:" & s1
Close #1
Select Case s1
Case -1 'SGIP_BIND_RESP
'SMG对申请连接的回复
If BindRespMX(WsockMT(Index)) = 0 Then
'成功
'Lbl_show = Lbl_show & "连接成功"
Else
'不成功
Lbl_show = Lbl_show & "连接不成功"
End If
Case -3 'sgip_submit_resp
'SMG对Submit的回复
SubMitRespMX WsockMT(Index)
Case -2 'SGIP_UNBIND_RESP
'SMG对申请断开连接的回复
WsockMT(Index).Close
Case Else
WsockMT(Index).GetData Msg_bin, vbByte '包长度
'MsgBox RES
End Select
'Lbl_show = "有数据传送" & Index & s1
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -