834 lines
33 KiB
VB.net
834 lines
33 KiB
VB.net
|
|
Imports System.Text
|
|||
|
|
Imports BLV_Studio.GridModel.DeviceEventModel
|
|||
|
|
Imports FlexCell
|
|||
|
|
|
|||
|
|
Public Class TestForm1
|
|||
|
|
|
|||
|
|
Enum ComboDropDownON
|
|||
|
|
LightingCircuit = 1
|
|||
|
|
LightingCircuit0
|
|||
|
|
LightingCircuit1
|
|||
|
|
LightingCircuit2
|
|||
|
|
KeyDev
|
|||
|
|
max
|
|||
|
|
End Enum
|
|||
|
|
Enum ComboDropDownCol
|
|||
|
|
devFile = 1
|
|||
|
|
Keyval
|
|||
|
|
keyName
|
|||
|
|
music
|
|||
|
|
空改1
|
|||
|
|
空改2
|
|||
|
|
空改3
|
|||
|
|
空改4
|
|||
|
|
max
|
|||
|
|
End Enum
|
|||
|
|
|
|||
|
|
Enum CellDrop
|
|||
|
|
|
|||
|
|
TurnOn = -24116
|
|||
|
|
TurnDrown = -23592
|
|||
|
|
表示先开后关 = -24080
|
|||
|
|
代表先关后开 = -24075
|
|||
|
|
'代表调光上 = -23637
|
|||
|
|
'代表调光下降 = -23635
|
|||
|
|
|
|||
|
|
End Enum
|
|||
|
|
Public configInfo As ConfigInfoStuct
|
|||
|
|
Public basicClass As DeviceObjectClasses
|
|||
|
|
Private Sub TestForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim tmpRcuModelFile As String
|
|||
|
|
Using dlg As New OpenFileDialog
|
|||
|
|
dlg.InitialDirectory = HostDevFNP
|
|||
|
|
dlg.Title = "请选择 RCU 模型文件!"
|
|||
|
|
dlg.Filter = "RCU模型信息(*.xml)|*.xml"
|
|||
|
|
If dlg.ShowDialog <> DialogResult.OK Then
|
|||
|
|
MsgBox("未选择 RCU 模型文件!")
|
|||
|
|
Me.Close()
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
tmpRcuModelFile = dlg.FileName
|
|||
|
|
End Using
|
|||
|
|
initGrid1()
|
|||
|
|
DevModeInserfilag = 0
|
|||
|
|
DeviceModuleDic = New Dictionary(Of String, DeviceModel)
|
|||
|
|
SwitchConfig = New Dictionary(Of String, Dictionary(Of Integer, String))
|
|||
|
|
DeleteDevmodedic = New List(Of DeleteDevmodeclass)
|
|||
|
|
AddHostDeviceModule(tmpRcuModelFile)
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public DevModeInserfilag As Integer = 0
|
|||
|
|
Public Sub initGrid1()
|
|||
|
|
Grid1.NewFile()
|
|||
|
|
Grid1.Cols = ComboDropDownCol.max
|
|||
|
|
Grid1.Rows = 1
|
|||
|
|
Grid1.Column(0).Visible = False
|
|||
|
|
Grid1.Row(0).Visible = False
|
|||
|
|
Grid1.AddItem("")
|
|||
|
|
Grid1.AddItem("")
|
|||
|
|
Grid1.AddItem("")
|
|||
|
|
Grid1.AddItem("")
|
|||
|
|
Grid1.Row(ComboDropDownON.LightingCircuit2).Height = 50
|
|||
|
|
With Grid1.Range(ComboDropDownON.LightingCircuit, 1, ComboDropDownON.LightingCircuit2, 8)
|
|||
|
|
.Merge()
|
|||
|
|
.Alignment = AlignmentEnum.CenterCenter
|
|||
|
|
End With
|
|||
|
|
With Grid1.Cell(ComboDropDownON.LightingCircuit, 1)
|
|||
|
|
.Text = "灯光回路"
|
|||
|
|
.Locked = True
|
|||
|
|
End With
|
|||
|
|
|
|||
|
|
Grid1.AddItem("")
|
|||
|
|
Grid1.Cell(ComboDropDownON.KeyDev, ComboDropDownCol.devFile).Text = "设备地址"
|
|||
|
|
Grid1.Cell(ComboDropDownON.KeyDev, ComboDropDownCol.Keyval).Text = "键值"
|
|||
|
|
Grid1.Cell(ComboDropDownON.KeyDev, ComboDropDownCol.keyName).Text = "按键名称"
|
|||
|
|
Grid1.Cell(ComboDropDownON.KeyDev, ComboDropDownCol.music).Text = "是否需要提示音"
|
|||
|
|
Grid1.Cell(ComboDropDownON.KeyDev, ComboDropDownCol.空改1).Text = "是否需要服务调用"
|
|||
|
|
Grid1.Cell(ComboDropDownON.KeyDev, ComboDropDownCol.空改2).Text = "取电有效"
|
|||
|
|
Grid1.Cell(ComboDropDownON.KeyDev, ComboDropDownCol.空改3).Text = "起夜模式"
|
|||
|
|
Grid1.Cell(ComboDropDownON.KeyDev, ComboDropDownCol.空改4).Text = "总开模式"
|
|||
|
|
Grid1.Row(ComboDropDownON.KeyDev).Locked = True
|
|||
|
|
|
|||
|
|
Grid1.Column(2).Locked = True
|
|||
|
|
Grid1.FrozenRows = ComboDropDownON.max - 1
|
|||
|
|
Grid1.FrozenCols = ComboDropDownCol.max - 1
|
|||
|
|
|
|||
|
|
'Grid1.Column(3).Locked = True
|
|||
|
|
'Grid1.Column(4).Locked = True
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
Public HostDevFNP As String = "C:\BLV_Studio\Data\Model\RCUModel\"
|
|||
|
|
Private Sub Grid1_ComboDropDown(Sender As Object, e As Grid.ComboDropDownEventArgs) Handles Grid1.ComboDropDown
|
|||
|
|
Grid1.ComboBox(0).Items.Clear()
|
|||
|
|
Select Case e.Row
|
|||
|
|
'Case ComboDropDownON.HostDev
|
|||
|
|
' For Each HostDevFN In IO.Directory.GetFiles(HostDevFNP)
|
|||
|
|
' Grid1.ComboBox(0).Items.Add(HostDevFN.Substring(HostDevFNP.Length, HostDevFN.Length - HostDevFNP.Length - 4))
|
|||
|
|
' Next
|
|||
|
|
Case >= ComboDropDownON.max
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Console.WriteLine()
|
|||
|
|
If Grid1.Cell(ComboDropDownON.LightingCircuit0, Grid1.ActiveCell.Col).Text.Equals("MUSIC") Then
|
|||
|
|
Dim fromshow As New MusicArrangement
|
|||
|
|
fromshow.basicClass = basicClass
|
|||
|
|
If fromshow.ShowDialog() <> DialogResult.OK Then Return
|
|||
|
|
Grid1.Cell(Grid1.ActiveCell.Row, Grid1.ActiveCell.Col).Text = fromshow.GmusicVal
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
For Each index In [Enum].GetValues(GetType(CellDrop))
|
|||
|
|
Grid1.ComboBox(0).Items.Add(Chr(index))
|
|||
|
|
Next
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Select
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub Grid1_CellChange(Sender As Object, e As Grid.CellChangeEventArgs) Handles Grid1.CellChange
|
|||
|
|
Select Case e.Row
|
|||
|
|
'Case ComboDropDownON.HostDev
|
|||
|
|
' If e.Col > 1 Then
|
|||
|
|
' SwitchConfig.Clear()
|
|||
|
|
' AddHostDeviceModule(HostDevFNP & Grid1.Cell(e.Row, e.Col).Text & ".xml")
|
|||
|
|
' End If
|
|||
|
|
Case ComboDropDownON.LightingCircuit2
|
|||
|
|
If e.Col > 4 And IsRelayflag Then
|
|||
|
|
SetRELAYAnotherName(e.Row, e.Col)
|
|||
|
|
End If
|
|||
|
|
Case > ComboDropDownON.KeyDev
|
|||
|
|
If e.Col = 3 And IsRelayflag Then
|
|||
|
|
SetkeypadAnotherName(e.Row, e.Col)
|
|||
|
|
ElseIf e.Col > 4 And IsRelayflag Then
|
|||
|
|
Dim crow As Integer = -1
|
|||
|
|
|
|||
|
|
Integer.TryParse(Grid1.Cell(e.Row, 2).Text, crow)
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim keystr As String = Grid1.Cell(e.Row - (crow - 1), 1).Text
|
|||
|
|
keystr = $"{keystr}:{crow.ToString }"
|
|||
|
|
Dim dic As Dictionary(Of Integer, String) = SwitchConfig.Item(keystr)
|
|||
|
|
If dic.ContainsKey(e.Col) And Not String.IsNullOrEmpty(Grid1.Cell(e.Row, e.Col).Text) Then
|
|||
|
|
dic.Item(e.Col) = Grid1.Cell(e.Row, e.Col).Text
|
|||
|
|
Else
|
|||
|
|
dic.Add(e.Col, Grid1.Cell(e.Row, e.Col).Text)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
End Select
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Sub SetRELAYAnotherName(r As Integer, c As Integer)
|
|||
|
|
Dim place As Integer = c - 4
|
|||
|
|
For Each moduStr In DeviceModuleDic
|
|||
|
|
For Each ModuleFre In moduStr.Value.Nodes
|
|||
|
|
If ModuleFre.Name.Equals("RELAY") Then
|
|||
|
|
If ModuleFre.Nodes.Count < place Then
|
|||
|
|
place = place - ModuleFre.Nodes.Count
|
|||
|
|
Else
|
|||
|
|
ModuleFre.Nodes(place - 1).Name = Grid1.Cell(r, c).Text
|
|||
|
|
Exit Sub
|
|||
|
|
End If
|
|||
|
|
Exit For
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
Public Sub SetkeypadAnotherName(r As Integer, c As Integer)
|
|||
|
|
Dim place As Integer = r - ComboDropDownON.KeyDev
|
|||
|
|
For Each moduStr In DeviceModuleDic
|
|||
|
|
For Each ModuleFre In moduStr.Value.Nodes
|
|||
|
|
If ModuleFre.Name.Equals("DI") Then
|
|||
|
|
If ModuleFre.Nodes.Count < place Then
|
|||
|
|
place = place - ModuleFre.Nodes.Count
|
|||
|
|
Else
|
|||
|
|
If IsRelayflag Then
|
|||
|
|
ModuleFre.Nodes(place - 1).Name = Grid1.Cell(r, c).Text
|
|||
|
|
Exit Sub
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
Exit For
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public DeviceModuleDic As Dictionary(Of String, DeviceModel)
|
|||
|
|
Public Sub AddHostDeviceModule(HostDevicefile As String)
|
|||
|
|
Try
|
|||
|
|
Dim model As DeviceModel = LoadModelFromXml(HostDevicefile)
|
|||
|
|
SwitchConfig.Clear()
|
|||
|
|
If DeviceModuleDic.ContainsKey("HostDevice") Then
|
|||
|
|
DeviceModuleDic.Item("HostDevice") = model
|
|||
|
|
Else
|
|||
|
|
DeviceModuleDic.Add("HostDevice", model)
|
|||
|
|
End If
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox("添加主机失败!")
|
|||
|
|
Return
|
|||
|
|
End Try
|
|||
|
|
ShowRelay()
|
|||
|
|
|
|||
|
|
'For Each inten In model.Nodes
|
|||
|
|
' If inten.Name.Equals("RELAY") Then
|
|||
|
|
' Dim hotel = New TreeNode(inten.Name)
|
|||
|
|
' For Each Cindten In inten.Nodes
|
|||
|
|
' Dim hotelc As New TreeNode(Cindten.Name)
|
|||
|
|
' hotel.Nodes.Add(hotelc)
|
|||
|
|
' Next
|
|||
|
|
' DeviceModuleDic.Nodes.Add(hotel)
|
|||
|
|
' Return
|
|||
|
|
' Else
|
|||
|
|
' Continue For
|
|||
|
|
' End If
|
|||
|
|
'Next
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
Public Function LoadModelFromXml(path As String) As DeviceModel
|
|||
|
|
Return BXmlSerializer.DeserializeFormXml(Of DeviceModel)(path)
|
|||
|
|
End Function
|
|||
|
|
Public DevModel As String = "C:\BLV_Studio\Data\Model\485Model\"
|
|||
|
|
Private Sub ToolStripComboBox1_DropDown(sender As Object, e As EventArgs) Handles ToolStripComboBox1.DropDown
|
|||
|
|
ToolStripComboBox1.Items.Clear()
|
|||
|
|
For Each HostDevFN In IO.Directory.GetFiles(DevModel)
|
|||
|
|
ToolStripComboBox1.Items.Add(HostDevFN.Substring(DevModel.Length, HostDevFN.Length - DevModel.Length - 4))
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
|
|||
|
|
Dim model As DeviceModel
|
|||
|
|
Try
|
|||
|
|
model = LoadModelFromXml(DevModel & ToolStripComboBox1.Text & ".xml")
|
|||
|
|
If DeviceModuleDic.ContainsKey("HostDevice") Then
|
|||
|
|
If model.Desc.DevInterface.Equals("RS485Polling") Then
|
|||
|
|
|
|||
|
|
'If DeviceModuleDic.ContainsKey(ToolStripComboBox1.Text) Then
|
|||
|
|
'DeviceModuleDic.Item("HostDevice") = model
|
|||
|
|
Dim number As Integer = ModuleFrequency(ToolStripComboBox1.Text)
|
|||
|
|
'DeviceModuleDic.Add($"{ToolStripComboBox1.Text}_{number}", model)
|
|||
|
|
Dim strindex As String = GetindexNumber(ToolStripComboBox1.Text, number)
|
|||
|
|
DeviceModuleDic = DeviceModuleDicDiinsertion(DeviceModuleDic, DevModeInserfilag, strindex, model)
|
|||
|
|
'Else
|
|||
|
|
' ' DeviceModuleDic.Add(ToolStripComboBox1.Text, model)
|
|||
|
|
' DeviceModuleDic = DeviceModuleDicDiinsertion(DeviceModuleDic, DevModeInserfilag, $"{ToolStripComboBox1.Text}", model)
|
|||
|
|
'End If
|
|||
|
|
DevModeInserfilag = DevModeInserfilag + 1
|
|||
|
|
Else
|
|||
|
|
MsgBox($"添加外设模块失败!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
Else
|
|||
|
|
MsgBox($"未添加主机!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox($"加载设备模型错误,{ex.Message}")
|
|||
|
|
Return
|
|||
|
|
End Try
|
|||
|
|
ShowRelay()
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Function GetindexNumber(str As String, index As Integer) As String
|
|||
|
|
Dim result As String
|
|||
|
|
If DeviceModuleDic.ContainsKey($"{str}:{index}") Then
|
|||
|
|
index = index + 1
|
|||
|
|
result = GetindexNumber(str, index)
|
|||
|
|
Else
|
|||
|
|
result = $"{str}:{index}"
|
|||
|
|
End If
|
|||
|
|
Return result
|
|||
|
|
End Function
|
|||
|
|
Public Function ModuleFrequency(hfreq As String) As Integer
|
|||
|
|
Dim result As Integer = 1
|
|||
|
|
Dim str As String = String.Empty
|
|||
|
|
Dim strbuff() As String
|
|||
|
|
Dim index As Integer = -1
|
|||
|
|
For Each moduStr In DeviceModuleDic.Keys
|
|||
|
|
If moduStr.Contains(hfreq) Then
|
|||
|
|
result = result + 1
|
|||
|
|
str = moduStr
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
If str.Length > 0 Then
|
|||
|
|
strbuff = str.Split(":")
|
|||
|
|
If strbuff.Length > 1 Then
|
|||
|
|
Integer.TryParse(strbuff(1), index)
|
|||
|
|
End If
|
|||
|
|
If index > result Then result = index + 1
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Return result
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public IsRelayflag As Boolean
|
|||
|
|
Public Sub ShowRelay()
|
|||
|
|
Dim Startid As Integer = ComboDropDownCol.max
|
|||
|
|
Grid1.Cols = ComboDropDownCol.max
|
|||
|
|
IsRelayflag = False
|
|||
|
|
Dim demoindex As Integer = Startid
|
|||
|
|
|
|||
|
|
Dim g_Dimming As DeviceChildNodeClass
|
|||
|
|
Dim g_RELAY As DeviceChildNodeClass
|
|||
|
|
Dim g_DO As DeviceChildNodeClass
|
|||
|
|
Dim g_MUSIC As DeviceChildNodeClass
|
|||
|
|
|
|||
|
|
For Each moduStr In DeviceModuleDic
|
|||
|
|
g_Dimming = Nothing
|
|||
|
|
g_RELAY = Nothing
|
|||
|
|
g_DO = Nothing
|
|||
|
|
g_MUSIC = Nothing
|
|||
|
|
For Each ModuleFre In moduStr.Value.Nodes
|
|||
|
|
' If ModuleFre.Name.Equals("Dimming") OrElse ModuleFre.Name.Equals("RELAY") OrElse ModuleFre.Name.Equals("DO") Then
|
|||
|
|
|
|||
|
|
'添加继电器列
|
|||
|
|
'Grid1.Cols = demoindex + ModuleFre.Nodes.Count
|
|||
|
|
'Grid1.Cell(ComboDropDownON.LightingCircuit0, demoindex).Text = ModuleFre.Name
|
|||
|
|
'Grid1.Range(ComboDropDownON.LightingCircuit0, demoindex, ComboDropDownON.LightingCircuit0, demoindex + ModuleFre.Nodes.Count - 1).Merge()
|
|||
|
|
'Grid1.Range(ComboDropDownON.LightingCircuit, demoindex, ComboDropDownON.LightingCircuit, demoindex + ModuleFre.Nodes.Count - 1).Locked = False
|
|||
|
|
'Grid1.Range(ComboDropDownON.LightingCircuit, demoindex, ComboDropDownON.LightingCircuit, demoindex + ModuleFre.Nodes.Count - 1).Merge()
|
|||
|
|
'Grid1.Range(ComboDropDownON.LightingCircuit, demoindex, ComboDropDownON.LightingCircuit, demoindex + ModuleFre.Nodes.Count - 1).Locked = True
|
|||
|
|
'If moduStr.Key.Equals("HostDevice") Then
|
|||
|
|
' Grid1.Cell(ComboDropDownON.LightingCircuit, Startid).Text = moduStr.Value.Name
|
|||
|
|
'Else
|
|||
|
|
' Grid1.Cell(ComboDropDownON.LightingCircuit, Startid).Text = moduStr.Key
|
|||
|
|
'End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
'Grid1.Range(ComboDropDownON.LightingCircuit1, demoindex, ComboDropDownON.LightingCircuit1, demoindex + ModuleFre.Nodes.Count - 1).Locked = True
|
|||
|
|
'Grid1.Range(ComboDropDownON.LightingCircuit, Startid, ComboDropDownON.LightingCircuit0, Startid + ModuleFre.Nodes.Count - 1).Alignment = AlignmentEnum.CenterCenter
|
|||
|
|
'For i As Integer = 0 To ModuleFre.Nodes.Count - 1
|
|||
|
|
' Grid1.Cell(ComboDropDownON.LightingCircuit1, demoindex + i).Text = (i + 1).ToString
|
|||
|
|
' Console.WriteLine($"{ModuleFre.Name}_R:{ComboDropDownON.LightingCircuit1.ToString }_C:{Startid + i}_{(i + 1).ToString}")
|
|||
|
|
' Grid1.Cell(ComboDropDownON.LightingCircuit2, demoindex + i).Text = ModuleFre.Nodes(i).Name
|
|||
|
|
'Next
|
|||
|
|
'demoindex = demoindex + ModuleFre.Nodes.Count
|
|||
|
|
' End If
|
|||
|
|
If ModuleFre.Name.Equals("Dimming") Then
|
|||
|
|
g_Dimming = ModuleFre
|
|||
|
|
ElseIf ModuleFre.Name.Equals("RELAY") Then
|
|||
|
|
g_RELAY = ModuleFre
|
|||
|
|
ElseIf ModuleFre.Name.Equals("DO") Then
|
|||
|
|
g_DO = ModuleFre
|
|||
|
|
ElseIf ModuleFre.Name.Equals("MUSIC") Then
|
|||
|
|
g_MUSIC = ModuleFre
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
AddColumnConfig(g_DO, demoindex, Startid, moduStr)
|
|||
|
|
AddColumnConfig(g_RELAY, demoindex, Startid, moduStr)
|
|||
|
|
AddColumnConfig(g_Dimming, demoindex, Startid, moduStr)
|
|||
|
|
AddColumnConfig(g_MUSIC, demoindex, Startid, moduStr)
|
|||
|
|
Startid = demoindex
|
|||
|
|
Next
|
|||
|
|
ShowSwitch()
|
|||
|
|
IsRelayflag = True
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Sub AddColumnConfig(ModuleFre As DeviceChildNodeClass, ByRef demoindex As Integer, Startid As Integer, moduStr As KeyValuePair(Of String, DeviceModel))
|
|||
|
|
'添加继电器列
|
|||
|
|
If IsNothing(ModuleFre) OrElse ModuleFre.Nodes.Count = 0 Then Return
|
|||
|
|
Grid1.Cols = demoindex + ModuleFre.Nodes.Count
|
|||
|
|
Grid1.Cell(ComboDropDownON.LightingCircuit0, demoindex).Text = ModuleFre.Name
|
|||
|
|
Grid1.Range(ComboDropDownON.LightingCircuit0, demoindex, ComboDropDownON.LightingCircuit0, demoindex + ModuleFre.Nodes.Count - 1).Merge()
|
|||
|
|
Grid1.Range(ComboDropDownON.LightingCircuit, Startid, ComboDropDownON.LightingCircuit, demoindex + ModuleFre.Nodes.Count - 1).Locked = False
|
|||
|
|
Grid1.Range(ComboDropDownON.LightingCircuit, Startid, ComboDropDownON.LightingCircuit, demoindex + ModuleFre.Nodes.Count - 1).Merge()
|
|||
|
|
Grid1.Range(ComboDropDownON.LightingCircuit, Startid, ComboDropDownON.LightingCircuit, demoindex + ModuleFre.Nodes.Count - 1).Locked = True
|
|||
|
|
If moduStr.Key.Equals("HostDevice") Then
|
|||
|
|
Grid1.Cell(ComboDropDownON.LightingCircuit, Startid).Text = moduStr.Value.Name
|
|||
|
|
Else
|
|||
|
|
Grid1.Cell(ComboDropDownON.LightingCircuit, Startid).Text = moduStr.Key
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Grid1.Range(ComboDropDownON.LightingCircuit1, demoindex, ComboDropDownON.LightingCircuit1, demoindex + ModuleFre.Nodes.Count - 1).Locked = True
|
|||
|
|
Grid1.Range(ComboDropDownON.LightingCircuit, Startid, ComboDropDownON.LightingCircuit2, Startid + ModuleFre.Nodes.Count - 1).Alignment = AlignmentEnum.CenterCenter
|
|||
|
|
For i As Integer = 0 To ModuleFre.Nodes.Count - 1
|
|||
|
|
Grid1.Cell(ComboDropDownON.LightingCircuit1, demoindex + i).Text = (i + 1).ToString
|
|||
|
|
Console.WriteLine($"{ModuleFre.Name}_R:{ComboDropDownON.LightingCircuit1.ToString }_C:{Startid + i}_{(i + 1).ToString}")
|
|||
|
|
Grid1.Cell(ComboDropDownON.LightingCircuit2, demoindex + i).Text = ModuleFre.Nodes(i).Name
|
|||
|
|
Grid1.Cell(ComboDropDownON.LightingCircuit2, demoindex + i).Orientation = TextOrientationEnum.Vertical
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
demoindex = demoindex + ModuleFre.Nodes.Count
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public SwitchConfig As Dictionary(Of String, Dictionary(Of Integer, String))
|
|||
|
|
Public Sub ShowSwitch()
|
|||
|
|
IsRelayflag = False
|
|||
|
|
Grid1.AutoRedraw = False
|
|||
|
|
Dim rdilenma As String
|
|||
|
|
For moduStr As Integer = ComboDropDownON.max To Grid1.Rows - 1
|
|||
|
|
Grid1.Row(Grid1.Rows - 1).Delete()
|
|||
|
|
Next
|
|||
|
|
'SwitchConfig.Clear()
|
|||
|
|
Dim rowid As Integer = Grid1.Rows
|
|||
|
|
For Each moduStr In DeviceModuleDic
|
|||
|
|
|
|||
|
|
For Each ModuleFre In moduStr.Value.Nodes
|
|||
|
|
If ModuleFre.Name.Equals("DI") Then
|
|||
|
|
'添加继电器列
|
|||
|
|
|
|||
|
|
For i As Integer = 0 To ModuleFre.Nodes.Count - 1
|
|||
|
|
Grid1.AddItem("")
|
|||
|
|
If i = 0 Then
|
|||
|
|
If moduStr.Key.Equals("HostDevice") Then
|
|||
|
|
Grid1.Cell(rowid, ComboDropDownCol.devFile).Text = moduStr.Value.Name
|
|||
|
|
Else
|
|||
|
|
Grid1.Cell(rowid, ComboDropDownCol.devFile).Text = moduStr.Key
|
|||
|
|
End If
|
|||
|
|
rdilenma = Grid1.Cell(rowid, 1).Text
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
If Not SwitchConfig.ContainsKey($"{rdilenma}:{i + 1}") Then
|
|||
|
|
Dim dic As New Dictionary(Of Integer, String)
|
|||
|
|
dic.Add(ComboDropDownCol.music, Chr(CellDrop.TurnOn))
|
|||
|
|
dic.Add(ComboDropDownCol.空改2, Chr(CellDrop.TurnOn))
|
|||
|
|
SwitchConfig.Add($"{rdilenma}:{i + 1}", dic)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Grid1.Cell(rowid + i, ComboDropDownCol.Keyval).Text = (i + 1).ToString
|
|||
|
|
Grid1.Cell(rowid + i, ComboDropDownCol.keyName).Text = ModuleFre.Nodes(i).Name
|
|||
|
|
|
|||
|
|
Grid1.Cell(rowid + i, ComboDropDownCol.music).Text = Chr(CellDrop.TurnOn)
|
|||
|
|
Grid1.Cell(rowid + i, ComboDropDownCol.空改2).Text = Chr(CellDrop.TurnOn)
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Grid1.Cell(rowid, 1).WrapText = True
|
|||
|
|
Grid1.Range(rowid, 1, Grid1.Rows - 1, ComboDropDownCol.devFile).Merge()
|
|||
|
|
Grid1.Range(rowid, 1, Grid1.Rows - 1, ComboDropDownCol.devFile).Locked = True
|
|||
|
|
rowid = Grid1.Rows
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
Grid1.Range(ComboDropDownON.max, ComboDropDownCol.music, Grid1.Rows - 1, Grid1.Cols - 1).Alignment = AlignmentEnum.CenterCenter
|
|||
|
|
Grid1.Range(ComboDropDownON.max, ComboDropDownCol.music, Grid1.Rows - 1, Grid1.Cols - 1).CellType = CellTypeEnum.ComboBox
|
|||
|
|
|
|||
|
|
SetGrid1RowTxt()
|
|||
|
|
Grid1.AutoRedraw = True
|
|||
|
|
Grid1.Refresh()
|
|||
|
|
IsRelayflag = True
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Sub SetGrid1RowTxt()
|
|||
|
|
Dim rfilename As String
|
|||
|
|
Dim keystr As String
|
|||
|
|
Dim dic As Dictionary(Of Integer, String)
|
|||
|
|
For i As Integer = ComboDropDownON.max To Grid1.Rows - 1
|
|||
|
|
If Grid1.Cell(i, 2).Text.Equals("1") Then
|
|||
|
|
rfilename = Grid1.Cell(i, 1).Text
|
|||
|
|
End If
|
|||
|
|
keystr = $"{rfilename}:{Grid1.Cell(i, 2).Text}"
|
|||
|
|
dic = SwitchConfig.Item(keystr)
|
|||
|
|
For Each node In dic
|
|||
|
|
Grid1.Cell(i, node.Key).Text = node.Value
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
'For Each inten In SwitchConfig
|
|||
|
|
' For Each node In inten.Value
|
|||
|
|
' Grid1.Cell(inten.Key, node.Key).Text = node.Value
|
|||
|
|
' Next
|
|||
|
|
'Next
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripComboBox2_DropDown(sender As Object, e As EventArgs) Handles ToolStripComboBox2.DropDown
|
|||
|
|
ToolStripComboBox2.Items.Clear()
|
|||
|
|
For Each HostDevFN In IO.Directory.GetFiles(DevModel)
|
|||
|
|
ToolStripComboBox2.Items.Add(HostDevFN.Substring(DevModel.Length, HostDevFN.Length - DevModel.Length - 4))
|
|||
|
|
Next
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton3.Click
|
|||
|
|
Dim model As DeviceModel
|
|||
|
|
Try
|
|||
|
|
model = LoadModelFromXml(DevModel & ToolStripComboBox2.Text & ".xml")
|
|||
|
|
If DeviceModuleDic.ContainsKey("HostDevice") Then
|
|||
|
|
If model.Desc.DevInterface.Equals("RS485Active") Then
|
|||
|
|
|
|||
|
|
'If DeviceModuleDic.ContainsKey(ToolStripComboBox2.Text) Then
|
|||
|
|
'DeviceModuleDic.Item("HostDevice") = model
|
|||
|
|
Dim number As Integer = ModuleFrequency(ToolStripComboBox2.Text)
|
|||
|
|
Dim strindex As String = GetindexNumber(ToolStripComboBox2.Text, number)
|
|||
|
|
DeviceModuleDic.Add(strindex, model)
|
|||
|
|
|
|||
|
|
Dim dic As New Dictionary(Of String, String)
|
|||
|
|
|
|||
|
|
'Else
|
|||
|
|
' DeviceModuleDic.Add(ToolStripComboBox2.Text, model)
|
|||
|
|
'End If
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
MsgBox($"添加外设模块失败!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
Else
|
|||
|
|
MsgBox($"未添加主机!")
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Catch ex As Exception
|
|||
|
|
MsgBox($"加载设备模型错误,{ex.Message}")
|
|||
|
|
Return
|
|||
|
|
End Try
|
|||
|
|
ShowSwitch()
|
|||
|
|
End Sub
|
|||
|
|
Public Function DeviceModuleDicDiinsertion(dic As Dictionary(Of String, DeviceModel), index As Integer, kstr As String, model As DeviceModel) As Dictionary(Of String, DeviceModel)
|
|||
|
|
Dim result As New Dictionary(Of String, DeviceModel)
|
|||
|
|
For i As Integer = 0 To dic.Count - 1
|
|||
|
|
result.Add(dic.Keys(i), dic.Values(i))
|
|||
|
|
If i = index Then
|
|||
|
|
result.Add(kstr, model)
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
Return result
|
|||
|
|
End Function
|
|||
|
|
Public Function UpdataModuleDicDiinsertion(dic As Dictionary(Of String, DeviceModel)) As Dictionary(Of String, DeviceModel)
|
|||
|
|
Dim result As New Dictionary(Of String, DeviceModel)
|
|||
|
|
For i As Integer = 0 To dic.Count - 1
|
|||
|
|
result.Add(dic.Keys(i), dic.Values(i))
|
|||
|
|
Next
|
|||
|
|
Return result
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
Private Function SetKeyValuePair() As KeyValuePair(Of Integer, String)
|
|||
|
|
Dim intKey As Integer = 1
|
|||
|
|
Dim strValue As String = "My value"
|
|||
|
|
Dim kvp As KeyValuePair(Of Integer, String) = New KeyValuePair(Of Integer, String)(intKey, strValue)
|
|||
|
|
Return kvp
|
|||
|
|
End Function
|
|||
|
|
Private Sub ToolStripButton6_Click(sender As Object, e As EventArgs) Handles ToolStripButton6.Click
|
|||
|
|
TestForm1_Load(Nothing, Nothing)
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton5_Click(sender As Object, e As EventArgs) Handles ToolStripButton5.Click
|
|||
|
|
If String.IsNullOrEmpty(ShipmentFile) Then
|
|||
|
|
ToolStripButton2_Click_1(Nothing, Nothing)
|
|||
|
|
Else
|
|||
|
|
If IO.File.Exists(ShipmentFile) Then
|
|||
|
|
If MsgBox("已存在同名文件是否覆盖?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
|
|||
|
|
Grid1.SaveFile($"{ShipmentFile}")
|
|||
|
|
DeleteDevmodedic.Clear()
|
|||
|
|
MsgBox($"保存完成:{ShipmentFile}")
|
|||
|
|
End If
|
|||
|
|
Else
|
|||
|
|
Grid1.SaveFile($"{ShipmentFile}")
|
|||
|
|
DeleteDevmodedic.Clear()
|
|||
|
|
MsgBox($"保存完成:{ShipmentFile}")
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
' IO.Directory.CreateDirectory($"{Application.StartupPath}\Table\")
|
|||
|
|
'Grid1.ExportToCSV($"{Application.StartupPath}\Table\{Date.Now.ToString("yyyyMMddHHmmssfff")}.csv", False, False)
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
Public ShipmentFile As String
|
|||
|
|
Private Sub ToolStripButton4_Click(sender As Object, e As EventArgs) Handles ToolStripButton4.Click
|
|||
|
|
Using dlg As New OpenFileDialog
|
|||
|
|
dlg.InitialDirectory = Application.StartupPath
|
|||
|
|
dlg.Title = "请选择文件!"
|
|||
|
|
dlg.Filter = "逻辑表(*.flx)|*.flx"
|
|||
|
|
If dlg.ShowDialog <> DialogResult.OK Then Return
|
|||
|
|
DeviceModuleDic.Clear()
|
|||
|
|
ShipmentFile = dlg.FileName
|
|||
|
|
If Not Grid1.OpenFile(ShipmentFile) Then
|
|||
|
|
MsgBox("文件损坏,打开失败!")
|
|||
|
|
Else
|
|||
|
|
UploadDeviceModuleDic()
|
|||
|
|
DeleteDevmodedic.Clear()
|
|||
|
|
End If
|
|||
|
|
End Using
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
Public Sub UploadDeviceModuleDic()
|
|||
|
|
Dim intlabel As Integer = ComboDropDownON.max
|
|||
|
|
Dim col As Integer = 5
|
|||
|
|
Dim HostDevicefile As String
|
|||
|
|
Dim model As DeviceModel
|
|||
|
|
Dim kval As KeyValuePair(Of Integer, Integer)
|
|||
|
|
DeviceModuleDic.Clear()
|
|||
|
|
SwitchConfig.Clear()
|
|||
|
|
DevModeInserfilag = 0
|
|||
|
|
Dim filenaem() As String
|
|||
|
|
While True
|
|||
|
|
If intlabel < Grid1.Rows - 1 Then
|
|||
|
|
filenaem = Grid1.Cell(intlabel, 1).Text.Split(":")
|
|||
|
|
HostDevicefile = DevModel & filenaem(0) & ".xml"
|
|||
|
|
If IO.File.Exists(HostDevicefile) Then
|
|||
|
|
model = LoadModelFromXml(HostDevicefile)
|
|||
|
|
kval = Analysismodel(model, intlabel, col)
|
|||
|
|
DeviceModuleDic.Add(Grid1.Cell(intlabel, 1).Text, model)
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
'HostDevicefile = $"{HostDevFNP}{Grid1.Cell(intlabel, 1).Text}.xml"
|
|||
|
|
HostDevicefile = HostDevFNP & Grid1.Cell(intlabel, 1).Text.Replace("_", "-") & ".xml"
|
|||
|
|
|
|||
|
|
If IO.File.Exists(HostDevicefile) Then
|
|||
|
|
model = LoadModelFromXml(HostDevicefile)
|
|||
|
|
kval = Analysismodel(model, intlabel, col)
|
|||
|
|
DeviceModuleDic.Add(Grid1.Cell(intlabel, 1).Text, model)
|
|||
|
|
Else
|
|||
|
|
MsgBox($"加载失败!未找到文件{Grid1.Cell(intlabel, 1).Text}.xml")
|
|||
|
|
TestForm1_Load(Nothing, Nothing)
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
Else
|
|||
|
|
Return
|
|||
|
|
End If
|
|||
|
|
intlabel = kval.Key
|
|||
|
|
col = kval.Value
|
|||
|
|
End While
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Public Function Analysismodel(model As DeviceModel, row As Integer, col As Integer) As KeyValuePair(Of Integer, Integer)
|
|||
|
|
Dim filename As String = Grid1.Cell(row, 1).Text
|
|||
|
|
Dim keystr As String
|
|||
|
|
For Each inten In model.Nodes
|
|||
|
|
If inten.Name.Equals("RELAY") Then
|
|||
|
|
For Each node In inten.Nodes
|
|||
|
|
node.Name = Grid1.Cell(ComboDropDownON.LightingCircuit2, col).Text
|
|||
|
|
col = col + 1
|
|||
|
|
Next
|
|||
|
|
End If
|
|||
|
|
If inten.Name.Equals("DI") Then
|
|||
|
|
For Each node In inten.Nodes
|
|||
|
|
node.Name = Grid1.Cell(row, 3).Text
|
|||
|
|
'添加行数据
|
|||
|
|
Dim dic As New Dictionary(Of Integer, String)
|
|||
|
|
|
|||
|
|
For i As Integer = 5 To Grid1.Cols - 1
|
|||
|
|
If Grid1.Cell(row, i).Text.Length > 0 Then
|
|||
|
|
dic.Add(i, Grid1.Cell(row, i).Text)
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
keystr = $"{filename}:{Grid1.Cell(row, 2).Text}"
|
|||
|
|
SwitchConfig.Add(keystr, dic)
|
|||
|
|
|
|||
|
|
row = row + 1
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Dim ndic As New Dictionary(Of Integer, Integer)
|
|||
|
|
ndic.Add(row, col)
|
|||
|
|
For Each inten In ndic
|
|||
|
|
Return inten
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Function
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton2_Click_1(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
|
|||
|
|
Using dlg As New SaveFileDialog
|
|||
|
|
|
|||
|
|
|
|||
|
|
With dlg
|
|||
|
|
.InitialDirectory = Application.StartupPath
|
|||
|
|
.RestoreDirectory = True
|
|||
|
|
.OverwritePrompt = True
|
|||
|
|
.AddExtension = True
|
|||
|
|
.DefaultExt = ".xml"
|
|||
|
|
.Title = "保存文件"
|
|||
|
|
.Filter = $"逻辑文件(*.flx)|*.flx"
|
|||
|
|
End With
|
|||
|
|
If dlg.ShowDialog <> DialogResult.OK Then Return
|
|||
|
|
|
|||
|
|
Grid1.SaveFile($"{ dlg.FileName }")
|
|||
|
|
MsgBox($"文件保存完成:{dlg.FileName}")
|
|||
|
|
End Using
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
Public DeleteDevmodedic As List(Of DeleteDevmodeclass)
|
|||
|
|
Private Sub ToolStripButton7_Click(sender As Object, e As EventArgs) Handles ToolStripButton7.Click
|
|||
|
|
Dim Deletenode As DeleteDevmodeclass
|
|||
|
|
Dim crow As Integer = -1
|
|||
|
|
Integer.TryParse(Grid1.Cell(Grid1.ActiveCell.Row, 2).Text, crow)
|
|||
|
|
|
|||
|
|
Dim filestr As String = Grid1.Cell(Grid1.ActiveCell.Row - crow + 1, 1).Text
|
|||
|
|
Dim rownode As String
|
|||
|
|
If DeviceModuleDic.ContainsKey(filestr) Then
|
|||
|
|
|
|||
|
|
Dim Ctrldeletenode As New DeleteDevmodeclass(DeepCopyHelper.DeepCopy(SwitchConfig), DeepCopyHelper.DictionaryCopy(DeviceModuleDic), DevModeInserfilag)
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
DeleteDevmodedic.Add(Ctrldeletenode)
|
|||
|
|
If DeviceModuleDic.Item(filestr).Desc.DevInterface.Equals("RS485Polling") Then
|
|||
|
|
DevModeInserfilag = DevModeInserfilag - 1
|
|||
|
|
End If
|
|||
|
|
For Each node In DeviceModuleDic.Item(filestr).Nodes
|
|||
|
|
If node.Name.Equals("DI") Then
|
|||
|
|
For i As Integer = 0 To node.Nodes.Count - 1
|
|||
|
|
rownode = $"{filestr}:{i + 1}"
|
|||
|
|
If SwitchConfig.ContainsKey(rownode) Then
|
|||
|
|
SwitchConfig.Remove(rownode)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
End If
|
|||
|
|
Next
|
|||
|
|
DeviceModuleDic.Remove(filestr)
|
|||
|
|
|
|||
|
|
DeviceModuleDic = UpdataModuleDicDiinsertion(DeviceModuleDic)
|
|||
|
|
End If
|
|||
|
|
|
|||
|
|
|
|||
|
|
ShowRelay()
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton8_Click(sender As Object, e As EventArgs) Handles ToolStripButton8.Click
|
|||
|
|
If DeleteDevmodedic.Count > 0 Then
|
|||
|
|
Dim linode As DeleteDevmodeclass = DeleteDevmodedic.Item(DeleteDevmodedic.Count - 1)
|
|||
|
|
SwitchConfig = linode.G_SwitchConfig
|
|||
|
|
DeviceModuleDic = linode.G_DeviceModuleDic
|
|||
|
|
DevModeInserfilag = linode.G_DevModeInserfilag
|
|||
|
|
DeleteDevmodedic.RemoveAt(DeleteDevmodedic.Count - 1)
|
|||
|
|
ShowRelay()
|
|||
|
|
End If
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
Private Sub ToolStripButton9_Click(sender As Object, e As EventArgs) Handles ToolStripButton9.Click
|
|||
|
|
Dim lst As New List(Of Byte())
|
|||
|
|
|
|||
|
|
Dim newTableCompile As New TableCompile
|
|||
|
|
Dim configInfoLst As New List(Of Byte())
|
|||
|
|
' 编译配置信息
|
|||
|
|
Dim tmpInfo() As Byte = newTableCompile.FillConfigInfo(configInfo, DeviceModuleDic.Item("HostDevice").Name).ToArray
|
|||
|
|
configInfoLst.Add(tmpInfo)
|
|||
|
|
lst.AddRange(configInfoLst.ToArray)
|
|||
|
|
|
|||
|
|
'编译设备存在
|
|||
|
|
Dim deviceExistsDatas As List(Of Byte())
|
|||
|
|
Dim OutDevlist As New List(Of Byte)
|
|||
|
|
deviceExistsDatas = newTableCompile.FillDeviceExistsData(DeviceModuleDic, SwitchConfig)
|
|||
|
|
lst.AddRange(deviceExistsDatas.ToArray)
|
|||
|
|
'获取编译的设备动作
|
|||
|
|
Dim actibuf As List(Of Byte()) = newTableCompile.FillDeviceObject(DeviceModuleDic, SwitchConfig, Grid1)
|
|||
|
|
For Each buf In actibuf
|
|||
|
|
lst.Add(buf)
|
|||
|
|
Next
|
|||
|
|
|
|||
|
|
Dim frames As List(Of Byte()) = newTableCompile.FillDataFrames(lst)
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
'编译设备对象动作数据
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Dim filename As String = "C:\Users\Administrator\Desktop\Processform\test.dat"
|
|||
|
|
If IO.File.Exists(filename) Then IO.File.Delete(filename)
|
|||
|
|
Using steam As New IO.FileStream(filename, IO.FileMode.OpenOrCreate)
|
|||
|
|
For Each frame As Byte() In frames
|
|||
|
|
steam.Write(frame, 0, frame.Length)
|
|||
|
|
Console.WriteLine($"Length:{frame.Length:D4} Data:{BitConverter.ToString(frame).Replace("-", " ")}")
|
|||
|
|
Next
|
|||
|
|
steam.Flush()
|
|||
|
|
steam.Close()
|
|||
|
|
End Using
|
|||
|
|
Dim filebuff() As Byte = IO.File.ReadAllBytes(filename)
|
|||
|
|
Dim ismod As Integer = filebuff.Length Mod 4
|
|||
|
|
Dim buff As New List(Of Byte)
|
|||
|
|
buff.AddRange(filebuff)
|
|||
|
|
For isnum As Integer = 1 To (4 - ismod)
|
|||
|
|
buff.Add(0)
|
|||
|
|
Next
|
|||
|
|
IO.File.WriteAllBytes(filename, buff.ToArray)
|
|||
|
|
|
|||
|
|
End Sub
|
|||
|
|
|
|||
|
|
|
|||
|
|
End Class
|
|||
|
|
Public Class DeleteDevmodeclass
|
|||
|
|
Public G_SwitchConfig As Dictionary(Of String, Dictionary(Of Integer, String))
|
|||
|
|
Public G_DeviceModuleDic As Dictionary(Of String, DeviceModel)
|
|||
|
|
Public G_DevModeInserfilag As Integer
|
|||
|
|
Sub New(SwitchConfig As Dictionary(Of String, Dictionary(Of Integer, String)), DeviceModuleDic As Dictionary(Of String, DeviceModel), DevModeInserfilag As Integer)
|
|||
|
|
G_SwitchConfig = SwitchConfig
|
|||
|
|
G_DeviceModuleDic = DeviceModuleDic
|
|||
|
|
G_DevModeInserfilag = DevModeInserfilag
|
|||
|
|
End Sub
|
|||
|
|
End Class
|