Imports System.ComponentModel Public Class FrmTest_C12_Dimming Public FCsConfig As FrmCSeriesConfig Sub New(pathme As FrmCSeriesConfig, Optional frtile As String = "C12调光") Text = frtile ' 此调用是设计器所必需的。 InitializeComponent() FCsConfig = pathme ' 在 InitializeComponent() 调用之后添加任何初始化。 Text = frtile End Sub #Region "多语种信息" ''' ''' 初始化界面控件文本 ''' Private Sub MultiLanguageInfo() '控件.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl) Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Dimming) GroupBox1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Dimming) End Sub #End Region #Region "窗体" ''' ''' 窗体加载 ''' ''' ''' Private Sub FrmTest_C12_Dimming_Load(sender As Object, e As EventArgs) Handles Me.Load InitDimmingLoadInfo() End Sub ''' ''' 发送函数 ''' ''' Public Sub SendData(sendPacket() As Byte) FCsConfig.SendTestData(sendPacket) FCsConfig.AppendTipText($"TX:{ByteToString(sendPacket)}{vbCrLf}", Color.Green) End Sub #End Region #Region "C12调光" ''' ''' 调光 ''' Private _Dimming As New Dictionary(Of Integer, C12Test_DimmingBLL) ''' ''' 初始化调光信息 ''' Private Sub InitDimmingLoadInfo() If _Dimming.Count > 0 Then Return '_Dimming.Clear() Dim number As Integer = 12 If Text.Equals("C12调光") Then number = 12 ElseIf Text.Equals("C8调光") Then number = 4 C8_ComboBox.Visible = True C8_Label.Visible = True C8_TextBox1.Visible = True C8_ComboBox.SelectedIndex = 0 ElseIf Text.Equals("V9调光") Then number = 8 End If For index = 0 To number Dim a As New CheckBox a.Name = "LED_Tip" & index a.Parent = GroupBox1 a.Size = New Size(40, 20) a.Location = New Point(26, 56 + index * (a.Height + 12)) a.Font = New Font("Arial", 9, FontStyle.Bold) a.ForeColor = Color.Green If index = 0 Then a.Text = $"ALL" a.Visible = False Else a.Text = $"L{index}" End If a.Tag = index 'a.BringToFront() Dim b As New HScrollBar If index = 0 Then b.Visible = False End If b.Name = "LED_Bar" & index b.Parent = GroupBox1 b.Size = New Size(215, 20) b.Location = New Point(75, 56 + index * (a.Height + 12)) b.Tag = index b.Maximum = 109 AddHandler b.ValueChanged, AddressOf HScrollBar1_ValueChanged Dim c As New NumericUpDown If index = 0 Then c.Visible = False End If c.Name = "LED_Num" & index c.Parent = GroupBox1 c.Size = New Size(45, 21) c.Location = New Point(304, 58 + index * (a.Height + 12)) c.Tag = index AddHandler c.ValueChanged, AddressOf NumericUpDown1_ValueChanged _Dimming.Add(index, New C12Test_DimmingBLL With {.Dimming = a, .DimmingVal = b, .DimmingInputVal = c}) Next End Sub Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs) Dim hsb As NumericUpDown = sender Dim index As Integer = sender.tag If _Dimming.ContainsKey(index) = False Then Return _Dimming(index).DimmingVal.Value = hsb.Value End Sub Private Sub HScrollBar1_ValueChanged(sender As Object, e As EventArgs) Dim hsb As HScrollBar = sender Dim index As Integer = sender.tag If _Dimming.ContainsKey(index) = False Then Return _Dimming(index).DimmingInputVal.Value = hsb.Value 'Threading.ThreadPool.QueueUserWorkItem(AddressOf Demo, index) SendDimming(index) End Sub ''' ''' 调光发送 ''' ''' Private Sub SendDimming(Index As Integer) Static time As Date 'If (Now - time).TotalMilliseconds < 200 Then ' Return 'End If Threading.Thread.Sleep(200) If _Dimming.ContainsKey(Index) = False Then Return DimmingDataBuff(Index) 'Console.WriteLine($"Text:{_Dimming(Index).Dimming.Text} Value:{_Dimming(Index).DimmingVal.Value}") time = Now End Sub ''' ''' 调光数据 ''' ''' Private Sub DimmingDataBuff(Index As Integer) Dim cmd As Byte Dim testState As Byte = &H2 '测试状态 Dim devType As Byte = &H18 '设备类型 Dim devAddr As Byte = &H0 '设备地址默认为0 Dim devCmd As Byte = &H21 '测试Cmd Dim param() As Byte = DimmingParam(Index) Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param) Dim sendDatas() As Byte '组包 If Text.Equals("C12调光") Then sendDatas = FCsConfig._blvC12TestForm.FillPacket(cmd, data) Console.WriteLine($"C12调光测试:{ByteToString(sendDatas)}") ElseIf Text.Equals("V9调光") Then sendDatas = FCsConfig._blvV9TestForm.FillPacket(cmd, data) Console.WriteLine($"C12调光测试:{ByteToString(sendDatas)}") ElseIf Text.Equals("C8调光") Then If C8_ComboBox.SelectedIndex = 0 AndAlso C8_TextBox1.Text.Equals("0") Then devType = &H30 '设备类型 devAddr = &H1 devCmd = Index param(0) = 0 param(2) = param(1) param(1) = 1 data = FillTestDatabuff(testState, devType, devAddr, devCmd, param) sendDatas = FCsConfig._blvC8TestForm.FillPacket(cmd, data) Console.WriteLine($"C12调光测试:{ByteToString(sendDatas)}") Else devType = &H32 '设备类型 devAddr = 0 Integer.TryParse(C8_TextBox1.Text, devAddr) devCmd = Index param(0) = 0 param(2) = param(1) param(1) = 0 If _Dimming(Index).Dimming.Checked Then param(1) = 1 Else param(1) = 2 End If data = FillTestDatabuff(testState, devType, devAddr, devCmd, param) sendDatas = FCsConfig._blvC8TestForm.FillPacket(cmd, data) Console.WriteLine($"C12调光测试:{ByteToString(sendDatas)}") End If Else sendDatas = FCsConfig._blvC8TestForm.FillPacket(cmd, data) Console.WriteLine($"C12调光测试:{ByteToString(sendDatas)}") End If '发送 SendData(sendDatas) End Sub ''' ''' 调光参数 ''' ''' ''' Private Function DimmingParam(Index As Integer) As Byte() Dim data(2) As Byte data(0) = Index data(1) = _Dimming(Index).DimmingInputVal.Value data(2) = &H1 Return data End Function #End Region #Region "窗体关闭" ''' ''' 窗体关闭事件 ''' ''' ''' Private Sub FrmTest_C12_Dimming_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing 'Close() End Sub Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles C8_TextBox1.KeyPress e.Handled = Not $"0123456789{vbBack}".Contains(e.KeyChar) '如果要只允许输入数字,就把上一行字符串中的字母删除 End Sub Private Sub C8_ComboBox_TextChanged(sender As Object, e As EventArgs) Handles C8_ComboBox.TextChanged If C8_ComboBox.SelectedIndex = 0 Then C8_TextBox1.Enabled = False C8_TextBox1.Text = 0 Else C8_TextBox1.Enabled = True End If End Sub #End Region End Class