Imports System.Text Public Class NetworkData Enum states 接收 = True 发送 = False End Enum ''' ''' 解析网络数据 ''' ''' ''' ''' 接收或发送 ''' 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 "搜索主机" ''' ''' 搜索主机 ''' ''' ''' ''' 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 "固件升级启动" ''' ''' 固件升级启动 ''' ''' ''' ''' 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 "设备状态变化主动上报" ''' ''' 设备状态变化主动上报 ''' ''' ''' ''' 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 "服务器下发设备控制参数" ''' ''' 服务器下发设备控制参数 ''' ''' ''' ''' 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 "请求时间" ''' ''' 请求时间 ''' ''' ''' ''' 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 "授权" ''' ''' 授权 ''' ''' ''' 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 "查询授权时间" ''' ''' 查询授权时间 ''' ''' ''' ''' 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 "读取映射寄存器内容" ''' ''' 读取映射寄存器内容 ''' ''' ''' ''' 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 "设置映射寄存器内容" ''' ''' 设置映射寄存器内容 ''' ''' ''' ''' 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 "透传下发命令" ''' ''' 透传下发命令 ''' ''' ''' ''' 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 "透传上报" ''' ''' 透传上报 ''' ''' ''' ''' 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 "时间同步" ''' ''' 时间同步 ''' ''' ''' ''' 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 "读取主机系统参数信息" ''' ''' 读取主机系统参数信息 ''' ''' ''' ''' 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 "启动设备测试" ''' ''' 启动设备测试 ''' ''' ''' ''' 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 "配置设备存在" ''' ''' 配置设备存在 ''' ''' ''' ''' 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 "读取配置设备" ''' ''' 读取配置设备 ''' ''' ''' ''' 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升级命令" ''' ''' BLV_Cx升级命令 ''' ''' ''' ''' 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校验命令" ''' ''' BLV_Cx校验命令 ''' ''' ''' ''' 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复位命令" ''' ''' BLV_Cx复位命令 ''' ''' ''' ''' 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配置文件下发命令" ''' ''' BLV_Cx配置文件下发命令 ''' ''' ''' ''' 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