增加对 设备 无线锁_杨格无线锁_(RS485-主动) 的支持

This commit is contained in:
zhihao
2025-12-25 15:55:38 +08:00
parent f6cfed9a05
commit 5e9358ffb9
45 changed files with 4298 additions and 264 deletions

View File

@@ -3181,9 +3181,12 @@ Public Class AddPeripherals
End Sub
Private Sub AddPeripherals_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
If Me.DialogResult = System.Windows.Forms.DialogResult.OK Then
Else
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End If
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub

View File

@@ -516,6 +516,8 @@ Public Class DrSeverGrid
End If
Case "BLEMUSIC", "HOPO_Curtain", "Scene_Restore"
result = cellstr
Case "LOCK"
result = cellstr
Case "MUSIC", "Dev_VirtualGlobalSet"
result = cellstr
'Case

View File

@@ -108,9 +108,10 @@ Public Class ExecutionCondition
Else
ComboBox2.Items.AddRange({"KEY"})
End If
Case "RKEY"
ComboBox2.Items.Add("RKEY")
Case "LOCK"
ComboBox2.Items.Add("LOCK")
Case "Virtual_Card"
ComboBox2.Items.Add("Virtual_Card")
Case "SLIDER"

View File

@@ -347,7 +347,7 @@ Public Class TableInteraction
Dim buf() As String = cbuf(cbuf.Length - 1).Split("*")
Dim result As String = String.Empty
Select Case nodename
Case "RKEY"
Case "RKEY","lock"
result = cellstr
Case "CLED_FRESHAIR"
result = cellstr
@@ -820,8 +820,8 @@ Public Class TableInteraction
g_DO = ModuleFre
ElseIf ModuleFre.Name.Equals("MUSIC") AndAlso ModuleFre.PROTOCOL_VER.Equals("1") Then
g_MUSIC = ModuleFre
ElseIf ModuleFre.Name.Equals("Lock") Then
g_Lock = ModuleFre
'ElseIf ModuleFre.Name.Equals("Lock") Then
' g_Lock = ModuleFre
ElseIf ModuleFre.Name.Equals("485MUSIC") Then
g_485MUSIC = ModuleFre
ElseIf ModuleFre.Name.Equals("RS485_Curtain") Then
@@ -1164,6 +1164,7 @@ Public Class TableInteraction
ElseIf ModuleFre.Nodes(i).DefaultClass.Equals("RKEY") Then
gTableRowTag.Set_G_Attributes(ModuleFre.Nodes(i).DefaultClass, BasicClasses)
SceneAttri = "4,12,1152921504606847008"
Else
gTableRowTag.Set_G_Attributes(ModuleFre.Nodes(i).DefaultClass, BasicClasses)
SceneAttri = "1,1,1152921504606846976"
@@ -1852,6 +1853,7 @@ Public Class TableInteraction
g_devname.devname.ToUpper.Equals("Scene_Restore".ToUpper) OrElse
g_devname.devname.ToUpper.Equals("Dev_VirtualGlobalSet".ToUpper) OrElse
g_devname.devname.ToUpper.Equals("HOPO_Curtain".ToUpper) OrElse
g_devname.devname.ToUpper.Equals("lock".ToUpper) OrElse
g_devname.devname.ToUpper.Equals("MUSIC".ToUpper) Then
If ActionParameter.CheckDataIsOk(g_devname.devname.ToUpper, highpric, BasicClasses) Then
_grd.Cell(e.Row, e.Col).BackColor = Color.White
@@ -2056,7 +2058,7 @@ Public Class TableInteraction
Dim typeInten() As String = {"RELAY", "RS485_Curtain".ToUpper, "LIGHT", "CURTAIN", "DRY_CURTAIN" "DIMMING" "TEMP", "DO",
"INFRARED_FORWARD", "CLED_FRESHAIR", "CLEDFLOORHEAT", "485FreshAir".ToUpper, "485FloorHeat".ToUpper, "PB_LINE_CONTROL",
"PB_LED_DEVICE", "PB_STRIP_DEVICE", "PB_RELAY_DEVICE", "DRY_NoCard".ToUpper, "Dev_ColorTemp".ToUpper "RKEY".ToUpper,"Dev_Energy_Monitor".ToUpper,
"BLEMUSIC".ToUpper, "Carbon_Device".ToUpper "HOPO_Curtain".ToUpper, "Scene_Restore".ToUpper,"Dev_VirtualGlobalSet".ToUpper}
"BLEMUSIC".ToUpper, "Carbon_Device".ToUpper "HOPO_Curtain".ToUpper, "Scene_Restore".ToUpper,"Dev_VirtualGlobalSet".ToUpper,"LOCK".ToUpper}
For Each index In typeInten
Dim li As New List(Of String
@@ -2087,7 +2089,7 @@ Public Class TableInteraction
End Select
If li.Count > 0 OrElse index.Equals("DRY_NoCard".ToUpper) OrElse index.Equals("HOPO_Curtain".ToUpper) OrElse index.Equals("Dev_ColorTemp".ToUpper) OrElse
index.Equals("Carbon_Device".ToUpper) OrElse index.Equals("RKEY".ToUpper) OrElse index.Equals("BLEMUSIC".ToUpper) OrElse index.Equals("Scene_Restore".ToUpper)OrElse
index.Equals("Dev_VirtualGlobalSet".ToUpper) OrElse index.Equals("Dev_Energy_Monitor".ToUpper) Then
index.Equals("Dev_VirtualGlobalSet".ToUpper) OrElse index.Equals("Dev_Energy_Monitor".ToUpper)OrElse index.Equals("LOCK".ToUpper) Then
li.Add("高级")
End If
dic.Add(index, li)
@@ -3267,6 +3269,9 @@ Public Class TableInteraction
Dim aliasbuf(31) As Byte
'场景编号
Dim sceneIndex As UShort = CUShort(rowtag.G_DicRow.Item(TableColNumber.SceneID))
If sceneIndex = 23 Then
Console.WriteLine($"FillDeviceObject 2597 ")
End If
Dim sceneNum() As Byte = BitConverter.GetBytes(sceneIndex)
'30位保留字段
Dim keepBuf(31) As Byte
@@ -5514,7 +5519,7 @@ Public Class TableInteraction
If (parstr.Count - 3) > 0 Then result(1) = parstr(3)
li.Add(result)
End If
Case "RELAY", "PB_RELAY_DEVICE"
Case "RELAY", "PB_RELAY_DEVICE","LOCK"
If parstr.Length = 1 Then
parCasre = parstr(0) '快速设置
Select Case parCasre
@@ -6791,7 +6796,7 @@ Public Class TableInteraction
buf = {3, 2, 2, 0}
Case "SLIDER"
buf = {2, 2, 2, 0}
Case "CARD","BLV_CARD" 250904 CZH 增加 BLV_CARD
Case "CARD","BLV_CARD","LOCK" 250904 CZH 增加 BLV_CARD
buf = {0, 1, 0, 0}
Case "Virtual_Card"
buf = {2, 0, 0, 0}
@@ -7212,7 +7217,161 @@ ON DUPLICATE KEY UPDATE {updatastr};"
Return result
End Function
Public Sub UploadConfiguredDevicesList(HotelID As String, RoomTypeID As String,DbConnString As String)
'删除配置表
Dim sql As String = $"DELETE FROM tbl_configured_devlist WHERE HotelID = '{HotelID}' AND RoomTypeID = '{RoomTypeID}'"
Add_room_type_circuit_powers(DbConnString,sql)
'遍历设备列表
Dim dev As DeviceModel
Dim typeindex As Integer = 0
'获取酒店id和房型id
Dim g_devname As CtabRange
Dim dic As Dictionary(Of string, string) = New Dictionary(Of string, string)
Dim insert As String = ""
Dim devAddr As String = ""
Dim Server() As String
Dim devdatetype As Integer
Dim devname As String()
For i=0 To Dic_Devicemodel.Count-1
dev = Dic_Devicemodel.Values(i)
If dev.Desc.DevInterface.Equals("VirtualObject") Then Continue For
If i=0 Then
typeindex=0
g_devname = GetCoLDevNametabRange(dev.Name, TableRowNumber.Max,TableColNumber.DeviceName)
For gr As Integer = g_devname.fr To g_devname.lr
If _grd.Cell(gr,TableColNumber.KeyName).Text.Contains("红外") OrElse _grd.Cell(gr,TableColNumber.KeyName).Text.Contains("雷达")OrElse _grd.Cell(gr,TableColNumber.KeyName).Text.Contains("门磁") Then
Server= _grd.Cell(gr,TableColNumber.ServerAttribute).Text.Trim.Split(",")
If IsNothing(Server) OrElse Server.Count=0 OrElse string.IsNullOrEmpty(Server(0)) Then Continue For
devAddr =$"00400000{Server(0).ToString.Trim}"
insert= INSERTtbl_configured_devlist(HotelID,RoomTypeID,_grd.Cell(gr,TableColNumber.KeyName).Text,devAddr)
If dic.ContainsKey(devAddr) Then
Else
dic.Add(devAddr,insert)
End If
Elseif _grd.Cell(gr,TableColNumber.KeyName).Text.Contains("插卡")
Server= _grd.Cell(gr,TableColNumber.ServerAttribute).Text.Trim.Split(",")
If IsNothing(Server) OrElse Server.Count=0 OrElse string.IsNullOrEmpty(Server(0)) Then Continue For
devAddr =$"004000001"
insert= INSERTtbl_configured_devlist(HotelID,RoomTypeID,_grd.Cell(gr,TableColNumber.KeyName).Text,devAddr)
If dic.ContainsKey(devAddr) Then
Else
dic.Add(devAddr,insert)
End If
End If
Next
Else
'取dev.Desc.Name 按照如下格式截取出设备地址
' 485(轮询)1
'设备地址:9
'A9恒压调光_(RS485_轮询
Dim str As String = dev.Desc.Name
Dim strbuf() As String = str.Split(vbLf)
If strbuf.Count > 1 Then
Dim strbuf1() As String = strbuf(1).Trim.Split(":")
If strbuf1.Count > 1 Then
typeindex = cint (strbuf1(1).Trim)
End If
End If
End If
'遍历设备节点
For Each node In dev.Nodes
'判断节点类型DEV_TYPE_DATA是否为空
If string.IsNullOrEmpty(node.DEV_TYPE_DATA) Then
Continue For
Else
'将node.DEV_TYPE_DATA 转int
devdatetype = cint(node.DEV_TYPE_DATA)
devAddr= devdatetype.ToString().PadLeft(3, "0"c)
devAddr=devAddr & typeindex.ToString().PadLeft(3, "0"c)
devAddr=devAddr &"001"
If i=0 Then
insert= INSERTtbl_configured_devlist(HotelID,RoomTypeID,dev.Name.Replace(vbLf,"_")&"_主机",devAddr)
Else
devname=dev.Name.Split (vbLf)
insert= INSERTtbl_configured_devlist(HotelID,RoomTypeID,devname(2),devAddr)
End If
If dic.ContainsKey(devAddr) Then
Else
dic.Add(devAddr,insert)
End If
End If
Next
Next
''遍历dic集合 将数据插入字符串平接成事务插入语句
insert=""
For Each item In dic
insert = insert & item.Value
Next
'执行插入语句
Add_room_type_circuit_powers(DbConnString,insert)
End Sub
Public Function Add_room_type_circuit_powers(DbConnString As String, insertClunm As String) As Boolean
If String.IsNullOrEmpty(insertClunm) Then Return False
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
db.Open()
Try
db.BeginTransaction()
dt = db.ExecuteDataTable(insertClunm)
db.CommitTransaction()
Catch ex As Exception
db.RollbackTransaction()
db.Close()
Return False
End Try
db.Close()
End Using
Return True
End Function
Public Function INSERTtbl_configured_devlist(HotelID As String, RoomTypeID As String,DevName As String,DevAddr As String) As String
' 主机显示在线仅表示其与服务器通讯正常,不代表主机端口功能完好,端口异常时需按异常按钮填报主机功能故障信息。
'开关显示在线仅表示其与主机通讯正常,不代表按键功能正常,按键异常时需按异常按钮填报开关功能故障信息。
'人在传感器范围内时,显示在线为正常,显示不在线为异常,需填报异常信息。
'开门能打开灯为正常,显示不在线为异常,需填报异常信息
Dim Process As String = "待定"
If DevName.Contains("主机") Then
Process = "主机显示在线仅表示其与服务器通讯正常,不代表主机端口功能完好,端口异常时需按异常按钮填报主机功能故障信息。"
Else If DevName.Contains("雷达") OrElse DevName.Contains("红外") then
Process = "人在传感器范围内时,显示在线为正常,显示不在线为异常,需填报异常信息。"
Else If DevName.Contains("门磁") Then
Process = "开门能打开灯为正常,显示不在线为异常,需填报异常信息。"
Else
Process = "开关显示在线仅表示其与主机通讯正常,不代表按键功能正常,按键异常时需按异常按钮填报开关功能故障信息。"
End If
Dim insert As String = $"INSERT INTO `blv_rcu_db`.`tbl_configured_devlist`
(`UpdateTime`
,`HotelID`
,`RoomTypeID`
,`Process`
,`DevName`
,`DevAddr`)
VALUES
( '{Now.ToString("yyyy-MM-dd HH:mm:ss")}'
,{HotelID}
,{RoomTypeID}
,'{Process}'
,'{DevName}'
,'{DevAddr}');{vbLf}"
return insert
End Function
Public Function TestReportingScenario(_UserName As String, _HotleID As String, _RoomTypeID As String, filename As String, Version As String) As ReportingScenario
Dim aaa As New ReportingScenario(_UserName, _HotleID, _RoomTypeID, filename, Version, _grd, Dic_Devicemodel, Dic_ActionConfiguration)