Public Class FrmTest_C5
Implements IFrmTest
Public FCsConfig As FrmCSeriesConfig
Sub New(pathme As FrmCSeriesConfig)
' 此调用是设计器所必需的。
InitializeComponent()
FCsConfig = pathme
' 在 InitializeComponent() 调用之后添加任何初始化。
End Sub
#Region "多语种信息"
'''
''' 初始化界面控件文本
'''
Private Sub MultiLanguageInfo()
'Label34.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
'Label36.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOOutput)
'Label35.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOInput)
'Label37.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Music)
'Label40.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
Label34.Text = Text & LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
Label36.Text = Text & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOOutput)
Label35.Text = Text & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOInput)
Label37.Text = Text & LanguageData.StringList(MultiLanguageDAL.StringEnum.Music)
Label40.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
Button22.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.TheInputTest)
Label38.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFolder)
Label39.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFileNumber)
Button21.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Play)
Button23.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
Label50.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.MAC)
Button20.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SetMAC)
End Sub
#End Region
#Region "窗体"
'''
''' 窗体加载事件
'''
'''
'''
Private Sub FrmTest_C5_Load(sender As Object, e As EventArgs) Handles Me.Load
' Console.WriteLine(Text)
MultiLanguageInfo()
InitFolderItems()
End Sub
'''
''' 显示窗体事件
''' 实现接口
'''
'''
Public Sub ShowForm(parentControl As Control) Implements IFrmTest.ShowForm
FormBorderStyle = FormBorderStyle.None '无边框
TopLevel = False
Dock = DockStyle.Fill '填满大小
Parent = parentControl '父容器
Show()
End Sub
'''
''' 发送函数
'''
'''
Public Sub SendData(sendPacket() As Byte)
FCsConfig.SendTestData(sendPacket)
FCsConfig.AppendTipText($"TX:{ByteToString(sendPacket)}{vbCrLf}", Color.Green)
End Sub
#End Region
#Region "C5测试"
'''
''' 发送组包
'''
'''
'''
'''
Public Function FillPacket(cmd As Byte, dataBuff() As Byte) As Byte()
If _connectStatus = True Then
cmd = &HD3 '网络测试Cmd
dataBuff = FCsConfig.FillSendData(cmd, dataBuff) '网络数据
Else
cmd = &H7 '串口测试Cmd
dataBuff = FillModelsSerialPortTest(cmd, dataBuff) '串口数据
End If
Return dataBuff
End Function
'''
''' 获取继电器序号
'''
Private _relayNumber(5) As Byte
''''
'''' 1-20路继电器
''''
''''
''''
'Private Sub Button63_Click_1(sender As Object, e As EventArgs) Handles Button72.Click, Button71.Click, Button70.Click, Button69.Click, Button68.Click, Button67.Click, Button66.Click, Button65.Click, Button64.Click, Button63.Click, Button62.Click, Button61.Click, Button60.Click, Button59.Click, Button58.Click, Button57.Click, Button56.Click, Button55.Click, Button54.Click, Button47.Click
' Dim cmd As Byte
' Dim btn As Button = sender
' Dim index As Integer = sender.tag
' Dim flg As Boolean = Not GetRelayStatus(index)
' Dim param() As Byte = GetRelayNumber(index, flg)
' '组包
' Dim testState As Byte = &H2 '测试状态
' Dim devType As Byte = &HF1 '设备类型
' Dim devAddr As Byte = &H0 '设备地址默认为0
' Dim devCmd As Byte = &H21 '测试设备Cmd
' Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
' Dim sendDatas() As Byte = FillPacket(cmd, data)
' Console.WriteLine($"继电器测试:{ByteToString(sendDatas)}")
' '发送
' SendData(sendDatas)
' If flg Then
' btn.BackColor = Color.Green
' Else
' btn.BackColor = Color.Transparent
' End If
'End Sub
'''
''' 1-24路继电器
'''
'''
'''
Private Sub Button63_Click(sender As Object, e As EventArgs) Handles Button72.Click, Button71.Click, Button70.Click, Button69.Click, Button68.Click, Button67.Click, Button66.Click, Button65.Click, Button64.Click, Button63.Click, Button62.Click, Button61.Click, Button60.Click, Button59.Click, Button58.Click, Button57.Click, Button56.Click, Button55.Click, Button54.Click, Button47.Click, Button4.Click, Button3.Click, Button2.Click, Button1.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetRelayStatus(index)
Dim param() As Byte = GetRelayNumber(index, flg)
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H21 '测试设备Cmd
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"继电器测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
'''
''' 获取继电器序号
'''
'''
'''
Private Function GetRelayNumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
'relayNumber(number \ 4) = relayNumber(number \ 4) Or (1 << ((number Mod 4) * 2))
_relayNumber(number \ 4) = (_relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else '置位10
_relayNumber(number \ 4) = (_relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return _relayNumber
'relayNumber(number \ 4) = 1 << ((number Mod 4) * 2)
'For index = 0 To 19
' relayNumber(index \ 4) = relayNumber(index \ 4) Or (1 << (index Mod 4 * 2))
'Next
End Function
'''
''' 获取继电器状态
'''
'''
'''
Private Function GetRelayStatus(index As Integer) As Boolean
Dim bt As Byte = _relayNumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
'''
''' C5-IO 检测输入
'''
'''
'''
Private Sub Button22_Click_1(sender As Object, e As EventArgs) Handles Button22.Click
Dim cmd As Byte
Dim testState As Byte = &H1 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H3 '测试时间——3分钟
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd)
'组包
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"输入测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
'''
''' 输出测试
'''
'''
'''
Private Sub Button79_Click_1(sender As Object, e As EventArgs) Handles Button83.Click, Button82.Click, Button81.Click, Button80.Click, Button79.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetC5DOStatus(index)
Dim param() As Byte = GetC5DONumber(index, flg)
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H23 '测试命令字
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"输出测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
'''
''' 获取C5测试输出序号
'''
Private C5DONumber(1) As Byte
'''
''' 获取继电器状态
'''
'''
'''
Private Function GetC5DOStatus(index As Integer) As Boolean
Dim bt As Byte = C5DONumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
'''
''' 获取输入序号
'''
'''
'''
Private Function GetC5DONumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
C5DONumber(number \ 4) = (C5DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else '置位10
C5DONumber(number \ 4) = (C5DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return C5DONumber
End Function
'''
''' C5测试音频播放文件下
'''
Private _PlayFolder() As String = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"}
'''
''' 初始化文件夹可选项
'''
Private Sub InitFolderItems()
ComboBox10.Items.Clear()
ComboBox10.Items.AddRange(_PlayFolder)
If ComboBox10.Items.Count > 4 Then ComboBox10.SelectedIndex = 4
End Sub
'''
''' 音乐播放
'''
'''
'''
Private Sub Button21_Click_1(sender As Object, e As EventArgs) Handles Button21.Click
Dim cmd As Byte
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &H15 '设备类型
Dim devAddr As Byte = &H1 '设备地址默认为0
Dim devCmd As Byte = &H22 '测试命令字
Dim param() As Byte = C5MusicTest()
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"音频测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
'''
''' C5音频测试
'''
'''
Private Function C5MusicTest()
Dim playFolder As Byte = GetPlayFolder(ComboBox10.Text)
Dim playFile As Byte = $"&H{Hex(NumericUpDown1.Value)}"
Dim databuff As New List(Of Byte)
databuff.Add(&H7) '播放音乐状态
databuff.Add(playFolder) '播放音乐文件夹
databuff.Add(playFile) '播放音乐文件
Return databuff.ToArray
End Function
'''
''' 获取播放文件夹
'''
'''
'''
Private Function GetPlayFolder(text As String) As Byte
Dim palyFolder As Byte
Select Case text
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}"
palyFolder = &H0
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}"
palyFolder = &H1
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}"
palyFolder = &H2
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}"
palyFolder = &H3
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}"
palyFolder = &H4
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}"
palyFolder = &H5
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}"
palyFolder = &H6
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"
palyFolder = &H7
End Select
Return palyFolder
End Function
'''
''' 起始时间
'''
Private _startTime As Date
'''
''' C5_巡回测试
'''
'''
'''
Private Sub Button23_Click_1(sender As Object, e As EventArgs) Handles Button23.Click
Label48.ForeColor = Color.Black
Label48.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Test)}..."
Dim cmd As Byte
'组包
Dim data(0) As Byte
data(0) = &H3
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"巡回测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
'_isTourRealy = Fals
'WaitInfraredForRelay()
'If _isTourRealy = False Then
' AppendTipText($"巡回测试失败!", Color.Red)
'End If
End Sub
'''
''' 设置MAC地址
'''
'''
'''
Private Sub Button20_Click_1(sender As Object, e As EventArgs) Handles Button20.Click
Dim frmmacdia As New FrmMACDialog(FCsConfig)
frmmacdia.ShowMyDialog()
Label51.ForeColor = Color.Black
Label51.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Test)}..."
If FCsConfig._IsOK = True Then
Dim data() As Byte = frmmacdia.GetMACAddress()
Dim cmd As Byte = &H6
'发送
Dim databuff As Byte() = FCsConfig.FillMACIssuedData(data)
Dim sendDatas As Byte() = FillSetMACPacket(cmd, databuff)
Console.WriteLine($"串口设置MAC:{ByteToString(sendDatas)}")
SendData(sendDatas)
FCsConfig._IsOK = False
End If
End Sub
'''
''' 发送MAC
'''
'''
'''
'''
Public Function FillSetMACPacket(cmd As Byte, dataBuff() As Byte) As Byte()
If _connectStatus = True Then
cmd = &H31 '网络测试Cmd
dataBuff = FCsConfig.FillSendData(cmd, dataBuff)
Else
dataBuff = FillModelsSerialPortTest(cmd, dataBuff)
End If
Return dataBuff
End Function
Public Sub ShowForm1(parentControl As Control, ftext As String) Implements IFrmTest.ShowForm1
FormBorderStyle = FormBorderStyle.None '无边框
TopLevel = False
Dock = DockStyle.Fill '填满大小
Parent = parentControl '父容器
If Not String.IsNullOrEmpty(ftext) Then
Text = ftext
End If
Show()
End Sub
#End Region
End Class