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