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