Imports System.Net
Public Class UtsWebPacket
Implements IDataPacket
Private _packetSn As Integer
Sub New()
_packetSn = 0
End Sub
Public Function FillPacket(cmd As Byte) As Byte()
Dim packet(PacketBits.Command) As Byte
packet(PacketBits.Head) = &HAA
packet(PacketBits.SerialNumber) = CByte(_packetSn)
packet(PacketBits.ParamLength) = &H0
packet(PacketBits.ParamLength + 1) = &H0
packet(PacketBits.CheckValue) = &H0
packet(PacketBits.Command) = cmd
packet(PacketBits.CheckValue) = CheckSum.GetPacketCheck(packet)
_packetSn += 1
If _packetSn > &HFF Then _packetSn = 0
Return packet
End Function
'''
''' 用于填充发送包
'''
''' 发送包命令
''' 发送包参数
'''
Public Function FillPacket(cmd As Byte, param() As Byte) As Byte() Implements IDataPacket.FillPacket
Dim packet(PacketBits.Command + param.Length) As Byte
packet(PacketBits.Head) = &HAA
packet(PacketBits.SerialNumber) = CByte(_packetSn)
Array.Copy(BitConverter.GetBytes(CShort(param.Length)), 0, packet, PacketBits.ParamLength, 2)
packet(PacketBits.CheckValue) = &H0
packet(PacketBits.Command) = cmd
Array.Copy(param, 0, packet, PacketBits.Param, param.Length)
packet(PacketBits.CheckValue) = CheckSum.GetPacketCheck(packet)
_packetSn += 1
If _packetSn > &HFF Then _packetSn = 0
Return packet
End Function
'''
''' 一般用于填充回复包
'''
''' 接收包序号
''' 接收包命令
''' 回复包参数
'''
Public Function FillPacket(sn As Byte, cmd As Byte, param() As Byte) As Byte()
Dim packet(PacketBits.Command + param.Length) As Byte
packet(PacketBits.Head) = &HAA
packet(PacketBits.SerialNumber) = sn
Array.Copy(BitConverter.GetBytes(CShort(param.Length)), 0, packet, PacketBits.ParamLength, 2)
packet(PacketBits.CheckValue) = &H0
packet(PacketBits.Command) = cmd
Array.Copy(param, 0, packet, PacketBits.Param, param.Length)
packet(PacketBits.CheckValue) = CheckSum.GetPacketCheck(packet)
Return packet
End Function
Public Function CheckPacket(packet() As Byte) As Boolean Implements IDataPacket.CheckPacket
If packet(PacketBits.Head) <> &HAA Then
Throw New Exception($"Invalid Packet Head!Src:{packet(PacketBits.Head)} Dest:{&HAA}")
End If
'If packet(PacketBits.SerialNumber) <> _packetSn Then
' Throw New Exception($"Invalid Packet Sn!Src: {packet(PacketBits.SerialNumber)} Dest:{_packetSn}")
'End If
Dim destLength As Integer = packet.Length - PacketBits.Param
If BitConverter.ToInt16(packet, PacketBits.ParamLength) <> destLength Then
Throw New Exception($"Invalid Packet Lengnt!Src:{packet(PacketBits.ParamLength)} Dest:{destLength}")
End If
If CheckSum.GetPacketCheck(packet) <> &H0 Then
Throw New Exception($"Invalid Packet CheckValue!Src:{BitConverter.ToString(packet)}")
End If
Return True
End Function
Enum PacketBits
''' 包头
Head
''' 序号
SerialNumber
''' 包长,两位,小端模式
ParamLength
''' 校验
CheckValue = ParamLength + 2
''' 命令
Command
''' 参数
Param
End Enum
Enum Commands
''' 心跳包
Heartbeat = &H1
''' 日志上报
SetLogType = &H2
''' 日志上报
GetLogType = &H3
''' 增加服务任务
AddServiceTask = &H11
''' 删除服务任务
DelServiceTask = &H12
''' 获取服务任务
GetServiceTask = &H13
''' 设置服务任务
SetServiceTask = &H14
''' 开启服务任务
StartServiceTask = &H15
''' 停止服务任务
StopServiceTask = &H16
''' 重启服务任务
RestartServiceTask = &H17
''' 上传文件
UploadFile = &H21
''' 读取指定文件大小
ReadFileSize = &H22
End Enum
Public Class PublicIpChangedEventArgs
Inherits EventArgs
Sub New(ip As IPAddress)
PublicIP = ip
End Sub
Public Property PublicIP As IPAddress
End Class
Public Class AddTaskEventArgs
Inherits EventArgs
Sub New(jsonString As String)
Me.JsonString = jsonString
End Sub
Public Property JsonString As String
End Class
End Class