Files
Desktop_RCULogAgent/NetworkData.vb
2025-12-11 11:39:02 +08:00

1270 lines
58 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.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