Files

1270 lines
58 KiB
VB.net
Raw Permalink Normal View History

2025-12-11 10:14:45 +08:00
Imports System.Text
Public Class NetworkData
Enum states
接收 = True
发送 = False
End Enum
''' <summary>
''' 解析网络数据
''' </summary>
''' <param name="data_content"></param>
''' <param name="Type_Param"></param>
''' <param name="state">接收或发送</param>
''' <returns></returns>
Public Function Parsing_Network_Data(data_content As Byte(), ByRef Type_Param As List(Of String), state As Boolean) As List(Of String)
Try
Dim cmd As Byte = data_content(8)
Dim frame As Integer = data_content(10) * 256 + data_content(9)
Dim Project_Code As Integer = data_content(12) * 256 + data_content(11)
Type_Param.Add($"帧号:{frame}")
Type_Param.Add($"项目编码:{Project_Code},主机IP地址:192.168.{data_content(13)}.{data_content(14)}")
Dim str As String = ""
If data_content.Length - 17 > 0 Then
Dim data As Byte() = data_content.Skip(15).Take(data_content.Length - 17).ToArray
Select Case cmd
Case &H1
Type_Param.Add("搜索主机")
str = Search_The_Host(data, state)
Case &HA
Type_Param.Add("固件升级启动")
str = Firmware_Upgrade_Start(data, state)
Case &HE
Type_Param.Add("设备状态变化主动上报")
str = Devicestatus_Changes_Reported(data, state)
Case &HF
Type_Param.Add("服务器下发设备控制参数")
str = Deliversdevice_Control_Parameters(data, state)
Case &H8
Type_Param.Add("请求时间")
str = Request_Time(data, state)
Case &H22
Type_Param.Add("授权")
str = Authorization(data, state)
Case &H25
Type_Param.Add("查询授权时间")
str = Querying_Authorization_Time(data, state)
Case &H30
Type_Param.Add("读取映射寄存器内容")
str = Read_Contents_Mapregister(data, state)
Case &H31
Type_Param.Add("设置映射寄存器内容")
str = Set_Contents_Mappingregister(data, state)
Case &H70
Type_Param.Add("透传下发命令")
str = Transparent_Transmission_Delivers_Commands(data, state)
Case &H71
Type_Param.Add("透传上报")
str = Passthrough_Report(data, state)
Case &HA0
Type_Param.Add("时间同步")
str = Time_Synchronization(data, state)
Case &HB1
Type_Param.Add("读取主机系统参数信息")
str = Read_Parameter_Information(data, state)
Case &HD1
Type_Param.Add("启动设备测试")
str = Startup_Device_Test(data, state)
Case &HD2
Type_Param.Add("配置设备存在")
str = Configuration_Device_Exists(data, state)
Case &HD3
Type_Param.Add("读取配置设备")
str = Reading_Configuration_Devices(data, state)
Case &HB2
Type_Param.Add("BLV_Cx升级命令")
str = BLV_Cx_Upgrade_Command(data, state)
Case &HA
Type_Param.Add("BLV_Cx升级命令")
str = BLV_Cx_Upgrade_Command(data, state)
Case &HB3
Type_Param.Add("BLV_Cx校验命令")
str = BLV_Cx_Verification_Command(data, state)
Case &HB4
Type_Param.Add("BLV_Cx复位命令")
str = BLV_Cx_Reset_Command(data, state)
Case &HB5
Type_Param.Add("BLV_Cx配置文件下发命令")
str = BLV_Cx_Configuration_File_Send_Commands(data, state)
Case &HA
Type_Param.Add("BLV_Cx配置文件下发命令")
str = BLV_Cx_Configuration_File_Send_Commands(data, state)
End Select
Type_Param.Add(str)
Else
str = "无参数数据"
Type_Param.Add(str)
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return Type_Param
End Function
#Region "cmd通讯命令"
#Region "搜索主机"
''' <summary>
''' 搜索主机
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Search_The_Host(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.发送 Then
Dim IP As String = $"{data(0)}.{data(1)}.{data(2)}.{data(3)}"
Dim Subnetmask As String = $"{data(4)}.{data(5)}.{data(6)}.{data(7)}"
Dim gateway As String = $"{data(8)}.{data(9)}.{data(10)}.{data(11)}"
Dim Port As String = data(13) * 256 + data(12)
Dim MAC As String = $"{BitConverter.ToString(data.Skip(14).Take(6).ToArray).Replace("-", " ")}"
Dim Version_Number As String = Encoding.UTF8.GetString(data.Skip(20).Take(20).ToArray)
Dim Set_Data_Version_Number As String = data(41) * 256 + data(40)
Dim DNSmask As String = $"{data(43)}.{data(44)}.{data(45)}.{data(46)}"
Dim Room_Note As String = DataTypes.ByteToInt(data.Skip(47).Take(16).ToArray)
Dim Room_Number_Note As String = DataTypes.ByteToInt(data.Skip(63).Take(16).ToArray)
Dim Room_ID As String = DataTypes.ByteToInt(data.Skip(79).Take(4).ToArray).ToString
Dim Room_Number_ID As String = DataTypes.ByteToInt(data.Skip(83).Take(4).ToArray).ToString
str.Append($"服务器IP地址:{IP};子网掩码:{Subnetmask};网关:{gateway};端口:{Port};MAC地址:{MAC};版本号:{Version_Number};配置数据版本号:{Set_Data_Version_Number},
DNS地址:{DNSmask};房型备注:{Room_Note};房号备注:{Room_Number_Note};房型ID:{Room_ID};房号ID:{Room_Number_ID};")
ElseIf state = states.接收 Then
Dim IP As String = $"{data(5)}.{data(6)}.{data(7)}.{data(8)}"
Dim Port As String = data(10) * 256 + data(9)
str.Append($"配置软件IP地址:{IP},配置软件端口:{Port}")
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "固件升级启动"
''' <summary>
''' 固件升级启动
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Firmware_Upgrade_Start(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Select Case data(0)
Case &H0
str.Append($"状态:就绪;")
Case &H1
str.Append($"状态:成功;")
Case &H2
str.Append($"状态:失败;")
Case &H3
str.Append($"状态:文件块数错误;")
Case &H4
str.Append($"状态:文件类型错误;")
Case &H5
str.Append($"状态文件MD5值错误;")
Case Else
End Select
ElseIf state = states.发送 Then
Dim IP As String = $"{data(5)}.{data(6)}.{data(7)}.{data(8)}"
Dim Port As String = data(10) * 256 + data(9)
Dim MD5 As String = Encoding.UTF8.GetString(data.Skip(6).Take(16).ToArray)
Dim File_Blocks_Number As String = data(23) * 256 + data(22)
str.Append($"配置软件IP地址{IP};配置端口号:{Port};升级文件MD5值{MD5};文件总块数:{File_Blocks_Number}")
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "设备状态变化主动上报"
''' <summary>
''' 设备状态变化主动上报
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Devicestatus_Changes_Reported(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If data.Count > 0 Then
Select Case data(0)
Case &H1
str.Append("系统锁:打开;")
Case &H2
str.Append("系统锁:关闭;")
End Select
str.Append($"卡类型:{data(1)};")
Select Case data(2)
Case &H1
str.Append("门磁状态:开;")
Case &H2
str.Append("门磁状态:关;")
End Select
str.Append($"门锁电量:{data(4) * 256 + data(3)}mv;空调数量:{data(6)};上报设备数量:{data(7)};")
Dim t As Integer = 8
If data(7) > 0 Then
For i = 1 To data(7)
Dim DevType As String = data(t)
Dim DevAddr As String = data(t + 1)
Dim Devstate As String = data(t + 3) * 256 + data(t + 2)
Select Case DevType
Case &H0
str.Append($"设备参数{i}:上报设备类型:{DevType}(指令场景);上报设备地址:{DevAddr};上报设备状态:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append("设备动作--开;")
Case &H2
str.Append("设备动作--关;")
End Select
str.Append($"设备内容:{data(t + 5)}")
Case &H1
str.Append($"设备参数{i}:上报设备类型:{DevType}(强电继电器);上报设备地址:{DevAddr};上报设备状态:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append("设备动作--开;")
Case &H2
str.Append("设备动作--关;")
End Select
str.Append($"设备内容:{data(t + 5)}")
Case &H2
str.Append($"设备参数{i}:上报设备类型:{DevType}(弱点输入);上报设备地址:{DevAddr};上报设备状态:{Devstate};")
Case &H3
str.Append($"设备参数{i}:上报设备类型:{DevType}(弱点输出);上报设备地址:{DevAddr};上报设备状态:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append("设备动作--开;")
Case &H2
str.Append("设备动作--关;")
End Select
str.Append($"设备内容:{data(t + 5)};")
Case &H4
str.Append($"设备参数{i}:上报设备类型:{DevType}(服务信息);上报设备地址:{DevAddr};")
Select Case data(3) And &HFF
Case &H1
str.Append("服务场景:入住;")
Case &H2
str.Append("服务场景:勿扰;")
Case &H3
str.Append("服务场景:清理;")
Case &H4
str.Append("服务场景:呼叫;")
Case &H5
str.Append("服务场景:洗衣;")
Case &H6
str.Append("服务场景:退房;")
Case &H7
str.Append("服务场景:稍后;")
Case &H8
str.Append("服务场景:SOS;")
Case &H9
str.Append("服务场景:送餐;")
Case &HA
str.Append("服务场景:开锁;")
Case &HB
str.Append("服务场景:行李;")
Case &HC
str.Append("服务场景:保险箱;")
Case &HD
str.Append("服务场景:门槛;")
End Select
Select Case data(t + 4)
Case &H1
str.Append("设备动作--开;")
Case &H2
str.Append("设备动作--关;")
End Select
str.Append($"设备内容:{data(t + 5)}")
Case &H5
str.Append($"设备参数{i}:上报设备类型:{DevType}(干接点窗帘);上报设备地址:{DevAddr};上报设备状态:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append("设备动作--开;")
Case &H2
str.Append("设备动作--关;")
Case &H6
str.Append("设备动作--停;")
End Select
str.Append($"设备内容:{data(t + 5)}")
Case &H6
str.Append($"设备参数{i}:上报设备类型:{DevType}(开关);上报设备地址:{DevAddr};上报设备状态:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append($"设备动作--开;亮度值:{data(t + 5)}")
Case &H2
str.Append($"设备动作--关;亮度值:{data(t + 5)}")
Case &H6
str.Append("设备动作:停;")
Select Case data(t + 5)
Case &H1
str.Append("状态:点按;")
Case &H2
str.Append("状态:松开;")
Case &H3
str.Append("状态:长按;")
End Select
End Select
Case &H7
str.Append($"设备参数{i}:上报设备类型:{DevType}(空调);上报设备地址:{DevAddr};上报设备状态:{Devstate};")
Dim Switch_machine As Byte = (data(t + 4) >> 7) And &H3
Dim model As Byte = (data(t + 4) >> 5) And &HF
Dim windspeed As Byte = (data(t + 4) >> 3) And &HF
Dim valve As Byte = (data(t + 4) >> 2) And &H3
Dim Set_temperature_1 As Byte = ((data(t + 5) >> 5) And &H7) Or ((data(t + 4) << 3) And &H1F)
Dim Set_temperature_2 As Byte = data(t + 5) And &H1F
Select Case Switch_machine
Case &H0
str.Append("设备动作--开关机:关机;")
Case &H1
str.Append("设备动作--开关机:开机;")
End Select
Select Case model
Case &H1
str.Append("模式:制冷;")
Case &H2
str.Append("模式:制热;")
Case &H3
str.Append("模式:送风;")
Case &H4
str.Append("模式:自动;")
End Select
Select Case windspeed
Case &H1
str.Append("风速:低速;")
Case &H2
str.Append("风速:中速;")
Case &H3
str.Append("风速:高速;")
Case &H4
str.Append("风速:自动;")
End Select
Select Case valve
Case &H1
str.Append("阀门:开阀;")
Case &H2
str.Append("阀门:关阀;")
End Select
str.Append($"设置温度:{Set_temperature_1}摄氏度;")
str.Append($"室内温度:{Set_temperature_2}摄氏度;")
Case &H9
str.Append($"设备参数{i}:上报设备类型:{DevType}(空气质量检测设备);上报设备地址:{DevAddr};")
Dim Air_quality As Byte = data(t + 3) And &HF
Select Case Air_quality
Case &H1
str.Append($"002浓度:{data(t + 5) * 256 + data(4)}")
Case &H2
str.Append($"甲醛浓度:{data(t + 5) * 256 + data(4)}")
Case &H2
str.Append($"TVOC浓度:{data(t + 5) * 256 + data(4)}")
Case &H2
str.Append($"PM2.5浓度:{data(t + 5) * 256 + data(4)}")
Case &H2
str.Append($"PM1.0浓度:{data(t + 5) * 256 + data(4)}")
Case &H2
str.Append($"温度:{data(t + 5) * 256 + data(4)}")
Case &H2
str.Append($"湿度:{data(t + 5) * 256 + data(4)}")
End Select
str.Append($"设备内容:{data(t + 5) * 256 + data(4)}")
Case &HA
str.Append($"设备参数{i}:上报设备类型:{DevType}(插卡取电);上报设备地址:{DevAddr};上报设备状态:{Devstate};")
Dim card_action As Byte = (data(t + 4) >> 7) And &H3
Dim card_identity As Byte = (data(t + 4) >> 4) And &HF
str.Append($"卡动作:{card_action}")
Select Case card_identity
Case &H0
str.Append("卡身份:无人;")
Case &H1
str.Append("卡身份:客人;")
Case &H2
str.Append("卡身份:服务员;")
Case &H3
str.Append("卡身份:经理;")
Case &H4
str.Append("卡身份:工程;")
Case &H5
str.Append("卡身份:总管;")
Case &H6
str.Append("卡身份:高频卡;")
End Select
str.Append($"备用:{data(t + 4) And &HF};编号:{data(5)}")
Case &HB
str.Append($"设备参数{i}:上报设备类型:{DevType}(地暖);上报设备地址:{DevAddr};上报设备状态:{Devstate};")
Dim Switch_machine As Byte = (data(t + 4) >> 7) And &H3
Dim model As Byte = (data(t + 4) >> 5) And &HF
Dim valve As Byte = (data(t + 4) >> 4) And &H3
Dim Set_temperature_1 As Byte = ((data(t + 5) >> 6) And &H3F) Or ((data(t + 4) << 4) And &HFF)
Dim Set_temperature_2 As Byte = data(t + 5) And &H3F
Select Case Switch_machine
Case &H0
str.Append("设备动作--开关机:关机;")
Case &H1
str.Append("设备动作--开关机:开机;")
End Select
Select Case model
Case &H1
str.Append("模式:手动;")
Case &H2
str.Append("模式:自动;")
Case &H3
str.Append("模式:定时;")
End Select
Select Case valve
Case &H1
str.Append("阀门:开阀;")
Case &H2
str.Append("阀门:关阀;")
End Select
str.Append($"设置温度:{Set_temperature_1}摄氏度;")
str.Append($"室内温度:{Set_temperature_2}摄氏度;")
Case &HC
str.Append($"设备参数{i}:上报设备类型:{DevType}(RCU设备网络);")
Case &HD
str.Append($"设备参数{i}:上报设备类型:{DevType}(窗帘);")
Case &HF
str.Append($"设备参数{i}:上报设备类型:{DevType}(红外发送);上报设备地址:{DevAddr};上报设备回路:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append($"设备状态:开;设备内容--{data(t + 5)}")
Case &H2
str.Append($"设备状态:关;设备内容--{data(t + 5)}")
End Select
Case &H18
str.Append($"设备参数{i}:上报设备类型:{DevType}(PWM调光);上报设备地址:{DevAddr};上报设备回路:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append($"设备状态:开;设备内容--亮度范围:{data(t + 5)}")
Case &H2
str.Append($"设备状态:关;设备内容--亮度范围:{data(t + 5)}")
End Select
Case &H12
str.Append($"设备参数{i}:上报设备类型:{DevType}(灯带);上报设备地址:{DevAddr};上报设备回路:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append($"设备状态:开;设备内容--亮度范围:{data(t + 5)}")
Case &H2
str.Append($"设备状态:关;设备内容--亮度范围:{data(t + 5)}")
End Select
Case &H13
str.Append($"设备参数{i}:上报设备类型:{DevType}(中控);")
Case &H14
str.Append($"设备参数{i}:上报设备类型:{DevType}(微信锁);上报设备地址:{DevAddr};上报设备回路:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append($"设备状态:开;设备内容--{data(t + 5)}")
Case &H2
str.Append($"设备状态:关;设备内容--{data(t + 5)}")
End Select
Case &H15
str.Append($"设备参数{i}:上报设备类型:{DevType}(背景音乐);上报设备地址:{DevAddr};上报设备回路:{Devstate};")
Select Case data(t + 4) And &HF
Case &H0
str.Append($"播放功能:功能设置;设备内容--文件序号:{data(t + 5)}")
Case &H1
str.Append($"播放功能:场景开时播放;设备内容--文件序号:{data(t + 5)}")
Case &H2
str.Append($"播放功能:场景关时播放;设备内容--文件序号:{data(t + 5)}")
Case &H3
str.Append($"播放功能:开机;设备内容--文件序号:{data(t + 5)}")
Case &H4
str.Append($"播放功能:关机;设备内容--文件序号:{data(t + 5)}")
End Select
Case &H16
str.Append($"设备参数{i}:上报设备类型:{DevType}(房态下发);上报设备地址:{DevAddr};上报设备回路:{Devstate};")
Select Case data(t + 4)
Case &H1
str.Append("设备动作:出租;设备内容--暂无")
Case &H2
str.Append("设备动作:退房;设备内容--暂无")
Case &H2
str.Append("设备动作:待租;设备内容--暂无")
Case &H2
str.Append("设备动作:空房;设备内容--暂无")
End Select
End Select
t += 6
Next
End If
str.Append($"主机故障数量:{data(t)}")
If data(t) > 0 Then
For i = 1 To data(t)
Dim DevType As String = data(t + 1)
Dim DevAddr As String = data(t + 2)
Dim DevLoop As String = data(t + 4) * 256 + data(t + 3)
Dim Devstate As String = data(t + 5)
Dim DevData As String = data(t + 6)
Dim Devstr As String = ""
Select Case Devstate
Case &H1
Select Case DevData
Case &H0
Devstr = "在线"
Case &H1
Devstr = "离线"
End Select
Case &H2
Devstr = "0~100电量"
Case &H3
Devstr = "电流(10mA)"
Case &H4
Devstr = "1901故障检测次数"
End Select
str.Append($"故障设备参数{i}:故障设备类型:{DevType};故障设备地址:{DevAddr};故障设备的回路地址:{DevLoop};故障设备状态:{Devstr};")
t += 5
Next
End If
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "服务器下发设备控制参数"
''' <summary>
''' 服务器下发设备控制参数
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Deliversdevice_Control_Parameters(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
Dim t As Integer = 1
str.Append($"控制设备总数:{data(0)};")
If data(0) > 0 Then
For i = 1 To data(0)
Dim DevType As String = data(t)
Dim DevAddr As String = data(t + 1)
Dim DevLoop As String = data(t + 3) * 256 + data(t + 2)
Dim Dev_Output_Type_L As String = data(t + 4)
Dim Dev_Output_Type_H As String = data(t + 5)
str.Append($"设备控制参数{i}:设备控制类型:{DevType};设备控制地址:{DevAddr};控制设备的回路地址:{DevLoop};控制设备输出类型--执行方式:{Dev_Output_Type_L},执行内容:{Dev_Output_Type_H};")
t += 6
Next
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
Return str.ToString
End Try
Return str.ToString
End Function
#End Region
#Region "请求时间"
''' <summary>
''' 请求时间
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Request_Time(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
str.Append($"{data(0)}{data(1)}年{data(2)}月{data(3)}日 星期{data(4)} :{data(5)}时:{data(6)}分")
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "授权"
''' <summary>
''' 授权
''' </summary>
''' <param name="state"></param>
''' <returns></returns>
Public Function Authorization(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
str.Append($"授权天数:{data(1) * 256 + data(0)}")
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "查询授权时间"
''' <summary>
''' 查询授权时间
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Querying_Authorization_Time(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
Dim Current_running_time As String = $"当前运行时间:{data(0)}{data(1)}年{data(2)}月{data(3)}日;"
Dim Current_Authorization_time As String = $"当前授权时间:{data(0)}{data(1)}年{data(2)}月{data(3)}日;"
Dim Software_Version_number As String = Encoding.UTF8.GetString(data.Skip(6).Take(20).ToArray)
str.Append($"{Current_running_time}{Current_Authorization_time}软件版本号:{Software_Version_number};")
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "读取映射寄存器内容"
''' <summary>
''' 读取映射寄存器内容
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Read_Contents_Mapregister(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Dim register_count As Integer = data(0)
str.Append($"寄存器个数:{register_count};")
Dim t As Integer = 1
For i = 1 To register_count
Dim start_address As String = $"{data(t)}.{data(t + 1)}.{data(t + 2)}.{data(t + 3)}"
Dim register_data As String = Encoding.UTF8.GetString(data.Skip(t + 4).Take(4).ToArray)
str.Append($"寄存器地址:{start_address},寄存器内容:{register_data};")
t += 8
Next
ElseIf state = states.发送 Then
Dim register_count As Integer = data(0)
Dim start_address As String = $"{data(1)}.{data(2)}.{data(3)}.{data(4)}"
str.Append($"寄存器个数:{register_count};寄存器起始地址:{start_address}")
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "设置映射寄存器内容"
''' <summary>
''' 设置映射寄存器内容
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Set_Contents_Mappingregister(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Select Case data(0)
Case &H1
str.Append("成功")
Case &H2
str.Append("失败")
End Select
ElseIf state = states.发送 Then
Dim register_count As Integer = data(0)
str.Append($"寄存器个数:{register_count};")
Dim t As Integer = 1
For i = 1 To register_count
Dim start_address As String = $"{data(t)}.{data(t + 1)}.{data(t + 2)}.{data(t + 3)}"
Dim register_data As String = Encoding.UTF8.GetString(data.Skip(t + 4).Take(4).ToArray)
str.Append($"寄存器地址:{start_address},寄存器内容:{register_data};")
t += 8
Next
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "透传下发命令"
''' <summary>
''' 透传下发命令
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Transparent_Transmission_Delivers_Commands(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Select Case data(0)
Case &H1
Dim Passthrough_state As Integer = data(1)
Select Case Passthrough_state
Case &H1
str.Append("透传状态查询--状态:正常模式;")
Case &H2
str.Append("透传状态查询--状态:透传模式;")
Case &H3
str.Append("透传状态查询--状态:监控模式;")
End Select
Case &H2
Dim Passthrough_state As Integer = data(1)
Select Case Passthrough_state
Case &H1
str.Append("透传设置--状态:正确;")
Case &H2
str.Append("透传设置--状态:错误;")
End Select
Case &H3
Dim Passthrough_state As Integer = data(1)
Select Case Passthrough_state
Case &H1
str.Append("透传数据传输--状态:正确;")
Case &H2
str.Append("透传数据传输--状态:有误;")
Case &H3
str.Append("透传数据传输--状态:超时;")
End Select
End Select
ElseIf state = states.发送 Then
Select Case data(0)
Case &H1
Dim Port As Integer = data(1)
str.Append($"透传状态查询--查询的485端口:{Port};")
Case &H2
Dim Port As Integer = data(1)
str.Append($"透传设置--设置的485端口:{Port};")
Select Case data(2)
Case &H1
str.Append($"波特率:9600;")
Case &H2
str.Append($"波特率:14400;")
Case &H3
str.Append($"波特率:19200;")
Case &H4
str.Append($"波特率:38400;")
Case &H5
str.Append($"波特率:56000;")
Case &H6
str.Append($"波特率:57600;")
Case &H7
str.Append($"波特率:115200;")
End Select
str.Append($"超时时间:{data(3)}s;")
Select Case data(4)
Case &H1
str.Append("透传模式设置:正常模式;")
Case &H2
str.Append("透传模式设置:透传模式;")
Case &H3
str.Append("透传模式设置:监控模式;")
End Select
Case &H3
Dim Port As Integer = data(1)
str.Append($"透传数据传输--485端口:{Port};")
str.Append($"超时时间:{data(2)}s;")
str.Append($"透传数据:{BitConverter.ToString(data.Skip(3).ToArray).Replace("-", " ")}")
End Select
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "透传上报"
''' <summary>
''' 透传上报
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Passthrough_Report(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Select Case data(0)
Case &H1
str.Append("正确")
Case &H2
str.Append("有误")
End Select
ElseIf state = states.发送 Then
Dim Port As Integer = data(1)
str.Append($"透传数据传输--485端口:{Port};")
Select Case data(1)
Case &H1
str.Append($"波特率:9600;")
Case &H2
str.Append($"波特率:14400;")
Case &H3
str.Append($"波特率:19200;")
Case &H4
str.Append($"波特率:38400;")
Case &H5
str.Append($"波特率:56000;")
Case &H6
str.Append($"波特率:57600;")
Case &H7
str.Append($"波特率:115200;")
End Select
str.Append($"透传数据:{BitConverter.ToString(data.Skip(2).ToArray).Replace("-", " ")}")
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "时间同步"
''' <summary>
''' 时间同步
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Time_Synchronization(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Select Case data(0)
Case &H1
str.Append("成功")
Case &H2
str.Append("失败")
End Select
ElseIf state = states.发送 Then
str.Append($"20{data(0)}年{data(1)}月{data(2)}日 星期{data(3)} {data(4)}:{data(5)}:{data(6)}秒")
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "读取主机系统参数信息"
''' <summary>
''' 读取主机系统参数信息
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Read_Parameter_Information(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.发送 Then
Dim Model_number As Integer = DataTypes.ByteToInt(data.Skip(1).Take(16).ToArray) '机型编号
Dim ip As String = $"{data(17)}.{data(18)}.{data(19)}.{data(20)}" 'IP地址
Dim Serverip As String = $"{data(17)}.{data(18)}.{data(19)}.{data(20)}" '服务器IP地址
Dim Subnetmask As String = $"{data(21)}.{data(22)}.{data(23)}.{data(24)}" '子网掩码
Dim gateway As String = $"{data(29)}.{data(30)}.{data(31)}.{data(32)}" '网关
Dim Port As String = DataTypes.ByteToInt(data.Skip(33).Take(4).ToArray).ToString '端口
Dim DNSmask As String = $"{data(37)}.{data(38)}.{data(39)}.{data(40)}" 'DNS地址
Dim Version_Number As String = Encoding.UTF8.GetString(data.Skip(41).Take(20).ToArray) '软件版本号
Dim Hosttime As String = $"20{data(61)}/{data(62)}/{data(63)} {data(64)}:{data(65)}:{data(66)}" '主机时间
Dim MAC As String = BitConverter.ToString(data.Skip(87).Take(6).ToArray).Replace("-", " ") 'MAC地址
Dim projectnumber As String = DataTypes.ByteToInt(data.Skip(93).Take(4).ToArray).ToString '项目编号
Dim Room_Number_ID As String = DataTypes.ByteToInt(data.Skip(97).Take(4).ToArray).ToString '房号ID
Dim Room_Type_ID As String = DataTypes.ByteToInt(data.Skip(101).Take(4).ToArray).ToString '房型ID
Dim Set_Data_Version_Number As String = DataTypes.ByteToInt(data.Skip(105).Take(4).ToArray).ToString '配置数据版本号
Dim toroom As String = Encoding.UTF8.GetString(data.Skip(109).Take(4).ToArray) '房态
Dim season As String = Encoding.UTF8.GetString(data.Skip(113).Take(4).ToArray) '季节
Dim lock_state As String = Encoding.UTF8.GetString(data.Skip(117).Take(4).ToArray) '锁定状态
Dim Authorized_time As String = Encoding.UTF8.GetString(data.Skip(121).Take(4).ToArray) '授权时间
Dim Authorized_date As String = DataTypes.ByteToInt(data.Skip(125).Take(4).ToArray).ToString '授权天数
Dim Room_Number_Note As String = Encoding.UTF8.GetString(data.Skip(129).Take(16).ToArray) '房号备注
Dim Room_Type_Note As String = Encoding.UTF8.GetString(data.Skip(145).Take(16).ToArray) '房型备注
Dim Room_Note As String = Encoding.UTF8.GetString(data.Skip(161).Take(16).ToArray) '房间备注
Dim MCU_Model_Name As String = Encoding.UTF8.GetString(data.Skip(257).Take(64).ToArray) 'MCU机型名称
Dim Control_Model_Name As String = Encoding.UTF8.GetString(data.Skip(321).Take(64).ToArray) '中控机型名称
Dim Read_Register_Address As String = Encoding.UTF8.GetString(data.Skip(385).Take(16).ToArray) '读取寄存器地址
Dim Read_Register_Contents As String = Encoding.UTF8.GetString(data.Skip(389).Take(16).ToArray) '读取寄存器内容
str.Append($"本机按键状态:{data(0)};机型编号:{Model_number};IP地址:{ip};服务器IP地址:{ip};子网掩码:{Subnetmask};
端口:{Port};DNS地址:{DNSmask};软件版本号:{Version_Number};主机时间:{Hosttime};MAC地址:{MAC};
项目编号:{projectnumber};房号ID:{Room_Number_ID};房型ID:{Room_Type_ID};配置数据版本号:{Set_Data_Version_Number};
房态:{toroom};季节:{season};锁定状态:{lock_state};授权时间:{Authorized_time};授权天数:{Authorized_date};
房号备注:{Room_Number_Note};房型备注:{Room_Type_Note};房间备注:{Room_Note};MCU机型名称:{MCU_Model_Name};
中控机型名称:{Control_Model_Name};读取寄存器地址:{Read_Register_Address};读取寄存器内容:{Read_Register_Contents};")
ElseIf state = states.接收 Then
Dim register_count As Integer = data(4)
Dim start_address As String = Encoding.UTF8.GetString(data.Skip(5).Take(4).ToArray)
str.Append($"寄存器个数:{register_count};寄存器起始地址:{start_address}")
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "启动设备测试"
''' <summary>
''' 启动设备测试
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Startup_Device_Test(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.发送 Then
Dim number As Integer = data(0)
Dim t As Integer = 1
If number > 0 Then
For i = 1 To number
Dim DevType As String = data(t)
Dim DevAddr As String = data(t + 1)
Select Case data(t + 2)
Case &H1
str.Append($"测试设备类型:{DevType};测试设备地址:{DevAddr};测试设备状态:正常")
Case &H2
str.Append($"测试设备类型:{DevType};测试设备地址:{DevAddr};测试设备状态:失败")
End Select
t += 3
Next
End If
ElseIf state = states.接收 Then
Select Case data(0)
Case 1
str.Append("启动测试")
End Select
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "配置设备存在"
''' <summary>
''' 配置设备存在
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Configuration_Device_Exists(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
str.Append($"配置总包数:{data(0)};当前包序号:{data(1)};")
Select Case data(2)
Case &H0
str.Append($"数据内容:设备存在")
Case &H1
str.Append($"数据内容:设备动作")
End Select
str.Append($"设备类型:{data(3)};设备地址:{data(4)}")
Select Case data(5)
Case &H0
str.Append("波特率:无效")
Case &H1
str.Append("波特率:9600")
Case &H2
str.Append("波特率:14400")
Case &H3
str.Append("波特率:19200")
Case &H4
str.Append("波特率:38400")
Case &H5
str.Append("波特率:56000")
Case &H6
str.Append("波特率:57600")
Case &H7
str.Append("波特率:115200")
Case &H8
str.Append("波特率:4800")
Case &H9
str.Append("波特率:2400")
End Select
str.Append($"端口号:{data(6)};协议:{data(7)};设备型号:{Encoding.UTF8.GetString(data.Skip(72).Take(16).ToArray)};
设备名称:{Encoding.UTF8.GetString(data.Skip(88).Take(16).ToArray)};备注:{Encoding.UTF8.GetString(data.Skip(104).Take(138).ToArray)};")
ElseIf state = states.发送 Then
Select Case data(0)
Case &H1
str.Append("成功")
Case &H2
str.Append("失败")
End Select
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "读取配置设备"
''' <summary>
''' 读取配置设备
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function Reading_Configuration_Devices(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.发送 Then
Select Case data(0)
Case &H1
str.Append("读取配置类型:配置信息")
Case &H2
str.Append("读取配置类型:配置数据")
End Select
str.Append($"读取配置总包数:{data(1)};")
For i = 1 To data(1)
str.Append($"读取配置当前包序号:{data(i + 1)};")
Next
ElseIf state = states.接收 Then
Select Case data(0)
Case &H1
str.Append("读取配置类型:配置信息")
Case &H2
str.Append("读取配置类型:配置数据")
End Select
str.Append($"读取配置总包数:{data(1)};读取配置当前包序号:{data(2)};")
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "BLV_Cx升级命令"
''' <summary>
''' BLV_Cx升级命令
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function BLV_Cx_Upgrade_Command(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Select Case data(0)
Case &H0
str.Append("就绪")
Case &H1
str.Append("成功")
Case &H1
str.Append("失败")
Case &H1
str.Append("文件块数错误")
Case &H1
str.Append("文件类型错误")
Case &H1
str.Append("文件MD5值错误")
End Select
str.Append($"固件版本号:{Encoding.UTF8.GetString(data.Skip(1).Take(20).ToArray)}")
ElseIf state = states.发送 Then
str.Append($"配置软件IP地址:{data(0)}.{data(1)}.{data(2)}.{data(3)}")
str.Append($"配置端口号:{DataTypes.ByteToInt(data.Skip(4).Take(4).ToArray)}")
str.Append($"升级文件MD5值:{Encoding.UTF8.GetString(data.Skip(6).Take(16).ToArray)}")
str.Append($"文件总块数:{DataTypes.ByteToInt(data.Skip(22).Take(4).ToArray)}")
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "BLV_Cx校验命令"
''' <summary>
''' BLV_Cx校验命令
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function BLV_Cx_Verification_Command(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Select Case data(0)
Case &H1
str.Append("文件校验成功")
Case &H2
str.Append("文件校验失败")
Case &H2
str.Append("文件未接收完成")
Case &H2
str.Append("未知错误")
End Select
ElseIf state = states.发送 Then
Select Case data(0)
Case &H1
str.Append("APP文件校验")
Case &H2
str.Append("配置文件校验")
End Select
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "BLV_Cx复位命令"
''' <summary>
''' BLV_Cx复位命令
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function BLV_Cx_Reset_Command(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Select Case data(0)
Case &H1
str.Append("执行结果:成功")
Case &H2
str.Append("执行结果:失败")
End Select
ElseIf state = states.发送 Then
Select Case data(0)
Case &H1
str.Append("复位方式:软件复位")
Case &H2
str.Append("复位方式:看门狗复位")
End Select
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#Region "BLV_Cx配置文件下发命令"
''' <summary>
''' BLV_Cx配置文件下发命令
''' </summary>
''' <param name="data"></param>
''' <param name="state"></param>
''' <returns></returns>
Public Function BLV_Cx_Configuration_File_Send_Commands(data As Byte(), state As Boolean) As String
Dim str As New StringBuilder
Try
If state = states.接收 Then
Select Case data(0)
Case &H0
str.Append("就绪")
Case &H1
str.Append("成功")
Case &H2
str.Append("失败")
Case &H3
str.Append("文件块数错误")
Case &H4
str.Append("文件类型错误")
Case &H5
str.Append("文件MD5值错误")
End Select
str.Append($"固件版本号:{Encoding.UTF8.GetString(data.Skip(1).Take(20).ToArray)}")
ElseIf state = states.发送 Then
str.Append($"配置软件IP地址:{data(0)}.{data(1)}.{data(2)}.{data(3)}")
str.Append($"配置端口号:{DataTypes.ByteToInt(data.Skip(4).Take(4).ToArray)}")
str.Append($"升级文件MD5值:{Encoding.UTF8.GetString(data.Skip(6).Take(16).ToArray)}")
str.Append($"文件总块数:{DataTypes.ByteToInt(data.Skip(22).Take(4).ToArray)}")
End If
Catch ex As Exception
AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
Return str.ToString
End Function
#End Region
#End Region
End Class