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