Files
Desktop_BLVStudio/BLV_Studio/Control/FrmTest_C12_Dimming.vb
2025-12-11 10:06:44 +08:00

283 lines
8.5 KiB
VB.net
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
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 "窗体"
''' <summary>
''' 窗体加载
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmTest_C12_Dimming_Load(sender As Object, e As EventArgs) Handles Me.Load
InitDimmingLoadInfo()
End Sub
''' <summary>
''' 发送函数
''' </summary>
''' <param name="sendPacket"></param>
Public Sub SendData(sendPacket() As Byte)
FCsConfig.SendTestData(sendPacket)
FCsConfig.AppendTipText($"TX{ByteToString(sendPacket)}{vbCrLf}", Color.Green)
End Sub
#End Region
#Region "C12调光"
''' <summary>
''' 调光
''' </summary>
Private _Dimming As New Dictionary(Of Integer, C12Test_DimmingBLL)
''' <summary>
''' 初始化调光信息
''' </summary>
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
''' <summary>
''' 调光发送
''' </summary>
''' <param name="Index"></param>
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
''' <summary>
''' 调光数据
''' </summary>
''' <param name="Index"></param>
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
''' <summary>
''' 调光参数
''' </summary>
''' <param name="Index"></param>
''' <returns></returns>
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 "窗体关闭"
''' <summary>
''' 窗体关闭事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
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