600 lines
20 KiB
VB.net
600 lines
20 KiB
VB.net
Imports System.IO
|
||
Imports System.Threading
|
||
|
||
Public Class FrmC43Function
|
||
Implements IModuleForm
|
||
|
||
#Region "窗体"
|
||
|
||
''' <summary>
|
||
''' 窗体加载函数
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub FrmC43Function_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||
C43ConfigData() 'C43配置
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 显示窗体接口
|
||
''' </summary>
|
||
''' <param name="parentControl"></param>
|
||
Public Sub ShowForm(parentControl As Control) Implements IModuleForm.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)
|
||
FrmRCU.SendData(sendPacket) '方法1
|
||
|
||
End Sub
|
||
|
||
#End Region
|
||
|
||
#Region "C43功能配置"
|
||
|
||
|
||
''' <summary>
|
||
''' 枚举表格列名信息
|
||
''' </summary>
|
||
Enum EnListed
|
||
SerialNumber '序号
|
||
IsSelected '是否选中
|
||
ButtonName '按键号
|
||
ButtonType '按键类型
|
||
DeviceType '设备类型
|
||
DeviceNumber '设备编号
|
||
CarryWayL '执行方式L
|
||
CarryWayH '执行方式H
|
||
SceneControlWay '场景执行方式
|
||
DelayToPerform '延时执行
|
||
Remark '备注
|
||
End Enum
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' C43配置数据
|
||
''' </summary>
|
||
Private Sub C43ConfigData()
|
||
GrdC43cfg.DisplayRowNumber = True
|
||
GrdC43cfg.ExtendLastCol = True
|
||
GrdC43cfg.Cols = 11
|
||
GrdC43cfg.Rows = 2
|
||
|
||
With GrdC43cfg.Cell(0, EnListed.IsSelected)
|
||
.Text = "是否选中"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
With GrdC43cfg.Cell(0, EnListed.ButtonName)
|
||
.Text = "按键号"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
With GrdC43cfg.Cell(0, EnListed.ButtonType)
|
||
.Text = "按键类型"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
With GrdC43cfg.Cell(0, EnListed.DeviceType)
|
||
.Text = "设备类型"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
With GrdC43cfg.Cell(0, EnListed.DeviceNumber)
|
||
.Text = "设备编号"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
With GrdC43cfg.Cell(0, EnListed.CarryWayL)
|
||
.Text = "执行方式"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
With GrdC43cfg.Cell(0, EnListed.CarryWayH)
|
||
.Text = "执行内容"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
With GrdC43cfg.Cell(0, EnListed.SceneControlWay)
|
||
.Text = "场景控制方式"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
With GrdC43cfg.Cell(0, EnListed.DelayToPerform)
|
||
.Text = "延时执行"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
With GrdC43cfg.Cell(0, EnListed.Remark)
|
||
.Text = "备注"
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
|
||
'是否选中
|
||
GrdC43cfg.Column(EnListed.IsSelected).CellType = FlexCell.CellTypeEnum.CheckBox
|
||
GrdC43cfg.Cell(1, EnListed.IsSelected).Text = $"1"
|
||
|
||
'按键号
|
||
GrdC43cfg.Column(EnListed.ButtonName).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
GrdC43cfg.Column(EnListed.ButtonName).Mask = FlexCell.MaskEnum.Numeric
|
||
GrdC43cfg.Column(EnListed.ButtonName).DecimalLength = 0
|
||
|
||
'按键类型
|
||
GrdC43cfg.Column(EnListed.ButtonType).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
GrdC43cfg.Column(EnListed.ButtonType).CellType = FlexCell.CellTypeEnum.ComboBox
|
||
With GrdC43cfg.ComboBox(EnListed.ButtonType).Items
|
||
.Clear()
|
||
.Add("点按") '默认点按
|
||
.Add("松开")
|
||
.Add("长按")
|
||
End With
|
||
|
||
'设备类型
|
||
GrdC43cfg.Column(EnListed.DeviceType).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
GrdC43cfg.Column(EnListed.DeviceType).CellType = FlexCell.CellTypeEnum.ComboBox
|
||
With GrdC43cfg.ComboBox(EnListed.DeviceType).Items
|
||
.Clear()
|
||
.Add("场景")
|
||
.Add("本地继电器")
|
||
.Add("本地服务信息")
|
||
.Add("干节点窗帘")
|
||
.Add("空调")
|
||
.Add("LED扩展")
|
||
.Add("背景音乐")
|
||
.Add("监控")
|
||
End With
|
||
|
||
'设备编号
|
||
GrdC43cfg.Column(EnListed.DeviceNumber).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
GrdC43cfg.Column(EnListed.DeviceNumber).Mask = FlexCell.MaskEnum.Numeric
|
||
GrdC43cfg.Column(EnListed.DeviceNumber).DecimalLength = 0
|
||
|
||
'执行方式
|
||
GrdC43cfg.Column(EnListed.CarryWayL).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
|
||
'执行内容
|
||
GrdC43cfg.Column(EnListed.CarryWayH).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
|
||
'场景控制方式
|
||
GrdC43cfg.Column(EnListed.SceneControlWay).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
GrdC43cfg.Column(EnListed.SceneControlWay).CellType = FlexCell.CellTypeEnum.ComboBox
|
||
With GrdC43cfg.ComboBox(EnListed.SceneControlWay).Items
|
||
.Clear()
|
||
.Add("场景单控")
|
||
.Add("场景可关闭")
|
||
End With
|
||
|
||
'延时执行
|
||
GrdC43cfg.Column(EnListed.DelayToPerform).Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
GrdC43cfg.Column(EnListed.DelayToPerform).Mask = FlexCell.MaskEnum.Numeric
|
||
GrdC43cfg.Column(EnListed.DelayToPerform).DecimalLength = 0
|
||
|
||
'备注
|
||
GrdC43cfg.Column(EnListed.Remark).Alignment = FlexCell.AlignmentEnum.LeftCenter
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' C43搜索命令—按地址搜索
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub BtnSearch_Click(sender As Object, e As EventArgs) Handles BtnSearch.Click
|
||
_sendTick = 0 '标志位
|
||
|
||
'获取Set发送内容Data部分
|
||
_port485 = $"&H{Hex(NudC43Port.Value)}"
|
||
_timeouts = $"&H{Hex(NudC43TimeOut.Value)}"
|
||
|
||
'组包C43搜索命令
|
||
Dim C43Address As Byte = $"&H{Hex(NudAddress.Value)}"
|
||
Dim C43Data(4) As Byte
|
||
C43Data(0) = C43Address
|
||
C43Data(1) = &HA3
|
||
C43Data(2) = &H1
|
||
C43Data(3) = &H0
|
||
C43Data(4) = C43Address + &HA3 + &H1 + &H0 '和校验
|
||
|
||
'填充数据包
|
||
C43Data = FillPacket(C43Data)
|
||
|
||
'发送数据包
|
||
SendData(C43Data)
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' C43发布
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub BtnReleaseUpgrade_Click(sender As Object, e As EventArgs) Handles BtnReleaseUpgrade.Click
|
||
_sendTick = 0 '标志位
|
||
|
||
'获取Set发送内容Data部分
|
||
_port485 = $"&H{Hex(NudC43Port.Value)}"
|
||
_timeouts = $"&H{Hex(NudC43TimeOut.Value)}"
|
||
|
||
Dim C43Address As Byte = $"&H{Hex(NudAddress.Value)}" '获取发送数据部分
|
||
Dim C43dataList() As Byte = C43cfgDataTakeOut() '表格数据
|
||
Dim C43Head() As Byte = C43FirstBlockHeadData() '8个字节的版本号&全局变量
|
||
Dim C43crc16() As Byte = CheckSendData(C43Head, C43dataList) 'C43发布命令的CRC16校验
|
||
Dim blocks As Byte = GetBlocks(C43dataList) '求数据的块数
|
||
|
||
'和校验
|
||
Dim dataSumI As UInteger = C43Address + &HA6 + &H1 + &H1 + C43crc16(0) + C43crc16(1) + blocks
|
||
Dim data7Sum As Byte = dataSumI And &HFF
|
||
|
||
'组包C43发布命令
|
||
Dim C43Data(7) As Byte
|
||
C43Data(0) = C43Address
|
||
C43Data(1) = &HA6
|
||
C43Data(2) = &H1
|
||
C43Data(3) = &H1
|
||
C43Data(4) = C43crc16(0)
|
||
C43Data(5) = C43crc16(1)
|
||
C43Data(6) = blocks
|
||
C43Data(7) = data7Sum
|
||
|
||
'填充数据包
|
||
C43Data = FillPacket(C43Data)
|
||
|
||
'发送数据
|
||
SendData(C43Data)
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' C43第一包数据包头
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function C43FirstBlockHeadData() As Byte()
|
||
Dim C43Head(7) As Byte
|
||
C43Head(0) = &H0 '配置版本号
|
||
C43Head(1) = &H0 '配置版本号
|
||
C43Head(2) = &H0 '配置版本号
|
||
C43Head(3) = &H0 '全局变量_背光时间
|
||
C43Head(4) = &H0 '备用
|
||
C43Head(5) = &H0 '备用
|
||
C43Head(6) = &H0 '备用
|
||
C43Head(7) = &H0 '备用
|
||
Return C43Head
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' C43下发数据
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub BtnIssuesData_Click(sender As Object, e As EventArgs) Handles BtnIssuesData.Click
|
||
SendC43DataToRCU()
|
||
End Sub
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' 下发C43数据到RCU
|
||
''' </summary>
|
||
Private Sub SendC43DataToRCU()
|
||
Dim sendPacket As Byte()
|
||
Dim serialAppPacket As Byte()
|
||
Dim C43Data As Byte()
|
||
Dim blockCount As Integer
|
||
|
||
_port485 = $"&H{Hex(NudC43Port.Value)}"
|
||
_timeouts = $"&H{Hex(NudC43TimeOut.Value)}"
|
||
|
||
C43Data = C43cfgDataTakeOut() '取表中数据
|
||
blockCount = GetBlocks(C43Data) '获取总发送块数
|
||
|
||
For blockIndex = 0 To blockCount - 1 '循环发送数据块
|
||
serialAppPacket = FillC43SendPacket(C43Data, blockIndex, blockCount) '组C43透传数据包
|
||
|
||
sendPacket = FillPacket(serialAppPacket)
|
||
SendData(sendPacket)
|
||
|
||
Dim Interval As Integer = NudInterval.Value
|
||
Thread.Sleep(Interval) '发送间隔
|
||
Next
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 取出C43配置数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function C43cfgDataTakeOut() As Byte()
|
||
Dim C43DataList As New List(Of Byte)
|
||
|
||
For row = 1 To GrdC43cfg.Rows - 1
|
||
Dim dataOne As Byte
|
||
If GrdC43cfg.Cell(row, EnListed.ButtonName).Text = Nothing Then
|
||
GrdC43cfg.Cell(row, EnListed.ButtonName).Text = 1
|
||
dataOne = &H1
|
||
Else
|
||
dataOne = $"&H{Hex(GrdC43cfg.Cell(row, EnListed.ButtonName).Text)}"
|
||
End If
|
||
|
||
Dim dataTwo As Byte
|
||
If GrdC43cfg.Cell(row, EnListed.ButtonType).Text = Nothing Then
|
||
GrdC43cfg.Cell(row, EnListed.ButtonType).Text = "点按"
|
||
dataTwo = &H1
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.ButtonType).Text = "点按" Then
|
||
dataTwo = &H1
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.ButtonType).Text = "松开" Then
|
||
dataTwo = &H2
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.ButtonType).Text = "长按" Then
|
||
dataTwo = &H3
|
||
End If
|
||
|
||
Dim dataThree As Byte
|
||
If GrdC43cfg.Cell(row, EnListed.DeviceType).Text = Nothing Then
|
||
GrdC43cfg.Cell(row, EnListed.DeviceType).Text = "场景"
|
||
dataThree = &H0
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.DeviceType).Text = "场景" Then
|
||
dataThree = &H0
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.DeviceType).Text = "本地继电器" Then
|
||
dataThree = &H1
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.DeviceType).Text = "本地服务信息" Then
|
||
dataThree = &H4
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.DeviceType).Text = "干节点窗帘" Then
|
||
dataThree = &H5
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.DeviceType).Text = "空调" Then
|
||
dataThree = &H7
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.DeviceType).Text = "LED扩展" Then
|
||
dataThree = &H10
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.DeviceType).Text = "背景音乐" Then
|
||
dataThree = &H15
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.DeviceType).Text = "监控" Then
|
||
dataThree = &H24
|
||
End If
|
||
|
||
Dim dataFour As Byte
|
||
If GrdC43cfg.Cell(row, EnListed.DeviceNumber).Text = Nothing Then
|
||
GrdC43cfg.Cell(row, EnListed.DeviceNumber).Text = 1
|
||
dataFour = &H1
|
||
Else
|
||
dataFour = $"&H{Hex(GrdC43cfg.Cell(row, EnListed.DeviceNumber).Text)}"
|
||
End If
|
||
|
||
Dim dataFive As Byte
|
||
If GrdC43cfg.Cell(row, EnListed.CarryWayL).Text = Nothing Then
|
||
GrdC43cfg.Cell(row, EnListed.CarryWayL).Text = 1
|
||
dataFive = &H1
|
||
Else
|
||
dataFive = $"&H{Hex(GrdC43cfg.Cell(row, EnListed.CarryWayL).Text)}"
|
||
End If
|
||
|
||
Dim dataSix As Byte
|
||
If GrdC43cfg.Cell(row, EnListed.CarryWayH).Text = Nothing Then
|
||
GrdC43cfg.Cell(row, EnListed.CarryWayH).Text = 0
|
||
dataSix = &H0
|
||
Else
|
||
dataSix = $"&H{Hex(GrdC43cfg.Cell(row, EnListed.CarryWayH).Text)}"
|
||
End If
|
||
|
||
Dim dataSeven As Byte
|
||
If GrdC43cfg.Cell(row, EnListed.SceneControlWay).Text = Nothing Then
|
||
GrdC43cfg.Cell(row, EnListed.SceneControlWay).Text = "场景单控"
|
||
dataSeven = &H1
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.SceneControlWay).Text = "场景单控" Then
|
||
dataSeven = &H1
|
||
ElseIf GrdC43cfg.Cell(row, EnListed.SceneControlWay).Text = "场景可关闭" Then
|
||
dataSeven = &H2
|
||
End If
|
||
|
||
Dim dataEight As Byte
|
||
If GrdC43cfg.Cell(row, EnListed.DelayToPerform).Text = Nothing Then
|
||
GrdC43cfg.Cell(row, EnListed.DelayToPerform).Text = 0
|
||
dataEight = &H0
|
||
Else
|
||
dataEight = $"&H{Hex(GrdC43cfg.Cell(row, EnListed.DelayToPerform).Text)}"
|
||
End If
|
||
|
||
If GrdC43cfg.Cell(row, EnListed.IsSelected).BooleanValue = True Then
|
||
C43DataList.Add(dataOne)
|
||
C43DataList.Add(dataTwo)
|
||
C43DataList.Add(dataThree)
|
||
C43DataList.Add(dataFour)
|
||
C43DataList.Add(dataFive)
|
||
C43DataList.Add(dataSix)
|
||
C43DataList.Add(dataSeven)
|
||
C43DataList.Add(dataEight)
|
||
Else
|
||
Console.WriteLine("此行数据未选中!")
|
||
End If
|
||
Next
|
||
Return C43DataList.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 填充C43发送数据包
|
||
''' </summary>
|
||
''' <param name="C43Data"></param>
|
||
''' <param name="blockIndex"></param>
|
||
''' <param name="blockCount"></param>
|
||
''' <returns></returns>
|
||
Private Function FillC43SendPacket(C43Data As Byte(), blockIndex As Integer, blockCount As Integer) As Byte()
|
||
Dim dataList As New List(Of Byte)
|
||
|
||
dataList.AddRange(FillC43AddrData(blockIndex)) '地址4个字节
|
||
|
||
dataList.AddRange(FillC43SendPacketByBlock(C43Data, blockIndex, blockCount)) '按块填充表格数据
|
||
|
||
dataList.Add(GetSumCheck(dataList.ToArray)) '求块数据和校验
|
||
|
||
Return dataList.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 填充C43地址数据
|
||
''' </summary>
|
||
''' <param name="blockIndex"></param>
|
||
''' <returns></returns>
|
||
Private Function FillC43AddrData(blockIndex As Integer) As Byte()
|
||
Dim C43Address As Byte = $"&H{Hex(NudAddress.Value)}" '获取发送数据部分
|
||
Dim C43Data(3) As Byte
|
||
C43Data(0) = C43Address
|
||
C43Data(1) = &HA7
|
||
C43Data(2) = &H1
|
||
C43Data(3) = blockIndex
|
||
|
||
Return C43Data
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 按块填充C43表格数据
|
||
''' </summary>
|
||
''' <param name="C43Data"></param>
|
||
''' <param name="blockIndex"></param>
|
||
''' <param name="blockCount"></param>
|
||
''' <returns></returns>
|
||
Private Function FillC43SendPacketByBlock(C43Data As Byte(), blockIndex As Integer, blockCount As Integer) As Byte()
|
||
Dim blockPacket As New List(Of Byte)
|
||
|
||
If blockIndex = 0 Then blockPacket.AddRange(C43FirstBlockHeadData) '第0块额外添加8个字节数据
|
||
|
||
If blockIndex = blockCount - 1 Then
|
||
For index = 128 * blockIndex To C43Data.Length - 1
|
||
blockPacket.Add(C43Data(index))
|
||
Next
|
||
Else
|
||
For index = 128 * blockIndex To 128 * (blockIndex + 1) - 1
|
||
blockPacket.Add(C43Data(index))
|
||
Next
|
||
End If
|
||
|
||
Return blockPacket.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' C43表格配置按键
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub TSBtnC43cfgData_Click(sender As Object, e As EventArgs) Handles TsBtnC43cfgData.Click
|
||
GrdC43cfg.Rows = 1 '清除表格数据
|
||
C43ConfigData()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 增加数据行
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub TSBtnAddRows_Click(sender As Object, e As EventArgs) Handles TsBtnAddRows.Click
|
||
GrdC43cfg.AddItem("")
|
||
GrdC43cfg.Cell(GrdC43cfg.Rows - 1, EnListed.IsSelected).Text = "1"
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 删除数据行
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub TSBtnDelete_Click(sender As Object, e As EventArgs) Handles TsBtnDelete.Click
|
||
GrdC43cfg.Selection.DeleteByRow()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 保存C43数据
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub TSBtnSave_Click(sender As Object, e As EventArgs) Handles TsBtnSave.Click
|
||
Dim dirPath As String = Application.StartupPath & "/" & "C43Config"
|
||
If Directory.Exists(dirPath) = False Then Directory.CreateDirectory(dirPath)
|
||
SaveFileDialog1.InitialDirectory = dirPath
|
||
|
||
SaveFileConfig()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 保存文件配置
|
||
''' </summary>
|
||
Private Sub SaveFileConfig()
|
||
With SaveFileDialog1
|
||
.Filter = "保存为xml|*.xml"
|
||
.FileName = "C43"
|
||
.DefaultExt = "xml"
|
||
.AddExtension = True
|
||
End With
|
||
|
||
If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
|
||
GrdC43cfg.ExportToXML(SaveFileDialog1.FileName)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取数据
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub TSBtnRead_Click(sender As Object, e As EventArgs) Handles TsBtnRead.Click
|
||
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
|
||
GrdC43cfg.LoadFromXML(OpenFileDialog1.FileName)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
|
||
'Private Function FillSerialAppPacket(serialAppPacket As Byte()) As Byte()
|
||
' '获取Set发送内容Data部分
|
||
' Dim serialCmd As Byte = &H3
|
||
' Dim port485 As Byte = $"&H{Hex(NudC43Port.Value)}"
|
||
' Dim timeOut As Byte = $"&H{Hex(NudC43TimeOut.Value)}"
|
||
|
||
' Dim dataLen As Integer = serialAppPacket.Length + 3
|
||
' Dim data(dataLen - 1) As Byte
|
||
' data(0) = serialCmd
|
||
' data(1) = port485
|
||
' data(2) = timeOut
|
||
' Array.Copy(serialAppPacket, 0, data, 3, serialAppPacket.Length)
|
||
|
||
' '获取发送数据Head部分和CRC16校验值部分
|
||
' Dim byteHead As Byte() = SendDataHead(data) '获取DataHaed
|
||
' Dim crc16 As Byte() = CheckSendData(byteHead, data) '获取Data检验值
|
||
|
||
' Return FillSendPacket(byteHead, data, crc16)
|
||
'End Function
|
||
#End Region
|
||
|
||
|
||
End Class |