From f61b4beb3f8a8fde58869a8016b8ee7591c245dc Mon Sep 17 00:00:00 2001 From: chenzhihao <1798906853@qq.com> Date: Thu, 5 Mar 2026 17:23:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BD=93=E5=9B=BA=E4=BB=B6?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=A4=A7=E4=BA=8E43=E6=97=B6=E5=BC=80?= =?UTF-8?q?=E5=85=B3=E6=9C=BA=E6=8F=90=E7=A4=BA=E9=9F=B3=E5=92=8C=E9=A3=8E?= =?UTF-8?q?=E9=80=9F=E6=8F=90=E7=A4=BA=E9=9F=B3=E7=9A=84=E7=BB=84=E5=8C=85?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/BLV_Studio/v16/.suo | Bin 710144 -> 710656 bytes BLV_Studio/FrmMain.vb | 18 ++++++- BLV_Studio/Test/GridTest/TableInteraction.vb | 50 ++++++++++++++++--- 3 files changed, 60 insertions(+), 8 deletions(-) diff --git a/.vs/BLV_Studio/v16/.suo b/.vs/BLV_Studio/v16/.suo index 75f8741f0da30ddecadbc0146f0146799b985cbc..b1418086b1b90faa6dd182454f83df6e5efe2336 100644 GIT binary patch delta 22347 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 1 Then + TrNode = TrNode.Parent + End If + Dim FirmwareVer As String = TrNode.FirstNode.NextNode.NextNode.Text ' TrNode.NextVisibleNode.NextNode.Text + Dim FVer As Integer = 0 + If Not String.IsNullOrEmpty(FirmwareVer) Then + Dim Firbuf As String() = FirmwareVer.Split("_") + If Firbuf.Length > 3 Then + FVer = Convert.ToInt32(Firbuf(3)) + End If + End If If _TableInteraction.TableCompiletoByte(savePath, True) = True Then _TableInteraction.Save(savePath) '保存配置文件 If IsShowCompileResult Then MsgBox($"Compile complete, Configuration version number:" & _TableInteraction.ConfigInfo.CfgFileVersion) @@ -4644,6 +4656,10 @@ Public Class FrmMain Private Sub ToolStripButton10_Click(sender As Object, e As EventArgs) Handles ToolStripButton10.Click + If IsNothing(TvwMain.SelectedNode) Then + MsgBox("请先选择一个项目节点!") + Return + End If Dim tmpMsgReslut As MsgBoxResult '弹出消息框的选定值 Me.Cursor = System.Windows.Forms.Cursors.WaitCursor '光标变成漏斗状 Try diff --git a/BLV_Studio/Test/GridTest/TableInteraction.vb b/BLV_Studio/Test/GridTest/TableInteraction.vb index 64f17bc..892ccc5 100644 --- a/BLV_Studio/Test/GridTest/TableInteraction.vb +++ b/BLV_Studio/Test/GridTest/TableInteraction.vb @@ -2805,7 +2805,7 @@ Public Class TableInteraction #End Region #Region "编译" - Public Function TableCompiletoByte(Optional savePath As String = "", + Public Function TableCompiletoByte(FVer As Integer,Optional savePath As String = "", Optional ByVal IsShowCompileResult As Boolean = False, Optional ByVal ifCfgVerPlusPlus As Boolean = False) As Boolean Dim lst As New List(Of Byte()) @@ -2824,7 +2824,7 @@ Public Class TableInteraction '编译设备存在 Dim deviceExistsDatas As List(Of Byte()) Dim OutDevlist As New List(Of Byte) - deviceExistsDatas = FillDeviceExistsData(Dic_Devicemodel) + deviceExistsDatas = FillDeviceExistsData(Dic_Devicemodel,FVer) lst.AddRange(deviceExistsDatas.ToArray) '获取编译的设备动作 Dim actibuf As List(Of Byte()) = FillDeviceObject(Dic_Devicemodel, Dic_ActionConfiguration, _grd) @@ -4178,7 +4178,7 @@ Public Class TableInteraction End Function - Private Function TempDeviceObject(ByRef Eventnumber As Integer, DeviceModuleDic As Dictionary(Of String, DeviceModel), DevName As String, DevNodeName As String) As List(Of Byte()) + Private Function TempDeviceObject(ByRef Eventnumber As Integer, DeviceModuleDic As Dictionary(Of String, DeviceModel), DevName As String, DevNodeName As String,FVer As Integer) As List(Of Byte()) '返回变量 Dim result As New List(Of Byte()) Dim ncbuf As New List(Of Byte()) @@ -4303,8 +4303,25 @@ Public Class TableInteraction Dbuf = dic.Item(GetDescriptionOriginal(AddPeripherals.Temproweven.互锁)).Trim.Split("*") ncbuf.Add(GetActionData(DeviceModuleDic, Dbuf(0), "Temp", Dbuf(1), "0,1,1,1,1,1,16")) End If - If checkbuf(1).Equals("1") Then - 'Dbuf = dic.Item(GetDescriptionOriginal( AddPeripherals.Temproweven.互锁)).Trim.Split("*") + If FVer >43 Then + + Dim btxtr As string + Dim bctr As Integer=32 + If checkbuf(0).Equals("1") Then + bctr=bctr or (1<<2) + End If + If checkbuf(3).Equals("1") Then + bctr=bctr or (1<<3) + End If + + btxtr= $"0,2,0,2,1,0,0" + dim btxli As Byte()= GetActionData(DeviceModuleDic, DevName, "Temp", 1, btxtr) + btxli(5) = bctr + ncbuf.Add(btxli) + Else + If checkbuf(1).Equals("1") Then + 'Dbuf = dic.Item([Enum].GetName(GetType(AddPeripherals.Temproweven), AddPeripherals.Temproweven.互锁)).Trim.Split("*") + ncbuf.Add(GetActionData(DeviceModuleDic, hostname, "MUSIC", 1, "0,2,3,1,11,0")) End If If checkbuf(3).Equals("1") Then @@ -4312,6 +4329,8 @@ Public Class TableInteraction Else ncbuf.Add(GetActionData(DeviceModuleDic, DevName, "Temp", 1, "0,2,0,2,2,0,0")) End If + End If + Case 2 '关机 UShort.TryParse(32, strEventNum) @@ -4367,6 +4386,22 @@ Public Class TableInteraction ncbuf.Add(GetActionData(DeviceModuleDic, Dbuf(0), "Temp", Dbuf(1), "0,1,1,1,1,1,16")) End If + If FVer >43 Then + + Dim btxtr As string + Dim bctr As Integer=32 + If checkbuf(0).Equals("1") Then + bctr=bctr or (1<<2) + End If + If checkbuf(3).Equals("1") Then + bctr=bctr or (1<<3) + End If + + btxtr= $"0,2,0,2,1,0,0" + dim btxli As Byte()= GetActionData(DeviceModuleDic, DevName, "Temp", 1, btxtr) + btxli(5) = bctr + ncbuf.Add(btxli) + Else If checkbuf(1).Equals("1") Then Dbuf = dic.Item(GetDescriptionOriginal(AddPeripherals.Temproweven.互锁)).Trim.Split("*") ncbuf.Add(GetActionData(DeviceModuleDic, hostname, "MUSIC", 1, "0,2,3,1,12,0")) @@ -4377,6 +4412,7 @@ Public Class TableInteraction Else ncbuf.Add(GetActionData(DeviceModuleDic, DevName, "Temp", 1, "0,2,0,2,2,0,0")) End If + End If Case 3 '冷阀开 UShort.TryParse(1028, strEventNum) eventNum = BitConverter.GetBytes(strEventNum) @@ -6092,7 +6128,7 @@ Public Class TableInteraction Public Voicement As List(Of DeviceModel) Public devTempment As List(Of DeviceModel) Public devRKEY As List(Of DeviceModel) - Public Function FillDeviceExistsData(ByRef DeviceModuleDic As Dictionary(Of String, DeviceModel)) As List(Of Byte()) + Public Function FillDeviceExistsData(ByRef DeviceModuleDic As Dictionary(Of String, DeviceModel),Optional FVer As Integer =38) As List(Of Byte()) Dim resultDatas As New List(Of Byte()) Dim cmd As Byte = &H3 Dim buf As List(Of Byte) @@ -6190,7 +6226,7 @@ Public Class TableInteraction ' resultDatas.AddRange(result.ToArray) 'Next For Each node In devTempment - result = TempDeviceObject(T_SceneID, DeviceModuleDic, node.Name, "Temp") + result = TempDeviceObject(T_SceneID, DeviceModuleDic, node.Name, "Temp",FVer ) If IsNothing(result) Then Continue For resultDatas.AddRange(result.ToArray) Next