This repository has been archived on 2025-11-27. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AUTS_OLD/AUTS_DataService/UtsWeb/UtsWebPacket.vb
2024-03-11 16:34:21 +08:00

195 lines
5.5 KiB
VB.net
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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
''' <summary>
''' 用于填充发送包
''' </summary>
''' <param name="cmd">发送包命令</param>
''' <param name="param">发送包参数</param>
''' <returns></returns>
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
''' <summary>
''' 一般用于填充回复包
''' </summary>
''' <param name="sn">接收包序号</param>
''' <param name="cmd">接收包命令</param>
''' <param name="param">回复包参数</param>
''' <returns></returns>
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
''' <summary>包头</summary>
Head
''' <summary>序号</summary>
SerialNumber
''' <summary>包长,两位,小端模式</summary>
ParamLength
''' <summary>校验</summary>
CheckValue = ParamLength + 2
''' <summary>命令</summary>
Command
''' <summary>参数</summary>
Param
End Enum
<Flags>
Enum Commands
''' <summary>心跳包</summary>
Heartbeat = &H1
''' <summary>设置日志上报</summary>
SetLogType = &H2
''' <summary>读取日志上报</summary>
GetLogType = &H3
''' <summary>服务任务状态变化时,主动上报状态</summary>
UploadTaskStatus = &H10
''' <summary>增加服务任务</summary>
AddServiceTask = &H11
''' <summary>删除服务任务</summary>
DelServiceTask = &H12
''' <summary>获取服务任务</summary>
GetServiceTask = &H13
''' <summary>设置服务任务</summary>
SetServiceTask = &H14
''' <summary>开启服务任务</summary>
StartServiceTask = &H15
''' <summary>停止服务任务</summary>
StopServiceTask = &H16
''' <summary>重启服务任务</summary>
RestartServiceTask = &H17
''' <summary>上传文件</summary>
UploadFile = &H21
''' <summary>读取指定文件大小</summary>
ReadFileSize = &H22
''' <summary>App状态变化时主动上报状态</summary>
UploadAppStatus = &H30
''' <summary>获取App状态</summary>
GetAppStatus = &H31
''' <summary>设置App状态</summary>
SetAppStatus = &H32
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