398 lines
14 KiB
VB.net
398 lines
14 KiB
VB.net
|
|
Imports System.ComponentModel
|
|||
|
|
Imports BLV_Studio.EnumExtend
|
|||
|
|
Imports FlexCell
|
|||
|
|
|
|||
|
|
Public Class ServiceAttribute
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public G_hostNode As DeviceChildNodeClass
|
|||
|
|
|
|||
|
|
Public G_input As String
|
|||
|
|
|
|||
|
|
Private g_dicComboBox1 As Dictionary(Of String, String)
|
|||
|
|
|
|||
|
|
Public G_result As String
|
|||
|
|
Enum STcolname
|
|||
|
|
<Description("Input number")>
|
|||
|
|
行号 = 0
|
|||
|
|
<Description("Device alias")>
|
|||
|
|
延时
|
|||
|
|
<Description("backlight")>
|
|||
|
|
单位
|
|||
|
|
<Description("Open mode")>
|
|||
|
|
打开方式
|
|||
|
|
<Description("Service type")>
|
|||
|
|
服务类型
|
|||
|
|
<Description("Display service")>
|
|||
|
|
显示服务
|
|||
|
|
max
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Dic_1, Dic_2, Dic_3, Dic_4 As List(Of String)
|
|||
|
|
Private Sub ServiceAttribute_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|||
|
|
InitTable()
|
|||
|
|
If IsNothing(G_hostNode) Then
|
|||
|
|
MsgBox("未选择主机,请先选择主机再进行配置!")
|
|||
|
|
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
|
|||
|
|
Me.Close()
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
'服务方式
|
|||
|
|
Dic_1 = New List(Of String)
|
|||
|
|
'执行方式
|
|||
|
|
Dic_2 = New List(Of String)
|
|||
|
|
'时间
|
|||
|
|
Dic_3 = New List(Of String)
|
|||
|
|
'单位
|
|||
|
|
Dic_4 = New List(Of String)
|
|||
|
|
|
|||
|
|
For Each node In G_hostNode.Nodes
|
|||
|
|
Dic_1.Add($"{node.LoopAddr}:{node.Name }")
|
|||
|
|
Next
|
|||
|
|
Dic_2.AddRange({"2:close", "1:open"})
|
|||
|
|
For i = 0 To 255
|
|||
|
|
Dic_3.Add(i)
|
|||
|
|
Next
|
|||
|
|
Dic_4.AddRange({"ms", "s", "m", "H", "Day"})
|
|||
|
|
LoadInputText(G_input)
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
Public Shared Function CheckDataIsOk(datastr As String, hostNode As DeviceChildNodeClass) As Boolean
|
|||
|
|
If String.IsNullOrEmpty(datastr) Then Return True
|
|||
|
|
Dim buff() As String = datastr.Split(vbLf)
|
|||
|
|
Dim isok As Boolean
|
|||
|
|
For Each index In buff
|
|||
|
|
isok = False
|
|||
|
|
|
|||
|
|
Dim buf() As String = index.Split(",")
|
|||
|
|
If buf.Length <> 5 Then Return False
|
|||
|
|
Dim intbuf(3) As Integer
|
|||
|
|
If Not (Integer.TryParse(buf(0), intbuf(0)) And Integer.TryParse(buf(1), intbuf(1)) And Integer.TryParse(buf(2), intbuf(2)) And Integer.TryParse(buf(3), intbuf(3))) Then Return False
|
|||
|
|
If IsNothing(hostNode) Then Return False
|
|||
|
|
For Each node In hostNode.Nodes
|
|||
|
|
If node.LoopAddr.Equals(intbuf(0).ToString) Then
|
|||
|
|
isok = True
|
|||
|
|
If intbuf(1) = 2 OrElse intbuf(1) = 1 Then
|
|||
|
|
If intbuf(2) >= 0 OrElse intbuf(2) <= 255 Then
|
|||
|
|
If intbuf(3) >= 1 OrElse intbuf(3) <= 5 Then
|
|||
|
|
Exit For
|
|||
|
|
End If
|
|||
|
|
Return False
|
|||
|
|
End If
|
|||
|
|
Return False
|
|||
|
|
End If
|
|||
|
|
Return False
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
If isok Then
|
|||
|
|
Continue For
|
|||
|
|
End If
|
|||
|
|
Return False
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Return True
|
|||
|
|
End Function
|
|||
|
|
Public Shared Function Getservername(datastr As String, hostNode As DeviceChildNodeClass) As String
|
|||
|
|
Dim result As String = String.Empty
|
|||
|
|
For Each node In hostNode.Nodes
|
|||
|
|
If node.LoopAddr.Equals(datastr) Then
|
|||
|
|
Return node.Name
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
Return result
|
|||
|
|
End Function
|
|||
|
|
Private Sub LoadInputText(inputstr As String)
|
|||
|
|
If String.IsNullOrEmpty(inputstr) Then Return
|
|||
|
|
Dim buff() As String = inputstr.Split(vbLf)
|
|||
|
|
Dim C1, C2, C3, C4 As String
|
|||
|
|
|
|||
|
|
For Each index In buff
|
|||
|
|
C1 = String.Empty
|
|||
|
|
C2 = String.Empty
|
|||
|
|
C3 = String.Empty
|
|||
|
|
C4 = String.Empty
|
|||
|
|
Table_Grid1.AddItem("")
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim buf() As String = index.Split(",")
|
|||
|
|
If buf.Length > 0 Then
|
|||
|
|
For i As Integer = 0 To Dic_1.Count - 1
|
|||
|
|
If Dic_1(i).ToString.Contains(buf(0)) Then
|
|||
|
|
C1 = Dic_1(i)
|
|||
|
|
Table_Grid1.Cell(Table_Grid1.Rows - 1, STcolname.服务类型).Text = C1
|
|||
|
|
Exit For
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
End If
|
|||
|
|
If buf.Length > 1 Then
|
|||
|
|
For i As Integer = 0 To Dic_2.Count - 1
|
|||
|
|
If Dic_2(i).ToString.Contains(buf(1)) Then
|
|||
|
|
C2 = Dic_2(i)
|
|||
|
|
Table_Grid1.Cell(Table_Grid1.Rows - 1, STcolname.打开方式).Text = C2
|
|||
|
|
Exit For
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
End If
|
|||
|
|
If buf.Length > 2 Then
|
|||
|
|
For i As Integer = 0 To Dic_3.Count - 1
|
|||
|
|
If Dic_3(i).ToString.Contains(buf(2)) Then
|
|||
|
|
C3 = Dic_3(i)
|
|||
|
|
Table_Grid1.Cell(Table_Grid1.Rows - 1, STcolname.延时).Text = C3
|
|||
|
|
Exit For
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
End If
|
|||
|
|
If buf.Length > 3 Then
|
|||
|
|
Dim cbuf As String = FGetDelayUnit(buf(3))
|
|||
|
|
For i As Integer = 0 To Dic_4.Count - 1
|
|||
|
|
If Dic_4(i).ToString.Equals(cbuf) Then
|
|||
|
|
C4 = cbuf
|
|||
|
|
Table_Grid1.Cell(Table_Grid1.Rows - 1, STcolname.单位).Text = C4
|
|||
|
|
Exit For
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If String.IsNullOrEmpty(C1) OrElse String.IsNullOrEmpty(C2) OrElse String.IsNullOrEmpty(C3) OrElse String.IsNullOrEmpty(C4) Then
|
|||
|
|
If String.IsNullOrEmpty(C1) Then
|
|||
|
|
Table_Grid1.Range(Table_Grid1.Rows - 1, STcolname.服务类型, Table_Grid1.Rows - 1, STcolname.服务类型).BackColor = Color.OrangeRed
|
|||
|
|
ElseIf String.IsNullOrEmpty(C2) Then
|
|||
|
|
Table_Grid1.Range(Table_Grid1.Rows - 1, STcolname.打开方式, Table_Grid1.Rows - 1, STcolname.打开方式).BackColor = Color.OrangeRed
|
|||
|
|
ElseIf String.IsNullOrEmpty(C3) Then
|
|||
|
|
Table_Grid1.Range(Table_Grid1.Rows - 1, STcolname.延时, Table_Grid1.Rows - 1, STcolname.延时).BackColor = Color.OrangeRed
|
|||
|
|
ElseIf String.IsNullOrEmpty(C4) Then
|
|||
|
|
Table_Grid1.Range(Table_Grid1.Rows - 1, STcolname.单位, Table_Grid1.Rows - 1, STcolname.单位).BackColor = Color.OrangeRed
|
|||
|
|
End If
|
|||
|
|
Continue For
|
|||
|
|
Else
|
|||
|
|
Table_Grid1.Range(Table_Grid1.Rows - 1, 0, Table_Grid1.Rows - 1, STcolname.服务类型).BackColor = Color.White
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Function showSelectedIndexVal(c1 As String, c2 As String, c3 As String, c4 As String, c5 As String) As String
|
|||
|
|
Dim reslit As String = String.Empty
|
|||
|
|
Dim strbuf1() As String = c1.Split(":")
|
|||
|
|
Dim strbuf2() As String = c2.Split(":")
|
|||
|
|
Dim t As String = GetDelayUnit(c4)
|
|||
|
|
reslit = $"{strbuf1(0)},{strbuf2(0)},{c3},{t},{c5}"
|
|||
|
|
Return reslit
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
|||
|
|
G_result = String.Empty
|
|||
|
|
Dim indexstr As String = String.Empty
|
|||
|
|
Dim C1, C2, C3, C5, C4 As String
|
|||
|
|
For i = 1 To Table_Grid1.Rows - 1
|
|||
|
|
C1 = Table_Grid1.Cell(i, STcolname.服务类型).Text.Trim
|
|||
|
|
C2 = Table_Grid1.Cell(i, STcolname.打开方式).Text.Trim
|
|||
|
|
C3 = Table_Grid1.Cell(i, STcolname.延时).Text.Trim
|
|||
|
|
C4 = Table_Grid1.Cell(i, STcolname.单位).Text.Trim
|
|||
|
|
C5 = Table_Grid1.Cell(i, STcolname.显示服务).Text.Trim
|
|||
|
|
If String.IsNullOrEmpty(C1) OrElse String.IsNullOrEmpty(C2) OrElse String.IsNullOrEmpty(C3) OrElse String.IsNullOrEmpty(C4) Then
|
|||
|
|
MsgBox($"添加服务数据异常,行号:{i}")
|
|||
|
|
If String.IsNullOrEmpty(C1) Then
|
|||
|
|
Table_Grid1.Range(i, STcolname.服务类型, i, STcolname.服务类型).BackColor = Color.OrangeRed
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
If String.IsNullOrEmpty(C2) Then
|
|||
|
|
Table_Grid1.Range(i, STcolname.打开方式, i, STcolname.打开方式).BackColor = Color.OrangeRed
|
|||
|
|
End If
|
|||
|
|
If String.IsNullOrEmpty(C3) Then
|
|||
|
|
Table_Grid1.Range(i, STcolname.延时, i, STcolname.延时).BackColor = Color.OrangeRed
|
|||
|
|
End If
|
|||
|
|
If String.IsNullOrEmpty(C4) Then
|
|||
|
|
Table_Grid1.Range(i, STcolname.单位, i, STcolname.单位).BackColor = Color.OrangeRed
|
|||
|
|
End If
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
indexstr = showSelectedIndexVal(C1, C2, C3, C4, C5)
|
|||
|
|
G_result = $"{G_result}{vbLf }{indexstr}"
|
|||
|
|
Next
|
|||
|
|
G_result = G_result.Trim
|
|||
|
|
Me.DialogResult = System.Windows.Forms.DialogResult.OK
|
|||
|
|
Me.Close()
|
|||
|
|
Return
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Function GetDelayUnit(str As String) As String
|
|||
|
|
Dim result As Integer
|
|||
|
|
Select Case str
|
|||
|
|
Case "ms"
|
|||
|
|
result = 1
|
|||
|
|
Case "s"
|
|||
|
|
result = 2
|
|||
|
|
Case "m"
|
|||
|
|
result = 3
|
|||
|
|
Case "H"
|
|||
|
|
result = 4
|
|||
|
|
Case "Day"
|
|||
|
|
result = 5
|
|||
|
|
Case Else
|
|||
|
|
result = 1
|
|||
|
|
End Select
|
|||
|
|
|
|||
|
|
Return result.ToString
|
|||
|
|
End Function
|
|||
|
|
Private Function FGetDelayUnit(str As String) As String
|
|||
|
|
Dim result As String = String.Empty
|
|||
|
|
Select Case str
|
|||
|
|
Case "1"
|
|||
|
|
result = "ms"
|
|||
|
|
Case "2"
|
|||
|
|
result = "s"
|
|||
|
|
Case "3"
|
|||
|
|
result = "m"
|
|||
|
|
Case "4"
|
|||
|
|
result = "H"
|
|||
|
|
Case "5"
|
|||
|
|
result = "Day"
|
|||
|
|
Case Else
|
|||
|
|
|
|||
|
|
End Select
|
|||
|
|
|
|||
|
|
Return result.ToString
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
|||
|
|
Table_Grid1.AddItem("")
|
|||
|
|
Table_Grid1.Cell(Table_Grid1.Rows - 1, STcolname.延时).Text = "0"
|
|||
|
|
Table_Grid1.Cell(Table_Grid1.Rows - 1, STcolname.单位).Text = "ms"
|
|||
|
|
Table_Grid1.Cell(Table_Grid1.Rows - 1, STcolname.打开方式).Text = "1:Open"
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Table_Grid1_CellChange(Sender As Object, e As Grid.CellChangeEventArgs) Handles Table_Grid1.CellChange
|
|||
|
|
If e.Row > 0 Then
|
|||
|
|
|
|||
|
|
If e.Col = STcolname.延时 Then
|
|||
|
|
If String.IsNullOrEmpty(Table_Grid1.Cell(e.Row, e.Col).Text) Then
|
|||
|
|
Table_Grid1.Cell(e.Row, e.Col).Text = 0
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
For Each node In Dic_3
|
|||
|
|
If node.Equals(Table_Grid1.Cell(e.Row, e.Col).Text) Then
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
Table_Grid1.Cell(e.Row, e.Col).Text = 0
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
If String.IsNullOrEmpty(Table_Grid1.Cell(e.Row, e.Col).Text) Then Return
|
|||
|
|
Table_Grid1.Cell(e.Row, e.Col).BackColor = Color.White
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub InitTable()
|
|||
|
|
Table_Grid1.Rows = 1
|
|||
|
|
Table_Grid1.Cols = STcolname.max
|
|||
|
|
Table_Grid1.ExtendLastCol = True
|
|||
|
|
For i = 0 To STcolname.max - 1
|
|||
|
|
Dim colorValue As STcolname = CType([Enum].Parse(GetType(STcolname), i), STcolname)
|
|||
|
|
Table_Grid1.Cell(0, i).Text = EnumExtender.GetEnumDescription(colorValue) ' [Enum].GetName(GetType(STcolname), i)
|
|||
|
|
Select Case i
|
|||
|
|
Case STcolname.行号
|
|||
|
|
With Table_Grid1.Column(i)
|
|||
|
|
.Width = 50
|
|||
|
|
'.Visible = True
|
|||
|
|
.Locked = True
|
|||
|
|
End With
|
|||
|
|
Case STcolname.延时
|
|||
|
|
With Table_Grid1.Column(i)
|
|||
|
|
.Width = 50
|
|||
|
|
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
|||
|
|
.CellType = CellTypeEnum.ComboBox
|
|||
|
|
End With
|
|||
|
|
'Table_Grid1.ComboBox(i).Locked = True
|
|||
|
|
Case STcolname.单位
|
|||
|
|
With Table_Grid1.Column(i)
|
|||
|
|
.Width = 50
|
|||
|
|
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
|||
|
|
.CellType = CellTypeEnum.ComboBox
|
|||
|
|
End With
|
|||
|
|
Table_Grid1.ComboBox(i).Locked = True
|
|||
|
|
Case STcolname.打开方式
|
|||
|
|
With Table_Grid1.Column(i)
|
|||
|
|
.Width = 80
|
|||
|
|
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
|||
|
|
.CellType = CellTypeEnum.ComboBox
|
|||
|
|
End With
|
|||
|
|
Table_Grid1.ComboBox(i).Locked = True
|
|||
|
|
Case STcolname.服务类型
|
|||
|
|
With Table_Grid1.Column(i)
|
|||
|
|
.Width = 180
|
|||
|
|
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
|||
|
|
.CellType = CellTypeEnum.ComboBox
|
|||
|
|
End With
|
|||
|
|
Table_Grid1.ComboBox(i).Locked = True
|
|||
|
|
Case STcolname.显示服务
|
|||
|
|
With Table_Grid1.Column(i)
|
|||
|
|
.Width = 30
|
|||
|
|
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
|||
|
|
.CellType = CellTypeEnum.CheckBox
|
|||
|
|
End With
|
|||
|
|
|
|||
|
|
Case Else
|
|||
|
|
Exit For
|
|||
|
|
End Select
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
|
|||
|
|
If Table_Grid1.ActiveCell.Row > 0 Then
|
|||
|
|
Table_Grid1.Row(Table_Grid1.ActiveCell.Row).Delete()
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Table_Grid1_ComboDropDown(Sender As Object, e As Grid.ComboDropDownEventArgs) Handles Table_Grid1.ComboDropDown
|
|||
|
|
If e.Row > 0 Then
|
|||
|
|
Table_Grid1.ComboBox(e.Col).Items.Clear()
|
|||
|
|
|
|||
|
|
Select Case e.Col
|
|||
|
|
Case STcolname.行号
|
|||
|
|
Return
|
|||
|
|
Case STcolname.延时
|
|||
|
|
Table_Grid1.ComboBox(e.Col).Items.AddRange(Dic_3.ToArray)
|
|||
|
|
Case STcolname.单位
|
|||
|
|
Table_Grid1.ComboBox(e.Col).Items.AddRange(Dic_4.ToArray)
|
|||
|
|
Case STcolname.打开方式
|
|||
|
|
Table_Grid1.ComboBox(e.Col).Items.AddRange(Dic_2.ToArray)
|
|||
|
|
Case STcolname.服务类型
|
|||
|
|
Table_Grid1.ComboBox(e.Col).Items.AddRange(Dic_1.ToArray)
|
|||
|
|
Case Else
|
|||
|
|
|
|||
|
|
End Select
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
End Class
|