481 lines
17 KiB
VB.net
481 lines
17 KiB
VB.net
Public Class FrmTest_C5
|
||
Implements IFrmTest
|
||
Public FCsConfig As FrmCSeriesConfig
|
||
Sub New(pathme As FrmCSeriesConfig)
|
||
|
||
' 此调用是设计器所必需的。
|
||
InitializeComponent()
|
||
FCsConfig = pathme
|
||
' 在 InitializeComponent() 调用之后添加任何初始化。
|
||
|
||
End Sub
|
||
#Region "多语种信息"
|
||
|
||
|
||
''' <summary>
|
||
''' 初始化界面控件文本
|
||
''' </summary>
|
||
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 "窗体"
|
||
|
||
''' <summary>
|
||
''' 窗体加载事件
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub FrmTest_C5_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||
MultiLanguageInfo()
|
||
InitFolderItems()
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 显示窗体事件
|
||
''' 实现接口
|
||
''' </summary>
|
||
''' <param name="parentControl"></param>
|
||
Public Sub ShowForm(parentControl As Control) Implements IFrmTest.ShowForm
|
||
FormBorderStyle = FormBorderStyle.None '无边框
|
||
TopLevel = False
|
||
Dock = DockStyle.Fill '填满大小
|
||
Parent = parentControl '父容器
|
||
|
||
Show()
|
||
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 "C5测试"
|
||
|
||
''' <summary>
|
||
''' 发送组包
|
||
''' </summary>
|
||
''' <param name="cmd"></param>
|
||
''' <param name="dataBuff"></param>
|
||
''' <returns></returns>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' 获取继电器序号
|
||
''' </summary>
|
||
Private _relayNumber(5) As Byte
|
||
|
||
|
||
'''' <summary>
|
||
'''' 1-20路继电器
|
||
'''' </summary>
|
||
'''' <param name="sender"></param>
|
||
'''' <param name="e"></param>
|
||
'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
|
||
|
||
|
||
''' <summary>
|
||
''' 1-24路继电器
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' 获取继电器序号
|
||
''' </summary>
|
||
''' <param name="number"></param>
|
||
''' <returns></returns>
|
||
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
|
||
|
||
''' <summary>
|
||
''' 获取继电器状态
|
||
''' </summary>
|
||
''' <param name="index"></param>
|
||
''' <returns></returns>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' C5-IO 检测输入
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' 输出测试
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
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
|
||
|
||
''' <summary>
|
||
''' 获取C5测试输出序号
|
||
''' </summary>
|
||
Private C5DONumber(1) As Byte
|
||
|
||
|
||
''' <summary>
|
||
''' 获取继电器状态
|
||
''' </summary>
|
||
''' <param name="index"></param>
|
||
''' <returns></returns>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' 获取输入序号
|
||
''' </summary>
|
||
''' <param name="number"></param>
|
||
''' <returns></returns>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' C5测试音频播放文件下
|
||
''' </summary>
|
||
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)}"}
|
||
|
||
|
||
''' <summary>
|
||
''' 初始化文件夹可选项
|
||
''' </summary>
|
||
Private Sub InitFolderItems()
|
||
ComboBox10.Items.Clear()
|
||
ComboBox10.Items.AddRange(_PlayFolder)
|
||
If ComboBox10.Items.Count > 4 Then ComboBox10.SelectedIndex = 4
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 音乐播放
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' C5音频测试
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' 获取播放文件夹
|
||
''' </summary>
|
||
''' <param name="text"></param>
|
||
''' <returns></returns>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' 起始时间
|
||
''' </summary>
|
||
Private _startTime As Date
|
||
|
||
|
||
''' <summary>
|
||
''' C5_巡回测试
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' 设置MAC地址
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
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
|
||
|
||
|
||
''' <summary>
|
||
''' 发送MAC
|
||
''' </summary>
|
||
''' <param name="cmd"></param>
|
||
''' <param name="dataBuff"></param>
|
||
''' <returns></returns>
|
||
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 |