13507 lines
504 KiB
VB.net
13507 lines
504 KiB
VB.net
Imports System.Net
|
||
Imports System.Net.Sockets
|
||
Imports System.IO
|
||
Imports System.Text
|
||
Imports System.Threading
|
||
Imports System.ComponentModel
|
||
Imports System.Management
|
||
Imports System.Net.NetworkInformation
|
||
|
||
Public Class FrmCSeriesConfig
|
||
Dim ftp As blvFtpServer
|
||
Sub New(nftp As blvFtpServer)
|
||
' 此调用是设计器所必需的。
|
||
InitializeComponent()
|
||
ftp = nftp
|
||
' 在 InitializeComponent() 调用之后添加任何初始化。
|
||
|
||
End Sub
|
||
#Region "多语种信息"
|
||
|
||
''' <summary>
|
||
''' 初始化界面控件文本
|
||
''' </summary>
|
||
Private Sub MultiLanguageInfo()
|
||
Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.CSeriesConfigTools)
|
||
ToolStripMenuItem1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Manage)
|
||
TSMSwitchHotel.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SwitchHotel)
|
||
ToolStripMenuItem.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SwitchUser)
|
||
TStMSerialPortSetting.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialportSettings)
|
||
ToolStripMenuItemExit.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HomeExit)
|
||
ToolStripMenuItem2.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HomeHelp)
|
||
ToolStripMenuItem3.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.About)
|
||
TabPage8.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HostManage)
|
||
Label52.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LocalIP)
|
||
Button25.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Search)
|
||
CheckBox6.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Radio)
|
||
CBoPort.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Port)
|
||
CheckBox20.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Gateway)
|
||
CheckBox19.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.DNS)
|
||
CheckBox16.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Server)
|
||
CheckBox21.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SubnetMask)
|
||
CheckBox18.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomRemark)
|
||
CBoLock.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Lock)
|
||
CBoMandateEnd.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AuthorizationExpirationTime)
|
||
CBoMandateDate.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PrivilegedTime)
|
||
GroupBox9.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HostList)
|
||
CheckBox12.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectAll)
|
||
TabPage9.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.FirmwareUpdate)
|
||
'Label53.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.FilePath)
|
||
Button27.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Browse)
|
||
'BtnUpdateFile.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Upgrade)
|
||
GroupBox8.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SettingProjectInfo)
|
||
CBoMandateTimeSet.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Clear)
|
||
CBoProjectNumber.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)
|
||
CBoRoomState.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomStatus)
|
||
CBoRoomTpRemark.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomTypeRemark)
|
||
CBoRoomNuRemark.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNumberRemark)
|
||
CBoRoomRemark.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomRemark)
|
||
CBoSeason.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Season)
|
||
CBoMandateEndTime.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AuthorizationExpirationTime)
|
||
CBoRoomLock.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Lock)
|
||
CBoUpdateDB.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.UpdateCloudData)
|
||
Button26.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ChooseIssued)
|
||
GroupBox11.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.MatchTheInformation)
|
||
TabPage10.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ConfigIsIssued)
|
||
Label7.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)
|
||
Label28.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HotelName)
|
||
Label9.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNumberRemark)
|
||
Label29.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomTypeRemark)
|
||
Label62.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomRemark)
|
||
Label49.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.MAC)
|
||
Label60.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RemoteIP)
|
||
Label61.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RemotePort)
|
||
Label30.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ConfigVersion)
|
||
Label31.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Prompt)
|
||
LblTipTxt.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Waiting)
|
||
Button15.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadSettings)
|
||
Button6.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ConfigIsIssued)
|
||
BtnMAC.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SetMAC)
|
||
GroupBox5.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ConfigIssuedInfo)
|
||
GroupBox10.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.QueryDeviceStatus)
|
||
TabPage3.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.CommunicationTest)
|
||
Button20.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SetMAC)
|
||
Button24.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ClearRecord)
|
||
CheckBox1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SystemInfo)
|
||
CheckBox2.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.NetworkInfo)
|
||
CheckBox3.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.DeviceInfo)
|
||
CheckBox4.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LogicalInfo)
|
||
CheckBox5.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.TemporaryInfo)
|
||
GroupBox6.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.CommunicationRecords)
|
||
Button28.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Matching)
|
||
Label54.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ModelTest)
|
||
RadioButton1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.NetworkSettings)
|
||
RadioButton2.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialportSettings)
|
||
TabPage12.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.DevelopmentUse)
|
||
GroupBox13.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SettingProjectInfo)
|
||
CBo1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)
|
||
CBo2.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomTypeRemark)
|
||
CBo3.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNumberRemark)
|
||
CBo4.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Season)
|
||
CBo5.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomStatus)
|
||
CBo6.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Lock)
|
||
CBo7.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomRemark)
|
||
CBo8.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AuthorizationExpirationTime)
|
||
CheckBoxSet.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Clear)
|
||
Button21.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SetMAC)
|
||
Button23.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadSettings)
|
||
BtnCheckSetting.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HomeSet)
|
||
GroupBox15.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.NetworkInfo)
|
||
CheckBox31.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.DHCP) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Enabled)
|
||
CheckBox32.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.UseTheFollowingIPAddress)
|
||
Label36.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.IPAddress)
|
||
Label37.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SubnetMask)
|
||
Label38.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Gateway)
|
||
Label55.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.DNS)
|
||
Button5.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadSettings)
|
||
Button22.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HomeSet)
|
||
GroupBox17.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.MQTT)
|
||
CheckBox8.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AliCloud) & LanguageData.StringList(MultiLanguageDAL.StringEnum.ProductKey)
|
||
CheckBox9.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AliCloud) & LanguageData.StringList(MultiLanguageDAL.StringEnum.DeviceName)
|
||
CheckBox10.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AliCloud) & LanguageData.StringList(MultiLanguageDAL.StringEnum.DeviceSecretKey)
|
||
CheckBox14.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AliCloud) & LanguageData.StringList(MultiLanguageDAL.StringEnum.ReleaseSession)
|
||
CheckBox13.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AliCloud) & LanguageData.StringList(MultiLanguageDAL.StringEnum.SubscribeSession)
|
||
CheckBox11.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AliCloud) & LanguageData.StringList(MultiLanguageDAL.StringEnum.OnlineTime)
|
||
CheckBox22.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ReleaseSession)
|
||
CheckBox17.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SubscribeSession)
|
||
CheckBox15.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.DomainName)
|
||
CheckBox29.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ClientID)
|
||
CheckBox28.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.UserName)
|
||
CheckBox27.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PassWord)
|
||
Label65.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.MQTT) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Cloud)
|
||
Button19.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadSettings)
|
||
BtnSetMQTT.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HomeSet)
|
||
GroupBox14.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortInfo)
|
||
CheckBox26.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SystemInfo)
|
||
CheckBox25.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.NetworkInfo)
|
||
CheckBox24.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.DeviceInfo)
|
||
CheckBox23.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LogicalInfo)
|
||
CheckBox7.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.TemporaryInfo)
|
||
GroupBox12.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SettingCoreParam)
|
||
Label64.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HostModuleNumber)
|
||
Label63.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.MainboardModelNumber)
|
||
Label59.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HostModuleNumber)
|
||
Label57.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.MainboardModelNumber)
|
||
Button30.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadTheParam)
|
||
Button31.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheParam)
|
||
CheckBox33.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Server) & LanguageData.StringList(MultiLanguageDAL.StringEnum.IPAddress)
|
||
Label69.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Server)
|
||
TabPage15.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.BatchDataDelivery)
|
||
GroupBox19.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.CloudData)
|
||
Button29.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Refresh) & LanguageData.StringList(MultiLanguageDAL.StringEnum.CloudData)
|
||
Button32.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Contrast)
|
||
Button33.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.BatchConfig)
|
||
CheckBox30.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Checked)
|
||
|
||
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "测试子窗体_各机型模块"
|
||
|
||
''' <summary> 机型测试组名称 </summary>
|
||
Private _modelsTestGroup() As String = {$"BLV-C5", $"BLV-C12", $"BLV-C8", "BLV-V9", "BLV-C9"}
|
||
|
||
''' <summary>
|
||
''' 测试机型列表
|
||
''' </summary>
|
||
Private _testModelsList As New Dictionary(Of String, Integer)
|
||
|
||
''' <summary> C5机型测试 </summary>
|
||
Public _blvC8TestForm As FrmTest_C8
|
||
Private _blvC5TestForm As FrmTest_C5
|
||
|
||
''' <summary> C12机型测试 </summary>
|
||
Public _blvC12TestForm As FrmTest_C12
|
||
Public _blvV9TestForm As FrmTest_BLV_V9
|
||
''' <summary> 测试机型索引标志位 </summary>
|
||
Private _testFrmIndex As String
|
||
|
||
|
||
''' <summary>
|
||
''' 初始化测试Page
|
||
''' </summary>
|
||
Private Sub InitTestPage()
|
||
TabControlTest.SizeMode = TabSizeMode.Fixed
|
||
TabControlTest.ItemSize = New Size(0, 1)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 显示测试机型
|
||
''' </summary>
|
||
''' <param name="testModelsName"></param>
|
||
Private Sub ShowTestModels(testModelsName As String)
|
||
If _testModelsList.ContainsKey(testModelsName) Then
|
||
'存在,则切换
|
||
Dim index As Integer = _testModelsList.Item(testModelsName)
|
||
TabControlTest.SelectedIndex = index
|
||
_testFrmIndex = testModelsName
|
||
Else
|
||
'不存在,则初始化
|
||
Dim tbIndex As Integer = InitTestModels(testModelsName)
|
||
_testModelsList.Add(testModelsName, tbIndex)
|
||
TabControlTest.SelectedIndex = tbIndex
|
||
_testFrmIndex = testModelsName
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 初始化测试机型
|
||
''' </summary>
|
||
''' <param name="testModelsName"></param>
|
||
Private Function InitTestModels(testModelsName As String)
|
||
Dim tbIndex As Integer
|
||
Select Case testModelsName
|
||
Case _modelsTestGroup(0)
|
||
Dim tpfrm1 As New TabPage
|
||
|
||
_blvC5TestForm = New FrmTest_C5(Me) 'C5测试窗体
|
||
tpfrm1.Text = _modelsTestGroup(0)
|
||
_blvC5TestForm.ShowForm(tpfrm1)
|
||
TabControlTest.TabPages.Add(tpfrm1)
|
||
tbIndex = TabControlTest.TabPages.IndexOf(tpfrm1)
|
||
Case _modelsTestGroup(4)
|
||
Dim tpfrm1 As New TabPage
|
||
tpfrm1.Text = _modelsTestGroup(4)
|
||
_blvC5TestForm = New FrmTest_C5(Me) 'C5测试窗体
|
||
_blvC5TestForm.ShowForm1(tpfrm1, _modelsTestGroup(4))
|
||
|
||
TabControlTest.TabPages.Add(tpfrm1)
|
||
tbIndex = TabControlTest.TabPages.IndexOf(tpfrm1)
|
||
Case _modelsTestGroup(2) ' CZH 2023-08-08
|
||
Dim tpfrm1 As New TabPage
|
||
tpfrm1.Text = _modelsTestGroup(0)
|
||
_blvC8TestForm = New FrmTest_C8(Me) 'C5测试窗体
|
||
_blvC8TestForm.ShowForm(tpfrm1)
|
||
TabControlTest.TabPages.Add(tpfrm1)
|
||
tbIndex = TabControlTest.TabPages.IndexOf(tpfrm1)
|
||
Case _modelsTestGroup(1)
|
||
Dim tpfrm2 As New TabPage
|
||
tpfrm2.Text = _modelsTestGroup(1)
|
||
_blvC12TestForm = New FrmTest_C12(Me) 'C12测试窗体
|
||
_blvC12TestForm.ShowForm(tpfrm2)
|
||
TabControlTest.TabPages.Add(tpfrm2)
|
||
tbIndex = TabControlTest.TabPages.IndexOf(tpfrm2)
|
||
Case _modelsTestGroup(3)
|
||
Dim tpfrm2 As New TabPage
|
||
tpfrm2.Text = _modelsTestGroup(1)
|
||
_blvV9TestForm = New FrmTest_BLV_V9(Me) 'C12测试窗体
|
||
_blvV9TestForm.ShowForm(tpfrm2)
|
||
TabControlTest.TabPages.Add(tpfrm2)
|
||
tbIndex = TabControlTest.TabPages.IndexOf(tpfrm2)
|
||
Case Else
|
||
Dim tpfrm2 As New TabPage
|
||
Dim l1 As New Label
|
||
l1.Height = 828
|
||
l1.Width = 289
|
||
l1.Text = $"机型测试"
|
||
l1.TextAlign = ContentAlignment.MiddleCenter
|
||
l1.ForeColor = Color.Green
|
||
l1.Font = New Font($"Arial", 36, FontStyle.Bold)
|
||
tpfrm2.Controls.Add(l1)
|
||
l1.Dock = DockStyle.Fill
|
||
'tpfrm2.Text = _modelsTestGroup(1)
|
||
'_blvC12TestForm = New FrmTest_C12 'C12测试窗体
|
||
'_blvC12TestForm.ShowForm(tpfrm2)
|
||
TabControlTest.TabPages.Add(tpfrm2)
|
||
tbIndex = TabControlTest.TabPages.IndexOf(tpfrm2)
|
||
'tbIndex = 0
|
||
End Select
|
||
|
||
Return tbIndex
|
||
End Function
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "初始化"
|
||
Private pollThreadclass As PollingHostThread
|
||
''' <summary>
|
||
''' 窗体加载函数
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub FrmCSeriesConfig_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||
AddHandler AppDomain.CurrentDomain.UnhandledException, Sub(s As Object, arg As UnhandledExceptionEventArgs)
|
||
Dim ex As Exception = CType(arg.ExceptionObject, Exception)
|
||
AppLog.WriteFatalLog($"{Application.ProductName} {Application.ProductVersion}未处理异常,{ex}")
|
||
MsgBox($"{Application.ProductName} {Application.ProductVersion}未处理异常,{ex}")
|
||
End Sub
|
||
|
||
|
||
logqe = New Queue(Of (String, Color))
|
||
MultiLanguageInfo()
|
||
|
||
TabPage2.Parent = Nothing
|
||
TabPage1.Parent = Nothing
|
||
TabPage4.Parent = Nothing
|
||
|
||
TabPage12.Parent = Nothing
|
||
TabPage15.Parent = Nothing '弃用
|
||
|
||
RadioButton1.Visible = False
|
||
RadioButton2.Visible = False
|
||
|
||
'1、获取当前用户返回权限
|
||
'LblUserInfo.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeYou)}!{_userNames} {LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectYourHotel)}!"
|
||
|
||
'2、根据权限显示不同界面
|
||
InitAuthorityInfo()
|
||
|
||
'连接后台数据库
|
||
'’ConnBackstageData()
|
||
|
||
InitLastTimeConfig()
|
||
|
||
'InitCmdSearchTablesData()
|
||
InitQueryDevStateTabData()
|
||
InitRoomInfo()
|
||
|
||
'ConnDataSourse()
|
||
|
||
InitLocalNetWorkInfo() '固件升级获取本地IP
|
||
'InitSerialPortBaud()
|
||
InitDevType()
|
||
InitRoomState()
|
||
|
||
'InitFolderItems()
|
||
|
||
InitRCUHostsTablesData() '固件升级表格
|
||
InitMatchingGridInfo() '初始化匹配表
|
||
|
||
'FrmAdvancedSettings.BtnNetworkConnect.PerformClick()
|
||
'FrmAdvancedSettings.NetworkConnect() ''模拟点击
|
||
InitTestPage()
|
||
|
||
InitHostsInfo()
|
||
|
||
InitMQTTItem()
|
||
InitPage()
|
||
|
||
'InitReset()
|
||
InitBatchIssuedTableData()
|
||
ComboBox31.SelectedIndex = 1
|
||
InitDHCPTable()
|
||
|
||
TabControl3Visible()
|
||
|
||
pollThreadclass = New PollingHostThread(Me, GrdRCUHost)
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 初始化上一次关闭窗体前保存的配置数据
|
||
''' </summary>
|
||
Private Sub InitLastTimeConfig()
|
||
Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CSeriesConfigTools)} v{Application.ProductVersion} (User:{_userNames} )"
|
||
|
||
'CboLongIP.Text = My.Settings.RemoteIP
|
||
'NudLocalPort.Value = My.Settings.LocalPort
|
||
End Sub
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "权限管理"
|
||
|
||
|
||
''' <summary>
|
||
''' 用户酒店列表
|
||
''' </summary>
|
||
Private _userHotelList As New List(Of String)
|
||
|
||
''' <summary>
|
||
''' 用户酒店分组
|
||
''' </summary>
|
||
Private _userHotel As New List(Of String)
|
||
|
||
|
||
''' <summary>
|
||
''' 根据权限解锁功能
|
||
''' </summary>
|
||
Private Sub InitAuthorityInfo()
|
||
FrmHotelList.AddAuthorityInfo()
|
||
|
||
If _projectNumber Is Nothing Then
|
||
_projectNumber = LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)
|
||
End If
|
||
|
||
If _HotelName Is Nothing Then
|
||
_HotelName = LanguageData.StringList(MultiLanguageDAL.StringEnum.HotelName)
|
||
End If
|
||
|
||
Dim dic As New Dictionary(Of String, String)
|
||
For index = 0 To _loginData.Values.Count - 1
|
||
If dic.ContainsKey(_loginData.Values(index).Code) = False Then
|
||
dic.Add(_loginData.Values(index).Code, _loginData.Values(index).HotelName)
|
||
End If
|
||
Next
|
||
|
||
If dic.Count = 1 Then
|
||
_projectNumber = _loginData.Values(0).Code
|
||
_HotelName = _loginData.Values(0).HotelName
|
||
LblUserNames.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheCurrentHotel)}:{_projectNumber}-{_HotelName} | {_userNames} {LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeYou)}! "
|
||
TextBox9.Text = _projectNumber
|
||
FrmHotelList.AddAuthorityInfo()
|
||
ElseIf My.Settings.UserName = _userNames Then '用户名
|
||
LblUserNames.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheCurrentHotel)}:{My.Settings.ProjectCode}-{My.Settings.CHotelName} | {_userNames} {LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeYou)}! "
|
||
TextBox9.Text = My.Settings.ProjectCode
|
||
_projectNumber = My.Settings.ProjectCode
|
||
_HotelName = My.Settings.CHotelName
|
||
FrmHotelList.AddLastTimeAuthorityInfo()
|
||
Else
|
||
LblUserNames.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheCurrentHotel)}:{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}-{LanguageData.StringList(MultiLanguageDAL.StringEnum.HotelName)} | {_userNames} {LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeYou)}! " '获取用户名
|
||
TextBox9.Text = $"0000"
|
||
_authorityInfo.Clear()
|
||
End If
|
||
FrmHotelList.AddAuthorityInfo()
|
||
FrmHotelList.AuthorityInfo(Me)
|
||
|
||
End Sub
|
||
|
||
|
||
|
||
#Region "权限管理_酒店权限"
|
||
|
||
|
||
''' <summary>
|
||
''' 权限状态
|
||
''' </summary>
|
||
Enum EnAuthState
|
||
|
||
''' <summary> 空权限 </summary>
|
||
NULLAuth
|
||
|
||
''' <summary> 禁止权限 </summary>
|
||
BanAuth
|
||
|
||
''' <summary> 只读权限 </summary>
|
||
ReadOnlyAuth
|
||
|
||
''' <summary> 读写权限 </summary>
|
||
ReadWriteAuth
|
||
|
||
''' <summary> 管理权限 </summary>
|
||
Manage
|
||
|
||
''' <summary> 允许权限 </summary>
|
||
Allow
|
||
|
||
''' <summary> 拒绝权限 </summary>
|
||
Refused
|
||
|
||
End Enum
|
||
|
||
|
||
''' <summary>
|
||
''' 锁定权限
|
||
''' </summary>
|
||
''' <param name="AuthState"></param>
|
||
Public Sub LockAuth(AuthState As String)
|
||
Select Case AuthState
|
||
Case EnAuthState.ReadOnlyAuth
|
||
LockReadOnlyAuth()
|
||
Case EnAuthState.ReadWriteAuth
|
||
LockReadWriteAuth()
|
||
Case Else
|
||
LockNoAuth()
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 锁定只读权限
|
||
''' </summary>
|
||
Private Sub LockReadOnlyAuth()
|
||
AuthorityCheckBoxOperate(CBoLock, True)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 锁定读写权限
|
||
''' </summary>
|
||
Private Sub LockReadWriteAuth()
|
||
AuthorityCheckBoxOperate(CBoLock, True)
|
||
|
||
AuthorityCheckBoxOperate(CBoRoomLock, True)
|
||
AuthorityComboBoxOperate(ComboBox13, True)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 锁定无权限
|
||
''' </summary>
|
||
Private Sub LockNoAuth()
|
||
AuthorityCheckBoxOperate(CBoLock, False)
|
||
AuthorityCheckBoxOperate(CBoRoomLock, False)
|
||
AuthorityComboBoxOperate(ComboBox13, False)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 授权时间权限
|
||
''' </summary>
|
||
''' <param name="AuthState"></param>
|
||
Public Sub AuthorizedTimeAuth(AuthState As String)
|
||
Select Case AuthState
|
||
Case EnAuthState.ReadOnlyAuth
|
||
AuthorizedTimeReadOnlyAuth()
|
||
Case EnAuthState.ReadWriteAuth
|
||
AuthorizedTimeReadWriteAuth()
|
||
Case Else
|
||
AuthorizedTimeNoAuth()
|
||
End Select
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 授权时间只读权限
|
||
''' </summary>
|
||
Private Sub AuthorizedTimeReadOnlyAuth()
|
||
AuthorityCheckBoxOperate(CBoMandateDate, True)
|
||
AuthorityCheckBoxOperate(CBoMandateEnd, True)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 授权时间读写权限
|
||
''' </summary>
|
||
Private Sub AuthorizedTimeReadWriteAuth()
|
||
AuthorityCheckBoxOperate(CBoMandateEndTime, True)
|
||
AuthorityDateTimePickerOperate(DateTimePicker2, True)
|
||
'AuthorityCheckBoxOperate(CBoMandateTimeSet, True)
|
||
|
||
AuthorityCheckBoxOperate(CBoMandateDate, True)
|
||
AuthorityCheckBoxOperate(CBoMandateEnd, True)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 授权时间无权限
|
||
''' </summary>
|
||
Private Sub AuthorizedTimeNoAuth()
|
||
AuthorityCheckBoxOperate(CBoMandateEndTime, False)
|
||
AuthorityDateTimePickerOperate(DateTimePicker2, False)
|
||
'AuthorityCheckBoxOperate(CBoMandateTimeSet, False)
|
||
|
||
AuthorityCheckBoxOperate(CBoMandateDate, False)
|
||
AuthorityCheckBoxOperate(CBoMandateEnd, False)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 授权升级And房态And季节权限
|
||
''' </summary>
|
||
''' <param name="AuthState"></param>
|
||
Public Sub UpdateRoomStateSeasonAuth(AuthState As String)
|
||
Select Case AuthState
|
||
Case EnAuthState.Allow
|
||
UpdateRoomStateSeasonReadWriteAuth()
|
||
Case Else
|
||
UpdateRoomStateSeasonNoAuth()
|
||
End Select
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 允许 升级/房态/季节权限
|
||
''' </summary>
|
||
Private Sub UpdateRoomStateSeasonReadWriteAuth()
|
||
BtnUpdateFile.Enabled = True
|
||
BtnUpdateFile.Visible = True
|
||
Button36.Enabled = True
|
||
Button36.Visible = True
|
||
|
||
AuthorityCheckBoxOperate(CBoRoomState, True)
|
||
AuthorityComboBoxOperate(ComboBox15, True)
|
||
AuthorityCheckBoxOperate(CBoSeason, True)
|
||
AuthorityComboBoxOperate(ComboBox14, True)
|
||
AuthorityComboBoxOperate(ComboBox18, True)
|
||
AuthorityComboBoxOperate(ComboBox19, True)
|
||
|
||
AuthorityComboBoxOperate(ComboBox20, True)
|
||
AuthorityComboBoxOperate(ComboBox21, True)
|
||
AuthorityComboBoxOperate(ComboBox22, True)
|
||
|
||
AuthorityComboBoxOperate(ComboBox23, True)
|
||
AuthorityComboBoxOperate(ComboBox24, True)
|
||
AuthorityComboBoxOperate(ComboBox25, True)
|
||
|
||
AuthorityComboBoxOperate(ComboBox26, True)
|
||
AuthorityComboBoxOperate(ComboBox27, True)
|
||
AuthorityComboBoxOperate(ComboBox28, True)
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 无 升级/房态/季节权限
|
||
''' </summary>
|
||
Private Sub UpdateRoomStateSeasonNoAuth()
|
||
BtnUpdateFile.Enabled = False
|
||
BtnUpdateFile.Visible = False
|
||
Button36.Enabled = False
|
||
Button36.Visible = False
|
||
|
||
AuthorityCheckBoxOperate(CBoRoomState, False)
|
||
AuthorityComboBoxOperate(ComboBox15, False)
|
||
AuthorityCheckBoxOperate(CBoSeason, False)
|
||
AuthorityComboBoxOperate(ComboBox14, False)
|
||
AuthorityComboBoxOperate(ComboBox18, False)
|
||
AuthorityComboBoxOperate(ComboBox19, False)
|
||
|
||
AuthorityComboBoxOperate(ComboBox20, False)
|
||
AuthorityComboBoxOperate(ComboBox21, False)
|
||
AuthorityComboBoxOperate(ComboBox22, False)
|
||
|
||
AuthorityComboBoxOperate(ComboBox23, False)
|
||
AuthorityComboBoxOperate(ComboBox24, False)
|
||
AuthorityComboBoxOperate(ComboBox25, False)
|
||
|
||
AuthorityComboBoxOperate(ComboBox26, False)
|
||
AuthorityComboBoxOperate(ComboBox27, False)
|
||
AuthorityComboBoxOperate(ComboBox28, False)
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 授权研发管理权限
|
||
''' </summary>
|
||
''' <param name="AuthState"></param>
|
||
Public Sub UpdateResearchManageAuth(AuthState As String)
|
||
Select Case AuthState
|
||
Case EnAuthState.Allow
|
||
UpdateResearchManageAllowAuth()
|
||
Case Else
|
||
UpdateResearchManageBanAuth()
|
||
End Select
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 允许 研发管理权限
|
||
''' </summary>
|
||
Private Sub UpdateResearchManageAllowAuth()
|
||
TabPage12.Parent = TabControl3
|
||
TabPage12.Text = "研发使用"
|
||
RadioButton1.Visible = True
|
||
RadioButton2.Visible = True
|
||
End Sub
|
||
|
||
Public Sub TabControl3Visible()
|
||
'TabPage12.Parent = Nothing
|
||
TabPage10.Parent = Nothing
|
||
TabPage15.Parent = Nothing
|
||
' TabPage16.Parent = Nothing
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 禁止 研发管理权限
|
||
''' </summary>
|
||
Private Sub UpdateResearchManageBanAuth()
|
||
TabPage12.Parent = Nothing
|
||
RadioButton1.Visible = False
|
||
RadioButton2.Visible = False
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 授权批量下发权限
|
||
''' </summary>
|
||
''' <param name="AuthState"></param>
|
||
Public Sub UpdateBatchIssuedAuth(AuthState As String)
|
||
Select Case AuthState
|
||
Case EnAuthState.Allow
|
||
UpdateAllowBatchIssuedAuth()
|
||
Case Else
|
||
UpdateBanBatchIssuedAuth()
|
||
End Select
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 允许 批量下发权限
|
||
''' </summary>
|
||
Private Sub UpdateAllowBatchIssuedAuth()
|
||
TabPage15.Parent = Nothing
|
||
' TabPage15.Parent = TabControl3
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 禁止 批量下发权限
|
||
''' </summary>
|
||
Private Sub UpdateBanBatchIssuedAuth()
|
||
TabPage15.Parent = Nothing
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 无权限
|
||
''' </summary>
|
||
Public Sub NoAuthority()
|
||
BtnUpdateFile.Enabled = False
|
||
BtnUpdateFile.Visible = False
|
||
Button36.Enabled = False
|
||
Button36.Visible = False
|
||
|
||
AuthorityCheckBoxOperate(CBoLock, False)
|
||
AuthorityCheckBoxOperate(CBoMandateEnd, False)
|
||
AuthorityCheckBoxOperate(CBoMandateDate, False)
|
||
AuthorityCheckBoxOperate(CBoRoomLock, False)
|
||
AuthorityCheckBoxOperate(CBoMandateTimeSet, False)
|
||
AuthorityCheckBoxOperate(CBoMandateEndTime, False)
|
||
AuthorityComboBoxOperate(ComboBox13, False)
|
||
AuthorityDateTimePickerOperate(DateTimePicker2, False)
|
||
AuthorityCheckBoxOperate(CBoRoomState, False)
|
||
AuthorityComboBoxOperate(ComboBox15, False)
|
||
AuthorityCheckBoxOperate(CBoSeason, False)
|
||
AuthorityComboBoxOperate(ComboBox14, False)
|
||
End Sub
|
||
|
||
|
||
Private Sub AuthorityCheckBoxOperate(checkbox As CheckBox, switchs As Boolean)
|
||
checkbox.Enabled = switchs
|
||
checkbox.Visible = switchs
|
||
End Sub
|
||
|
||
Private Sub AuthorityComboBoxOperate(combobox As ComboBox, switchs As Boolean)
|
||
combobox.Enabled = switchs
|
||
combobox.Visible = switchs
|
||
End Sub
|
||
|
||
Private Sub AuthorityDateTimePickerOperate(DateTimeP As DateTimePicker, switchs As Boolean)
|
||
DateTimeP.Enabled = False
|
||
DateTimeP.Visible = switchs
|
||
End Sub
|
||
|
||
Private Sub AuthorityLabelOperate(label As Label, switchs As Boolean)
|
||
label.Enabled = switchs
|
||
label.Visible = switchs
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "权限管理_酒店管理"
|
||
|
||
|
||
' ''' <summary>
|
||
' ''' 权限列表
|
||
' ''' </summary>
|
||
' Enum EnAuthInfo
|
||
|
||
' ''' <summary> 空 </summary>
|
||
' Null
|
||
|
||
' ''' <summary> 锁定权限 </summary>
|
||
' Lock
|
||
|
||
' ''' <summary> 授权时间 </summary>
|
||
' AuthorizedTime
|
||
|
||
' End Enum
|
||
|
||
|
||
' Private Sub Grid5_Click(Sender As Object, e As EventArgs)
|
||
' If Grid5.ActiveCell.Row > 0 Then
|
||
' _projectNumber = Grid5.Cell(Grid5.ActiveCell.Row, HotelDataCol.ProjectNumber).Text
|
||
' _HotelName = Grid5.Cell(Grid5.ActiveCell.Row, HotelDataCol.HotelName).Text
|
||
' End If
|
||
' End Sub
|
||
|
||
|
||
' ''' <summary>
|
||
' ''' 选择酒店事件
|
||
' ''' </summary>
|
||
' ''' <param name="sender"></param>
|
||
' ''' <param name="e"></param>
|
||
' Private Sub Button5_Click(sender As Object, e As EventArgs)
|
||
' NoAuthority()
|
||
' If Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Checked)}" Then
|
||
' 'If ComboBox19.Text = Nothing Then 'ComboBox18.Text = Nothing OrElse
|
||
' ' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}!")
|
||
' ' Exit Sub
|
||
' 'End If
|
||
|
||
' 'For index = 0 To _userData.Rows.Count - 1
|
||
' ' If ComboBox19.Text = _userData(index)(7) Then
|
||
' ' _projectNumber = _userData(index)(8)
|
||
' ' _authorityInfo = _userData(index)(5)
|
||
' ' Console.WriteLine($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}{_projectNumber}")
|
||
' ' End If
|
||
' 'Next
|
||
|
||
' If Grid5.Cell(Grid5.ActiveCell.Row, HotelDataCol.ProjectNumber).Text = Nothing Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}!")
|
||
' Exit Sub
|
||
' End If
|
||
' If _projectNumber = $"" Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}!")
|
||
' Exit Sub
|
||
' End If
|
||
' If _HotelName = $"" Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}!")
|
||
' Exit Sub
|
||
' End If
|
||
|
||
' 'For index = 0 To _userData.Rows.Count - 1
|
||
' ' If _HotelName = _userData(index)(7) Then
|
||
' ' _authorityInfo = _userData(index)(5)
|
||
' ' End If
|
||
' 'Next
|
||
' _authorityInfo.Clear()
|
||
' For index = 0 To _loginData.Values.Count - 1
|
||
' If _HotelName = _loginData.Values(index).HotelName Then
|
||
' _authorityInfo.Add(_loginData.Values(index).AuthorityId, _loginData.Values(index).AuthotypeId)
|
||
' End If
|
||
' Next
|
||
|
||
' Button5.ForeColor = Color.Red
|
||
' Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Loosen)}"
|
||
|
||
' 'ComboBox19.Enabled = False
|
||
' TreeView1.Enabled = False
|
||
' Grid5.Enabled = False
|
||
' ElseIf Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Loosen)}" Then
|
||
' Button5.ForeColor = Color.Green
|
||
' Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Checked)}"
|
||
|
||
' 'ComboBox19.Enabled = True
|
||
' TreeView1.Enabled = True
|
||
' Grid5.Enabled = True
|
||
' End If
|
||
|
||
' LblUserNames.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheCurrentHotel)}:{_projectNumber}-{_HotelName} | {_userNames} {LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeYou)}! "
|
||
' TextBox9.Text = _projectNumber
|
||
|
||
' For index = 0 To _authorityInfo.Count - 1
|
||
' Select Case _authorityInfo.Keys(index)
|
||
' Case EnAuthInfo.Lock '锁定
|
||
' LockAuth(_authorityInfo.Values(index))
|
||
' Case EnAuthInfo.AuthorizedTime '授权时间
|
||
' AuthorizedTimeAuth(_authorityInfo.Values(index))
|
||
' End Select
|
||
' Next
|
||
|
||
|
||
' End Sub
|
||
|
||
' ''' <summary>
|
||
' ''' 选择页面
|
||
' ''' </summary>
|
||
' ''' <param name="sender"></param>
|
||
' ''' <param name="e"></param>
|
||
' Private Sub TabControl1_Selecting(sender As Object, e As TabControlCancelEventArgs) Handles TabControl1.Selecting
|
||
' If Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Checked)}" Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}!")
|
||
' e.Cancel = True
|
||
' End If
|
||
' End Sub
|
||
|
||
|
||
' ''' <summary>
|
||
' ''' 初始化酒店区域信息
|
||
' ''' </summary>
|
||
' Private Sub InitHotelInfo()
|
||
' InitHotelTable()
|
||
|
||
' Dim nodeOne As TreeNode = TreeView1.Nodes.Add($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TongTai)}")
|
||
|
||
' Dim dic As New Dictionary(Of String, Integer)
|
||
' Dim txt As String
|
||
' For index = 0 To _loginData.Count - 1
|
||
' txt = _loginData.Values(index).HotelGroupsName
|
||
' If dic.ContainsKey(txt) Then
|
||
' dic(txt) += 1
|
||
' Else
|
||
' dic.Add(txt, 1)
|
||
' nodeOne.Nodes.Add(txt)
|
||
' End If
|
||
' Next
|
||
|
||
|
||
' 'Dim wacth As New Stopwatch
|
||
' 'wacth.Restart()
|
||
|
||
' 'Dim dic As New Dictionary(Of String, Integer)
|
||
' 'Dim txt As String
|
||
' 'If _userData.Rows.Count <= 0 Then Return
|
||
' 'For index = 0 To _userData.Rows.Count - 1
|
||
' ' txt = _userData(index)(10).ToString
|
||
' ' If dic.ContainsKey(txt) Then
|
||
' ' dic(txt) += 1
|
||
' ' Else
|
||
' ' dic.Add(txt, 1)
|
||
' ' nodeOne.Nodes.Add(txt)
|
||
' ' End If
|
||
' 'Next
|
||
|
||
' 'For index = 0 To dic.Count - 1
|
||
' ' nodeOne.Nodes.Add(dic.ElementAt(index).Key & " " & dic.ElementAt(index).Value)
|
||
' 'Next
|
||
' 'If _userData.Rows.Count > 0 Then
|
||
|
||
' ' nodeOne.Nodes.Add($"{_userData(0)(10)}")
|
||
' ' For index = 1 To _userData.Rows.Count - 1
|
||
' ' Dim isExists As Boolean = False
|
||
' ' For Each b As TreeNode In nodeOne.Nodes
|
||
' ' If b.Text = _userData(index)(10) Then
|
||
' ' isExists = True
|
||
' ' Exit For
|
||
' ' End If
|
||
' ' Next
|
||
' ' If isExists = False Then nodeOne.Nodes.Add($"{_userData(index)(10)}")
|
||
' ' Next
|
||
' 'End If
|
||
|
||
' 'wacth.Stop()
|
||
' 'Console.WriteLine($"ET:{wacth.ElapsedMilliseconds}")
|
||
|
||
' 'TreeView1.Nodes.Add($"酒店2").Nodes.Add("123")
|
||
' 'Dim node As TreeNode = TreeView1.Nodes.Add($"酒店5")
|
||
' 'node.Nodes.Add("n1")
|
||
|
||
' End Sub
|
||
|
||
|
||
' ''' <summary>
|
||
' ''' 树状目录点击事件
|
||
' ''' </summary>
|
||
' ''' <param name="sender"></param>
|
||
' ''' <param name="e"></param>
|
||
' Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs)
|
||
' 'Console.WriteLine(e.Node.Text & " " & e.Node.Index & " " & e.Node.Level & " " & e.Node.FullPath)
|
||
' 'Grid5.DisplayRowNumber = True
|
||
|
||
' Grid5.NewFile()
|
||
' InitHotelTable()
|
||
|
||
' Dim rowCount As Integer = 0
|
||
' Dim dic As New Dictionary(Of String, Integer)
|
||
' For index = 0 To _loginData.Values.Count - 1
|
||
' If e.Node.Text = _loginData.Values(index).HotelGroupsName Then
|
||
' If dic.ContainsKey(_loginData.Values(index).Code) = False Then
|
||
' dic.Add(_loginData.Values(index).Code, 1)
|
||
' Grid5.Rows += 1
|
||
' rowCount += 1
|
||
' Grid5.Cell(rowCount, 1).Text = _loginData.Values(index).Code
|
||
' Grid5.Cell(rowCount, 2).Text = _loginData.Values(index).HotelName
|
||
' End If
|
||
' ElseIf e.Node.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TongTai)}" Then
|
||
' If dic.ContainsKey(_loginData.Values(index).Code) = False Then
|
||
' dic.Add(_loginData.Values(index).Code, 1)
|
||
' Grid5.Rows += 1
|
||
' rowCount += 1
|
||
' Grid5.Cell(rowCount, 1).Text = _loginData.Values(index).Code
|
||
' Grid5.Cell(rowCount, 2).Text = _loginData.Values(index).HotelName
|
||
' End If
|
||
' End If
|
||
|
||
' 'Console.WriteLine($"---------------------------------------------------------------------------")
|
||
' 'Console.WriteLine($"{_loginData.Count}")
|
||
' 'Console.WriteLine($"酒店+权限:{_loginData.Keys(index)}")
|
||
' 'Console.WriteLine($"酒店名称:{_loginData.Values(index).HotelName}")
|
||
' 'Console.WriteLine($"权限名称:{_loginData.Values(index).AuthorityName}")
|
||
' 'Console.WriteLine($"酒店组名称:{_loginData.Values(index).HotelGroupsName}")
|
||
' 'Console.WriteLine($"---------------------------------------------------------------------------")
|
||
' Next
|
||
|
||
|
||
' 'Dim lst As New List(Of Tuple(Of String, String)) '元组
|
||
|
||
' 'Try
|
||
' ' _userHotelList.Clear()
|
||
' ' For index = 0 To _userData.Rows.Count - 1
|
||
' ' If e.Node.Text = _userData(index)(10) Then
|
||
' ' lst.Add(New Tuple(Of String, String)(_userData(index)(8), _userData(index)(7)))
|
||
' ' '_userHotelList.Add($"{_userData(index)(8)}-{_userData(index)(7)}")
|
||
' ' End If
|
||
' ' Next
|
||
' 'Catch ex As Exception
|
||
' ' MsgBox($"{ex.Message}")
|
||
' 'End Try
|
||
|
||
' 'Grid5.NewFile()
|
||
' 'InitHotelTable()
|
||
|
||
' 'Dim QueryWithStanard2 = From el In lst
|
||
' ' Group el By dateGroup = New With {
|
||
' ' Key .Code = el.Item1, Key .Name = el.Item2
|
||
' ' } Into g = Group
|
||
' ' Select New With {.code = dateGroup.Code, .name = dateGroup.Name}
|
||
|
||
' 'Dim lia2 = QueryWithStanard2.ToList()
|
||
' 'For index As Integer = 0 To QueryWithStanard2.ToList.Count - 1
|
||
' ' Grid5.Rows += 1
|
||
' ' Grid5.Cell(index + 1, 1).Text = lia2(index).code '(index - 1).Split($"-")(0)
|
||
' ' Grid5.Cell(index + 1, 2).Text = lia2(index).name
|
||
' 'Next
|
||
|
||
' 'If e.Node.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TongTai)}" Then
|
||
' ' InitLoadHotelInfo()
|
||
' 'End If
|
||
' End Sub
|
||
|
||
|
||
' ''' <summary>
|
||
' ''' 酒店区域表列名_枚举
|
||
' ''' </summary>
|
||
' Enum HotelDataCol
|
||
' ''' <summary> 空 </summary>
|
||
' Null
|
||
|
||
' ''' <summary> 项目编码 </summary>
|
||
' ProjectNumber
|
||
|
||
' ''' <summary> 酒店名称 </summary>
|
||
' HotelName
|
||
' End Enum
|
||
|
||
' ''' <summary>
|
||
' ''' 酒店区域表列名
|
||
' ''' </summary>
|
||
' Private _hotelTable() As String = {$"0", $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}", $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.HotelName)}"}
|
||
|
||
' ''' <summary>
|
||
' ''' 初始化酒店表格
|
||
' ''' </summary>
|
||
' Private Sub InitHotelTable()
|
||
' Grid5.Column(0).Width = 0
|
||
' Grid5.Cols = _hotelTable.Length
|
||
' Grid5.Rows = 1
|
||
|
||
' For index = 1 To Grid5.Cols - 1
|
||
' With Grid5.Cell(0, index)
|
||
' .ForeColor = Color.Blue
|
||
' .Text = _hotelTable(index)
|
||
' .ForeColor = Color.DarkCyan
|
||
' End With
|
||
|
||
' With Grid5.Column(index)
|
||
' .Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
' If index = HotelDataCol.ProjectNumber Then
|
||
' .Width = 75
|
||
' Else
|
||
' .Width = 180
|
||
' End If
|
||
' End With
|
||
' Next
|
||
' Grid5.SelectionMode = FlexCell.SelectionModeEnum.ByRow '设置选中行
|
||
|
||
' End Sub
|
||
|
||
|
||
' Private Sub InitLoadHotelInfo()
|
||
' Dim amountGrpByDates = From row In _userData
|
||
' Group row By dateGroup = New With {
|
||
' Key .Code = row.Field(Of Integer)(_userData.Columns(8).ColumnName),
|
||
' Key .Name = row.Field(Of String)(_userData.Columns(7).ColumnName)
|
||
' } Into Group
|
||
' Select New With {
|
||
' Key .Code = dateGroup.Code,
|
||
' .Name = dateGroup.Name}
|
||
' Dim lst = amountGrpByDates.ToList
|
||
|
||
' For index = 0 To lst.Count - 1
|
||
' Grid5.Rows += 1
|
||
' Grid5.Cell(index + 1, 1).Text = lst(index).Code '项目编码
|
||
' Grid5.Cell(index + 1, 2).Text = lst(index).Name '酒店名称
|
||
' Next
|
||
' End Sub
|
||
|
||
#End Region
|
||
|
||
#Region "后台数据_房型房号"
|
||
|
||
|
||
''' <summary>
|
||
''' 房型备注列表
|
||
''' </summary>
|
||
Private _roomType As New List(Of String)
|
||
|
||
''' <summary>
|
||
''' 房号备注列表
|
||
''' </summary>
|
||
Private _roomNumber As New List(Of String)
|
||
|
||
|
||
''' <summary>
|
||
''' 房型备注_下拉框事件
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub ComboBox16_DropDown(sender As Object, e As EventArgs) Handles ComboBox16.DropDown
|
||
Dim projectNumber As String = TextBox9.Text
|
||
QueryProjectRoomType(projectNumber)
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房型备注_文本改变事件
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub ComboBox16_TextChanged(sender As Object, e As EventArgs) Handles ComboBox16.TextChanged
|
||
'房型备注
|
||
If ComboBox16.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.All)}" Then
|
||
Else
|
||
ComboBox17.Items.Clear()
|
||
End If
|
||
|
||
CBoRoomTpRemark.Checked = True
|
||
If ComboBox16.Text.Contains("全部") Then
|
||
CBoRoomNuRemark.Checked = False
|
||
CBoRoomTpRemark.Checked = False
|
||
End If
|
||
CheckBox36.Checked = False
|
||
ComboBox30.Items.Clear()
|
||
TextBox63.Text = ""
|
||
TextBox21.Text = ""
|
||
Try
|
||
|
||
If ComboBox16.SelectedIndex = 0 Then
|
||
TextBox21.Text = $"0000"
|
||
Else
|
||
'TextBox21.Text = _dtRoomType(ComboBox16.SelectedIndex - 1)(4)
|
||
|
||
Dim roomTypeID As String = String.Empty
|
||
Dim roomType As String = ComboBox16.Text
|
||
'For index = 0 To _hostListData.Keys.Count - 1
|
||
' If roomType = _hostListData(index).RoomTypeName Then
|
||
' roomTypeID = _hostListData(index).RoomTypeID
|
||
' End If
|
||
'Next
|
||
For index = 0 To _roomTypeListData.Keys.Count - 1
|
||
If roomType = _roomTypeListData(index).Name Then
|
||
roomTypeID = _roomTypeListData(index).ID
|
||
End If
|
||
Next
|
||
TextBox21.Text = roomTypeID
|
||
End If
|
||
Catch ex As Exception
|
||
Console.WriteLine($"RoomType Error:{ex.Message}")
|
||
End Try
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房号备注_下拉框事件
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub ComboBox17_DropDown(sender As Object, e As EventArgs) Handles ComboBox17.DropDown
|
||
Dim projectNumber As String = TextBox9.Text
|
||
Dim roomType As String = ComboBox16.Text
|
||
|
||
QueryProjectRoomNumber(projectNumber, roomType)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房号备注_文本改变事件
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
|
||
Private Sub ComboBox17_TextChanged(sender As Object, e As EventArgs) Handles ComboBox17.TextChanged
|
||
|
||
|
||
Iptype_txt.Text = ""
|
||
Loadip_txt.Text = ""
|
||
IPMask_txt.Text = ""
|
||
IPGateway_txt.Text = ""
|
||
ServerIP_txt.Text = ""
|
||
ipconfig_txt.Text = ""
|
||
IpDns_txt.Text = ""
|
||
IpPort_txt.Text = ""
|
||
TextBox25.Text = ""
|
||
'TextBox21.Text = ""
|
||
|
||
Dim gAPIRoomNode As APIRoomNode
|
||
If ComboBox16.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.All)}" Then
|
||
Dim projectNumber As String = TextBox9.Text
|
||
Dim roomNumber As String = ComboBox17.Text
|
||
QueryProjectRoomNumberType(projectNumber, roomNumber)
|
||
|
||
QueryProjectRoomNumber(TextBox9.Text, ComboBox16.Text)
|
||
ComboBox17.Text = roomNumber
|
||
Else
|
||
Dim projectNumber As String = TextBox9.Text
|
||
Dim roomNumber As String = ComboBox17.Text
|
||
Dim roomType As String = ComboBox16.Text
|
||
Dim roomNumberId As String = String.Empty
|
||
Dim creatDate As String
|
||
If _hotelListData.ContainsKey(projectNumber) = True Then
|
||
creatDate = _hotelListData(projectNumber).CreatDate
|
||
If DealHostListInterfaceInfo(projectNumber, creatDate) = True Then
|
||
For index = 0 To _hostListData.Keys.Count - 1
|
||
If roomNumber = _hostListData(index).RoomNumber Then
|
||
roomNumberId = _hostListData(index).ID
|
||
gAPIRoomNode = RoomControlSystemAPI.API_AllocationBarCode(_hostListData(index).RoomNumber, _hostListData(index).HotelID)
|
||
CZHSetserverIP(gAPIRoomNode)
|
||
End If
|
||
Next
|
||
End If
|
||
End If
|
||
|
||
|
||
TextBox25.Text = roomNumberId
|
||
End If
|
||
'Try
|
||
' If ComboBox17.SelectedIndex > -1 Then
|
||
' TextBox25.Text = _dtRoomNumber(ComboBox17.SelectedIndex)(5)
|
||
' End If
|
||
'Catch ex As Exception
|
||
' Console.WriteLine($"RoomRemark Error:{ex.Message}")
|
||
'End Try
|
||
CBoRoomNuRemark.Checked = True
|
||
CBoProjectNumber.Checked = True
|
||
|
||
' GetserverIP(TextBox25.Text)
|
||
|
||
|
||
End Sub
|
||
Public Sub CZHSetserverIP(InServerData As APIRoomNode)
|
||
|
||
|
||
If IsNothing(InServerData) Then
|
||
MsgBox("无网络或未设置该房间信息。")
|
||
Return
|
||
End If
|
||
Dim dic As Dictionary(Of String, String)
|
||
If InServerData.Result.Count < 1 Then
|
||
MsgBox("获取该房间信息异常!")
|
||
Return
|
||
End If
|
||
|
||
'dic = CType(InServerData.Result(0), Dictionary(Of String, String))
|
||
dic = InServerData.Result(0)
|
||
If IsNothing(dic) Then
|
||
MsgBox("获取该房间IP信息异常!")
|
||
Return
|
||
End If
|
||
|
||
If dic.Item("IPType").Equals("1") Then
|
||
Iptype_txt.Text = "自动"
|
||
Iptype_txt.Tag = 1
|
||
ElseIf dic.Item("IPType").Equals("2") Then
|
||
Iptype_txt.Text = "手动"
|
||
Iptype_txt.Tag = 2
|
||
Else
|
||
Iptype_txt.Text = "数据异常(默认自动)"
|
||
Iptype_txt.Tag = 1
|
||
End If
|
||
Loadip_txt.Text = dic.Item("IP")
|
||
IPMask_txt.Text = dic.Item("SubnetMask")
|
||
IPGateway_txt.Text = dic.Item("Gateway")
|
||
ServerIP_txt.Text = dic.Item("ServerIP")
|
||
ipconfig_txt.Text = dic.Item("ServerPort")
|
||
IpDns_txt.Text = dic.Item("DNS")
|
||
IpPort_txt.Text = dic.Item("Port")
|
||
|
||
|
||
|
||
End Sub
|
||
|
||
|
||
Public Sub GetserverIP(isRoomOldId As String)
|
||
If String.IsNullOrEmpty(isRoomOldId) Then Return
|
||
Dim InServerData As Dictionary(Of String, String)
|
||
Dim str As String = $"select * from tbl_room_set_config where ROOM_OLD_ID='{isRoomOldId}'"
|
||
InServerData = _SqlServer.SelectTable(str)
|
||
If IsNothing(InServerData) OrElse InServerData.Count = 0 Then
|
||
MsgBox("无网络或未设置该房间信息。")
|
||
Iptype_txt.Text = ""
|
||
Loadip_txt.Text = ""
|
||
IPMask_txt.Text = ""
|
||
IPGateway_txt.Text = ""
|
||
ServerIP_txt.Text = ""
|
||
ipconfig_txt.Text = ""
|
||
IpDns_txt.Text = ""
|
||
IpPort_txt.Text = ""
|
||
Return
|
||
End If
|
||
|
||
|
||
If InServerData.Item("IPType").Equals("1") Then
|
||
Iptype_txt.Text = "自动"
|
||
Iptype_txt.Tag = 1
|
||
ElseIf InServerData.Item("IPType").Equals("2") Then
|
||
Iptype_txt.Text = "手动"
|
||
Iptype_txt.Tag = 2
|
||
Else
|
||
Iptype_txt.Text = "数据异常(默认自动)"
|
||
Iptype_txt.Tag = 1
|
||
End If
|
||
|
||
Loadip_txt.Text = InServerData.Item("RCU_LOCAL_IP")
|
||
IPMask_txt.Text = InServerData.Item("RCU_SUB_MASK")
|
||
IPGateway_txt.Text = InServerData.Item("RCU_GETWAY")
|
||
ServerIP_txt.Text = InServerData.Item("RCU_CLOUD_SVR_IP")
|
||
ipconfig_txt.Text = InServerData.Item("RCU_CLOUD_SVR_PORT")
|
||
IpDns_txt.Text = InServerData.Item("RCU_DNS_SERVER")
|
||
IpPort_txt.Text = InServerData.Item("RCU_LOCAL_PORT")
|
||
|
||
|
||
End Sub
|
||
|
||
''' <summary> 房型表—根据项目编码查询得到 </summary>
|
||
Private _dtRoomType As DataTable
|
||
|
||
|
||
''' <summary>
|
||
''' 根据项目编码查询房型
|
||
''' </summary>
|
||
''' <param name="projectNumber"></param>
|
||
Private Sub QueryProjectRoomType(projectNumber As String)
|
||
_roomType.Clear()
|
||
_roomType.Add($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.All)}")
|
||
|
||
Dim creatDate As String
|
||
If _hotelListData.ContainsKey(projectNumber) = True Then
|
||
creatDate = _hotelListData(projectNumber).CreatDate
|
||
|
||
If DealRoomTypeListInterfaceInfo(projectNumber, creatDate) = True Then
|
||
For index = 0 To _roomTypeListData.Keys.Count - 1
|
||
Dim roomType As String = _roomTypeListData(index).Name
|
||
If _roomType.Contains(roomType) = False Then
|
||
_roomType.Add(roomType)
|
||
End If
|
||
Next
|
||
End If
|
||
|
||
'If DealHostListInterfaceInfo(projectNumber, creatDate) = True Then
|
||
' For index = 0 To _hostListData.Keys.Count - 1
|
||
' Dim roomType As String = _hostListData(index).RoomTypeName
|
||
' If _roomType.Contains(roomType) = False Then
|
||
' _roomType.Add(roomType)
|
||
' End If
|
||
' Next
|
||
'End If
|
||
End If
|
||
|
||
'_dtRoomType = _backstageData.GetProjectRoomTypeInfo(projectNumber)
|
||
'If _dtRoomType.Rows.Count > 0 Then
|
||
' For index = 0 To _dtRoomType.Rows.Count - 1
|
||
' _roomType.Add(_dtRoomType(index)(3)) '获取房型
|
||
' Next
|
||
'End If
|
||
Iptype_txt.Text = ""
|
||
Loadip_txt.Text = ""
|
||
IPMask_txt.Text = ""
|
||
IPGateway_txt.Text = ""
|
||
ServerIP_txt.Text = ""
|
||
ipconfig_txt.Text = ""
|
||
IpDns_txt.Text = ""
|
||
IpPort_txt.Text = ""
|
||
ComboBox16.Items.Clear()
|
||
ComboBox16.Items.AddRange(_roomType.ToArray)
|
||
If ComboBox16.Items.Count > 0 Then ComboBox16.SelectedIndex = 0
|
||
End Sub
|
||
|
||
|
||
''' <summary> 房号表—根据项目编码, 房型查询得到 </summary>
|
||
Private _dtRoomNumber As DataTable
|
||
|
||
''' <summary>
|
||
''' 根据项目编码,房型查询房号
|
||
''' </summary>
|
||
''' <param name="projectNumber"></param>
|
||
''' <param name="roomType"></param>
|
||
Private Sub QueryProjectRoomNumber(projectNumber As String, roomType As String)
|
||
_roomNumber.Clear()
|
||
|
||
Dim creatDate As String
|
||
If _hotelListData.ContainsKey(projectNumber) = True Then
|
||
creatDate = _hotelListData(projectNumber).CreatDate
|
||
If DealHostListInterfaceInfo(projectNumber, creatDate) = True Then
|
||
For index = 0 To _hostListData.Keys.Count - 1
|
||
If roomType = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.All)}" Then
|
||
Dim roomNumber As String = _hostListData(index).RoomNumber
|
||
If _roomNumber.Contains(roomNumber) = False Then
|
||
_roomNumber.Add(roomNumber)
|
||
End If
|
||
Else
|
||
If roomType = _hostListData(index).RoomTypeName Then
|
||
Dim roomNumber As String = _hostListData(index).RoomNumber
|
||
If _roomNumber.Contains(roomNumber) = False Then
|
||
_roomNumber.Add(roomNumber)
|
||
End If
|
||
End If
|
||
End If
|
||
Next
|
||
End If
|
||
End If
|
||
|
||
'_dtRoomNumber = _backstageData.GetProjectRoomNumberInfo(projectNumber, roomType)
|
||
'If _dtRoomNumber.Rows.Count > 0 Then
|
||
' For index = 0 To _dtRoomNumber.Rows.Count - 1
|
||
' _roomNumber.Add(_dtRoomNumber(index)(4)) '获取房号
|
||
' Next
|
||
'End If
|
||
|
||
|
||
ComboBox17.Items.Clear()
|
||
ComboBox17.Items.AddRange(_roomNumber.ToArray)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 根据项目编码,房号查询房型
|
||
''' </summary>
|
||
''' <param name="projectNumber"></param>
|
||
''' <param name="roomNumber"></param>
|
||
Private Sub QueryProjectRoomNumberType(projectNumber As String, roomNumber As String)
|
||
Dim roomNumberId As String = String.Empty
|
||
Dim roomType As String = String.Empty
|
||
Dim roomTypeId As String = String.Empty
|
||
Dim gAPIRoomNode As APIRoomNode
|
||
Dim creatDate As String
|
||
If _hotelListData.ContainsKey(projectNumber) = True Then
|
||
creatDate = _hotelListData(projectNumber).CreatDate
|
||
If DealHostListInterfaceInfo(projectNumber, creatDate) = True Then
|
||
For index = 0 To _hostListData.Keys.Count - 1
|
||
If roomNumber = _hostListData(index).RoomNumber Then
|
||
roomNumberId = _hostListData(index).ID
|
||
roomType = _hostListData(index).RoomTypeName
|
||
roomTypeId = _hostListData(index).RoomTypeID
|
||
gAPIRoomNode = RoomControlSystemAPI.API_AllocationBarCode(_hostListData(index).RoomNumber, _hostListData(index).HotelID)
|
||
CZHSetserverIP(gAPIRoomNode)
|
||
End If
|
||
Next
|
||
End If
|
||
End If
|
||
|
||
TextBox25.Text = roomNumberId
|
||
TextBox21.Text = roomTypeId
|
||
ComboBox16.Text = roomType
|
||
|
||
'Dim dtUser As DataTable = _backstageData.GetProjectRoomNumberTypeInfo(projectNumber, roomNumber)
|
||
'If dtUser.Rows.Count > 0 Then
|
||
' ComboBox16.Text = dtUser(0)(3)
|
||
' TextBox21.Text = dtUser(0)(5)
|
||
'End If
|
||
|
||
End Sub
|
||
|
||
#End Region
|
||
|
||
#Region "用户管理_菜单栏"
|
||
|
||
'''' <summary>
|
||
'''' 高级网络设置
|
||
'''' </summary>
|
||
'''' <param name="sender"></param>
|
||
'''' <param name="e"></param>
|
||
'Private Sub TSMAdvancedSettings_Click(sender As Object, e As EventArgs) Handles TSMAdvancedSettings.Click
|
||
' FrmAdvancedSettings.ShowDialog()
|
||
'End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 高级串口设置
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub TStMSerialPortSetting_Click(sender As Object, e As EventArgs) Handles TStMSerialPortSetting.Click
|
||
Dim FrmSerialport As New FrmSerialportSetting(Me)
|
||
FrmSerialport.ShowDialog()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 切换酒店
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub TSMSwitchHotel_Click(sender As Object, e As EventArgs) Handles TSMSwitchHotel.Click
|
||
'方法1
|
||
'If My.Settings.UserName = _userNames Then '用户名
|
||
' FrmHotelList.ShowDialog()
|
||
'Else
|
||
' Dim hotel As FrmHotelList = New FrmHotelList
|
||
' hotel.ShowDialog()
|
||
'End If
|
||
Dim a As Boolean
|
||
If My.Settings.UserName = _userNames Then
|
||
a = True
|
||
End If
|
||
|
||
FrmHotelList.InitHotelList(a, Me)
|
||
FrmHotelList.ShowDialog()
|
||
End Sub
|
||
|
||
Private Sub TestTSMSwitchHotel()
|
||
'方法1
|
||
'If My.Settings.UserName = _userNames Then '用户名
|
||
' FrmHotelList.ShowDialog()
|
||
'Else
|
||
' Dim hotel As FrmHotelList = New FrmHotelList
|
||
' hotel.ShowDialog()
|
||
'End If
|
||
Dim a As Boolean
|
||
If My.Settings.UserName = _userNames Then
|
||
a = True
|
||
End If
|
||
Dim rfrom As New FrmHotelList
|
||
rfrom.Buttin5click()
|
||
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 切换用户
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub 切换用户ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem.Click
|
||
If _connectStatus = True Then
|
||
_connectStatus = False
|
||
_socket.Shutdown(SocketShutdown.Both)
|
||
_socket.Close()
|
||
_receiveThread.Abort()
|
||
End If
|
||
|
||
BFrmLogin.Show()
|
||
My.Settings.ProjectCode = _projectNumber
|
||
My.Settings.CHotelName = _HotelName
|
||
My.Settings.UserName = _userNames
|
||
My.Settings.Save()
|
||
Close()
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 退出
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub 退出ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItemExit.Click
|
||
Close()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 帮助_关于
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub ToolStripMenuItem3_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem3.Click
|
||
FrmAboutDialog.ShowDialog()
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "通讯方式"
|
||
|
||
#Region "发送方式"
|
||
|
||
''' <summary>
|
||
''' 发送测试数据
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Public Sub SendTestData(dataBuff() As Byte)
|
||
_isSendByUdp = CheckNetWorkDisConnect()
|
||
SendDataMode(dataBuff)
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 检查网络连接
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function CheckNetWorkDisConnect() As Boolean
|
||
If _connectStatus = False Then
|
||
Return False
|
||
End If
|
||
Return True
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 以哪种方式发送
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub SendDataMode(databuff() As Byte)
|
||
If _isSendByUdp = True Then
|
||
SendUDPData(databuff)
|
||
Else
|
||
If SerialPort.IsOpen = False Then
|
||
Exit Sub
|
||
End If
|
||
SendPortData(databuff)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "串口通信"
|
||
|
||
#Region "串口发送接收"
|
||
|
||
''' <summary>
|
||
''' 当前时间
|
||
''' </summary>
|
||
Private _nowTime As Date
|
||
|
||
''' <summary>
|
||
''' 最后时间
|
||
''' </summary>
|
||
Private _lastTime As Date
|
||
|
||
''' <summary>
|
||
''' 时间间隔
|
||
''' </summary>
|
||
Private _timeInterbval As TimeSpan
|
||
|
||
''' <summary>
|
||
''' 接收数据偏移量
|
||
''' </summary>
|
||
Private _recvOffset As Integer
|
||
|
||
''' <summary>
|
||
''' 接收数据缓存包
|
||
''' </summary>
|
||
Private _recvBuffer(254) As Byte
|
||
|
||
|
||
''' <summary>
|
||
''' 配置串口
|
||
''' </summary>
|
||
''' <param name="portName">串口名</param>
|
||
''' <param name="portBaud">串口波特率</param>
|
||
Public Sub ConfigSerialPort(portName As String, portBaud As String)
|
||
With SerialPort
|
||
.PortName = portName '串口名
|
||
.BaudRate = CInt(portBaud) '波特率
|
||
.DataBits = 8 '数据位
|
||
.StopBits = Ports.StopBits.One '停止位
|
||
.Parity = Ports.Parity.None '偶校验
|
||
.RtsEnable = True
|
||
.ReceivedBytesThreshold = 1
|
||
End With
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 发送485串口数据
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
''' <returns></returns>
|
||
Public Function SendPortData(dataBuff() As Byte)
|
||
Dim portData As String = ByteToString(dataBuff)
|
||
Dim timeData As String
|
||
Dim cutTime As String
|
||
|
||
_nowTime = Now
|
||
_timeInterbval = _nowTime - _lastTime
|
||
_lastTime = _nowTime
|
||
timeData = $"{Math.Round(_timeInterbval.TotalMilliseconds, 0)}"
|
||
timeData = timeData.PadRight(6)
|
||
cutTime = $"{Now:HH:mm:ss:fff}"
|
||
|
||
Try
|
||
SerialPort.Write(dataBuff, 0, dataBuff.Length)
|
||
AppendTipText("Com-TX:", Color.Green)
|
||
AppendTipText("(" & cutTime & "-", Color.Black)
|
||
AppendTipText(timeData, Color.BlueViolet)
|
||
AppendTipText("):", Color.Black)
|
||
AppendTipText(portData & vbCrLf, Color.Green)
|
||
AppendTipTextSerial("Com-TX:", Color.Green)
|
||
AppendTipTextSerial("(" & cutTime & "-", Color.Black)
|
||
AppendTipTextSerial(timeData, Color.BlueViolet)
|
||
AppendTipTextSerial("):", Color.Black)
|
||
AppendTipTextSerial(portData & vbCrLf, Color.Green)
|
||
Catch ex As Exception
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortSendingErrorReason)}:{ex.Message}{vbCrLf}")
|
||
AppendTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortSendingErrorReason)}:{ex.Message}{vbCrLf}", Color.Red)
|
||
AppendTipTextSerial($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortSendingErrorReason)}:{ex.Message}{vbCrLf}", Color.Red)
|
||
Return False
|
||
End Try
|
||
Return True
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 接收485串口数据
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub SerialPort_DataReceived(sender As Object, e As Ports.SerialDataReceivedEventArgs) Handles SerialPort.DataReceived
|
||
Static bytes As Integer
|
||
_recvOffset = 0
|
||
Try
|
||
Do
|
||
bytes = SerialPort.BytesToRead
|
||
If bytes <= 0 Then Exit Sub
|
||
If bytes + _recvOffset >= 255 Then
|
||
SerialPort.Read(_recvBuffer, _recvOffset, 255 - _recvOffset)
|
||
ShowPortReceData(_recvBuffer)
|
||
AnalyticalData(_recvBuffer)
|
||
_recvOffset = 0
|
||
Else
|
||
SerialPort.Read(_recvBuffer, _recvOffset, bytes)
|
||
_recvOffset += bytes
|
||
End If
|
||
Thread.Sleep(10)
|
||
Loop While SerialPort.BytesToRead > 0
|
||
If _recvOffset > 0 Then
|
||
Dim buf(_recvOffset - 1) As Byte
|
||
Array.Copy(_recvBuffer, 0, buf, 0, buf.Length)
|
||
ShowPortReceData(buf)
|
||
AnalyticalData(_recvBuffer)
|
||
End If
|
||
Catch ex As Exception
|
||
AppendTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ReceiveSerialPortDataFailedReason)}:{ex.Message}{vbCrLf}", Color.Red)
|
||
AppendTipTextSerial($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ReceiveSerialPortDataFailedReason)}:{ex.Message}{vbCrLf}", Color.Red)
|
||
End Try
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 显示串口回复数据
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub ShowPortReceData(databuff() As Byte)
|
||
Dim portData As String = ByteToString(databuff)
|
||
Dim timeData As String
|
||
Dim cutTime As String
|
||
|
||
_nowTime = Now
|
||
_timeInterbval = _nowTime - _lastTime
|
||
_lastTime = _nowTime
|
||
timeData = $"{Math.Round(_timeInterbval.TotalMilliseconds, 0)}"
|
||
timeData = timeData.PadRight(6)
|
||
cutTime = $"{Now:HH:mm:ss:fff}"
|
||
|
||
AppendTipText("Com-RX:", Color.Blue)
|
||
AppendTipText("(" & cutTime & "-", Color.Black)
|
||
AppendTipText(timeData, Color.BlueViolet)
|
||
AppendTipText("):", Color.Black)
|
||
AppendTipText(portData & vbCrLf, Color.Blue)
|
||
AppendTipTextSerial("Com-RX:", Color.Blue)
|
||
AppendTipTextSerial("(" & cutTime & "-", Color.Black)
|
||
AppendTipTextSerial(timeData, Color.BlueViolet)
|
||
AppendTipTextSerial("):", Color.Black)
|
||
AppendTipTextSerial(portData & vbCrLf, Color.Blue)
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "解析串口数据"
|
||
|
||
''' <summary>
|
||
''' 解析串口数据
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub AnalyticalData(databuff() As Byte)
|
||
If databuff(0) = &H0 Then
|
||
If databuff(2) = &HF2 Then
|
||
If databuff(3) = &H0 Then
|
||
Select Case databuff(7)
|
||
Case &H15 '读取寄存器内容
|
||
DealReadRegisterInfo(databuff)
|
||
Case &H16 '设置寄存器内容
|
||
DealSetRegisterInfo(databuff)
|
||
Case &H17 '设备测试回复
|
||
If databuff(8) = &H3 Then
|
||
DealTourTest(databuff)
|
||
End If
|
||
DealInputCmd17(databuff)
|
||
Case &H1B '设置核心参数信息
|
||
DealSetInfo(databuff)
|
||
Case &H1C '读取核心参数信息
|
||
DealRecvInfo(databuff)
|
||
Case &H1D '设置MQTT
|
||
DealSetMQTTData(databuff)
|
||
Case &H1E '读取MQTT
|
||
DealPortReadMQTTData(databuff)
|
||
Case Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPort)}{LanguageData.StringList(MultiLanguageDAL.StringEnum.UnknownCommand)}!")
|
||
End Select
|
||
End If
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理读取寄存器信息
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealReadRegisterInfo(dataBuff() As Byte)
|
||
Console.WriteLine($"串口读取出 {dataBuff(8)} 个寄存器信息项")
|
||
AppendTipTextSerial($"串口读取出 {dataBuff(8)} 个寄存器信息项{vbCrLf}", Color.Green)
|
||
AppendTipTextSerial($"{ByteToString(dataBuff)}{vbCrLf}", Color.Green)
|
||
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理输入命令16_设置MAC地址
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealSetRegisterInfo(dataBuff() As Byte)
|
||
Select Case dataBuff(8)
|
||
Case &H1
|
||
DealSetMACData($"Pass", Color.Green)
|
||
Case &H2
|
||
DealSetMACData($"Fill", Color.Red)
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理输入命令17
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub DealInputCmd17(databuff() As Byte)
|
||
If databuff(9) = &HF1 Then
|
||
Dim bt1 As Byte = databuff(11)
|
||
Dim bt2 As Byte = databuff(12)
|
||
Dim bt3 As Byte = databuff(13)
|
||
Dim bt4 As Byte = databuff(14)
|
||
|
||
Dim a1 As Boolean = (bt1 >> 0) And 3
|
||
Dim a2 As Boolean = (bt1 >> 2) And 3
|
||
Dim a3 As Boolean = (bt1 >> 4) And 3
|
||
Dim a4 As Boolean = (bt1 >> 6) And 3
|
||
|
||
Dim a5 As Boolean = (bt2 >> 0) And 3
|
||
Dim a6 As Boolean = (bt2 >> 2) And 3
|
||
Dim a7 As Boolean = (bt2 >> 4) And 3
|
||
Dim a8 As Boolean = (bt2 >> 6) And 3
|
||
|
||
Dim a9 As Boolean = (bt3 >> 0) And 3
|
||
Dim a10 As Boolean = (bt3 >> 2) And 3
|
||
Dim a11 As Boolean = (bt3 >> 4) And 3
|
||
Dim a12 As Boolean = (bt3 >> 6) And 3
|
||
Dim a13 As Boolean = (bt4 >> 0) And 3
|
||
|
||
Select Case _testFrmIndex
|
||
Case _modelsTestGroup(0), _modelsTestGroup(4)
|
||
DealInputReplyData(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||
Case _modelsTestGroup(1)
|
||
DealC12InputReplyData(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||
Case _modelsTestGroup(2)
|
||
DealC8InputReplyData(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||
Case _modelsTestGroup(3)
|
||
DealV9InputReplyData(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||
End Select
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 刷新设置MAC委托
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <param name="rgba"></param>
|
||
Delegate Sub delegate_SearchSetMAC_Change(txt As String, rgba As Color)
|
||
|
||
''' <summary>
|
||
''' 处理设置MAC数据
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <param name="rgba"></param>
|
||
Private Sub DealSetMACData(txt As String, rgba As Color)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_SearchSetMAC_Change(AddressOf DealSetMACData)
|
||
Me.Invoke(dev, New Object() {txt, rgba})
|
||
Else
|
||
_blvC5TestForm.Label51.ForeColor = rgba
|
||
_blvC5TestForm.Label51.Text = txt
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 刷新C5输入回复数据
|
||
''' </summary>
|
||
Delegate Sub delegate_SearchInputReplyData_Change(a1 As Boolean, a2 As Boolean, a3 As Boolean, a4 As Boolean, a5 As Boolean, a6 As Boolean, a7 As Boolean, a8 As Boolean, a9 As Boolean, a10 As Boolean, a11 As Boolean, a12 As Boolean, a13 As Boolean)
|
||
|
||
''' <summary>
|
||
''' 处理输入回复数据
|
||
''' </summary>
|
||
Private Sub DealInputReplyData(a1 As Boolean, a2 As Boolean, a3 As Boolean, a4 As Boolean, a5 As Boolean, a6 As Boolean, a7 As Boolean, a8 As Boolean, a9 As Boolean, a10 As Boolean, a11 As Boolean, a12 As Boolean, a13 As Boolean)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_SearchInputReplyData_Change(AddressOf DealInputReplyData)
|
||
Me.Invoke(dev, New Object() {a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13})
|
||
Else
|
||
ChangeLblTxtColor(a1, _blvC5TestForm.Label41)
|
||
ChangeLblTxtColor(a2, _blvC5TestForm.Label42)
|
||
ChangeLblTxtColor(a3, _blvC5TestForm.Label43)
|
||
ChangeLblTxtColor(a4, _blvC5TestForm.Label44)
|
||
ChangeLblTxtColor(a5, _blvC5TestForm.Label45)
|
||
ChangeLblTxtColor(a6, _blvC5TestForm.Label46)
|
||
ChangeLblTxtColor(a7, _blvC5TestForm.Label47)
|
||
ChangeLblTxtColor(a8, _blvC5TestForm.LblInput8)
|
||
ChangeLblTxtColor(a9, _blvC5TestForm.LblInput9)
|
||
ChangeLblTxtColor(a10, _blvC5TestForm.LblInput10)
|
||
ChangeLblTxtColor(a11, _blvC5TestForm.LblInput11)
|
||
ChangeLblTxtColor(a12, _blvC5TestForm.LblInput12)
|
||
ChangeLblTxtColor(a13, _blvC5TestForm.LblInput13)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 刷新C12输入回复数据
|
||
''' </summary>
|
||
Delegate Sub delegate_SearchC12InputReplyData_Change(a1 As Boolean, a2 As Boolean, a3 As Boolean, a4 As Boolean, a5 As Boolean, a6 As Boolean, a7 As Boolean, a8 As Boolean, a9 As Boolean, a10 As Boolean, a11 As Boolean, a12 As Boolean, a13 As Boolean)
|
||
|
||
''' <summary>
|
||
''' 处理输入回复数据
|
||
''' </summary>
|
||
Private Sub DealC12InputReplyData(a1 As Boolean, a2 As Boolean, a3 As Boolean, a4 As Boolean, a5 As Boolean, a6 As Boolean, a7 As Boolean, a8 As Boolean, a9 As Boolean, a10 As Boolean, a11 As Boolean, a12 As Boolean, a13 As Boolean)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_SearchC12InputReplyData_Change(AddressOf DealC12InputReplyData)
|
||
Me.Invoke(dev, New Object() {a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13})
|
||
Else
|
||
ChangeLblTxtColor(a1, _blvC12TestForm.LblInput1)
|
||
ChangeLblTxtColor(a2, _blvC12TestForm.LblInput2)
|
||
ChangeLblTxtColor(a3, _blvC12TestForm.LblInput3)
|
||
ChangeLblTxtColor(a4, _blvC12TestForm.LblInput4)
|
||
ChangeLblTxtColor(a5, _blvC12TestForm.LblInput5)
|
||
ChangeLblTxtColor(a6, _blvC12TestForm.LblInput6)
|
||
ChangeLblTxtColor(a7, _blvC12TestForm.LblInput7)
|
||
ChangeLblTxtColor(a8, _blvC12TestForm.LblInput8)
|
||
ChangeLblTxtColor(a9, _blvC12TestForm.LblInput9)
|
||
ChangeLblTxtColor(a10, _blvC12TestForm.LblInput10)
|
||
ChangeLblTxtColor(a11, _blvC12TestForm.LblInput11)
|
||
ChangeLblTxtColor(a12, _blvC12TestForm.LblInput12)
|
||
ChangeLblTxtColor(a13, _blvC12TestForm.LblInput13)
|
||
End If
|
||
End Sub
|
||
Private Sub DealV9InputReplyData(a1 As Boolean, a2 As Boolean, a3 As Boolean, a4 As Boolean, a5 As Boolean, a6 As Boolean, a7 As Boolean, a8 As Boolean, a9 As Boolean, a10 As Boolean, a11 As Boolean, a12 As Boolean, a13 As Boolean)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_SearchC12InputReplyData_Change(AddressOf DealV9InputReplyData)
|
||
Me.Invoke(dev, New Object() {a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13})
|
||
Else
|
||
ChangeLblTxtColor(a1, _blvV9TestForm.LblInput1)
|
||
ChangeLblTxtColor(a2, _blvV9TestForm.LblInput2)
|
||
ChangeLblTxtColor(a3, _blvV9TestForm.LblInput3)
|
||
ChangeLblTxtColor(a4, _blvV9TestForm.LblInput4)
|
||
ChangeLblTxtColor(a5, _blvV9TestForm.LblInput5)
|
||
ChangeLblTxtColor(a6, _blvV9TestForm.LblInput6)
|
||
ChangeLblTxtColor(a7, _blvV9TestForm.LblInput7)
|
||
ChangeLblTxtColor(a8, _blvV9TestForm.LblInput8)
|
||
ChangeLblTxtColor(a9, _blvV9TestForm.LblInput9)
|
||
ChangeLblTxtColor(a10, _blvV9TestForm.LblInput10)
|
||
ChangeLblTxtColor(a11, _blvV9TestForm.LblInput11)
|
||
ChangeLblTxtColor(a12, _blvV9TestForm.LblInput12)
|
||
ChangeLblTxtColor(a13, _blvV9TestForm.LblInput13)
|
||
End If
|
||
End Sub
|
||
Private Sub DealC8InputReplyData(a1 As Boolean, a2 As Boolean, a3 As Boolean, a4 As Boolean, a5 As Boolean, a6 As Boolean, a7 As Boolean, a8 As Boolean, a9 As Boolean, a10 As Boolean, a11 As Boolean, a12 As Boolean, a13 As Boolean)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_SearchC12InputReplyData_Change(AddressOf DealC8InputReplyData)
|
||
Me.Invoke(dev, New Object() {a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13})
|
||
Else
|
||
ChangeLblTxtColor(a1, _blvC8TestForm.LblInput1)
|
||
ChangeLblTxtColor(a2, _blvC8TestForm.LblInput2)
|
||
ChangeLblTxtColor(a3, _blvC8TestForm.LblInput3)
|
||
ChangeLblTxtColor(a4, _blvC8TestForm.LblInput4)
|
||
ChangeLblTxtColor(a5, _blvC8TestForm.LblInput5)
|
||
ChangeLblTxtColor(a6, _blvC8TestForm.LblInput6)
|
||
ChangeLblTxtColor(a7, _blvC8TestForm.LblInput7)
|
||
ChangeLblTxtColor(a8, _blvC8TestForm.LblInput8)
|
||
ChangeLblTxtColor(a9, _blvC8TestForm.LblInput9)
|
||
ChangeLblTxtColor(a10, _blvC8TestForm.LblInput10)
|
||
ChangeLblTxtColor(a11, _blvC8TestForm.LblInput11)
|
||
ChangeLblTxtColor(a12, _blvC8TestForm.LblInput12)
|
||
ChangeLblTxtColor(a13, _blvC8TestForm.LblInput13)
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 改变Lable背景颜色
|
||
''' </summary>
|
||
''' <param name="flg"></param>
|
||
''' <param name="Lbl"></param>
|
||
Private Sub ChangeLblTxtColor(flg As Boolean, Lbl As Label)
|
||
If flg Then
|
||
Lbl.BackColor = Color.Green
|
||
Else
|
||
Lbl.BackColor = Color.Transparent
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理巡回测试
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub DealTourTest(databuff() As Byte)
|
||
'_isTourRealy = True
|
||
If databuff(7) = &H17 Then
|
||
If databuff(9) >= 95 Then
|
||
ModelsTourTestTipInfo($"Pass", Color.Green)
|
||
Else
|
||
ModelsTourTestTipInfo($"Fail", Color.Red)
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 刷新巡回数据委托
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <param name="rgba"></param>
|
||
Delegate Sub Delegate_SearchTourData_Change(txt As String, rgba As Color)
|
||
|
||
''' <summary>
|
||
''' 处理巡回测试数据
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <param name="rgba"></param>
|
||
Private Sub DealTourTestData(txt As String, rgba As Color)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New Delegate_SearchTourData_Change(AddressOf DealTourTestData)
|
||
Me.Invoke(dev, New Object() {txt, rgba})
|
||
Else
|
||
_blvC5TestForm.Label48.Text = txt
|
||
_blvC5TestForm.Label48.ForeColor = rgba
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 刷新巡回数据委托
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <param name="rgba"></param>
|
||
Delegate Sub Delegate_SearchTourC12Data_Change(txt As String, rgba As Color)
|
||
|
||
''' <summary>
|
||
''' 处理巡回测试数据
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <param name="rgba"></param>
|
||
Private Sub DealC12TourTestData(txt As String, rgba As Color)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New Delegate_SearchTourC12Data_Change(AddressOf DealC12TourTestData)
|
||
Me.Invoke(dev, New Object() {txt, rgba})
|
||
Else
|
||
_blvC12TestForm.Label48.Text = txt
|
||
_blvC12TestForm.Label48.ForeColor = rgba
|
||
End If
|
||
End Sub
|
||
''' <summary>
|
||
''' 处理巡回测试数据
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <param name="rgba"></param>
|
||
Private Sub DealC8TourTestData(txt As String, rgba As Color)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New Delegate_SearchTourC12Data_Change(AddressOf DealC8TourTestData)
|
||
Me.Invoke(dev, New Object() {txt, rgba})
|
||
Else
|
||
_blvC8TestForm.Label48.Text = txt
|
||
_blvC8TestForm.Label48.ForeColor = rgba
|
||
End If
|
||
End Sub
|
||
Private Sub DealV9TourTestData(txt As String, rgba As Color)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New Delegate_SearchTourC12Data_Change(AddressOf DealV9TourTestData)
|
||
Me.Invoke(dev, New Object() {txt, rgba})
|
||
Else
|
||
_blvV9TestForm.Label48.Text = txt
|
||
_blvV9TestForm.Label48.ForeColor = rgba
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 处理设置信息
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub DealSetInfo(databuff() As Byte)
|
||
If databuff(8) = &H1 Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheSuccess)}")
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}")
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理读取信息
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealRecvInfo(dataBuff() As Byte)
|
||
Dim host(63) As Byte
|
||
Array.Copy(dataBuff, 8, host, 0, host.Length)
|
||
Dim hosts As String = System.Text.Encoding.ASCII.GetString(host)
|
||
|
||
Dim amd(63) As Byte
|
||
Array.Copy(dataBuff, (8 + host.Length), amd, 0, amd.Length)
|
||
Dim amds As String = System.Text.Encoding.ASCII.GetString(amd)
|
||
|
||
RefreshParam(hosts, amds)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取核心参数信息-委托
|
||
''' </summary>
|
||
Delegate Sub delegate_RefreshParam_Change(hosts As String, amds As String)
|
||
|
||
''' <summary>
|
||
''' 读取核心参数信息
|
||
''' </summary>
|
||
Public Sub RefreshParam(hosts As String, amds As String)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_RefreshParam_Change(AddressOf RefreshParam)
|
||
Me.Invoke(dev, New Object() {hosts, amds})
|
||
Else
|
||
Label58.ForeColor = Color.Green
|
||
Label56.ForeColor = Color.Green
|
||
Label58.Text = hosts
|
||
Label56.Text = amds
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理设置MQTT数据
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub DealSetMQTTData(databuff() As Byte)
|
||
Select Case databuff(8)
|
||
Case 1
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPort)}{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheSuccess)}")
|
||
Case 2
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPort)}{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}")
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理读取MQTT数据
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub DealPortReadMQTTData(databuff() As Byte)
|
||
Dim count As Integer = databuff(8)
|
||
Console.WriteLine($"当前读取出{count}个MQTT参数信息")
|
||
Dim devType As Byte = databuff(9)
|
||
Dim len As Integer = databuff(10)
|
||
Dim data(len - 1) As Byte
|
||
Array.Copy(databuff, 12, data, 0, data.Length)
|
||
Dim Str As String = System.Text.Encoding.ASCII.GetString(data)
|
||
Select Case devType
|
||
Case &H1 '阿里云产品密钥
|
||
RefreshMQTTInfo(Str, TextBox28)
|
||
Case &H2 '阿里云设备名
|
||
RefreshMQTTInfo(Str, TextBox31)
|
||
Case &H3 '阿里云设备秘钥
|
||
RefreshMQTTInfo(Str, TextBox32)
|
||
Case &H4 '阿里云发布会话
|
||
RefreshMQTTInfo(Str, TextBox33)
|
||
Case &H5 '阿里云订阅会话
|
||
RefreshMQTTInfo(Str, TextBox34)
|
||
Case &H6 '保持在线时间
|
||
RefreshMQTTInfo(BitConverter.ToUInt16(data, 0), NumericUpDown1)
|
||
Case &H7 '发布会话
|
||
RefreshMQTTInfo(Str, TextBox52)
|
||
Case &H8 '发布会话
|
||
RefreshMQTTInfo(Str, TextBox53)
|
||
Case &H9 '域名
|
||
RefreshMQTTInfo(Str, TextBox54)
|
||
Case &HA '客户端ID
|
||
RefreshMQTTInfo(Str, TextBox55)
|
||
Case &HB '用户名
|
||
RefreshMQTTInfo(Str, TextBox56)
|
||
Case &HC '密码
|
||
RefreshMQTTInfo(Str, TextBox57)
|
||
Case Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPort)} {LanguageData.StringList(MultiLanguageDAL.StringEnum.MQTT)} {LanguageData.StringList(MultiLanguageDAL.StringEnum.UnknownCommand)}!")
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#End Region
|
||
|
||
#Region "网络通讯_UDP"
|
||
|
||
#Region "填充发送数据"
|
||
|
||
|
||
''' <summary>
|
||
''' 填充发送数据
|
||
''' </summary>
|
||
''' <param name="cmd"></param>
|
||
''' <param name="databuff"></param>
|
||
''' <returns></returns>
|
||
Public Function FillSendData(cmd As Byte, databuff As Byte()) As Byte()
|
||
Dim head As Byte()
|
||
Dim crc16 As Byte()
|
||
Dim sendPacket As Byte()
|
||
|
||
head = SendDataHead(cmd, databuff) '获取DataHaed
|
||
crc16 = CheckSendData(head, databuff) '获取Data检验值
|
||
sendPacket = FillCSeriesData(head, databuff, crc16) '组合发送数据
|
||
|
||
Return sendPacket
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 填充发送数据包头
|
||
''' </summary>
|
||
''' <param name="cmd"></param>
|
||
''' <param name="databuff"></param>
|
||
''' <returns></returns>
|
||
Private Function SendDataHead(cmd As Byte, databuff As Byte()) As Byte()
|
||
Dim head As Byte()
|
||
Dim packetLength As Byte() = IntToByteHB(_dataHeadLength + _dataCRCLength + databuff.Length)
|
||
head = FillSendPacketHead(packetLength, cmd)
|
||
Return head
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取帧号
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetFrameNumber() As Integer
|
||
Select Case _frameNumber
|
||
Case 1
|
||
_frameNumber = 1
|
||
Case 2
|
||
_frameNumber = 2
|
||
Case 3
|
||
_frameNumber = 3
|
||
Case 4
|
||
_frameNumber = 4
|
||
Case 5
|
||
_frameNumber = 5
|
||
Case Else
|
||
_frameNumber = 0
|
||
End Select
|
||
_frameNumber += 1
|
||
|
||
Return _frameNumber
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 填充发送信息包头
|
||
''' </summary>
|
||
''' <param name="length"></param>
|
||
''' <param name="cmd"></param>
|
||
''' <returns></returns>
|
||
Public Function FillSendPacketHead(length As Byte(), cmd As Byte) As Byte()
|
||
Dim dataHead As New List(Of Byte)
|
||
dataHead.AddRange(_fixedHead)
|
||
dataHead.AddRange(length)
|
||
dataHead.AddRange(_t3sa)
|
||
dataHead.Add(cmd)
|
||
dataHead.AddRange(IntToByteLB(GetFrameNumber()))
|
||
dataHead.AddRange(_fixeHostAddr)
|
||
Return dataHead.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 填充C系列数据包
|
||
''' </summary>
|
||
''' <param name="head"></param>
|
||
''' <param name="data"></param>
|
||
''' <param name="tail"></param>
|
||
''' <returns></returns>
|
||
Private Function FillCSeriesData(head As Byte(), data As Byte(), tail As Byte())
|
||
Dim databuff As New List(Of Byte)
|
||
databuff.AddRange(head)
|
||
databuff.AddRange(data)
|
||
databuff.AddRange(tail)
|
||
|
||
Return databuff.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 填充发送校验数据
|
||
''' </summary>
|
||
''' <param name="head"></param>
|
||
''' <param name="data"></param>
|
||
''' <returns></returns>
|
||
Public Function CheckSendData(head As Byte(), data As Byte()) As Byte()
|
||
Dim crc16 As Byte()
|
||
Dim dataList As New List(Of Byte)
|
||
dataList.AddRange(head)
|
||
dataList.AddRange(data)
|
||
crc16 = GetCRC16CheckSum(dataList.ToArray, dataList.Count)
|
||
Return crc16
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' CRC16校验
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
''' <param name="length"></param>
|
||
''' <returns></returns>
|
||
Public Function GetCRC16CheckSum(dataBuff() As Byte, length As Integer) As Byte()
|
||
Dim crc16 As UInteger
|
||
Dim crcBytes() As Byte
|
||
|
||
crc16 = &HFFFF
|
||
For i = 0 To length - 1
|
||
crc16 = crc16 And &HFFFF
|
||
crc16 = crc16 Xor dataBuff(i)
|
||
For bit = 0 To 7
|
||
crc16 = IIf((crc16 And 1) = 0, crc16 >> 1, (crc16 >> 1) Xor &HA001)
|
||
Next
|
||
Next
|
||
crc16 = crc16 And &HFFFF
|
||
crcBytes = BitConverter.GetBytes(UShort.Parse(crc16))
|
||
Return crcBytes
|
||
End Function
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "UDP网络发送接收"
|
||
|
||
''' <summary>
|
||
''' 枚举Data偏移
|
||
''' </summary>
|
||
Enum EnDataOffset
|
||
|
||
''' <summary>
|
||
''' 包头
|
||
''' </summary>
|
||
Head = 0
|
||
|
||
''' <summary>
|
||
''' 系统固定4个字节
|
||
''' </summary>
|
||
T3SA = 4
|
||
|
||
''' <summary>
|
||
''' 命令字
|
||
''' </summary>
|
||
CMD = 8
|
||
|
||
End Enum
|
||
|
||
|
||
''' <summary>UDP通讯套接字</summary>
|
||
Private _udpClient As UdpClient
|
||
|
||
|
||
''' <summary>
|
||
''' Socket网络套接字
|
||
''' </summary>
|
||
Private _socket As Socket
|
||
|
||
''' <summary>
|
||
''' 是否处于网络接收状态
|
||
''' </summary>
|
||
Private _isReceiving As Boolean
|
||
|
||
''' <summary>
|
||
''' UDP通讯接收线程
|
||
''' </summary>
|
||
Private _receiveThread As Thread
|
||
|
||
''' <summary>
|
||
''' 包头数据长度
|
||
''' </summary>
|
||
Private _dataHeadLength As UShort = 15
|
||
|
||
''' <summary>
|
||
''' 数据CRC校验长度
|
||
''' </summary>
|
||
Private _dataCRCLength As UShort = 2
|
||
|
||
''' <summary>
|
||
''' 发送数据包头
|
||
''' </summary>
|
||
Private _fixedHead As Byte() = {&HAA, &H55}
|
||
|
||
''' <summary>
|
||
''' 系统固定的4个字节
|
||
''' </summary>
|
||
Private _t3sa As Byte() = {&H54, &H33, &H53, &H41}
|
||
|
||
''' <summary>
|
||
''' 主机项目地址
|
||
''' </summary>
|
||
Public _fixeHostAddr As Byte() = {&HFF, &HFF, &HFF, &HFF}
|
||
|
||
''' <summary>
|
||
''' 帧号
|
||
''' </summary>
|
||
Private _frameNumber As Integer = 1
|
||
|
||
''' <summary>
|
||
''' 搜索命令的表格索引
|
||
''' </summary>
|
||
Private _CmdSearchIndex As Integer = 1
|
||
|
||
''' <summary>
|
||
''' RCU主机搜索命令的表格索引
|
||
''' </summary>
|
||
Private _RCUHostsSearchIndex As Integer = 1
|
||
|
||
''' <summary>
|
||
''' RCU搜索命令的表格索引
|
||
''' </summary>
|
||
Private _RCUSearchIndex As Integer = 1
|
||
|
||
''' <summary>
|
||
''' 查询设备状态的表格索引
|
||
''' </summary>
|
||
Private _QueryDevStateIndex As Integer = 1
|
||
|
||
''' <summary>
|
||
''' 设置配置数据标志位
|
||
''' </summary>
|
||
Private _SetConfigSign As Boolean
|
||
|
||
''' <summary>
|
||
''' 查询批量数据的表格索引
|
||
''' </summary>
|
||
Private _QueryBatchDataIndex As Integer = 1
|
||
|
||
|
||
'''' <summary>
|
||
'''' 网络连接
|
||
'''' </summary>
|
||
'Public Sub NetworkConnectChange()
|
||
' UpdataConnectStatus(_connectStatus)
|
||
'End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 更新连接状态
|
||
''' </summary>
|
||
Public Sub UpdataConnectStatus()
|
||
Dim address As IPAddress = IPAddress.Any
|
||
Dim ep As IPEndPoint
|
||
Dim addressString As String = _localIP
|
||
Dim port As Integer
|
||
|
||
If Integer.TryParse(_localPort, port) = False Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ThePortInputIsInvalid)}!")
|
||
_connectStatus = False
|
||
Return
|
||
End If
|
||
|
||
If IPAddress.TryParse(addressString, address) = False Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheIPAddressIsInvalid)}!")
|
||
_connectStatus = False
|
||
Return
|
||
End If
|
||
|
||
Try
|
||
ep = New IPEndPoint(address, port)
|
||
If _connectStatus = False Then
|
||
_isReceiving = True
|
||
|
||
'_udpClient = New UdpClient(New IPEndPoint(IPAddress.Any, 33444))
|
||
'ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf Receive))
|
||
|
||
_socket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
|
||
_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1) '广播的精髓
|
||
|
||
''加保护机制
|
||
_socket.Bind(ep)
|
||
_connectStatus = True
|
||
If IsNothing(_receiveThread) OrElse _receiveThread.IsAlive = False Then
|
||
_receiveThread = New Thread(New ThreadStart(AddressOf UdpRecviveData))
|
||
Console.WriteLine($"开始接收数据{_receiveThread.ManagedThreadId}")
|
||
_receiveThread.Start()
|
||
_isNetWork = True
|
||
End If
|
||
|
||
Else
|
||
_isReceiving = False
|
||
_connectStatus = False
|
||
_isNetWork = False
|
||
''加保护机制
|
||
_socket.Shutdown(SocketShutdown.Both)
|
||
_socket.Close()
|
||
End If
|
||
Catch ex As Exception
|
||
'AppendMatchTipText($"网络异常! {ex.Message}", Color.Red)
|
||
Console.WriteLine($"网络异常! {ex.Message}")
|
||
End Try
|
||
End Sub
|
||
|
||
'Private Sub Receive(obj As Object)
|
||
' Dim ep As New IPEndPoint(IPAddress.Any, 0)
|
||
' Dim bytes() As Byte
|
||
' While True
|
||
' Try
|
||
' bytes = _udpClient.Receive(ep)
|
||
' Catch ex As Exception
|
||
' Continue While
|
||
' End Try
|
||
|
||
' If bytes.Length = 0 Then Continue While
|
||
|
||
' _udpClient.Send(bytes, bytes.Length, ep)
|
||
' End While
|
||
'End Sub
|
||
|
||
''' <summary>
|
||
''' 发送UDP数据
|
||
''' </summary>
|
||
''' <param name="sendPacket"></param>
|
||
Public Sub SendUDPData(sendPacket As Byte())
|
||
Dim remoteEp As New IPEndPoint(_RemoteIP, _RemotePort)
|
||
If _connectStatus = True OrElse SerialPort.IsOpen Then
|
||
Console.WriteLine($"远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据:{ByteToString(sendPacket)}")
|
||
'If isDhcp Then
|
||
SetRegistData($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{sendPacket.Length }】:{ByteToString(sendPacket)}", 4)
|
||
_socket.SendTo(sendPacket, remoteEp)
|
||
'SetRegistData(($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{sendPacket.Length }】", 4)
|
||
'End If
|
||
|
||
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseOpenTheNetworkOrSerialPort)},IP地址:{remoteEp.Address}-{remoteEp.Port}!")
|
||
End If
|
||
End Sub
|
||
Public Sub SendUDPData1(sendPacket As Byte())
|
||
Dim remoteEp As New IPEndPoint(_RemoteIP, _RemotePort)
|
||
If _connectStatus = True OrElse SerialPort.IsOpen Then
|
||
'Console.WriteLine($"远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据:{ByteToString(sendPacket)}")
|
||
'If isDhcp Then
|
||
SetRegistData($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{sendPacket.Length }】:{ByteToString(sendPacket)}", 4)
|
||
_socket.SendTo(sendPacket, remoteEp)
|
||
'SetRegistData(($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{sendPacket.Length }】", 4)
|
||
'End If
|
||
|
||
|
||
Else
|
||
Return
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseOpenTheNetworkOrSerialPort)},IP地址:{remoteEp.Address}-{remoteEp.Port}!")
|
||
End If
|
||
End Sub
|
||
Public Sub threadSendUDPData(sendPacket As Byte())
|
||
Dim remoteEp As New IPEndPoint(IPAddress.Parse("255.255.255.255"), 3341)
|
||
If _connectStatus = True OrElse SerialPort.IsOpen Then
|
||
|
||
'Console.WriteLine($"远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据:{ByteToString(sendPacket)}")
|
||
' If isDhcp Then
|
||
SetRegistData($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{sendPacket.Length}】:{ByteToString(sendPacket)}", 4)
|
||
|
||
'End If
|
||
|
||
Try
|
||
gsocket.SendTo(sendPacket, remoteEp)
|
||
Catch ex As Exception
|
||
|
||
End Try
|
||
'SetRegistData(($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{sendPacket.Length}】", 4)
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseOpenTheNetworkOrSerialPort)},IP地址:{remoteEp.Address}-{remoteEp.Port}!")
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 发送Update数据
|
||
''' </summary>
|
||
''' <param name="sendPacket"></param>
|
||
Public Sub SendUpdateData(sendPacket As Byte(), remoteEp As IPEndPoint)
|
||
If _connectStatus = True OrElse SerialPort.IsOpen Then
|
||
'Console.WriteLine($"远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据:{ByteToString(sendPacket)}")
|
||
' If isDhcp Then
|
||
_socket.SendTo(sendPacket, remoteEp)
|
||
SetRegistData($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{ sendPacket.Length}】:{ByteToString(sendPacket)}", 4)
|
||
'SetRegistData($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{ sendPacket.Length}】", 4)
|
||
'End If
|
||
|
||
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseOpenTheNetworkOrSerialPort)},IP地址:{remoteEp.Address}-{remoteEp.Port}!")
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 发送Socket数据
|
||
''' </summary>
|
||
''' <param name="sendPacket"></param>
|
||
Public Sub SendSocketData(csb As CommSocketBLL, sendPacket As Byte(), remoteEp As IPEndPoint)
|
||
If csb.ConnSocket = True Then
|
||
' Console.WriteLine($"Socket远程IP地址:{remoteEp.Address}-{remoteEp.Port} Socket发送数据:{ByteToString(sendPacket)}")
|
||
' If isDhcp Then
|
||
SetRegistData($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{ sendPacket.Length}】:{ByteToString(sendPacket)}", 4)
|
||
csb.Sockets.SendTo(sendPacket, remoteEp)
|
||
'SetRegistData(($"TX:远程IP地址:{remoteEp.Address}-{remoteEp.Port} 发送数据【{ sendPacket.Length}】", 4)
|
||
'End If
|
||
|
||
|
||
Else
|
||
MsgBox($"请打开Socket网络!")
|
||
End If
|
||
End Sub
|
||
'Dim rcvData As String
|
||
'Dim rcvIdx As Integer
|
||
|
||
''' <summary>
|
||
''' UDP接收数据
|
||
''' </summary>
|
||
Private Sub UdpRecviveData()
|
||
Dim ep As New IPEndPoint(IPAddress.Any, _RemotePort)
|
||
Dim recvLength As Integer
|
||
Dim recvBuffer(1024) As Byte
|
||
|
||
While _connectStatus = True
|
||
Try
|
||
recvLength = _socket.ReceiveFrom(recvBuffer, ep)
|
||
Catch ex As Exception
|
||
Console.WriteLine($"Udp Recv Error:{ex.Message}")
|
||
'Return
|
||
|
||
' _socket.EndReceiveFrom(, ep)
|
||
Continue While
|
||
End Try
|
||
'rcvIdx += 1
|
||
'rcvData = rcvData & DateTime.Now.ToString("hh:mm:ss.fff") & "Idx = " & rcvIdx & " , Len = " & recvLength & vbCrLf
|
||
If ep.Address.ToString = "172.16.4.28" Then
|
||
Console.WriteLine($"远程IP:{ep.Address} 端口号:{ep.Port}")
|
||
End If
|
||
ReceivingDataProcessing(recvBuffer, recvLength, ep)
|
||
|
||
End While
|
||
End Sub
|
||
|
||
#End Region
|
||
|
||
#Region "接收数据处理"
|
||
|
||
''' <summary>
|
||
''' 接收数据处理
|
||
''' </summary>
|
||
''' <param name="recvBuffer"></param>
|
||
''' <param name="recvLength"></param>
|
||
''' <param name="ep"></param>
|
||
Private Sub ReceivingDataProcessing(recvBuffer() As Byte, recvLength As Integer, ep As IPEndPoint)
|
||
'Console.WriteLine($"{vbCrLf}远程IP:{ep.Address} 端口号:{ep.Port}")
|
||
Console.WriteLine($"{Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}:网络接收数据:({recvBuffer.Length }){ByteToString(recvBuffer)}")
|
||
Dim startIndex As Integer '定义一个开始的计数值
|
||
Dim packetLength As Integer '定义包的长度
|
||
While startIndex < recvLength '判断计数值是否小于总包长
|
||
If recvBuffer(startIndex) = _fixedHead(EnDataOffset.Head) AndAlso recvBuffer(startIndex + 1) = _fixedHead(EnDataOffset.Head + 1) Then ' 判断包头是否等于AA55
|
||
If recvBuffer(startIndex + EnDataOffset.T3SA) = _t3sa(0) AndAlso '判断第4,5,6,7位是否等于固定值
|
||
recvBuffer(startIndex + EnDataOffset.T3SA + 1) = _t3sa(1) AndAlso
|
||
recvBuffer(startIndex + EnDataOffset.T3SA + 2) = _t3sa(2) AndAlso
|
||
recvBuffer(startIndex + EnDataOffset.T3SA + 3) = _t3sa(3) Then
|
||
packetLength = recvBuffer(startIndex + 2) + recvBuffer(startIndex + 3) * 256 '赋值包长
|
||
If packetLength + startIndex <= recvLength Then '判断包长 + 计数值是否小于等于总包长
|
||
Dim packetData(packetLength - 1) As Byte '定义一个新数据包数组
|
||
Array.Copy(recvBuffer, startIndex, packetData, 0, packetLength) '复制数组 +5个重载
|
||
If CheckCRC16Sucess(packetData, packetData.Length) Then '判断CRC16校验是否通过
|
||
DealData(packetData, ep) '分部处理数据(显示文字提示)
|
||
startIndex += packetData.Length '计数值更新
|
||
Else
|
||
'Console.WriteLine($"CRC16校验失败!{vbNewLine}", Color.Red)
|
||
Exit While
|
||
End If
|
||
Else
|
||
'Console.WriteLine($"数据包长校验失败!{vbNewLine}", Color.Red)
|
||
Exit While
|
||
End If
|
||
Else
|
||
' Console.WriteLine($"数据校验失败!{vbNewLine}", Color.Red)
|
||
Exit While
|
||
End If
|
||
ElseIf recvBuffer(startIndex) = EnTftpCmd.Null Then
|
||
'Console.WriteLine($"TFTP接收_回复数据:{ByteToString(recvBuffer)}")
|
||
If recvBuffer(startIndex + 1) = EnTftpCmd.RRQ OrElse
|
||
recvBuffer(startIndex + 1) = EnTftpCmd.WRQ OrElse
|
||
recvBuffer(startIndex + 1) = EnTftpCmd.DATA OrElse
|
||
recvBuffer(startIndex + 1) = EnTftpCmd.ACK OrElse
|
||
recvBuffer(startIndex + 1) = EnTftpCmd.TError Then
|
||
packetLength = 4
|
||
If packetLength + startIndex <= recvLength Then
|
||
Dim packetData(packetLength - 1) As Byte
|
||
Array.Copy(recvBuffer, startIndex, packetData, 0, packetLength)
|
||
DealTftpData(packetData, ep)
|
||
startIndex += packetData.Length
|
||
End If
|
||
End If
|
||
Else
|
||
'Console.WriteLine($"非主机发送的数据!数据:{ByteToString(recvBuffer)}{vbNewLine}", Color.Red)
|
||
Exit While
|
||
End If
|
||
End While
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 检验CRC16成功
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
''' <param name="length"></param>
|
||
''' <returns></returns>
|
||
Private Function CheckCRC16Sucess(dataBuff() As Byte, length As Integer) As Boolean
|
||
Dim crcBytes() As Byte = GetCRC16CheckSum(dataBuff, length - 2)
|
||
If crcBytes(0) <> dataBuff(length - 2) OrElse crcBytes(1) <> dataBuff(length - 1) Then Return False
|
||
Return True
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 处理数据
|
||
''' </summary>
|
||
''' <param name="dataBuff">远程回复数据</param>
|
||
''' <param name="ep">远程IP和端口</param>
|
||
''' <returns></returns>
|
||
Private Function DealData(dataBuff() As Byte, ep As IPEndPoint)
|
||
'Console.WriteLine($"UDP收到的数据:{ByteToString(dataBuff)}")
|
||
' If isDhcp Then
|
||
SetRegistData($"RX:远程IP地址:{ep.Address}-{ep.Port} 接收数据【{dataBuff.Length }】:{ByteToString(dataBuff)}", 5)
|
||
'SetRegistData(($"RX:远程IP地址:{ep.Address}-{ep.Port} 接收数据【{dataBuff.Length }】", 5)
|
||
'End If
|
||
|
||
Select Case dataBuff(EnDataOffset.CMD)
|
||
'Case &H1 '搜索主机
|
||
'DealCmdSearchHost(dataBuff)
|
||
Case &HB1 '搜索主机_读取主机参数信息
|
||
DealCmdReadHostsInfo(dataBuff)
|
||
'pollThreadclass.SetRemoteIP(ep.Address.ToString)
|
||
Case &HB3 '校验命令
|
||
DealCmdCheckUpdate(dataBuff, ep)
|
||
Case &HB4 '复位命令
|
||
DealCmdResetUpdate(dataBuff, ep)
|
||
Case &HA '固件升级命令
|
||
DealCmdFirmwareUpdate(dataBuff, ep)
|
||
Case &HD1 '查询设备状态
|
||
DealCmdQueryDeviceState(dataBuff, ep)
|
||
Case &HD2 '配置下发
|
||
DealCmdConfigIssued(dataBuff)
|
||
Case &HD3 '网络各机型测试
|
||
DealCmdC5ModelTest(dataBuff)
|
||
Case &HD4 'MQTT设置
|
||
DealCmdSetMQTTData(dataBuff)
|
||
Case &HD5 'MQTT读取
|
||
DealCmdReadMQTTData(dataBuff)
|
||
Case &H30 '读取设置配置
|
||
DealCmdReadConfigData(dataBuff)
|
||
Case &H31 '设置配置
|
||
DealCmdSetConfigData(dataBuff)
|
||
Case &HDA '设置配置
|
||
DACmdSetConfigData(dataBuff)
|
||
Case &HD9 '设置配置
|
||
D9CmdSetConfigData(dataBuff)
|
||
|
||
|
||
Case Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.UnknownCommand)}!")
|
||
End Select
|
||
'AA 55 13 00 54 33 53 41 D3 BD 80 E9 03 6B 26 13 00 35 60!
|
||
|
||
Return True
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 搜索主机偏移量
|
||
''' </summary>
|
||
Private startIndex As Integer = 15
|
||
|
||
''' <summary>
|
||
''' 搜索主机_详细信息
|
||
''' </summary>
|
||
Public _searchHosts As Boolean
|
||
|
||
''' <summary>
|
||
''' 搜索主机
|
||
''' </summary>
|
||
Private _searchHost As Boolean
|
||
|
||
''' <summary>
|
||
''' 搜索主机列表键值对
|
||
''' </summary>
|
||
Public _hostsList As New Dictionary(Of String, SearchHostsListBLL)
|
||
|
||
|
||
''' <summary>
|
||
''' 搜索主机
|
||
''' 读取主机参数信息
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealCmdReadHostsInfo(dataBuff() As Byte)
|
||
If dataBuff.Length > 17 Then
|
||
|
||
Dim cars As String = Encoding.GetEncoding("GBK").GetString(New Byte() {255})
|
||
Dim btnState As String = dataBuff(startIndex) ''本机按键状态
|
||
|
||
Dim temp(startIndex) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), temp, 0, temp.Length - 1)
|
||
startIndex += temp.Length
|
||
Dim modelNumber As String = Encoding.UTF8.GetString(temp) ''机型编号
|
||
|
||
Dim pojectList(5) As String ''IP地址, 服务器地址, 子网掩码, 网关, 端口, DNS
|
||
For index = 0 To 5
|
||
If index = 4 Then
|
||
pojectList(index) = $"{BitConverter.ToUInt16(dataBuff, startIndex + 1)}"
|
||
startIndex += 4
|
||
Else
|
||
pojectList(index) = $"{dataBuff(startIndex + 1)}.{dataBuff(startIndex + 2)}.{dataBuff(startIndex + 3)}.{dataBuff(startIndex + 4)}"
|
||
startIndex += 4
|
||
End If
|
||
Next
|
||
|
||
Dim temps(19) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), temps, 0, temps.Length)
|
||
Dim swVersion As String = Encoding.UTF8.GetString(temps) ''软件版本号(20Byte)
|
||
swVersion = swVersion.Replace(vbNullChar, "")
|
||
startIndex += temps.Length
|
||
|
||
''主机时间
|
||
Dim hostTime As String = $"20{dataBuff(startIndex + 1)}/{dataBuff(startIndex + 2)}/{dataBuff(startIndex + 3)} {dataBuff(startIndex + 4)}:{dataBuff(startIndex + 5)}:{dataBuff(startIndex + 6)}" ''主机时间
|
||
startIndex += 6
|
||
Dim Launcher As String = ""
|
||
If dataBuff.Length > 440 Then
|
||
Dim Launbuff(15) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), Launbuff, 0, Launbuff.Length)
|
||
Launcher = Encoding.GetEncoding("GBK").GetString(Launbuff)
|
||
Launcher = Launcher.Replace(vbNullChar, "").Replace(cars, "")
|
||
End If
|
||
startIndex += 20
|
||
Dim mac As String = BitConverter.ToString(dataBuff, startIndex + 1, 6) ''MAC地址
|
||
startIndex += 6
|
||
|
||
Dim pojectLists(8) As String ''项目编号, 房号ID, 房型ID, 配置数据版本号, 房态, 季节, 锁定状态, 授权时间, 授权到期时间
|
||
Dim ttt1 As Date
|
||
For index = 0 To 8
|
||
If index = 1 Then '房号ID
|
||
pojectLists(index) = $"{BitConverter.ToUInt32(dataBuff, startIndex + 1)}"
|
||
pojectLists(index) = pojectLists(index).Replace(vbNullChar, "").Replace(cars, "")
|
||
startIndex += 4
|
||
ElseIf index = 2 Then '房型ID
|
||
pojectLists(index) = $"{BitConverter.ToUInt32(dataBuff, startIndex + 1)}"
|
||
pojectLists(index) = pojectLists(index).Replace(vbNullChar, "").Replace(cars, "")
|
||
startIndex += 4
|
||
ElseIf index = 3 Then '配置数据版本
|
||
pojectLists(index) = $"{dataBuff(startIndex + 1)}-{dataBuff(startIndex + 2)}-{dataBuff(startIndex + 3)}-{dataBuff(startIndex + 4)}"
|
||
pojectLists(index) = pojectLists(index).Replace(vbNullChar, "").Replace(cars, "")
|
||
startIndex += 4
|
||
ElseIf index = 4 Then '房态
|
||
pojectLists(index) = GetRoomStateTxt($"{BitConverter.ToUInt32(dataBuff, startIndex + 1)}")
|
||
pojectLists(index) = pojectLists(index).Replace(vbNullChar, "").Replace(cars, "")
|
||
startIndex += 4
|
||
ElseIf index = 5 Then '季节
|
||
Dim sen(3) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), sen, 0, sen.Length)
|
||
'pojectLists(index) = GetRoomSeasonTxt(sen)
|
||
pojectLists(index) = GetSeasonText(sen)
|
||
startIndex += 4
|
||
ElseIf index = 6 Then '锁定状态
|
||
pojectLists(index) = GetRoomLockTxt($"{BitConverter.ToUInt32(dataBuff, startIndex + 1)}")
|
||
startIndex += 4
|
||
ElseIf index = 7 Then '授权时间
|
||
'Dim times As Long = (CInt(dataBuff(startIndex + 4)) * 256 * 65536) + (CInt(dataBuff(startIndex + 3)) * 65536) + (CInt(dataBuff(startIndex + 2)) * 256) + CInt(dataBuff(startIndex + 1))
|
||
Dim times As Long = BitConverter.ToUInt32(dataBuff, startIndex + 1)
|
||
ttt1 = FromUnixTime(times, 8)
|
||
'Console.WriteLine($"---授权时间戳---: {times}")
|
||
'Console.WriteLine($"---授权时间---: {ttt1}")
|
||
pojectLists(index) = $"{ttt1}"
|
||
startIndex += 4
|
||
ElseIf index = 8 Then '授权到期时间
|
||
''Date.Now.ToUniversalTime.Ticks
|
||
Dim times As Long = BitConverter.ToUInt32(dataBuff, startIndex + 1)
|
||
Dim ttt2 As Date = FromUnixTime(times, 8)
|
||
Dim tm As TimeSpan = ttt2 - ttt1
|
||
' Console.WriteLine($"---授权时间戳---: {times}")
|
||
'Console.WriteLine($"---授权到期时间---: {tm.Days()}")
|
||
pojectLists(index) = $"{ttt2}"
|
||
startIndex += 4
|
||
Else
|
||
pojectLists(index) = $"{BitConverter.ToUInt32(dataBuff, startIndex + 1)}"
|
||
startIndex += 4
|
||
End If
|
||
Next
|
||
|
||
Dim roomnumber As String '房号备注
|
||
Dim tem(15) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), tem, 0, tem.Length)
|
||
roomnumber = Encoding.GetEncoding("GBK").GetString(tem)
|
||
roomnumber = roomnumber.Replace(vbNullChar, "").Replace(cars, "")
|
||
startIndex += 16
|
||
|
||
Dim roomtype As String '房型备注
|
||
Dim ter(15) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), ter, 0, ter.Length)
|
||
roomtype = Encoding.GetEncoding("GBK").GetString(ter)
|
||
roomtype = roomtype.Replace(vbNullChar, "").Replace(cars, "")
|
||
startIndex += 16
|
||
|
||
Dim tempNote(95) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), tempNote, 0, tempNote.Length)
|
||
Dim roomRemarks As String = Encoding.GetEncoding("GBK").GetString(tempNote) ''房间备注(96Byte)
|
||
roomRemarks = roomRemarks.Replace(vbNullChar, "").Replace($" ", "")
|
||
startIndex += tempNote.Length
|
||
|
||
Dim mcuNames As String = String.Empty
|
||
Dim centralNames As String = String.Empty
|
||
If dataBuff.Length > 384 Then
|
||
Dim mcuName(63) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), mcuName, 0, mcuName.Length)
|
||
mcuNames = Encoding.GetEncoding("GBK").GetString(mcuName) ''Core(64Byte)
|
||
Dim car As String = Encoding.GetEncoding("GBK").GetString(New Byte() {255})
|
||
mcuNames = mcuNames.Replace(vbNullChar, "").Replace(car, "")
|
||
startIndex += mcuName.Length
|
||
|
||
Dim centralName(63) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), centralName, 0, centralName.Length)
|
||
centralNames = Encoding.GetEncoding("GBK").GetString(centralName) ''Model(64Byte)
|
||
centralNames = centralNames.Replace(vbNullChar, "").Replace(car, "")
|
||
startIndex += centralName.Length
|
||
|
||
'Dim c As Char = mcuNames.Chars(0)
|
||
'Console.WriteLine("Length:" & mcuNames.Length() & " C0:" & c)
|
||
End If
|
||
|
||
Dim pzholtename As String = "****"
|
||
Dim pzroomname As String = "****"
|
||
If dataBuff.Length > 447 Then
|
||
|
||
Dim name(31) As Byte
|
||
Array.Copy(dataBuff, (startIndex + 1), name, 0, name.Length)
|
||
Console.WriteLine($"name={ByteToString(name)}")
|
||
|
||
pzholtename = Encoding.GetEncoding("GBK").GetString(name)
|
||
Console.WriteLine($"pzholtename={pzholtename}")
|
||
pzholtename = pzholtename.Replace(vbNullChar, "").Replace(cars, "")
|
||
startIndex += name.Length
|
||
|
||
Array.Copy(dataBuff, (startIndex + 1), name, 0, name.Length)
|
||
pzroomname = Encoding.GetEncoding("GBK").GetString(name)
|
||
'Console .WriteLine ()
|
||
Console.WriteLine($"配置房型数据:{ByteToString(name)}")
|
||
pzroomname = pzroomname.Replace(vbNullChar, "").Replace(cars, "")
|
||
End If
|
||
|
||
startIndex = 15
|
||
'显示数据到表格
|
||
If _searchHosts = True Then
|
||
'RefreshSearchHosts()
|
||
Dim isContainsKey As Boolean
|
||
Dim devName As String = SearchHostsListBLL.GetHostInfo(mac, pojectList(0))
|
||
Dim adecname As String = String.Empty
|
||
For Each astr In _hostsList.Keys
|
||
If astr.Contains(mac) Then
|
||
adecname = astr
|
||
End If
|
||
Next
|
||
If String.IsNullOrEmpty(adecname) Then
|
||
isContainsKey = False
|
||
Else
|
||
_hostsList.Remove(adecname)
|
||
isContainsKey = True
|
||
End If
|
||
|
||
If dataBuff.Length > 384 Then
|
||
If _hostsList.ContainsKey(devName) = False Then
|
||
|
||
_hostsList.Add(devName, New SearchHostsListBLL(btnState, modelNumber, pojectList(0), pojectList(1), pojectList(2),
|
||
pojectList(3), pojectList(4), pojectList(5), swVersion, hostTime, mac, pojectLists(0),
|
||
pojectLists(1), roomnumber, pojectLists(2), roomtype, pojectLists(3), pojectLists(4), pojectLists(5),
|
||
pojectLists(6), pojectLists(7), pojectLists(8), roomRemarks, mcuNames, centralNames, Launcher, pzholtename, pzroomname))
|
||
|
||
RefreshSearchHostL(_hostsList.Item(devName), isContainsKey)
|
||
'RefreshSearchHostsLists(_hostsList(devName).BtnSatae, _hostsList(devName).ModelNumber, _hostsList(devName).IPAddress, _hostsList(devName).ServiceAddress, _hostsList(devName).Subnet,
|
||
' _hostsList(devName).Gateway, _hostsList(devName).Port, _hostsList(devName).DNS, _hostsList(devName).SoftwareVersion, _hostsList(devName).HostsTime,
|
||
' _hostsList(devName).MAC, _hostsList(devName).ProjectCode, _hostsList(devName).RoomNumberId, _hostsList(devName).RoomNumber, _hostsList(devName).RoomTypeId,
|
||
' _hostsList(devName).RoomType, _hostsList(devName).ConfigVersion, _hostsList(devName).RoomState, _hostsList(devName).Season, _hostsList(devName).Lock,
|
||
' _hostsList(devName).PrivilegedTime, _hostsList(devName).PrivilegedDays, _hostsList(devName).RoomRemarks, _hostsList(devName).MCUName, _hostsList(devName).CentralName, _hostsList(devName).Launcher, _hostsList(devName).pzholtename, _hostsList(devName).pzroomname)
|
||
|
||
End If
|
||
|
||
|
||
End If
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
Delegate Sub InSearchHostsList_Change(HostData As SearchHostsListBLL, isupdate As Boolean)
|
||
|
||
Public Sub RefreshSearchHostL(HostData As SearchHostsListBLL, isupdate As Boolean)
|
||
|
||
|
||
If InvokeRequired = True Then
|
||
Dim dev As New InSearchHostsList_Change(AddressOf RefreshSearchHostL)
|
||
Me.Invoke(dev, HostData, isupdate)
|
||
Else
|
||
Dim rowsindex As Integer = 0
|
||
If isupdate Then
|
||
For r As Integer = 1 To GrdRCUHost.Rows - 1
|
||
If GrdRCUHost.Cell(r, EnRCUHosts.MAC).Text.Trim = HostData.MAC.Trim Then
|
||
|
||
rowsindex = r
|
||
Exit For
|
||
End If
|
||
Next
|
||
'MsgBox($"rowsindex={rowsindex}")
|
||
|
||
Else
|
||
GrdRCUHost.AddItem("")
|
||
rowsindex = _RCUSearchIndex
|
||
LabelCount.Text = $"0/{_RCUSearchIndex}"
|
||
_RCUSearchIndex += 1
|
||
End If
|
||
|
||
|
||
If rowsindex = 0 Then Return
|
||
|
||
|
||
'本机按键状态
|
||
If HostData.BtnSatae.Equals("0") Then
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.IPType).Text = "未知"
|
||
ElseIf HostData.BtnSatae.Equals("2") Then
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.IPType).Text = "手动"
|
||
Else
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.IPType).Text = "自动"
|
||
End If
|
||
|
||
' GrdRCUHost.Cell(rowsindex, EnRCUHosts.Affiliation).Text = "本地"
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.ModelNumber).Text = HostData.ModelNumber '机型编号
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.IPAddress).Text = ""
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.IPAddress).Text = HostData.IPAddress 'IP地址
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.ServiceAddr).Text = HostData.ServiceAddress '服务器地址
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.Subnet).Text = HostData.Subnet '子网掩码
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.Gateway).Text = HostData.Gateway '网关
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.Port).Text = HostData.Port '端口
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.DNS).Text = HostData.DNS 'DNS
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.SoftwareVersion).Text = HostData.SoftwareVersion '软件版本号
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.Time).Text = HostData.HostsTime '主机时间
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.MAC).Text = HostData.MAC 'MAC
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.ProjectCode).Text = HostData.ProjectCode '项目编号
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.RoomNumberId).Text = HostData.RoomNumberId '房号ID
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.RoomNumber).Text = HostData.RoomNumber '房号备注
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.RoomTypeId).Text = HostData.RoomTypeId '房型ID
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.RoomType).Text = HostData.RoomType '房型备注
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.ConfigVersion).Text = GetConfigVersion(HostData.ConfigVersion) '配置数据版本号
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.RoomState).Text = HostData.RoomState '房态
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.Season).Text = HostData.Season '季节
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.Lock).Text = HostData.Lock '锁定状态
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.PrivilegedTime).Text = HostData.PrivilegedTime '授权时间
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.PrivilegedDays).Text = HostData.PrivilegedDays '授权到期时间
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.RoomRemarks).Text = HostData.RoomRemarks '房间备注
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.MCUName).Text = HostData.MCUName 'MCU机型名称
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.CentralName).Text = HostData.CentralName '中控机型名称
|
||
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.Launcher).Text = HostData.Launcher '中控机型名称
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.pzholtename).Text = HostData.pzholtename '中控机型名称
|
||
GrdRCUHost.Cell(rowsindex, EnRCUHosts.pzroomname).Text = HostData.pzroomname
|
||
|
||
'GrdRCUHost.Range(_RCUSearchIndex, EnRCUHosts.ID, _RCUSearchIndex - 1, EnRCUHosts.ID).Merge()
|
||
'GrdRCUHost.Range(_RCUSearchIndex, EnRCUHosts.IsCheck, _RCUSearchIndex - 1, EnRCUHosts.IsCheck).Merge()
|
||
'GrdRCUHost.Range(_RCUSearchIndex, EnRCUHosts.Update, _RCUSearchIndex - 1, EnRCUHosts.Update).Merge()
|
||
|
||
'ComparativeData(_RCUSearchIndex, EnRCUHosts.ProjectCode, Color.Red, GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.Lock).ForeColor)
|
||
|
||
|
||
End If
|
||
|
||
|
||
End Sub
|
||
Public Function GetIPType(iptype As String) As String
|
||
If iptype.Trim.Equals("1") Then
|
||
Return "自动"
|
||
|
||
ElseIf iptype.Trim.Equals("2") Then
|
||
Return "手动"
|
||
|
||
Else
|
||
Return "数据异常(默认手动)"
|
||
|
||
End If
|
||
End Function
|
||
''' <summary>
|
||
''' 局部刷新设备列表委托
|
||
''' </summary>
|
||
Delegate Sub delegate_SearchHostsList_Change(btnSatae As String, modelNumber As String, iPAddress As String, serviceAddr As String, subnet As String, gateway As String, port As String, dns As String, softwareVer As String, hostsTime As String, mac As String, projectCode As String, roomNumberId As String, roomNumber As String, roomTypeId As String, roomType As String, configVer As String, roomState As String, season As String, lock As String, privilegedTime As String, privilegedDays As String, roomRemarks As String, mcu As String, central As String, Launcher As String, pzholtename As String, pzroomname As String)
|
||
|
||
''' <summary>
|
||
''' 刷新设备列表信息
|
||
''' 局部刷新_委托
|
||
''' </summary>
|
||
''' <param name="btnSatae"></param>
|
||
''' <param name="modelNumber"></param>
|
||
''' <param name="iPAddress"></param>
|
||
''' <param name="serviceAddr"></param>
|
||
''' <param name="subnet"></param>
|
||
''' <param name="gateway"></param>
|
||
''' <param name="port"></param>
|
||
''' <param name="dns"></param>
|
||
''' <param name="softwareVer"></param>
|
||
''' <param name="hostsTime"></param>
|
||
''' <param name="mac"></param>
|
||
''' <param name="projectCode"></param>
|
||
''' <param name="roomNumberId"></param>
|
||
''' <param name="roomNumber"></param>
|
||
''' <param name="roomTypeId"></param>
|
||
''' <param name="roomType"></param>
|
||
''' <param name="configVer"></param>
|
||
''' <param name="roomState"></param>
|
||
''' <param name="season"></param>
|
||
''' <param name="lock"></param>
|
||
''' <param name="privilegedTime"></param>
|
||
''' <param name="privilegedDays"></param>
|
||
''' <param name="roomRemarks"></param>
|
||
''' <param name="mcu"></param>
|
||
''' <param name="central"></param>
|
||
Public Sub RefreshSearchHostsLists(btnSatae As String, modelNumber As String, iPAddress As String, serviceAddr As String, subnet As String, gateway As String, port As String, dns As String, softwareVer As String, hostsTime As String, mac As String, projectCode As String, roomNumberId As String, roomNumber As String, roomTypeId As String, roomType As String, configVer As String, roomState As String, season As String, lock As String, privilegedTime As String, privilegedDays As String, roomRemarks As String, mcu As String, central As String, Launcher As String, pzholtename As String, pzroomname As String)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_SearchHostsList_Change(AddressOf RefreshSearchHostsLists)
|
||
Me.Invoke(dev, New Object() {btnSatae, modelNumber, iPAddress, serviceAddr, subnet, gateway, port, dns, softwareVer, hostsTime, mac, projectCode, roomNumberId, roomNumber, roomTypeId, roomType, configVer, roomState, season, lock, privilegedTime, privilegedDays, roomRemarks, mcu, central, Launcher, pzholtename, pzroomname})
|
||
Else
|
||
GrdRCUHost.AddItem("")
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.BtnSatae).Text = btnSatae '本机按键状态
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.ModelNumber).Text = modelNumber '机型编号
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.IPAddress).Text = iPAddress 'IP地址
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.ServiceAddr).Text = serviceAddr '服务器地址
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.Subnet).Text = subnet '子网掩码
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.Gateway).Text = gateway '网关
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.Port).Text = port '端口
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.DNS).Text = dns 'DNS
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.SoftwareVersion).Text = softwareVer '软件版本号
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.Time).Text = hostsTime '主机时间
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.MAC).Text = mac 'MAC
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.ProjectCode).Text = projectCode '项目编号
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.RoomNumberId).Text = roomNumberId '房号ID
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.RoomNumber).Text = roomNumber '房号备注
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.RoomTypeId).Text = roomTypeId '房型ID
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.RoomType).Text = roomType '房型备注
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.ConfigVersion).Text = GetConfigVersion(configVer) '配置数据版本号
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.RoomState).Text = roomState '房态
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.Season).Text = season '季节
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.Lock).Text = lock '锁定状态
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.PrivilegedTime).Text = privilegedTime '授权时间
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.PrivilegedDays).Text = privilegedDays '授权到期时间
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.RoomRemarks).Text = roomRemarks '房间备注
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.MCUName).Text = mcu 'MCU机型名称
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.CentralName).Text = central '中控机型名称
|
||
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.Launcher).Text = Launcher '中控机型名称
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.pzholtename).Text = pzholtename '中控机型名称
|
||
GrdRCUHost.Cell(_RCUSearchIndex, EnRCUHosts.pzroomname).Text = pzroomname
|
||
|
||
LabelCount.Text = $"0/{_RCUSearchIndex}"
|
||
_RCUSearchIndex += 1
|
||
End If
|
||
|
||
End Sub
|
||
Public Function GetConfigVersion(configVer As String) As Integer
|
||
Dim buff() As String = configVer.Split("-")
|
||
If buff.Length = 4 Then
|
||
If buff(3) > 0 AndAlso buff(2) > 0 Then
|
||
Return 0
|
||
Else
|
||
If buff(2) < 255 Then
|
||
Return buff(0) + buff(1) * 255
|
||
Else
|
||
Return 0
|
||
End If
|
||
|
||
End If
|
||
Else
|
||
Return 0
|
||
End If
|
||
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 获取房间状态文本
|
||
''' </summary>
|
||
''' <param name="state"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomStateTxt(state As String) As String
|
||
Dim sta As String
|
||
Select Case state
|
||
Case &H1
|
||
sta = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Rent)}"
|
||
Case &H2
|
||
sta = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CheckingOut)}"
|
||
Case &H3
|
||
sta = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.VacantRoom)}"
|
||
Case &H4
|
||
sta = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ForRent)}"
|
||
Case Else
|
||
sta = state
|
||
End Select
|
||
Return sta
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取房间是否锁定
|
||
''' </summary>
|
||
''' <param name="lock"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomLockTxt(lock As String) As String
|
||
Dim loc As String = String.Empty
|
||
Select Case lock
|
||
Case &H0
|
||
loc = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Normal)}"
|
||
Case &H1
|
||
loc = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Lock)}"
|
||
End Select
|
||
Return loc
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取房间季节
|
||
''' </summary>
|
||
''' <param name="season"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomSeasonTxt(season As Byte()) As String
|
||
Dim time As Integer = Date.Now.Month
|
||
Dim sens As Byte
|
||
Select Case time
|
||
Case 1, 2, 3, 4
|
||
sens = season(0)
|
||
Case 5, 6, 7, 8
|
||
sens = season(1)
|
||
Case 9, 10, 11, 12
|
||
sens = season(2)
|
||
End Select
|
||
|
||
Dim rseason As String = GetSeasonTxt(sens)
|
||
Return rseason
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 设置12个月的季节
|
||
''' </summary>
|
||
''' <param name="season"></param>
|
||
''' <returns></returns>
|
||
Private Function GetSeasonText(season As Byte())
|
||
Dim str As String = String.Empty
|
||
If season.Length > 3 Then
|
||
Dim str1 As String = GetMonthSeason(season(0))
|
||
Dim str2 As String = GetMonthSeason(season(1))
|
||
Dim str3 As String = GetMonthSeason(season(2))
|
||
|
||
str = str1 & str2 & str3
|
||
str = str.Insert(3, " ").Insert(7, " ").Insert(11, " ")
|
||
End If
|
||
Return str
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取当月季节
|
||
''' </summary>
|
||
''' <param name="season"></param>
|
||
''' <returns></returns>
|
||
Private Function GetMonthSeason(season As Byte)
|
||
Dim b1 As Byte = (season >> 0) And 3
|
||
Dim b2 As Byte = (season >> 2) And 3
|
||
Dim b3 As Byte = (season >> 4) And 3
|
||
Dim b4 As Byte = (season >> 6) And 3
|
||
Dim rseason As String = GetSeasonTxt(b1) & GetSeasonTxt(b2) & GetSeasonTxt(b3) & GetSeasonTxt(b4)
|
||
|
||
Return rseason
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取季节文本
|
||
''' </summary>
|
||
''' <param name="season"></param>
|
||
''' <returns></returns>
|
||
Private Function GetSeasonTxt(season As Byte) As String
|
||
Dim rseason As String = String.Empty
|
||
Select Case season
|
||
Case &H1
|
||
rseason = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Spring)}"
|
||
Case &H2
|
||
rseason = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Summer)}"
|
||
Case &H0
|
||
rseason = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Autumn)}"
|
||
Case &H3
|
||
rseason = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Winter)}"
|
||
End Select
|
||
Return rseason
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 搜索主机列表委托
|
||
''' </summary>
|
||
Delegate Sub delegate_SearchHosts_Change()
|
||
|
||
''' <summary>
|
||
''' 搜索主机列表信息
|
||
''' </summary>
|
||
Public Sub RefreshSearchHosts()
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_SearchHosts_Change(AddressOf RefreshSearchHosts)
|
||
Me.Invoke(dev)
|
||
Else
|
||
GrdRCUHost.Rows += 1
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 提示信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_SearchTipInfo_Change(TipTxt As String, selectnumber As Integer)
|
||
|
||
''' <summary>
|
||
''' 读取配置信息委托
|
||
''' </summary>
|
||
Public Sub RefreshSearchTipInfo(TipTxt As String, Optional selectnumber As Integer = 0)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_SearchTipInfo_Change(AddressOf RefreshSearchTipInfo)
|
||
Me.Invoke(dev, New Object() {TipTxt, selectnumber})
|
||
Else
|
||
|
||
LblTipTxt.Text = TipTxt
|
||
|
||
Select Case selectnumber
|
||
Case 1 ' 专门为日志调度所用
|
||
formlog.result = Button40.Tag
|
||
formlog.SetControl()
|
||
End Select
|
||
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询设备状态
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
''' <param name="ep"></param>
|
||
Private Sub DealCmdQueryDeviceState(dataBuff() As Byte, ep As IPEndPoint)
|
||
RefreshQueryDveStateIPAndAddr(ep)
|
||
|
||
Dim devCount As Int16 = dataBuff(15)
|
||
RefreshQueryDveState(devCount)
|
||
|
||
Dim len As Integer = 15
|
||
If dataBuff.Length > 15 Then
|
||
For index = 0 To devCount - 1
|
||
Dim iPAddress As String = ep.Address.ToString
|
||
Dim port As String = ep.Port
|
||
Dim devTypeBy As Byte = dataBuff(len + 1)
|
||
Dim devType As String = GetDevTypeToString(devTypeBy)
|
||
Dim devAddress As String = dataBuff(len + 2)
|
||
Dim devState As String = dataBuff(len + 3)
|
||
devState = GetDeviceState(devState)
|
||
Dim stateColor As Color = GetDeviceStateColor(devState)
|
||
|
||
Try
|
||
GrdDevExist.Cell(_QueryDevStateIndex, EnCmdQueryCol.IPAddress).Text = iPAddress
|
||
GrdDevExist.Cell(_QueryDevStateIndex, EnCmdQueryCol.Port).Text = port
|
||
GrdDevExist.Cell(_QueryDevStateIndex, EnCmdQueryCol.DevType).Text = devType
|
||
GrdDevExist.Cell(_QueryDevStateIndex, EnCmdQueryCol.DevAddress).Text = devAddress
|
||
GrdDevExist.Cell(_QueryDevStateIndex, EnCmdQueryCol.DveState).ForeColor = stateColor
|
||
GrdDevExist.Cell(_QueryDevStateIndex, EnCmdQueryCol.DveState).Text = devState
|
||
_QueryDevStateIndex += 1
|
||
len += 3
|
||
Catch ex As Exception
|
||
Console.WriteLine($"查询失败:{ex.Message}")
|
||
End Try
|
||
Next
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 刷新查询设备IP和地址委托
|
||
''' </summary>
|
||
Delegate Sub delegate_QueryDveStateIPAndAddr_Change(ep As IPEndPoint)
|
||
|
||
''' <summary>
|
||
''' 刷新查询设备IP和地址
|
||
''' </summary>
|
||
Public Sub RefreshQueryDveStateIPAndAddr(ep As IPEndPoint)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_QueryDveStateIPAndAddr_Change(AddressOf RefreshQueryDveStateIPAndAddr)
|
||
Me.Invoke(dev, {ep})
|
||
Else
|
||
LabelRemoteIp.ForeColor = Color.Blue
|
||
LabelRemotePort.ForeColor = Color.Blue
|
||
LabelRemoteIp.Text = ep.Address.ToString
|
||
LabelRemotePort.Text = ep.Port
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取设备状态文本
|
||
''' </summary>
|
||
''' <param name="devState"></param>
|
||
''' <returns></returns>
|
||
Private Function GetDeviceState(devState As String) As String
|
||
Dim state As String = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.UnknownState)}"
|
||
Select Case devState
|
||
Case $"1"
|
||
state = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Online)}"
|
||
Case $"2"
|
||
state = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Offline)}"
|
||
End Select
|
||
|
||
Return state
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取设备状态文本
|
||
''' </summary>
|
||
''' <param name="devState"></param>
|
||
''' <returns></returns>
|
||
Private Function GetDeviceStateColor(devState As String) As Color
|
||
Dim state As Color
|
||
Select Case devState
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Online)}"
|
||
state = Color.Green
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Offline)}"
|
||
state = Color.Red
|
||
End Select
|
||
|
||
Return state
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 刷新查询设备状态信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_QueryDveState_Change(devCount As Int16)
|
||
|
||
''' <summary>
|
||
''' 刷新查询设备状态信息
|
||
''' 局部刷新_委托
|
||
''' </summary>
|
||
Public Sub RefreshQueryDveState(devCount As Int16)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_QueryDveState_Change(AddressOf RefreshQueryDveState)
|
||
Me.Invoke(dev, {devCount})
|
||
Else
|
||
GrdDevExist.Rows += devCount
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理固件升级
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
''' <param name="ep"></param>
|
||
Private Sub DealCmdFirmwareUpdate(dataBuff As Byte(), ep As IPEndPoint)
|
||
Select Case dataBuff(15)
|
||
Case &H0
|
||
_isUpdateReply = True
|
||
'StateReplyLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadyUpgrade)}!", Color.Blue)
|
||
Case &H1
|
||
_isUpdateReply = False
|
||
'StateReplyLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.UpgradeAccomplish)}", Color.Green)
|
||
_RemotePort = _endPort
|
||
_upgradeCount += 1
|
||
|
||
Dim swVersion As String
|
||
If _UpgradeType = False Then
|
||
Dim temps(19) As Byte
|
||
Array.Copy(dataBuff, (15 + 1), temps, 0, temps.Length)
|
||
swVersion = Encoding.UTF8.GetString(temps) ''软件版本号(20Byte)
|
||
swVersion = swVersion.Replace(vbNullChar, "")
|
||
End If
|
||
|
||
|
||
|
||
Dim upkey As String = ep.Address.ToString & ":" & ep.Port
|
||
'If _upgrade.ContainsKey(ep) = True Then
|
||
If _newupgrade.ContainsKey(upkey) Then
|
||
' Dim upgradeIndex As Integer = _upgrade.Item(ep)
|
||
Dim upgradeIndex As Integer = _newupgrade.Item(upkey)
|
||
UpgradeSuccessColor(upgradeIndex, swVersion)
|
||
RefreshUpgradeCount($"升级成功个数:{_upgradeCount}/{_upgradeSum}", TSSUpgradeCount)
|
||
Console.WriteLine($"升级成功个数:{_upgradeCount}/{_upgradeSum}")
|
||
End If
|
||
|
||
|
||
' End If
|
||
Case &H2
|
||
_isUpdateReply = False
|
||
'StateReplyLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.UpgradeFailed)}!", Color.Red)
|
||
Case &H3
|
||
_isUpdateReply = False
|
||
'StateReplyLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.IncorrectNumberOfFileBlocks)}!", Color.Red)
|
||
Case &H4
|
||
_isUpdateReply = False
|
||
'StateReplyLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.FileTypeError)}!", Color.Red)
|
||
Case &H5
|
||
_isUpdateReply = False
|
||
'StateReplyLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.FileTypeError)}!", Color.Red)
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_UpgradeSuccessColorInfo_Change(Txt As Integer, swVersion As String)
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Public Sub UpgradeSuccessColor(Txt As Integer, swVersion As String)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_UpgradeSuccessColorInfo_Change(AddressOf UpgradeSuccessColor)
|
||
Me.Invoke(dev, New Object() {Txt, swVersion})
|
||
Else
|
||
If GrdRCUHost.Rows - 1 >= Txt Then
|
||
GrdRCUHost.Range(Txt, 1, Txt, GrdRCUHost.Cols - 1).BackColor = Color.Lime
|
||
GrdRCUHost.Cell(Txt, EnRCUHosts.Update).Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.UpgradeAccomplish)
|
||
If _UpgradeType = False Then
|
||
GrdRCUHost.Cell(Txt, EnRCUHosts.SoftwareVersion).Text = swVersion
|
||
End If
|
||
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_UpgradeResultColorInfo_Change(index As Integer, Text As String, color As Color)
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Public Sub UpgradeResultColor(index As Integer, Text As String, color As Color)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_UpgradeResultColorInfo_Change(AddressOf UpgradeResultColor)
|
||
Me.Invoke(dev, New Object() {index, Text, color})
|
||
Else
|
||
'GrdRCUHost.Range(index, 1, index, GrdRCUHost.Cols - 1).BackColor = color
|
||
GrdRCUHost.Cell(index, EnRCUHosts.Update).ForeColor = color
|
||
GrdRCUHost.Cell(index, EnRCUHosts.Update).Text = Text
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_UpgradeCountInfo_Change(Txt As String, TBo As ToolStripStatusLabel)
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Public Sub RefreshUpgradeCount(Txt As String, TBo As ToolStripStatusLabel)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_UpgradeCountInfo_Change(AddressOf RefreshUpgradeCount)
|
||
Me.Invoke(dev, New Object() {Txt, TBo})
|
||
Else
|
||
TBo.ForeColor = Color.Green
|
||
TBo.Text = Txt
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 升级校验命令处理
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
''' <param name="ep"></param>
|
||
Private Sub DealCmdCheckUpdate(dataBuff() As Byte, ep As IPEndPoint)
|
||
'Dim upgradeIndex As Integer = _upgrade.Item(ep)
|
||
Dim upkey As String = ep.Address.ToString & ":" & ep.Port
|
||
If Not _newupgrade.ContainsKey(upkey) Then
|
||
MsgBox($"未找到对应节点{upkey}")
|
||
End If
|
||
Dim upgradeIndex As Integer = _newupgrade.Item(upkey)
|
||
Select Case dataBuff(15)
|
||
Case &H1
|
||
_isCheckReply = True
|
||
UpgradeResultColor(upgradeIndex, $"校验成功", Color.Green)
|
||
Case &H2
|
||
_isCheckReply = False
|
||
UpgradeResultColor(upgradeIndex, $"校验失败", Color.Red)
|
||
Case &H3
|
||
_isCheckReply = False
|
||
UpgradeResultColor(upgradeIndex, $"未接收完成", Color.Yellow)
|
||
Case &H10
|
||
_isCheckReply = False
|
||
UpgradeResultColor(upgradeIndex, $"未知错误", Color.Red)
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 升级复位命令处理
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
''' <param name="ep"></param>
|
||
Private Sub DealCmdResetUpdate(dataBuff() As Byte, ep As IPEndPoint)
|
||
'Dim upgradeIndex As Integer = _upgrade.Item(ep)
|
||
Select Case dataBuff(15)
|
||
Case &H1
|
||
_isResetReply = True
|
||
'UpgradeResultColor(upgradeIndex, $"复位成功", Color.Green)
|
||
'StateReplyLabel($"复位成功", Color.Blue)
|
||
RebootPrompt(Label71, $"重启成功", Color.Green)
|
||
Case &H2
|
||
_isResetReply = False
|
||
'UpgradeResultColor(upgradeIndex, $"复位失败", Color.Red)
|
||
RebootPrompt(Label71, $"重启失败", Color.Red)
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_RebootPrompt_Change(lbl As Label, text As String, color As Color)
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Public Sub RebootPrompt(lbl As Label, text As String, color As Color)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_RebootPrompt_Change(AddressOf RebootPrompt)
|
||
Me.Invoke(dev, New Object() {lbl, text, color})
|
||
Else
|
||
lbl.ForeColor = color
|
||
lbl.Text = text
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理设置配置数据
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealCmdSetConfigData(dataBuff() As Byte)
|
||
Select Case dataBuff(15)
|
||
Case &H1
|
||
_SetConfigSign = True
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheSuccess)}!")
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheSuccess)}!")
|
||
Case &H2
|
||
_SetConfigSign = False
|
||
Console.WriteLine($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
Case Else
|
||
_SetConfigSign = False
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
End Select
|
||
End Sub
|
||
|
||
Private Sub DACmdSetConfigData(dataBuff() As Byte)
|
||
' Select Case dataBuff(15)
|
||
'Case &H1
|
||
' _SetConfigSign = True
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheSuccess)}!")
|
||
' RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheSuccess)}!")
|
||
'Case &H2
|
||
' _SetConfigSign = False
|
||
' Console.WriteLine($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
' RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
'Case Else
|
||
' _SetConfigSign = False
|
||
'MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
Dim result As String = String.Empty
|
||
Dim cnumber As Integer = 0
|
||
|
||
If dataBuff(15) = &HFF Then
|
||
result = "True"
|
||
End If
|
||
cnumber = dataBuff(17)
|
||
cnumber = (cnumber << 8) + dataBuff(16)
|
||
result = $"{result},{cnumber.ToString }"
|
||
cnumber = dataBuff(19)
|
||
cnumber = (cnumber << 8) + dataBuff(18)
|
||
result = $"{result},{cnumber.ToString }"
|
||
Dim temps(dataBuff(20) - 1) As Byte
|
||
Array.Copy(dataBuff, 21, temps, 0, temps.Length)
|
||
|
||
result = $"{result},{Encoding.UTF8.GetString(temps) }"
|
||
Button40.Tag = result
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!", 1)
|
||
|
||
|
||
'End Select
|
||
End Sub
|
||
|
||
Private Sub D9CmdSetConfigData(dataBuff() As Byte)
|
||
Select Case dataBuff(15)
|
||
Case &H1
|
||
_SetConfigSign = True
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheSuccess)}!")
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheSuccess)}!")
|
||
Case &H2
|
||
_SetConfigSign = False
|
||
Console.WriteLine($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
Case Else
|
||
'_SetConfigSign = False
|
||
'MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理读取配置数据
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealCmdReadConfigData(dataBuff() As Byte)
|
||
'Console.WriteLine($"读取出{dataBuff(15)} 个配置项")
|
||
If dataBuff.Length > 161 AndAlso dataBuff(15) = 18 AndAlso dataBuff(16) = &H1C Then
|
||
D9CmdReadConfigData(dataBuff)
|
||
Return
|
||
End If
|
||
|
||
If dataBuff.Length > 33 AndAlso dataBuff(15) = 2 AndAlso dataBuff(16) = &H34 Then
|
||
D9CmdReadConfigData1(dataBuff)
|
||
Return
|
||
End If
|
||
|
||
|
||
Dim projectNumber(3) As Byte
|
||
Dim configVer(3) As Byte
|
||
Dim roomNumber(3) As Byte
|
||
Dim roomType(3) As Byte
|
||
If dataBuff.Length > 44 Then
|
||
projectNumber(0) = dataBuff(20)
|
||
projectNumber(1) = dataBuff(21)
|
||
projectNumber(2) = dataBuff(22)
|
||
projectNumber(3) = dataBuff(23)
|
||
|
||
configVer(0) = dataBuff(28)
|
||
configVer(1) = dataBuff(29)
|
||
configVer(2) = dataBuff(30)
|
||
configVer(3) = dataBuff(31)
|
||
|
||
roomNumber(0) = dataBuff(36)
|
||
roomNumber(1) = dataBuff(37)
|
||
roomNumber(2) = dataBuff(38)
|
||
roomNumber(3) = dataBuff(39)
|
||
|
||
roomType(0) = dataBuff(44)
|
||
roomType(1) = dataBuff(45)
|
||
roomType(2) = dataBuff(46)
|
||
roomType(3) = dataBuff(47)
|
||
End If
|
||
|
||
Dim proBumber As Integer = projectNumber(3) * 256 + projectNumber(2) * 256 + projectNumber(1) * 256 + projectNumber(0)
|
||
Dim configVers As String = $"{configVer(0)}.{configVer(1)}.{configVer(2)}.{configVer(3)}"
|
||
Dim romNumber As Integer = roomNumber(3) * 256 + roomNumber(2) * 256 + roomNumber(1) * 256 + roomNumber(0)
|
||
Dim roomTypes As String = System.Text.Encoding.UTF8.GetString(roomType)
|
||
roomTypes = roomTypes.Replace(vbNullChar, "")
|
||
|
||
RefreshSearchConfigInfo(proBumber, configVers, romNumber, roomTypes)
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadAccomplish)}!")
|
||
|
||
DealReadRegisterData(dataBuff)
|
||
|
||
End Sub
|
||
|
||
Private Sub D9CmdReadConfigData1(dataBuff() As Byte)
|
||
Dim offlineTime, OuptputTime As Long
|
||
Dim projectNumber(3) As Byte
|
||
Array.Copy(dataBuff, 20, projectNumber, 0, 4)
|
||
offlineTime = projectNumber(0) + (projectNumber(1) * Math.Pow(256, 1)) + (projectNumber(2) * Math.Pow(256, 2)) + (projectNumber(3) * Math.Pow(256, 3))
|
||
Array.Copy(dataBuff, 28, projectNumber, 0, 4)
|
||
OuptputTime = projectNumber(0) + (projectNumber(1) * Math.Pow(256, 1)) + (projectNumber(2) * Math.Pow(256, 2)) + (projectNumber(3) * Math.Pow(256, 3))
|
||
Console.WriteLine($"offlineTime:{offlineTime},OuptputTime:{OuptputTime}")
|
||
RefreshNetworkInfo(offlineTime, TextBox62)
|
||
RefreshNetworkInfo(OuptputTime, TextBox65)
|
||
End Sub
|
||
Private Sub D9CmdReadConfigData(dataBuff() As Byte)
|
||
'从第16个元素开始 遍历数组 以每8个元素为一组
|
||
Dim addrval As List(Of Byte) = New List(Of Byte)()
|
||
|
||
'从第20个元素开始取4个元素
|
||
Dim projectNumber(3) As Byte
|
||
Array.Copy(dataBuff, 28, projectNumber, 0, 4)
|
||
'将projectNumber 转int
|
||
Dim proBumber As Long = projectNumber(0) + (projectNumber(1) * Math.Pow(256, 1)) + (projectNumber(2) * Math.Pow(256, 2)) + (projectNumber(3) * Math.Pow(256, 3))
|
||
|
||
Array.Copy(dataBuff, 20, projectNumber, 0, 4)
|
||
Dim portnumber As Integer = projectNumber(0) + (projectNumber(1) * Math.Pow(256, 1))
|
||
|
||
For i As Integer = 32 To dataBuff.Length - 3 Step 8
|
||
'取每组后4个元素添加到addrval中
|
||
|
||
For j As Integer = 4 To 7
|
||
addrval.Add(dataBuff(i + j))
|
||
|
||
Next
|
||
Next
|
||
'将addrval转换为字符串
|
||
' Dim servernameB As Byte() = System.Text.Encoding.UTF8.GetBytes(servername)
|
||
Dim addrvalStr As String = Encoding.UTF8.GetString(addrval.ToArray())
|
||
'将字符串取proBumber 长度
|
||
If addrvalStr.Length > proBumber Then
|
||
addrvalStr = addrvalStr.Substring(0, proBumber)
|
||
End If
|
||
|
||
RefreshNetworkInfo(addrvalStr.Trim, TextBox64)
|
||
RefreshNetworkInfo(portnumber, TextBox66)
|
||
'Console.WriteLine($"addrvalStr:{addrvalStr}")
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 解析读取寄存器数据
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealReadRegisterData(dataBuff() As Byte)
|
||
Dim count As Integer = CInt(dataBuff(15))
|
||
Console.WriteLine($"读取寄存器项:{count} 个")
|
||
Dim data() As Byte
|
||
Dim len As Integer
|
||
If dataBuff.Length > 19 Then
|
||
len = dataBuff.Length - 23
|
||
Dim datas(len) As Byte
|
||
data = {dataBuff(16), dataBuff(17), dataBuff(18), dataBuff(19)}
|
||
Array.Copy(dataBuff, 20, datas, 0, datas.Length)
|
||
|
||
If datas.Length > 100 Then
|
||
Dim project() As Byte = {datas(0), datas(1), datas(2), datas(3)}
|
||
Dim projectStr As String = $"{BitConverter.ToUInt32(project, 0)}"
|
||
|
||
Dim lock() As Byte = {datas(4), datas(5), datas(6), datas(7)}
|
||
Dim lockdata() As Byte = {datas(8), datas(9), datas(10), datas(11)}
|
||
Dim lockStr As String = GetRoomLockTxt($"{BitConverter.ToUInt32(lockdata, 0)}")
|
||
|
||
Dim roomState() As Byte = {datas(12), datas(13), datas(14), datas(15)}
|
||
Dim roomStatedate() As Byte = {datas(16), datas(17), datas(18), datas(19)}
|
||
Dim roomStateStr As String = GetRoomStateTxt($"{BitConverter.ToUInt32(roomStatedate, 0)}")
|
||
|
||
Dim season() As Byte = {datas(20), datas(21), datas(22), datas(23)}
|
||
Dim seasondate() As Byte = {datas(24), datas(25), datas(26), datas(27)}
|
||
Dim seasonStr As String = GetRoomSeasonTxt(seasondate)
|
||
|
||
Dim roomNumber() As Byte = {datas(28), datas(29), datas(30), datas(31)}
|
||
Dim roomNumberdate1() As Byte = {datas(32), datas(33), datas(34), datas(35)}
|
||
Dim roomNumberdate2() As Byte = {datas(40), datas(41), datas(42), datas(43)}
|
||
Dim roomNumberdate3() As Byte = {datas(48), datas(49), datas(50), datas(51)}
|
||
Dim roomNumberdate4() As Byte = {datas(56), datas(57), datas(58), datas(59)}
|
||
Dim roomNumberdata As New List(Of Byte)
|
||
roomNumberdata.AddRange(roomNumberdate1)
|
||
roomNumberdata.AddRange(roomNumberdate2)
|
||
roomNumberdata.AddRange(roomNumberdate3)
|
||
roomNumberdata.AddRange(roomNumberdate4)
|
||
Dim roomNumberStr As String = Encoding.GetEncoding("GBK").GetString(roomNumberdata.ToArray)
|
||
|
||
Dim roomNumberId() As Byte = {datas(60), datas(61), datas(62), datas(63)}
|
||
Dim roomNumberIddata() As Byte = {datas(64), datas(65), datas(66), datas(67)}
|
||
Dim roomNumberIdStr As String = $"{BitConverter.ToUInt32(roomNumberIddata, 0)}"
|
||
|
||
Dim roomType() As Byte = {datas(68), datas(69), datas(70), datas(71)}
|
||
Dim roomTypedate1() As Byte = {datas(72), datas(73), datas(74), datas(75)}
|
||
Dim roomTypedate2() As Byte = {datas(80), datas(81), datas(82), datas(83)}
|
||
Dim roomTypedate3() As Byte = {datas(88), datas(89), datas(90), datas(91)}
|
||
Dim roomTypedate4() As Byte = {datas(96), datas(97), datas(98), datas(99)}
|
||
Dim roomTypedata As New List(Of Byte)
|
||
roomTypedata.AddRange(roomTypedate1)
|
||
roomTypedata.AddRange(roomTypedate2)
|
||
roomTypedata.AddRange(roomTypedate3)
|
||
roomTypedata.AddRange(roomTypedate4)
|
||
Dim roomTypeStr As String = Encoding.GetEncoding("GBK").GetString(roomTypedata.ToArray)
|
||
|
||
Dim roomTypeId() As Byte = {datas(100), datas(101), datas(102), datas(103)}
|
||
Dim roomTypeIddata() As Byte = {datas(104), datas(105), datas(106), datas(107)}
|
||
Dim roomTypeIdStr As String = $"{BitConverter.ToUInt32(roomTypeIddata, 0)}"
|
||
|
||
If Enumerable.SequenceEqual(data, _projectCode) Then
|
||
RefreshMQTTInfo(projectStr, TBoProjectCode)
|
||
End If
|
||
If Enumerable.SequenceEqual(lock, _roomLocks) Then
|
||
RefreshMQTTInfo(lockStr, CBoLocks)
|
||
End If
|
||
If Enumerable.SequenceEqual(roomState, _roomStates) Then
|
||
RefreshMQTTInfo(roomStateStr, CBoRoomStates)
|
||
End If
|
||
If Enumerable.SequenceEqual(season, _season) Then
|
||
RefreshMQTTInfo(seasonStr, CBoSeasons)
|
||
End If
|
||
If Enumerable.SequenceEqual(roomNumber, _roomNuRemark) Then
|
||
RefreshMQTTInfo(roomNumberStr, TBoRoomTN)
|
||
End If
|
||
If Enumerable.SequenceEqual(roomNumberId, _roomNuRemarkID) Then
|
||
RefreshMQTTInfo(roomNumberIdStr, TBoRoomTNId)
|
||
End If
|
||
If Enumerable.SequenceEqual(roomType, _roomTpRemark) Then
|
||
RefreshMQTTInfo(roomTypeStr, TBoRoomTP)
|
||
End If
|
||
If Enumerable.SequenceEqual(roomTypeId, _roomTpRemarkID) Then
|
||
RefreshMQTTInfo(roomTypeIdStr, TBoRoomTPId)
|
||
End If
|
||
|
||
'If Enumerable.SequenceEqual(data, _roomRemark) Then
|
||
' RefreshMQTTInfo(Str, TBoRoomRemarks)
|
||
'End If
|
||
End If
|
||
|
||
If Enumerable.SequenceEqual(data, _networkIpInfo) Then '网络信息
|
||
DealReadNetworkInfo(datas)
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理读取网络信息
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealReadNetworkInfo(dataBuff() As Byte)
|
||
Dim ipAdde(3) As Byte 'IP
|
||
ipAdde(0) = dataBuff(0)
|
||
ipAdde(1) = dataBuff(1)
|
||
ipAdde(2) = dataBuff(2)
|
||
ipAdde(3) = dataBuff(3)
|
||
|
||
Dim subnet(3) As Byte
|
||
Dim data1() As Byte = {dataBuff(4), dataBuff(5), dataBuff(6), dataBuff(7)}
|
||
If Enumerable.SequenceEqual(data1, _networkSubnetInfo) Then '网络信息子网
|
||
subnet(0) = dataBuff(8)
|
||
subnet(1) = dataBuff(9)
|
||
subnet(2) = dataBuff(10)
|
||
subnet(3) = dataBuff(11)
|
||
End If
|
||
|
||
Dim gateway(3) As Byte
|
||
Dim data2() As Byte = {dataBuff(12), dataBuff(13), dataBuff(14), dataBuff(15)}
|
||
If Enumerable.SequenceEqual(data2, _networkGatewayInfo) Then '网络信息网关
|
||
gateway(0) = dataBuff(16)
|
||
gateway(1) = dataBuff(17)
|
||
gateway(2) = dataBuff(18)
|
||
gateway(3) = dataBuff(19)
|
||
End If
|
||
|
||
Dim dns(3) As Byte
|
||
Dim data3() As Byte = {dataBuff(20), dataBuff(21), dataBuff(22), dataBuff(23)}
|
||
If Enumerable.SequenceEqual(data3, _networkDNSInfo) Then '网络信息DNS
|
||
dns(0) = dataBuff(24)
|
||
dns(1) = dataBuff(25)
|
||
dns(2) = dataBuff(26)
|
||
dns(3) = dataBuff(27)
|
||
End If
|
||
|
||
Dim server(3) As Byte
|
||
Dim data4() As Byte = {dataBuff(28), dataBuff(29), dataBuff(30), dataBuff(31)}
|
||
If Enumerable.SequenceEqual(data4, _networkServerInfo) Then '服务器
|
||
server(0) = dataBuff(32)
|
||
server(1) = dataBuff(33)
|
||
server(2) = dataBuff(34)
|
||
server(3) = dataBuff(35)
|
||
End If
|
||
|
||
Dim dhcp(3) As Byte
|
||
Dim data5() As Byte = {dataBuff(36), dataBuff(37), dataBuff(38), dataBuff(39)}
|
||
If Enumerable.SequenceEqual(data4, _networkServerInfo) Then 'DHCP
|
||
dhcp(0) = dataBuff(40)
|
||
dhcp(1) = dataBuff(41)
|
||
dhcp(2) = dataBuff(42)
|
||
dhcp(3) = dataBuff(43)
|
||
End If
|
||
|
||
|
||
RefreshNetworkInfo(CInt(ipAdde(0)), TextBox49)
|
||
RefreshNetworkInfo(CInt(ipAdde(1)), TextBox48)
|
||
RefreshNetworkInfo(CInt(ipAdde(2)), TextBox51)
|
||
RefreshNetworkInfo(CInt(ipAdde(3)), TextBox50)
|
||
|
||
RefreshNetworkInfo(CInt(subnet(0)), TextBox39)
|
||
RefreshNetworkInfo(CInt(subnet(1)), TextBox38)
|
||
RefreshNetworkInfo(CInt(subnet(2)), TextBox37)
|
||
RefreshNetworkInfo(CInt(subnet(3)), TextBox36)
|
||
|
||
RefreshNetworkInfo(CInt(gateway(0)), TextBox43)
|
||
RefreshNetworkInfo(CInt(gateway(1)), TextBox42)
|
||
RefreshNetworkInfo(CInt(gateway(2)), TextBox41)
|
||
RefreshNetworkInfo(CInt(gateway(3)), TextBox40)
|
||
|
||
RefreshNetworkInfo(CInt(dns(0)), TextBox47)
|
||
RefreshNetworkInfo(CInt(dns(1)), TextBox46)
|
||
RefreshNetworkInfo(CInt(dns(2)), TextBox45)
|
||
RefreshNetworkInfo(CInt(dns(3)), TextBox44)
|
||
|
||
RefreshNetworkInfo(CInt(server(0)), TextBox60)
|
||
RefreshNetworkInfo(CInt(server(1)), TextBox59)
|
||
RefreshNetworkInfo(CInt(server(2)), TextBox58)
|
||
RefreshNetworkInfo(CInt(server(3)), TextBox35)
|
||
|
||
Dim rb3 As Boolean = GetDHCPResultInfo(dhcp(0))
|
||
Dim rb4 As Boolean = GetDHCPResultInfo(dhcp(1))
|
||
Dim rb5 As Boolean = GetDHCPResultInfo(dhcp(2))
|
||
|
||
RefreshNetworkDHCPInfo(rb3, CheckBox31)
|
||
RefreshNetworkDHCPInfo(rb4, CheckBox32)
|
||
RefreshNetworkDHCPInfo(rb5, CheckBox33)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取DHCP结果
|
||
''' </summary>
|
||
''' <param name="data"></param>
|
||
''' <returns></returns>
|
||
Private Function GetDHCPResultInfo(data As Byte) As Boolean
|
||
Select Case data
|
||
Case &H1
|
||
Return True
|
||
Case &H2
|
||
Return False
|
||
End Select
|
||
|
||
Return False
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_NetworkInfo_Change(Txt As String, TBo As TextBox)
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Public Sub RefreshNetworkInfo(Txt As String, TBo As TextBox)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_NetworkInfo_Change(AddressOf RefreshNetworkInfo)
|
||
Me.Invoke(dev, New Object() {Txt, TBo})
|
||
Else
|
||
TBo.Text = Txt
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取网络DHCP信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_NetworkDHCPInfo_Change(Txt As Boolean, TBo As CheckBox)
|
||
|
||
''' <summary>
|
||
''' 读取网络信息委托
|
||
''' </summary>
|
||
Public Sub RefreshNetworkDHCPInfo(Txt As Boolean, TBo As CheckBox)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_NetworkDHCPInfo_Change(AddressOf RefreshNetworkDHCPInfo)
|
||
Me.Invoke(dev, New Object() {Txt, TBo})
|
||
Else
|
||
TBo.Checked = Txt
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取配置信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_SearchConfigInfo_Change(proBumber As String, configVers As String, romNumber As String, roomTypes As String)
|
||
|
||
''' <summary>
|
||
''' 读取配置信息委托
|
||
''' </summary>
|
||
Public Sub RefreshSearchConfigInfo(proBumber As String, configVers As String, romNumber As String, roomTypes As String)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_SearchConfigInfo_Change(AddressOf RefreshSearchConfigInfo)
|
||
Me.Invoke(dev, New Object() {proBumber, configVers, romNumber, roomTypes})
|
||
Else
|
||
ComboBox6.Text = proBumber
|
||
ComboBox7.Text = configVers
|
||
ComboBox4.Text = romNumber
|
||
TextBox24.Text = roomTypes
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理配置下发
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealCmdConfigIssued(dataBuff() As Byte)
|
||
'Console.WriteLine($"配置下发回复数据 {ByteToString(dataBuff)}")
|
||
If dataBuff(15) = 1 Then
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.IssuedTheSuccessful)}!")
|
||
ElseIf dataBuff(16) = 2 Then
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.IssuedTheFailure)}!")
|
||
End If
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询设备状态_枚举
|
||
''' </summary>
|
||
Enum EnCmdQueryCol
|
||
''' <summary>ID</summary>
|
||
ID
|
||
''' <summary>IP地址</summary>
|
||
IPAddress
|
||
''' <summary>端口号</summary>
|
||
Port
|
||
''' <summary>设备类型</summary>
|
||
DevType
|
||
''' <summary>设备地址</summary>
|
||
DevAddress
|
||
''' <summary>设备状态</summary>
|
||
DveState
|
||
End Enum
|
||
|
||
|
||
''' <summary> 查询设备表状态列集合 </summary>
|
||
Private _queryDevStateColsTables() As String = {"ID", $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.IPAddress)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Port)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DeviceType)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DeviceAddress)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DeviceState)}"}
|
||
|
||
''' <summary>
|
||
''' 查询设备表状态列集合
|
||
''' </summary>
|
||
Private Sub InitQueryDevStateTabData()
|
||
GrdDevExist.DisplayRowNumber = True
|
||
GrdDevExist.Cols = _queryDevStateColsTables.Length
|
||
GrdDevExist.Rows = 1
|
||
|
||
For index = 1 To GrdDevExist.Cols - 1
|
||
With GrdDevExist.Cell(0, index)
|
||
.Text = _queryDevStateColsTables(index)
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font("Arial", 8, FontStyle.Bold)
|
||
End With
|
||
|
||
With GrdDevExist.Column(index)
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 100
|
||
End With
|
||
Next
|
||
GrdDevExist.SelectionMode = FlexCell.SelectionModeEnum.ByRow '设置选中行
|
||
GrdDevExist.AllowUserSort = True
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 匹配配置版本号
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
Private Sub MatchVersion(txt As String)
|
||
If txt = "0.0.0.0" Then
|
||
RefreshSearchTipInfo($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheCurrentRoomIsNotConfigured)}!")
|
||
End If
|
||
End Sub
|
||
|
||
|
||
'''' <summary>
|
||
'''' 根据项目编号和房间编号查询配置版本
|
||
'''' 同时查询配置数据
|
||
'''' </summary>
|
||
'''' <param name="sender"></param>
|
||
'''' <param name="e"></param>
|
||
'Private Sub ComboBox7_DropDown_1(sender As Object, e As EventArgs) Handles ComboBox7.DropDown
|
||
' If ComboBox6.Text = Nothing Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheItemNumber)}!")
|
||
' Exit Sub
|
||
' End If
|
||
' If ComboBox4.Text = Nothing Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectRoomNumber)}!")
|
||
' Exit Sub
|
||
' End If
|
||
|
||
' ComboBox7.Items.Clear()
|
||
|
||
' Dim addItems As New List(Of String)
|
||
' Dim cols As String = $" DISTINCT ConfigVersion"
|
||
' Dim dtTable As DataTable = _SqlServer.Query(cols, _DevConfigName, "")
|
||
|
||
' For r = 0 To dtTable.Rows.Count - 1
|
||
' addItems.Add(dtTable(r)(0))
|
||
' Next
|
||
|
||
' ComboBox7.Items.AddRange(addItems.ToArray)
|
||
|
||
'End Sub
|
||
|
||
'Private Sub ComboBox7_TextChanged(sender As Object, e As EventArgs) Handles ComboBox7.TextChanged
|
||
' If ComboBox6.Text Is Nothing And ComboBox6.Text = "" Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheItemNumberIsEmpty)}!")
|
||
' Exit Sub
|
||
' End If
|
||
|
||
' If ComboBox4.Text Is Nothing And ComboBox4.Text = "" Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheItemNumberIsEmpty)}!")
|
||
' Exit Sub
|
||
' End If
|
||
|
||
' If ComboBox7.Text Is Nothing And ComboBox7.Text = "" Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheConfigVersionIsEmpty)}!")
|
||
' Exit Sub
|
||
' End If
|
||
|
||
' Dim projectCode As String = ComboBox6.Text
|
||
' Dim roomNumber As String = ComboBox4.Text
|
||
' Dim config As String = ComboBox7.Text
|
||
|
||
' 'Dim taTable As DataTable
|
||
' 'Dim queryCols As String = $"ProjectNumber, RoomNumber, RoomType"
|
||
' 'Dim conditions As String = $"WHERE ProjectNumber = '{projectCode}' AND RoomNumber = '{roomNumber}'"
|
||
' 'taTable = _SqlServer.Query(queryCols, _RoomInfoLists, conditions)
|
||
|
||
' 'If taTable.Rows.Count > 0 Then
|
||
' ' Dim addItem As String = taTable.Rows(0)(2)
|
||
' ' TextBox24.Text = addItem
|
||
' 'End If
|
||
|
||
' If TextBox24.Text Is Nothing And TextBox24.Text = "" Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheItemNumber)}!")
|
||
' Exit Sub
|
||
' End If
|
||
' Dim roomType As String = TextBox24.Text
|
||
|
||
' Dim queryCol As String = $"DevType, DevAddress, DevBaud, DevPort, DevProtocol, DevTypeNumber, DevName, Remarks"
|
||
' Dim condition As String = $"WHERE ProjectNumber = '{projectCode}' AND RoomType = '{roomType}' AND ConfigVersion = '{config}'"
|
||
' _SqlServer.Query(queryCol, _DevConfigName, GrdConfigDatas, condition)
|
||
|
||
'End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 根据项目编码查询项目名称
|
||
''' </summary>
|
||
''' <param name="ProjectCode"></param>
|
||
Private Sub QueryProjectName(ProjectCode As String)
|
||
Dim projectName As DataTable
|
||
Dim queryCol As String = $"ProjectNumber, ProjectName"
|
||
Dim conditons As String = $"Where ProjectNumber = {ProjectCode}"
|
||
projectName = _SqlServer.Query(queryCol, _ProjectInfoLists, conditons)
|
||
|
||
'dt.Rows[行][列] = DBNull.Value; '设置DataTable单元格为空值
|
||
If projectName.Rows.Count > 0 Then
|
||
Dim addItem As String = projectName.Rows(0)(1)
|
||
TextBox23.Text = addItem
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理 TFTP 数据
|
||
''' </summary>
|
||
''' <param name="packetData"></param>
|
||
''' <param name="ep"></param>
|
||
Private Sub DealTftpData(packetData As Byte(), ep As IPEndPoint)
|
||
Select Case packetData(1)
|
||
Case EnTftpCmd.RRQ
|
||
|
||
Case EnTftpCmd.WRQ
|
||
|
||
Case EnTftpCmd.DATA
|
||
|
||
Case EnTftpCmd.ACK
|
||
_TftpNewPort = ep.Port
|
||
_isUpdateWRQReply = True
|
||
_isTftpSendReply = True
|
||
_resend = 0
|
||
' If isDhcp Then
|
||
SetRegistData($"RX:远程IP地址:{ep.Address}-{ep.Port} 接收数据【{packetData.Length}】:{ByteToString(packetData)}", 5)
|
||
'SetRegistData(($"RX:远程IP地址:{ep.Address}-{ep.Port} 接收数据【{packetData.Length}】", 5)
|
||
'End If
|
||
|
||
Case EnTftpCmd.TError
|
||
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理C5机型测试
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealCmdC5ModelTest(dataBuff As Byte())
|
||
'ShowPortReceData(dataBuff)
|
||
AppendTipText($"RX:{ByteToString(dataBuff)}!{vbCrLf}", Color.Blue)
|
||
AppendTipTextSerial($"RX:{ByteToString(dataBuff)}!{vbCrLf}", Color.Blue)
|
||
Select Case dataBuff(15)
|
||
Case &H11 '网络输入测试
|
||
DealNetworkInputTest(dataBuff)
|
||
Case &H12 '网络输出测试
|
||
'DealNetworkOutputTest(dataBuff)
|
||
Case &H13 '网络巡回测试
|
||
DealNetworkTourTest(dataBuff)
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理网络设置输入
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub DealNetworkInputTest(databuff() As Byte)
|
||
If databuff(16) = &HF1 Then
|
||
Dim bt1 As Byte = databuff(18)
|
||
Dim bt2 As Byte = databuff(19)
|
||
Dim bt3 As Byte = databuff(20)
|
||
Dim bt4 As Byte = databuff(21)
|
||
|
||
Dim a1 As Boolean = (bt1 >> 0) And 3
|
||
Dim a2 As Boolean = (bt1 >> 2) And 3
|
||
Dim a3 As Boolean = (bt1 >> 4) And 3
|
||
Dim a4 As Boolean = (bt1 >> 6) And 3
|
||
|
||
Dim a5 As Boolean = (bt2 >> 0) And 3
|
||
Dim a6 As Boolean = (bt2 >> 2) And 3
|
||
Dim a7 As Boolean = (bt2 >> 4) And 3
|
||
Dim a8 As Boolean = (bt2 >> 6) And 3
|
||
|
||
Dim a9 As Boolean = (bt3 >> 0) And 3
|
||
Dim a10 As Boolean = (bt3 >> 2) And 3
|
||
Dim a11 As Boolean = (bt3 >> 4) And 3
|
||
Dim a12 As Boolean = (bt3 >> 6) And 3
|
||
Dim a13 As Boolean = (bt4 >> 0) And 3
|
||
|
||
Select Case _testFrmIndex
|
||
Case _modelsTestGroup(0), _modelsTestGroup(4)
|
||
DealInputReplyData(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||
Case _modelsTestGroup(1)
|
||
DealC12InputReplyData(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||
Case _modelsTestGroup(2)
|
||
DealC8InputReplyData(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||
Case _modelsTestGroup(3)
|
||
DealV9InputReplyData(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13)
|
||
End Select
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理网络巡回测试
|
||
''' </summary>
|
||
''' <param name="databuff"></param>
|
||
Private Sub DealNetworkTourTest(databuff() As Byte)
|
||
If databuff(16) >= 95 Then
|
||
ModelsTourTestTipInfo($"Pass", Color.Green)
|
||
Else
|
||
ModelsTourTestTipInfo($"Fail", Color.Red)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 各机型巡回测试结果
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <param name="col"></param>
|
||
Private Sub ModelsTourTestTipInfo(txt As String, col As Color)
|
||
Select Case _testFrmIndex
|
||
Case _modelsTestGroup(0), _modelsTestGroup(4)
|
||
AppendTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTestFailed)}!{vbCrLf}", Color.Red)
|
||
AppendTipTextSerial($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTestFailed)}!{vbCrLf}", Color.Red)
|
||
DealTourTestData(txt, col)
|
||
Case _modelsTestGroup(1)
|
||
AppendTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTestFailed)}!{vbCrLf}", Color.Red)
|
||
AppendTipTextSerial($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTestFailed)}!{vbCrLf}", Color.Red)
|
||
DealC12TourTestData(txt, col)
|
||
Case _modelsTestGroup(2)
|
||
AppendTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTestFailed)}!{vbCrLf}", Color.Red)
|
||
AppendTipTextSerial($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTestFailed)}!{vbCrLf}", Color.Red)
|
||
DealC8TourTestData(txt, col)
|
||
Case _modelsTestGroup(3)
|
||
AppendTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTestFailed)}!{vbCrLf}", Color.Red)
|
||
AppendTipTextSerial($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTestFailed)}!{vbCrLf}", Color.Red)
|
||
DealV9TourTestData(txt, col)
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 处理设置MQTT数据
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealCmdSetMQTTData(dataBuff() As Byte)
|
||
Select Case dataBuff(15)
|
||
Case &H0
|
||
MsgBox($"MQTT {LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheFailed)}!")
|
||
Case &H1
|
||
MsgBox($"MQTT {LanguageData.StringList(MultiLanguageDAL.StringEnum.SetTheSuccess)}!")
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
Private _aliProductKey() As Byte = {&H0, &H0, &H0, &H0} '阿里云产品密钥偏移地址
|
||
Private _aliDevName() As Byte = {&HC, &H0, &H0, &H0} '阿里云设备名称偏移地址
|
||
Private _aliDevKey() As Byte = {&H4D, &H0, &H0, &H0} '阿里云设备密钥偏移地址
|
||
Private _aliReSession() As Byte = {&H6E, &H0, &H0, &H0} '阿里云发布会话偏移地址
|
||
Private _aliSubSession() As Byte = {&HAF, &H0, &H0, &H0} '阿里云订阅会话偏移地址
|
||
Private _onlineTime() As Byte = {&HF0, &H0, &H0, &H0} '在线时间偏移地址
|
||
Private _reSsession() As Byte = {&HF2, &H0, &H0, &H0} '发布会话偏移地址
|
||
Private _subSession() As Byte = {&H33, &H1, &H0, &H0} '订阅会话偏移地址
|
||
Private _domainName() As Byte = {&H74, &H1, &H0, &H0} '域名偏移地址
|
||
Private _clientID() As Byte = {&HB5, &H1, &H0, &H0} '客户端ID偏移地址
|
||
Private _userName() As Byte = {&HF6, &H1, &H0, &H0} '用户名偏移地址
|
||
Private _password() As Byte = {&H37, &H2, &H0, &H0} '密码偏移地址
|
||
|
||
|
||
''' <summary>
|
||
''' 处理读取MQTT数据
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub DealCmdReadMQTTData(dataBuff() As Byte)
|
||
Console.WriteLine($"MQTT回复数据:{ByteToString(dataBuff)}")
|
||
If dataBuff(15) = &H1 Then
|
||
Dim data() As Byte
|
||
Dim Str As String
|
||
'Dim datas(dataBuff.Length - 25) As Byte
|
||
Dim len As Integer
|
||
If dataBuff.Length > 19 Then
|
||
len = dataBuff.Length - 25
|
||
Dim datas(len) As Byte
|
||
data = {dataBuff(16), dataBuff(17), dataBuff(18), dataBuff(19)}
|
||
Array.Copy(dataBuff, 22, datas, 0, datas.Length)
|
||
|
||
Dim car As String = Encoding.ASCII.GetString(New Byte() {255})
|
||
Str = System.Text.Encoding.ASCII.GetString(datas).Replace(car, "")
|
||
|
||
If Enumerable.SequenceEqual(data, _aliProductKey) Then
|
||
RefreshMQTTInfo(Str, TextBox28)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _aliDevName) Then
|
||
RefreshMQTTInfo(Str, TextBox31)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _aliDevKey) Then
|
||
RefreshMQTTInfo(Str, TextBox32)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _aliReSession) Then
|
||
RefreshMQTTInfo(Str, TextBox33)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _aliSubSession) Then
|
||
RefreshMQTTInfo(Str, TextBox34)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _onlineTime) Then
|
||
RefreshMQTTInfo(BitConverter.ToUInt16(datas, 0), NumericUpDown1)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _reSsession) Then
|
||
RefreshMQTTInfo(Str, TextBox52)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _subSession) Then
|
||
RefreshMQTTInfo(Str, TextBox53)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _domainName) Then
|
||
RefreshMQTTInfo(Str, TextBox54)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _clientID) Then
|
||
RefreshMQTTInfo(Str, TextBox55)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _userName) Then
|
||
RefreshMQTTInfo(Str, TextBox56)
|
||
End If
|
||
If Enumerable.SequenceEqual(data, _password) Then
|
||
RefreshMQTTInfo(Str, TextBox57)
|
||
End If
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' MQTT信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_MQTTInfo_Change(txt As String, TBo As Object)
|
||
|
||
|
||
''' <summary>
|
||
''' MQTT信息委托
|
||
''' </summary>
|
||
Public Sub RefreshMQTTInfo(txt As String, Texts As Object)
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_MQTTInfo_Change(AddressOf RefreshMQTTInfo)
|
||
Me.Invoke(dev, New Object() {txt, Texts})
|
||
Else
|
||
If TypeOf Texts Is TextBox Then
|
||
Texts.Text = txt
|
||
ElseIf TypeOf Texts Is NumericUpDown Then
|
||
Texts.Value = txt
|
||
ElseIf TypeOf Texts Is ComboBox Then
|
||
Texts.Text = txt
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
|
||
'''' <summary>
|
||
'''' MQTT信息时间值委托
|
||
'''' </summary>
|
||
'Delegate Sub delegate_MQTTValueInfo_Change(txt As Integer, nud As NumericUpDown)
|
||
|
||
'''' <summary>
|
||
'''' MQTT信息时间值委托
|
||
'''' </summary>
|
||
'Public Sub RefreshMQTTValueInfo(txt As Integer, nud As NumericUpDown)
|
||
' If InvokeRequired = True Then
|
||
' Dim dev As New delegate_MQTTValueInfo_Change(AddressOf RefreshMQTTValueInfo)
|
||
' Me.Invoke(dev, New Object() {txt, nud})
|
||
' Else
|
||
' nud.Value = txt
|
||
' End If
|
||
'End Sub
|
||
|
||
|
||
'Private Function GetArrayCompare(array1() As Byte, array2() As Byte) As Boolean
|
||
' If array1.Length = 0 OrElse array2.Length = 0 Then
|
||
' Return False
|
||
' End If
|
||
|
||
' If array1.Length <> array2.Length Then
|
||
' Return False
|
||
' End If
|
||
|
||
' For index As Integer = 0 To array1.Length AndAlso array2.Length
|
||
' If array1(index) <> array2(index) Then
|
||
' Return False
|
||
' End If
|
||
' Next
|
||
|
||
' Return True
|
||
'End Function
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "通讯记录"
|
||
|
||
''' <summary>
|
||
''' 清除记录
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button24_Click(sender As Object, e As EventArgs) Handles Button24.Click
|
||
RichTextBox1.Clear()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 添加记录文本和颜色
|
||
''' </summary>
|
||
''' <param name="str">需要添加的记录内容</param>
|
||
''' <param name="cor">需要设置的记录颜色</param>
|
||
Public Sub AppendTextAndSetStyle(ByVal str As String, ByVal cor As Color)
|
||
Dim selStart As Integer
|
||
Dim selLength As Integer
|
||
selStart = RichTextBox1.TextLength
|
||
RichTextBox1.AppendText(str)
|
||
selLength = RichTextBox1.TextLength - selStart
|
||
RichTextBox1.Select(selStart, selLength)
|
||
RichTextBox1.SelectionColor = cor
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 添加记录
|
||
''' </summary>
|
||
''' <param name="recordString"></param>
|
||
''' <param name="col"></param>
|
||
Public Sub AppendTipText(recordString As String, col As Color)
|
||
If RichTextBox1.InvokeRequired Then
|
||
RichTextBox1.Invoke(New Action(Sub()
|
||
If RichTextBox1.Lines.Count >= 256 Then RichTextBox1.Clear()
|
||
AppendTextAndSetStyle($"{recordString}", col)
|
||
RichTextBox1.ScrollToCaret()
|
||
End Sub))
|
||
Else
|
||
If RichTextBox1.Lines.Count >= 256 Then RichTextBox1.Clear()
|
||
AppendTextAndSetStyle($"{recordString}", col)
|
||
RichTextBox1.ScrollToCaret()
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 添加记录文本和颜色
|
||
''' </summary>
|
||
''' <param name="str">需要添加的记录内容</param>
|
||
''' <param name="cor">需要设置的记录颜色</param>
|
||
Public Sub AppendTextAndSetStyle3(ByVal str As String, ByVal cor As Color)
|
||
Dim selStart As Integer
|
||
Dim selLength As Integer
|
||
selStart = RichTextBox3.TextLength
|
||
RichTextBox3.AppendText(str)
|
||
selLength = RichTextBox3.TextLength - selStart
|
||
RichTextBox3.Select(selStart, selLength)
|
||
RichTextBox3.SelectionColor = cor
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 添加记录
|
||
''' </summary>
|
||
''' <param name="recordString"></param>
|
||
''' <param name="col"></param>
|
||
Public Sub AppendTipTextSerial(recordString As String, col As Color)
|
||
If RichTextBox3.InvokeRequired Then
|
||
RichTextBox3.Invoke(New Action(Sub()
|
||
If RichTextBox3.Lines.Count >= 256 Then RichTextBox3.Clear()
|
||
AppendTextAndSetStyle3($"{recordString}", col)
|
||
RichTextBox3.ScrollToCaret()
|
||
End Sub))
|
||
Else
|
||
If RichTextBox3.Lines.Count >= 256 Then RichTextBox3.Clear()
|
||
AppendTextAndSetStyle3($"{recordString}", col)
|
||
RichTextBox3.ScrollToCaret()
|
||
End If
|
||
End Sub
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' 添加匹配文本和颜色
|
||
''' </summary>
|
||
''' <param name="str">需要添加的记录内容</param>
|
||
''' <param name="cor">需要设置的记录颜色</param>
|
||
Public Sub AppendMatchTextAndSetStyle(ByVal str As String, ByVal cor As Color)
|
||
Dim selStart As Integer
|
||
Dim selLength As Integer
|
||
selStart = RichTextBox2.TextLength
|
||
RichTextBox2.AppendText(str)
|
||
selLength = RichTextBox2.TextLength - selStart
|
||
RichTextBox2.Select(selStart, selLength)
|
||
RichTextBox2.SelectionColor = cor
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 添加匹配记录
|
||
''' </summary>
|
||
''' <param name="recordString"></param>
|
||
''' <param name="col"></param>
|
||
Public Sub AppendMatchTipText(recordString As String, col As Color)
|
||
If RichTextBox2.InvokeRequired Then
|
||
RichTextBox2.Invoke(New Action(Sub()
|
||
If RichTextBox2.Lines.Count >= 256 Then RichTextBox2.Clear()
|
||
AppendMatchTextAndSetStyle($"{recordString}", col)
|
||
RichTextBox2.ScrollToCaret()
|
||
End Sub))
|
||
Else
|
||
If RichTextBox2.Lines.Count >= 256 Then RichTextBox2.Clear()
|
||
AppendMatchTextAndSetStyle($"{recordString}", col)
|
||
RichTextBox2.ScrollToCaret()
|
||
End If
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#End Region
|
||
|
||
#End Region
|
||
|
||
#Region "设备存在_数据表操作"
|
||
|
||
''' <summary>
|
||
''' 项目列表名称
|
||
''' </summary>
|
||
Private _ProjectInfoLists As String = $"CSeries_ProjectLists"
|
||
|
||
''' <summary>
|
||
''' 房型列表名称
|
||
''' </summary>
|
||
Private _RoomTypeLists As String = $"CSeries_RoomTypeLists"
|
||
|
||
''' <summary>
|
||
''' 房间列表名称
|
||
''' </summary>
|
||
Private _RoomInfoLists As String = $"CSeries_ProjectRoomLists"
|
||
|
||
''' <summary>
|
||
''' 配置设备列表名称
|
||
''' </summary>
|
||
Private _DevConfigName As String = $"CSeries_DevConfigLists"
|
||
|
||
|
||
''' <summary>
|
||
''' 判断点击的是哪个Pages
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub TabControl2_Click(sender As Object, e As EventArgs) Handles TabControl2.Click
|
||
Select Case TabControl2.SelectedIndex
|
||
Case 0 '项目信息页面
|
||
QueryProjectInfoList()
|
||
Case 1 '房型信息页面
|
||
QueryRoomTypeList()
|
||
Case 2 '房间信息页面
|
||
QueryRoomInfoList()
|
||
Case Else
|
||
|
||
End Select
|
||
|
||
End Sub
|
||
|
||
#Region "项目列表"
|
||
|
||
|
||
''' <summary>
|
||
''' 查询设备列表
|
||
''' </summary>
|
||
Private Sub QueryProjectInfoList()
|
||
Dim queryCol As String = $"ProjectNumber, ProjectName, ProjectAddress, Remarks"
|
||
_SqlServer.Query(queryCol, _ProjectInfoLists, Grid1)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 项目信息_查询
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
|
||
QueryProjectInfoList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 项目信息_增加
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click
|
||
Dim projectNumber As String = TextBox2.Text '项目编号
|
||
Dim projectName As String = TextBox3.Text '项目名称
|
||
Dim prijectAddr As String = TextBox19.Text '项目地址
|
||
Dim remarks As String = TextBox1.Text '备注
|
||
|
||
Dim conditions As String = $"(ProjectNumber, ProjectName, ProjectAddress, Remarks) values('{projectNumber}', '{projectName}', '{prijectAddr}', '{remarks}')"
|
||
_SqlServer.Add(_ProjectInfoLists, Grid1, conditions)
|
||
|
||
QueryProjectInfoList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 项目信息_修改
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
|
||
Dim projectNumber As String = String.Empty '项目编号
|
||
Dim projectName As String = String.Empty '项目名称
|
||
Dim prijectAddr As String = String.Empty '项目地址
|
||
Dim remarks As String = String.Empty '备注
|
||
|
||
If Grid1.ActiveCell.Row > 0 Then
|
||
projectNumber = Grid1.Cell(Grid1.ActiveCell.Row, 1).Text
|
||
projectName = Grid1.Cell(Grid1.ActiveCell.Row, 2).Text
|
||
prijectAddr = Grid1.Cell(Grid1.ActiveCell.Row, 3).Text
|
||
remarks = Grid1.Cell(Grid1.ActiveCell.Row, 4).Text
|
||
End If
|
||
|
||
Dim projectNumber1 As String = TextBox2.Text '项目编号
|
||
Dim projectName1 As String = TextBox3.Text '项目名称
|
||
Dim prijectAddr1 As String = TextBox19.Text '项目地址
|
||
Dim remarks1 As String = TextBox1.Text '备注
|
||
|
||
Dim conditions As String = $"Set ProjectNumber = N'{projectNumber1}', ProjectName = N'{projectName1}', ProjectAddress = N'{prijectAddr1}', Remarks = N'{remarks1}'Where ProjectNumber = N'{projectNumber}' And ProjectName = N'{projectName}' And ProjectAddress = N'{prijectAddr}' And Remarks = N'{remarks}'"
|
||
Dim hint As DialogResult = MessageBox.Show($"要修改的文件信息如下{vbCrLf}{vbCrLf}项目编号:{projectNumber1}{vbCr}项目名称:{projectName1}{vbCr}项目地址:{prijectAddr1}{vbCr}备注:{remarks1}{vbCrLf}{vbCrLf}是否继续修改?", "警告!!!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
|
||
If hint = DialogResult.OK Then
|
||
Console.WriteLine($"修改完成")
|
||
_SqlServer.Modify(_ProjectInfoLists, Grid1, conditions)
|
||
MsgBox($"修改成功!")
|
||
End If
|
||
|
||
QueryProjectInfoList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 项目信息_删除
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
|
||
Dim projectNumber1 As String = TextBox2.Text '项目编号
|
||
Dim projectName1 As String = TextBox3.Text '项目名称
|
||
Dim prijectAddr1 As String = TextBox19.Text '项目地址
|
||
Dim remarks1 As String = TextBox1.Text '备注
|
||
|
||
Dim conditions As String = $"Where ProjectNumber = N'{projectNumber1}' And ProjectName = N'{projectName1}' And ProjectAddress = N'{prijectAddr1}' And Remarks = N'{remarks1}'"
|
||
_SqlServer.Delete(_ProjectInfoLists, Grid1, conditions)
|
||
|
||
TextBox2.Text = Nothing
|
||
TextBox3.Text = Nothing
|
||
TextBox19.Text = Nothing
|
||
TextBox1.Text = Nothing
|
||
|
||
QueryProjectInfoList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 项目表表格点击事件
|
||
''' </summary>
|
||
''' <param name="Sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Grid1_Click(Sender As Object, e As EventArgs) Handles Grid1.Click
|
||
If Grid1.ActiveCell.Row > 0 Then
|
||
TextBox2.Text = Grid1.Cell(Grid1.ActiveCell.Row, 1).Text
|
||
TextBox3.Text = Grid1.Cell(Grid1.ActiveCell.Row, 2).Text
|
||
TextBox19.Text = Grid1.Cell(Grid1.ActiveCell.Row, 3).Text
|
||
TextBox1.Text = Grid1.Cell(Grid1.ActiveCell.Row, 4).Text
|
||
TextBox14.Text = Grid1.Cell(Grid1.ActiveCell.Row, 1).Text
|
||
TextBox6.Text = Grid1.Cell(Grid1.ActiveCell.Row, 1).Text
|
||
End If
|
||
End Sub
|
||
|
||
#End Region
|
||
|
||
#Region "房型列表"
|
||
|
||
''' <summary>
|
||
''' 查询设备列表
|
||
''' </summary>
|
||
Private Sub QueryRoomTypeList()
|
||
Dim queryCol As String = $"ProjectNumber, RoomType, Remarks"
|
||
|
||
'If TextBox14.Text = Nothing Or TextBox14.Text = "" Then
|
||
_SqlServer.Query(queryCol, _RoomTypeLists, Grid2)
|
||
'Else
|
||
' 'Dim conditions As String = $"Where ProjectNumber = '{TextBox14.Text}'"
|
||
' '_SqlServer.Query(queryCol, _RoomTypeLists, Grid2, conditions)
|
||
'End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房型列表_查询
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
|
||
QueryRoomTypeList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房型列表_添加
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
|
||
Dim projectNumber As String = TextBox14.Text '项目编号
|
||
Dim roomType As String = TextBox13.Text '房型
|
||
Dim remarks As String = TextBox17.Text '备注
|
||
|
||
Dim conditions As String = $"(ProjectNumber, RoomType, Remarks) values('{projectNumber}', '{roomType}', '{remarks}')"
|
||
_SqlServer.Add(_RoomTypeLists, Grid2, conditions)
|
||
|
||
QueryRoomTypeList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房型列表_修改
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
|
||
Dim projectNumber As String = String.Empty '项目编号
|
||
Dim roomType As String = String.Empty '房型
|
||
Dim remarks As String = String.Empty '备注
|
||
|
||
If Grid2.ActiveCell.Row > 0 Then
|
||
projectNumber = Grid2.Cell(Grid2.ActiveCell.Row, 1).Text
|
||
roomType = Grid2.Cell(Grid2.ActiveCell.Row, 2).Text
|
||
remarks = Grid2.Cell(Grid2.ActiveCell.Row, 3).Text
|
||
End If
|
||
|
||
Dim projectNumber1 As String = TextBox14.Text '项目编号
|
||
Dim roomType1 As String = TextBox13.Text '房型
|
||
Dim remarks1 As String = TextBox17.Text '备注
|
||
|
||
Dim conditions As String = $"Set ProjectNumber = N'{projectNumber1}', RoomType = N'{roomType1}', Remarks = N'{remarks1}' Where ProjectNumber = N'{projectNumber}' And RoomType = N'{roomType}' And Remarks = N'{remarks}'"
|
||
Dim hint As DialogResult = MessageBox.Show($"要修改的文件信息如下{vbCrLf}{vbCrLf}项目编号:{projectNumber1}{vbCr}房型:{roomType1}{vbCr}备注:{remarks1}{vbCrLf}{vbCrLf}是否继续修改?", "警告!!!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
|
||
If hint = DialogResult.OK Then
|
||
Console.WriteLine("修改完成")
|
||
_SqlServer.Modify(_RoomTypeLists, Grid2, conditions)
|
||
MsgBox($"修改成功!")
|
||
End If
|
||
|
||
QueryRoomTypeList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房型列表_删除
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
||
Dim projectNumber As String = TextBox14.Text '项目编号
|
||
Dim roomType As String = TextBox13.Text '房型
|
||
Dim remarks As String = TextBox17.Text '备注
|
||
|
||
Dim conditions As String = $"Where ProjectNumber = N'{projectNumber}' And RoomType = N'{roomType}' And Remarks = N'{remarks}'"
|
||
_SqlServer.Delete(_RoomTypeLists, Grid2, conditions)
|
||
|
||
TextBox14.Text = Nothing
|
||
TextBox13.Text = Nothing
|
||
TextBox17.Text = Nothing
|
||
|
||
QueryRoomTypeList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房型列表点击事件
|
||
''' </summary>
|
||
''' <param name="Sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Grid2_Click(Sender As Object, e As EventArgs) Handles Grid2.Click
|
||
If Grid2.ActiveCell.Row > 0 Then
|
||
TextBox14.Text = Grid2.Cell(Grid2.ActiveCell.Row, 1).Text
|
||
TextBox13.Text = Grid2.Cell(Grid2.ActiveCell.Row, 2).Text
|
||
TextBox17.Text = Grid2.Cell(Grid2.ActiveCell.Row, 3).Text
|
||
|
||
TextBox20.Text = Grid2.Cell(Grid2.ActiveCell.Row, 2).Text
|
||
|
||
End If
|
||
End Sub
|
||
|
||
#End Region
|
||
|
||
#Region "房间列表"
|
||
|
||
''' <summary>
|
||
''' 初始化房间状态
|
||
''' </summary>
|
||
Private Sub InitRoomState()
|
||
Dim rState As String() = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Offline)}", $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Online)}"}
|
||
ComboBox5.Items.Clear()
|
||
ComboBox5.Items.AddRange(rState)
|
||
If ComboBox5.Items.Count > 0 Then ComboBox5.SelectedIndex = 0
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询设备列表
|
||
''' </summary>
|
||
Private Sub QueryRoomInfoList()
|
||
Dim queryCol As String = $"ProjectNumber, RoomNumber, RoomType, CurrentState, HostMAC, ConfigVersion, LastCommTime, Remarks"
|
||
|
||
'If TextBox6.Text = Nothing And TextBox20.Text = Nothing Then
|
||
_SqlServer.Query(queryCol, _RoomInfoLists, Grid3)
|
||
'Else
|
||
'Dim conditions As String = $"Where ProjectNumber = '{TextBox6.Text}' And RoomType = '{TextBox20.Text}'"
|
||
'_SqlServer.Query(queryCol, _RoomInfoLists, Grid3, conditions)
|
||
'End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房间列表_查询
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
|
||
QueryRoomInfoList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房间列表_增加
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
|
||
Dim projectNumber As String = TextBox6.Text '项目编号
|
||
Dim roomNumber As String = TextBox18.Text '房间编号
|
||
Dim roomType As String = TextBox20.Text '房型
|
||
Dim currentState As String = ComboBox5.Text '当前状态
|
||
Dim hostMac As String = TextBox27.Text '主机MAC
|
||
Dim configVer As String = TextBox26.Text '配置版本号
|
||
Dim lastCommTime As String = TextBox22.Text '最后一次通讯时间
|
||
Dim remarks As String = TextBox4.Text '备注
|
||
|
||
Dim conditions As String = $"(ProjectNumber, RoomNumber, RoomType, CurrentState, HostMAC, ConfigVersion, LastCommTime, Remarks) Values('{projectNumber}', '{roomNumber}', '{roomType}', '{currentState}', '{hostMac}', '{configVer}', '{lastCommTime}', '{remarks}')"
|
||
_SqlServer.Add(_RoomInfoLists, Grid3, conditions)
|
||
|
||
QueryRoomInfoList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房间列表_修改
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
|
||
Dim projectNumber As String = String.Empty '项目编号
|
||
Dim roomNumber As String = String.Empty '房间编号
|
||
Dim roomType As String = String.Empty '房型
|
||
Dim currentState As String = String.Empty '当前状态
|
||
Dim hostMac As String = String.Empty '主机MAC
|
||
Dim configVer As String = String.Empty '配置版本号
|
||
Dim lastCommTime As String = String.Empty '最后一次通讯时间
|
||
Dim remarks As String = String.Empty '备注
|
||
|
||
If Grid3.ActiveCell.Row > 0 Then
|
||
projectNumber = Grid3.Cell(Grid3.ActiveCell.Row, 1).Text
|
||
roomNumber = Grid3.Cell(Grid3.ActiveCell.Row, 2).Text
|
||
roomType = Grid3.Cell(Grid3.ActiveCell.Row, 3).Text
|
||
currentState = Grid3.Cell(Grid3.ActiveCell.Row, 4).Text
|
||
hostMac = Grid3.Cell(Grid3.ActiveCell.Row, 5).Text
|
||
configVer = Grid3.Cell(Grid3.ActiveCell.Row, 6).Text
|
||
lastCommTime = Grid3.Cell(Grid3.ActiveCell.Row, 7).Text
|
||
remarks = Grid3.Cell(Grid3.ActiveCell.Row, 8).Text
|
||
End If
|
||
|
||
Dim projectNumber1 As String = TextBox6.Text '项目编号
|
||
Dim roomNumber1 As String = TextBox18.Text '房间编号
|
||
Dim roomType1 As String = TextBox20.Text '房型
|
||
Dim currentState1 As String = ComboBox5.Text '当前状态
|
||
Dim hostMac1 As String = TextBox27.Text '主机MAC
|
||
Dim configVer1 As String = TextBox26.Text '配置版本号
|
||
Dim lastCommTime1 As String = TextBox22.Text '最后一次通讯时间
|
||
Dim remarks1 As String = TextBox4.Text '备注
|
||
|
||
Dim conditions As String = $"Set ProjectNumber = '{projectNumber1}', RoomNumber = '{roomNumber1}', RoomType = '{roomType1}', CurrentState = '{currentState1}', HostMAC = '{hostMac1}', ConfigVersion = '{configVer1}', LastCommTime = '{lastCommTime1}', Remarks = '{remarks1}' Where ProjectNumber = '{projectNumber}' And RoomNumber = '{roomNumber}' And RoomType = N'{roomType}' And CurrentState = N'{currentState}' And HostMAC = '{hostMac}' And ConfigVersion = '{configVer}' And LastCommTime = N'{lastCommTime}' And Remarks = N'{remarks}'"
|
||
Dim hint As DialogResult = MessageBox.Show($"要修改的文件信息如下{vbCrLf}{vbCrLf}项目编号:{projectNumber1}{vbCr}房间编号:{roomNumber1}{vbCr}房型:{roomType1}{vbCr}主机MAC:{hostMac1}{vbCr}配置版本号:{configVer1}{vbCr}当前状态:{currentState1}{vbCr}最后一次通讯时间:{lastCommTime1}{vbCr}备注:{remarks1}{vbCrLf}{vbCrLf}是否继续修改?", "警告!!!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
|
||
If hint = DialogResult.OK Then
|
||
Console.WriteLine($"修改完成")
|
||
_SqlServer.Modify(_RoomInfoLists, Grid3, conditions)
|
||
MsgBox($"修改成功!")
|
||
End If
|
||
|
||
QueryRoomInfoList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房间列表_删除
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
|
||
Dim projectNumber As String = TextBox6.Text '项目编号
|
||
Dim roomNumber As String = TextBox18.Text '房间编号
|
||
Dim roomType As String = TextBox20.Text '房型
|
||
Dim currentState As String = ComboBox5.Text '当前状态
|
||
Dim hostMac As String = TextBox27.Text '主机MAC
|
||
Dim configVer As String = TextBox26.Text '配置版本号
|
||
Dim lastCommTime As String = TextBox22.Text '最后一次通讯时间
|
||
Dim remarks As String = TextBox4.Text '备注
|
||
|
||
Dim conditions As String = $"Where ProjectNumber = '{projectNumber}' And RoomNumber = '{roomNumber}' And RoomType = '{roomType}' And CurrentState = '{currentState}' And HostMAC = '{hostMac}' And ConfigVersion = '{configVer}' And LastCommTime = '{lastCommTime}' And Remarks = '{remarks}'"
|
||
_SqlServer.Delete(_RoomInfoLists, Grid3, conditions)
|
||
|
||
TextBox6.Text = Nothing
|
||
TextBox18.Text = Nothing
|
||
TextBox20.Text = Nothing
|
||
ComboBox5.Text = Nothing
|
||
TextBox27.Text = Nothing
|
||
TextBox26.Text = Nothing
|
||
TextBox22.Text = Nothing
|
||
TextBox4.Text = Nothing
|
||
|
||
QueryRoomInfoList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 房间表格点击事件
|
||
''' </summary>
|
||
''' <param name="Sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Grid3_Click(Sender As Object, e As EventArgs) Handles Grid3.Click
|
||
If Grid3.ActiveCell.Row > 0 Then
|
||
TextBox6.Text = Grid3.Cell(Grid3.ActiveCell.Row, 1).Text '项目编号
|
||
TextBox18.Text = Grid3.Cell(Grid3.ActiveCell.Row, 2).Text '房间编号
|
||
TextBox20.Text = Grid3.Cell(Grid3.ActiveCell.Row, 3).Text '房型
|
||
ComboBox5.Text = Grid3.Cell(Grid3.ActiveCell.Row, 4).Text '当前状态
|
||
TextBox27.Text = Grid3.Cell(Grid3.ActiveCell.Row, 5).Text '主机MAC
|
||
TextBox26.Text = Grid3.Cell(Grid3.ActiveCell.Row, 6).Text '配置版本号
|
||
TextBox22.Text = Grid3.Cell(Grid3.ActiveCell.Row, 7).Text '最后一次通讯时间
|
||
TextBox4.Text = Grid3.Cell(Grid3.ActiveCell.Row, 8).Text '备注
|
||
End If
|
||
End Sub
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "配置设备列表"
|
||
|
||
'Private _dev As New List(Of String) From {"0_无效设备", "1_电继电器"} ''另一种用法
|
||
|
||
''' <summary>设备类型合集</summary>
|
||
Private _devTypes() As String = {"0_无效设备", "1_电继电器", "2_继电器输入状态", "3_继电器输出状态", "4_服务信息", "5_干节点窗帘", "6_开关指示灯", "7_空调1", "8_红外感应", "9_空气质量检测设备", "10_插卡取电", "11_地暖", "12_RCU设备网络", "13_窗帘", "14_继电器", "15_红外发送", "16_直流调光", "17_可控硅调光", "18_灯带", "19_中控", "20_微信锁", "21_背景音乐", "22_房态下发", "23_主机本地调光", "24_PWM调光", "25_LED调光", "26_RCU电源", "27_A9IO开关", "28_A9IO扩展", "29_A9IO电源", "30_无线网关轮询", "31_无线网关主动"}
|
||
|
||
''' <summary>设备波特率</summary>
|
||
Private _devBauds() As String = {"不存在", "2400", "4800", "9600", "14400", "19200", "38400", "56000", "57600", "115200"}
|
||
|
||
''' <summary>设备端口号</summary>
|
||
Private _devPorts() As String = {"不存在", "1号", "2号", "3号"}
|
||
|
||
|
||
''' <summary>
|
||
''' 设备类型合集
|
||
''' </summary>
|
||
Enum EnDevTypeFailarmy
|
||
''' <summary>0_无效设备</summary>
|
||
Dev_Host_Invalid
|
||
|
||
''' <summary>1_电继电器</summary>
|
||
Dev_Host_HVout
|
||
|
||
''' <summary>2_电输入_输入状态</summary>
|
||
Dev_Host_LVinput
|
||
|
||
''' <summary>3_电输出_输出状态</summary>
|
||
Dev_Host_LVoutput
|
||
|
||
''' <summary>4_服务信息_可配置数量,输出状态</summary>
|
||
Dev_Host_Service
|
||
|
||
''' <summary>5_干节点窗帘_可配置数量,输出状态</summary>
|
||
Dev_NodeCurtain
|
||
|
||
'' 485设备类型
|
||
''' <summary>开关指示灯</summary>
|
||
DEV_RS485_SWT
|
||
|
||
''' <summary>空调1_空调状态</summary>
|
||
DEV_RS485_TEMPCTRL1
|
||
|
||
''' <summary>红外感应_备用</summary>
|
||
DEV_RS485_INFRARED
|
||
|
||
''' <summary>空气质量检测设备_备用</summary>
|
||
DEV_RS485_AirDetect
|
||
|
||
''' <summary>插卡取电_取电状态</summary>
|
||
DEV_RS485_CARD
|
||
|
||
''' <summary>地暖_地暖状态</summary>
|
||
DEV_RS485_HEATER
|
||
|
||
''' <summary>RCU设备网络</summary>
|
||
Dev_RCU_NET
|
||
|
||
''' <summary>窗帘_窗帘状态</summary>
|
||
DEV_RS485_CURTAIN
|
||
|
||
''' <summary>继电器_继电器状态</summary>
|
||
DEV_RS485_RELAY
|
||
|
||
''' <summary>红外发送_红外发送状态</summary>
|
||
DEV_RS485_IR_SEND
|
||
|
||
''' <summary>直流调光_调光状态</summary>
|
||
DEV_RS485_DIMMING
|
||
|
||
''' <summary>可控硅调光_可控硅状态</summary>
|
||
DEV_RS485_TRAIC
|
||
|
||
''' <summary>灯带_灯带状态</summary>
|
||
DEV_RS485_STRIP
|
||
|
||
''' <summary>中控</summary>
|
||
DEV_RS485_CoreCtrl
|
||
|
||
''' <summary>微信锁_微信锁状态</summary>
|
||
DEV_RS485_WxLock
|
||
|
||
''' <summary>背景音乐_背景音乐状态</summary>
|
||
DEV_RS485_MUSIC
|
||
|
||
''' <summary>房态下发</summary>
|
||
DEV_NET_ROOMSTATE
|
||
|
||
''' <summary>主机本地调光</summary>
|
||
Dev_Host_PWMLight
|
||
|
||
''' <summary>485PWM调光_PWM调光状态</summary>
|
||
DEV_RS485_PWM
|
||
|
||
''' <summary>总线调光_PBLED调光状态</summary>
|
||
DEV_PB_LED
|
||
|
||
''' <summary>RCU电源</summary>
|
||
DEV_RCU_POWER
|
||
|
||
''' <summary>A9IO开关_独立开关,没有协议区分</summary>
|
||
DEV_RS485_A9_IO_SWT
|
||
|
||
''' <summary>A9IO扩展_独立扩展,没有协议区分</summary>
|
||
DEV_RS485_A9_IO_EXP
|
||
|
||
''' <summary>A9IO电源_独立电源,没有协议区分</summary>
|
||
DEV_RS485_A9_IO_POWER
|
||
|
||
''' <summary>无线网关轮询_用于轮询控制轮询设备,给无线网关下发配置和询问网关状态</summary>
|
||
DEV_RS485_RFGatewayCycle
|
||
|
||
''' <summary>无线网关主动</summary>
|
||
DEV_RS485_RFGatewayHost
|
||
|
||
End Enum
|
||
|
||
|
||
''' <summary>
|
||
''' 初始化设备类型,波特率,端口,频率
|
||
''' </summary>
|
||
Private Sub InitDevType()
|
||
ComboBox1.Items.Clear()
|
||
ComboBox1.Items.AddRange(_devTypes)
|
||
If ComboBox1.Items.Count > 1 Then ComboBox1.SelectedIndex = 1
|
||
|
||
ComboBox2.Items.Clear()
|
||
ComboBox2.Items.AddRange(_devBauds)
|
||
If ComboBox2.Items.Count > 1 Then ComboBox2.SelectedIndex = 0
|
||
|
||
ComboBox3.Items.Clear()
|
||
ComboBox3.Items.AddRange(_devPorts)
|
||
If ComboBox3.Items.Count > 1 Then ComboBox3.SelectedIndex = 0
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询设备列表
|
||
''' </summary>
|
||
Private Sub QueryDevList()
|
||
Dim queryCol As String = $"ProjectNumber, RoomType, ConfigVersion, HostTypeNumber, DevPort, DevName, DevType, DevTypeNumber, DevProtocol, DevBaud, DevAddress, Remarks"
|
||
_SqlServer.Query(queryCol, _DevConfigName, GrdDevLists)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 配置设备列表_查询
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub BtnDevQuery_Click(sender As Object, e As EventArgs) Handles BtnDevQuery.Click
|
||
QueryDevList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 配置设备列表_添加
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub BtnDevAdd_Click(sender As Object, e As EventArgs) Handles BtnDevAdd.Click
|
||
Dim projectNumber As String = ComboBox11.Text '项目编号
|
||
Dim roomType As String = ComboBox12.Text '房型
|
||
Dim configVer As String = TextBox11.Text '配置版本
|
||
Dim hostTypeNumber As String = TextBox12.Text '主机型号
|
||
Dim devPort As String = ComboBox3.Text '端口号
|
||
Dim devName As String = TextBox15.Text '设备名称
|
||
Dim devType As String = ComboBox1.Text '设备类型
|
||
Dim devTypeNumber As String = TextBox16.Text '设备型号
|
||
Dim devxieyi As String = TextBox8.Text '协议
|
||
Dim devBand As String = ComboBox2.Text '波特率
|
||
Dim devAddr As String = NumericUpDown3.Text '设备地址
|
||
Dim remarks As String = TextBox10.Text '备注
|
||
|
||
Dim conditions As String = $"(ProjectNumber, RoomType, ConfigVersion, HostTypeNumber, DevPort, DevName, DevType, DevTypeNumber, DevProtocol, DevBaud, DevAddress, Remarks) values('{projectNumber}', '{roomType}', '{configVer}', '{hostTypeNumber}', '{devPort}', '{devName}', '{devType}', '{devTypeNumber}', '{devxieyi}', '{devBand}', '{devAddr}', '{remarks}')"
|
||
_SqlServer.Add(_DevConfigName, GrdDevLists, conditions)
|
||
|
||
QueryDevList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 配置设备列表_修改
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click
|
||
Dim projectNumber As String = String.Empty '项目编号
|
||
Dim roomType As String = String.Empty '房型
|
||
Dim configVer As String = String.Empty '配置版本
|
||
Dim hostTypeNumber As String = String.Empty '主机型号
|
||
Dim devPort As String = String.Empty '端口号
|
||
Dim devName As String = String.Empty '设备名称
|
||
Dim devType As String = String.Empty '设备类型
|
||
Dim devTypeNumber As String = String.Empty '设备型号
|
||
Dim devxieyi As String = String.Empty '协议
|
||
Dim devBand As String = String.Empty '波特率
|
||
Dim devAddr As String = String.Empty '设备地址
|
||
Dim remarks As String = String.Empty '备注
|
||
|
||
If GrdDevLists.ActiveCell.Row > 0 Then
|
||
projectNumber = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 1).Text
|
||
roomType = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 2).Text
|
||
configVer = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 3).Text
|
||
hostTypeNumber = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 4).Text
|
||
devPort = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 5).Text
|
||
devName = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 6).Text
|
||
devType = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 7).Text
|
||
devTypeNumber = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 8).Text
|
||
devxieyi = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 9).Text
|
||
devBand = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 10).Text
|
||
devAddr = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 11).Text
|
||
remarks = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 12).Text
|
||
End If
|
||
|
||
Dim projectNumber1 As String = ComboBox11.Text '项目编号
|
||
Dim roomType1 As String = ComboBox12.Text '房型
|
||
Dim configVer1 As String = TextBox11.Text '配置版本
|
||
Dim hostTypeNumber1 As String = TextBox12.Text '主机型号
|
||
Dim devPort1 As String = ComboBox3.Text '端口号
|
||
Dim devName1 As String = TextBox15.Text '设备名称
|
||
Dim devType1 As String = ComboBox1.Text '设备类型
|
||
Dim devTypeNumber1 As String = TextBox16.Text '设备型号
|
||
Dim devxieyi1 As String = TextBox8.Text '协议
|
||
Dim devBand1 As String = ComboBox2.Text '波特率
|
||
Dim devAddr1 As String = NumericUpDown3.Text '设备地址
|
||
Dim remarks1 As String = TextBox10.Text '备注
|
||
|
||
Dim conditions As String = $"Set ProjectNumber = '{projectNumber1}', RoomType = '{roomType1}', ConfigVersion = '{configVer1}', HostTypeNumber = '{hostTypeNumber1}', DevPort = '{devPort1}', DevName = '{devName1}', DevType = '{devType1}', DevTypeNumber = '{devTypeNumber1}', DevProtocol = '{devxieyi1}', DevBaud = '{devBand1}', DevAddress = '{devAddr1}', Remarks = '{remarks1}' Where ProjectNumber = '{projectNumber}' And RoomType = '{roomType}' And ConfigVersion = '{configVer}' And HostTypeNumber = '{hostTypeNumber}' And DevPort = '{devPort}' And DevName = '{devName}' And DevType = '{devType}' And DevTypeNumber = '{devTypeNumber}' And DevProtocol = '{devxieyi}' And DevBaud = '{devBand}' And DevAddress = '{devAddr}' And Remarks = '{remarks}'"
|
||
|
||
Dim hint As DialogResult = MessageBox.Show($"要修改的文件信息如下{vbCrLf}{vbCrLf}项目编号:{projectNumber1}{vbCr}房型:{roomType1}{vbCr}配置版本:{configVer1}{vbCr}主机型号:{hostTypeNumber1}{vbCr}端口号:{devPort1}{vbCr}设备名称:{devName1}{vbCr}设备类型:{devType1}{vbCr}设备型号:{devTypeNumber1}{vbCr}协议:{devxieyi1}{vbCr}波特率:{devBand1}{vbCr}设备地址:{devAddr1}{vbCr}备注:{remarks1}{vbCr} {vbCrLf}是否继续修改?", "警告!!!", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
|
||
If hint = DialogResult.OK Then
|
||
Console.WriteLine($"修改完成")
|
||
_SqlServer.Modify(_DevConfigName, GrdDevLists, conditions)
|
||
MsgBox($"修改成功!")
|
||
End If
|
||
|
||
QueryDevList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 配置设备列表_删除
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
|
||
Dim projectNumber As String = ComboBox11.Text '项目编号
|
||
Dim roomType As String = ComboBox12.Text '房型
|
||
Dim configVer As String = TextBox11.Text '配置版本
|
||
Dim hostTypeNumber As String = TextBox12.Text '主机型号
|
||
Dim devPort As String = ComboBox3.Text '端口号
|
||
Dim devName As String = TextBox15.Text '设备名称
|
||
Dim devType As String = ComboBox1.Text '设备类型
|
||
Dim devTypeNumber As String = TextBox16.Text '设备型号
|
||
Dim devxieyi As String = TextBox8.Text '协议
|
||
Dim devBand As String = ComboBox2.Text '波特率
|
||
Dim devAddr As String = NumericUpDown3.Value '设备地址
|
||
Dim remarks As String = TextBox10.Text '备注
|
||
|
||
Dim conditions As String = $"Where ProjectNumber = '{projectNumber}' And RoomType = '{roomType}' And ConfigVersion = '{configVer}' And HostTypeNumber = '{hostTypeNumber}' And DevPort = '{devPort}' And DevName = '{devName}' And DevType = '{devType}' And DevTypeNumber = '{devTypeNumber}' And DevProtocol = '{devxieyi}' And DevBaud = '{devBand}' And DevAddress = '{devAddr}' And Remarks = '{remarks}'"
|
||
_SqlServer.Delete(_DevConfigName, GrdDevLists, conditions)
|
||
|
||
ComboBox11.Text = Nothing
|
||
ComboBox12.Text = Nothing
|
||
TextBox11.Text = Nothing
|
||
TextBox12.Text = Nothing
|
||
ComboBox3.Text = Nothing
|
||
TextBox15.Text = Nothing
|
||
ComboBox1.Text = Nothing
|
||
TextBox16.Text = Nothing
|
||
TextBox8.Text = Nothing
|
||
ComboBox2.Text = Nothing
|
||
NumericUpDown3.Value = 0
|
||
TextBox10.Text = Nothing
|
||
|
||
QueryDevList()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设备列表点击表格事件
|
||
''' </summary>
|
||
''' <param name="Sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub GrdDevList_Click(Sender As Object, e As EventArgs) Handles GrdDevLists.Click
|
||
If GrdDevLists.ActiveCell.Row > 0 Then
|
||
ComboBox11.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 1).Text '项目编号
|
||
ComboBox12.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 2).Text '房型
|
||
TextBox11.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 3).Text '配置版本
|
||
TextBox12.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 4).Text '主机型号
|
||
ComboBox3.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 5).Text '端口号
|
||
TextBox15.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 6).Text '设备名称
|
||
ComboBox1.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 7).Text '设备类型
|
||
TextBox16.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 8).Text '设备型号
|
||
TextBox8.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 9).Text '协议
|
||
ComboBox2.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 10).Text '波特率
|
||
If GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 11).Text = Nothing Then
|
||
NumericUpDown3.Value = 0
|
||
Else
|
||
NumericUpDown3.Value = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 11).Text '设备地址
|
||
End If
|
||
TextBox10.Text = GrdDevLists.Cell(GrdDevLists.ActiveCell.Row, 12).Text '备注
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 下拉选择项目编号
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub ComboBox11_DropDown(sender As Object, e As EventArgs) Handles ComboBox11.DropDown
|
||
ComboBox11.Items.Clear()
|
||
|
||
Dim addItems As New List(Of String)
|
||
Dim queryCol As String = $"DISTINCT ProjectNumber"
|
||
Dim dtTable As DataTable = _SqlServer.Query(queryCol, _ProjectInfoLists, "")
|
||
|
||
For r = 0 To dtTable.Rows.Count - 1
|
||
addItems.Add(dtTable(r)(0))
|
||
Next
|
||
|
||
ComboBox11.Items.AddRange(addItems.ToArray)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 下拉框项目编号文本改变
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub ComboBox11_TextChanged(sender As Object, e As EventArgs) Handles ComboBox11.TextChanged
|
||
ComboBox12.Items.Clear()
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询配置房型
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub ComboBox12_DropDown(sender As Object, e As EventArgs) Handles ComboBox12.DropDown
|
||
If ComboBox11.Text Is Nothing Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheItemNumber)}!")
|
||
Exit Sub
|
||
End If
|
||
|
||
ComboBox12.Items.Clear()
|
||
Dim projectCode As String = ComboBox11.Text
|
||
|
||
'根据项目编号查询房型
|
||
QueryConfigRoomType(projectCode)
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询房间编号
|
||
''' </summary>
|
||
''' <param name="projectCode">项目编号</param>
|
||
Private Sub QueryConfigRoomType(projectCode As String)
|
||
Dim addItems As New List(Of String)
|
||
Dim cols As String = $"DISTINCT RoomType"
|
||
Dim conditions As String = $"Where ProjectNumber = '{projectCode}'"
|
||
Dim dtTable As DataTable = _SqlServer.Query(cols, _RoomTypeLists, conditions)
|
||
|
||
For r = 0 To dtTable.Rows.Count - 1
|
||
addItems.Add(dtTable(r)(0))
|
||
Next
|
||
|
||
ComboBox12.Items.AddRange(addItems.ToArray)
|
||
End Sub
|
||
|
||
#End Region
|
||
|
||
#Region "设备列表"
|
||
|
||
Private _FrmAddDev As FrmAddDevice
|
||
|
||
|
||
''' <summary>
|
||
''' 新增设备
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click
|
||
_FrmAddDev = New FrmAddDevice
|
||
If _FrmAddDev.ShowDialog = DialogResult.OK Then
|
||
|
||
End If
|
||
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "设备存在"
|
||
|
||
''' <summary>
|
||
''' MAC地址
|
||
''' </summary>
|
||
Private _MAC As String
|
||
|
||
''' <summary>
|
||
''' 匹配次数
|
||
''' </summary>
|
||
Private _countMatching As Integer = 0
|
||
|
||
''' <summary>
|
||
''' 点击表格显示主机设备存在
|
||
''' </summary>
|
||
''' <param name="Sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub GrdRCUHost_Click(Sender As Object, e As EventArgs) Handles GrdRCUHost.Click
|
||
Try
|
||
If GrdRCUHost.ActiveCell.Row > 0 Then
|
||
_RemoteIP = IPAddress.Parse(GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.IPAddress).Text)
|
||
_MAC = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.MAC).Text
|
||
|
||
InitQueryDevStateTabData()
|
||
_QueryDevStateIndex = 1
|
||
|
||
Dim cmd As Byte = &HD1
|
||
Dim data(0) As Byte
|
||
data(0) = &H1
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUDPData(sendData)
|
||
'Console.WriteLine($"查询设备状态:{ByteToString(sendData)}")
|
||
|
||
'GetMatchingHostsInfo()
|
||
SetProjectInfo()
|
||
|
||
_countMatching += 1
|
||
If _countMatching = 1 Then
|
||
_dtMatchingInfo = GetCloudMatchingData(TextBox9.Text)
|
||
End If
|
||
|
||
'QueryMatchingInfo(_projectNumber)
|
||
MatchingInfo()
|
||
|
||
ShowTestModels(GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.CentralName).Text)
|
||
SetBatchTableData(GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.MAC).Text)
|
||
End If
|
||
Catch ex As Exception
|
||
Console.WriteLine($"未知错误!{ex.Message}")
|
||
End Try
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
'''
|
||
''' </summary>
|
||
''' <param name="Sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub GrdRCUHost_CellChange(Sender As Object, e As FlexCell.Grid.CellChangeEventArgs) Handles GrdRCUHost.CellChange
|
||
LabelCount.Text = $"{CheckedCount()}/{GrdRCUHost.Rows - 1}"
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取匹配主机信息
|
||
''' </summary>
|
||
Private Sub GetMatchingHostsInfo()
|
||
GrdMatching.Cell(1, EnMatchingInfo.HostsData).Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.ProjectCode).Text '项目编码
|
||
GrdMatching.Cell(2, EnMatchingInfo.HostsData).Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.RoomTypeId).Text '房型Id
|
||
GrdMatching.Cell(3, EnMatchingInfo.HostsData).Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.SoftwareVersion).Text '软件版本号
|
||
GrdMatching.Cell(4, EnMatchingInfo.HostsData).Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.MCUName).Text 'Core
|
||
GrdMatching.Cell(5, EnMatchingInfo.HostsData).Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.CentralName).Text 'Model-中控
|
||
GrdMatching.Cell(6, EnMatchingInfo.HostsData).Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.RoomRemarks).Text '房间备注
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设置项目信息
|
||
''' 设置主机信息到设置面板
|
||
''' </summary>
|
||
Private Sub SetProjectInfo()
|
||
'TextBox9.Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.ProjectCode).Text '项目编码
|
||
'ComboBox15.Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.RoomState).Text '房态
|
||
'ComboBox16.Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.RoomType).Text '房型备注
|
||
'ComboBox17.Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.RoomNumber).Text '房号备注
|
||
'TextBox21.Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.RoomTypeId).Text '房型ID
|
||
'TextBox25.Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.RoomNumberId).Text '房号ID
|
||
'ComboBox14.Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.Season).Text '季节
|
||
'ComboBox13.Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.Lock).Text '锁定
|
||
'DateTimePicker2.Value = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.PrivilegedDays).Text '授权到期
|
||
|
||
TextBox30.Text = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.RoomRemarks).Text '房间备注
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取云端匹配数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetCloudMatchingData(projectNumber As String)
|
||
Dim dtUser As New DataTable
|
||
dtUser.Columns.Add("ID")
|
||
dtUser.Columns.Add("房号")
|
||
dtUser.Columns.Add("房型ID")
|
||
dtUser.Columns.Add("房型")
|
||
dtUser.Columns.Add("MAC")
|
||
|
||
Dim creatDate As String
|
||
If _hotelListData.ContainsKey(projectNumber) = True Then
|
||
creatDate = _hotelListData(projectNumber).CreatDate
|
||
If DealHostListInterfaceInfo(projectNumber, creatDate) = True Then
|
||
For row = 0 To _hostListData.Keys.Count - 1
|
||
dtUser.Rows.Add("")
|
||
dtUser(row)(0) = _hostListData(row).ID
|
||
dtUser(row)(1) = _hostListData(row).RoomNumber
|
||
dtUser(row)(2) = _hostListData(row).RoomTypeID
|
||
dtUser(row)(3) = _hostListData(row).RoomTypeName
|
||
dtUser(row)(4) = _hostListData(row).MAC
|
||
Next
|
||
End If
|
||
End If
|
||
|
||
Return dtUser
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 匹配信息
|
||
''' </summary>
|
||
Private Sub MatchingInfo()
|
||
If TextBox9.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}" Then Return
|
||
If TextBox9.Text <> GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.ProjectCode).Text Then
|
||
CBoProjectNumber.ForeColor = Color.Red
|
||
AppendMatchTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCodesDoNotMatch)}!{vbCrLf}", Color.Red)
|
||
Else
|
||
CBoProjectNumber.ForeColor = Color.Black
|
||
|
||
''房型ID, 房号ID
|
||
If _dtMatchingInfo.Rows.Count > 0 Then
|
||
If GetRoomIDIsExist(0, EnRCUHosts.RoomNumberId) = False Then '房号ID
|
||
AppendMatchTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}:{GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.ProjectCode).Text}-{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomIDSDoNotMatch)}!{vbCrLf}", Color.Red)
|
||
End If
|
||
If GetRoomIDIsExist(2, EnRCUHosts.RoomTypeId) = False Then '房型ID
|
||
AppendMatchTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}:{GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.ProjectCode).Text}-{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomIDDoesNotMatch)}!{vbCrLf}", Color.Red)
|
||
End If
|
||
|
||
'房型,房号
|
||
If GetRoomIDIsMatch(0, 1, EnRCUHosts.RoomNumberId, EnRCUHosts.RoomNumber) = True Then
|
||
CBoRoomTpRemark.ForeColor = Color.Black
|
||
Else
|
||
CBoRoomTpRemark.ForeColor = Color.Red
|
||
AppendMatchTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}:{GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.ProjectCode).Text}-{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheRoomNumberDoesNotMatchTheRoomID)}!{vbCrLf}", Color.Red)
|
||
End If
|
||
|
||
If GetRoomIDIsMatch(2, 3, EnRCUHosts.RoomTypeId, EnRCUHosts.RoomType) = True Then
|
||
CBoRoomNuRemark.ForeColor = Color.Black
|
||
Else
|
||
CBoRoomNuRemark.ForeColor = Color.Red
|
||
AppendMatchTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}:{GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.ProjectCode).Text}-{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheRoomTypeDoesNotMatchTheRoomID)}!{vbCrLf}", Color.Red)
|
||
End If
|
||
|
||
If GetRoomIDIsMatch(0, 2, EnRCUHosts.RoomNumberId, EnRCUHosts.RoomTypeId) = False Then
|
||
AppendMatchTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}:{GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.ProjectCode).Text}-{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheRoomIDDoesNotMatchTheRoomTypeID)}!{vbCrLf}", Color.Red)
|
||
End If
|
||
|
||
'MAC地址
|
||
If GetRoomIDIsMatch(0, 4, EnRCUHosts.RoomNumberId, EnRCUHosts.MAC) = False Then
|
||
AppendMatchTipText($"MAC地址:匹配失败!{vbCrLf}", Color.Red)
|
||
AppendMatchTipText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}:{GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, EnRCUHosts.ProjectCode).Text}-{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheRoomIDDoesNotMatchTheMACaddress)}! 云端MAC地址:{_macCloud}{vbCrLf}", Color.Red)
|
||
End If
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询房间信息是否存在
|
||
''' </summary>
|
||
''' <param name="queryRow"></param>
|
||
''' <param name="dtRow"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomIDIsExist(queryRow As Integer, dtRow As Integer) As Boolean
|
||
For index = 0 To _dtMatchingInfo.Rows.Count - 1
|
||
If _dtMatchingInfo(index)(queryRow) = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, dtRow).Text Then
|
||
Return True
|
||
End If
|
||
Next
|
||
|
||
Return False
|
||
End Function
|
||
|
||
Private _macCloud As String
|
||
|
||
''' <summary>
|
||
''' 查询房间信息是否匹配
|
||
''' </summary>
|
||
''' <param name="queryRow1"></param>
|
||
''' <param name="queryRow2"></param>
|
||
''' <param name="dtRow1"></param>
|
||
''' <param name="dtRow2"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomIDIsMatch(queryRow1 As Integer, queryRow2 As Integer, dtRow1 As Integer, dtRow2 As Integer) As Boolean
|
||
For index = 0 To _dtMatchingInfo.Rows.Count - 1
|
||
'Console.WriteLine($"匹配信息:{_dtMatchingInfo(index)(queryRow2)}------{GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, dtRow1).Text}")
|
||
If _dtMatchingInfo(index)(queryRow1) = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, dtRow1).Text Then
|
||
Dim dtRow As String = GrdRCUHost.Cell(GrdRCUHost.ActiveCell.Row, dtRow2).Text
|
||
dtRow = dtRow.Replace(vbNullChar, "")
|
||
'Console.WriteLine($"1:{_dtMatchingInfo(index)(queryRow2)} 2:{dtRow}")
|
||
If _dtMatchingInfo(index)(queryRow2) = dtRow Then
|
||
Return True
|
||
End If
|
||
If queryRow2 = 4 Then
|
||
_macCloud = _dtMatchingInfo(index)(queryRow2)
|
||
End If
|
||
End If
|
||
Next
|
||
|
||
Return False
|
||
End Function
|
||
|
||
|
||
''' <summary> 匹配信息表 </summary>
|
||
Private _dtMatchingInfo As New DataTable
|
||
|
||
''' <summary>
|
||
''' 根据项目编码,查询匹配信息
|
||
''' </summary>
|
||
''' <param name="projectNumber"></param>
|
||
Private Sub QueryMatchingInfo(projectNumber As String)
|
||
'_dtMatchingInfo = _backstageData.GetMatchingInfo(projectNumber)
|
||
|
||
''If _dtMatchingInfo.Rows.Count > 0 Then
|
||
'' For index = 0 To _dtMatchingInfo.Rows.Count - 1
|
||
'' _roomNumber.Add(_dtMatchingInfo(index)(4)) '获取房号
|
||
'' Next
|
||
''End If
|
||
End Sub
|
||
|
||
|
||
Private _batch As Integer = 0
|
||
|
||
''' <summary>
|
||
''' 设置批量表格数据显示
|
||
''' </summary>
|
||
''' <param name="mac"></param>
|
||
Private Sub SetBatchTableData(mac As String)
|
||
Dim remoteMAC As String
|
||
For j = 1 To GrdBatchData.Rows - 1
|
||
remoteMAC = GrdBatchData.Cell(j, EnBatchData.MAC).Text
|
||
If GetComparison(mac, remoteMAC) = True Then
|
||
If GrdRCUHost.ActiveCell.Row <> _rcu Then
|
||
GrdRCUHost.Range(_rcu, 1, _rcu, GrdRCUHost.Cols - 1).BackColor = Color.LightCyan
|
||
GrdBatchData.Range(_rcu, 1, _rcu, GrdBatchData.Cols - 1).BackColor = Color.LightCyan
|
||
End If
|
||
GrdBatchData.Range(_batch, 1, _batch, GrdBatchData.Cols - 1).BackColor = Color.LightCyan
|
||
GrdBatchData.Range(j, 1, j, GrdBatchData.Cols - 1).BackColor = Color.LightSkyBlue
|
||
_batch = j
|
||
Exit For
|
||
'Else
|
||
'GrdBatchData.Range(j, 1, j, GrdBatchData.Cols - 1).BackColor = Color.LightCyan
|
||
End If
|
||
Next
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#End Region
|
||
|
||
#Region "通讯数据"
|
||
|
||
''' <summary>
|
||
''' 填充数据_搜索主机
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function FillDataBuff()
|
||
Dim user(3) As Byte
|
||
Dim heartbeat As Byte = &H0
|
||
|
||
Dim data As New List(Of Byte)
|
||
data.AddRange(user)
|
||
data.Add(heartbeat)
|
||
data.AddRange(GetAddressToByte)
|
||
data.AddRange(GetPortToByte)
|
||
|
||
Return data.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' IP地址转换为Byte数组
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetAddressToByte()
|
||
'Dim addr As String = CboLocalIp.Text
|
||
'Dim iadd() As String = addr.Split(New Char() {"."c}, StringSplitOptions.RemoveEmptyEntries)
|
||
Dim address(3) As Byte
|
||
address(0) = $"&H{Hex(255)}"
|
||
address(1) = $"&H{Hex(255)}"
|
||
address(2) = $"&H{Hex(255)}"
|
||
address(3) = $"&H{Hex(255)}"
|
||
|
||
Return address
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 端口号转换为Byte数组
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetPortToByte()
|
||
Dim bport As Integer = CInt(_localPort)
|
||
Dim port() As Byte = IntToByteLB(bport)
|
||
|
||
Return port
|
||
End Function
|
||
|
||
|
||
'''' <summary>
|
||
'''' 项目编号下拉触发事件
|
||
'''' </summary>
|
||
'''' <param name="sender"></param>
|
||
'''' <param name="e"></param>
|
||
'Private Sub ComboBox6_DropDown_1(sender As Object, e As EventArgs) Handles ComboBox6.DropDown
|
||
' ComboBox6.Items.Clear()
|
||
' QueryProjectNumber()
|
||
'End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询项目编号
|
||
''' </summary>
|
||
Private Sub QueryProjectNumber()
|
||
Dim addItems As New List(Of String)
|
||
Dim cols As String = $"DISTINCT ProjectNumber"
|
||
Dim dtTable As DataTable = _SqlServer.Query(cols, _ProjectInfoLists, "")
|
||
|
||
For r = 0 To dtTable.Rows.Count - 1
|
||
addItems.Add(dtTable(r)(0))
|
||
Next
|
||
ComboBox6.Items.AddRange(addItems.ToArray)
|
||
End Sub
|
||
|
||
|
||
'''' <summary>
|
||
'''' 查询项目编号对应的项目名称
|
||
'''' </summary>
|
||
'''' <param name="sender"></param>
|
||
'''' <param name="e"></param>
|
||
'Private Sub ComboBox6_TextChanged(sender As Object, e As EventArgs) Handles ComboBox6.TextChanged
|
||
' ComboBox4.Text = Nothing
|
||
' ComboBox7.Text = Nothing
|
||
' TextBox24.Text = Nothing
|
||
|
||
' Dim addItem As New List(Of String)
|
||
' Dim cols As String = $"ProjectNumber, ProjectName"
|
||
' Dim contions As String = $"Where ProjectNumber = '{ComboBox6.Text}'"
|
||
' Dim daTable As DataTable = _SqlServer.Query(cols, _ProjectInfoLists, contions)
|
||
|
||
' If daTable.Rows.Count > 0 Then
|
||
' TextBox23.Text = daTable(0)(1)
|
||
' End If
|
||
'End Sub
|
||
|
||
|
||
|
||
'''' <summary>
|
||
'''' 根据项目编号查询房型
|
||
'''' </summary>
|
||
'''' <param name="sender"></param>
|
||
'''' <param name="e"></param>
|
||
'Private Sub ComboBox4_DropDown_1(sender As Object, e As EventArgs) Handles ComboBox4.DropDown
|
||
' If ComboBox6.Text Is Nothing Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheItemNumber)}!")
|
||
' Exit Sub
|
||
' End If
|
||
' ComboBox4.Items.Clear()
|
||
' Dim projectCode As String = ComboBox6.Text
|
||
|
||
' '根据项目编号查询房型
|
||
' QueryRoomType(projectCode)
|
||
'End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询房型编号
|
||
''' </summary>
|
||
''' <param name="projectCode">项目编号</param>
|
||
Private Sub QueryRoomType(projectCode As String)
|
||
Dim addItems As New List(Of String)
|
||
Dim cols As String = $"DISTINCT RoomNumber"
|
||
Dim conditions As String = $"Where ProjectNumber = '{projectCode}'"
|
||
Dim dtTable As DataTable = _SqlServer.Query(cols, _RoomInfoLists, conditions)
|
||
|
||
For r = 0 To dtTable.Rows.Count - 1
|
||
addItems.Add(dtTable(r)(0))
|
||
Next
|
||
ComboBox4.Items.AddRange(addItems.ToArray)
|
||
End Sub
|
||
|
||
|
||
'''' <summary>
|
||
'''' 下拉框文本改变事件
|
||
'''' 根据项目编号和房型查询配置数据
|
||
'''' </summary>
|
||
'''' <param name="sender"></param>
|
||
'''' <param name="e"></param>
|
||
'Private Sub ComboBox4_TextChanged(sender As Object, e As EventArgs) Handles ComboBox4.TextChanged
|
||
' TextBox24.Text = Nothing
|
||
' ComboBox7.Text = Nothing
|
||
|
||
' If ComboBox6.Text Is Nothing And ComboBox6.Text = "" Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheItemNumberIsEmpty)}!")
|
||
' Exit Sub
|
||
' End If
|
||
|
||
' Dim projectCode As String = ComboBox6.Text
|
||
' Dim roomNumber As String = ComboBox4.Text
|
||
' Dim roomRemarks As String = TextBox29.Text
|
||
|
||
' Dim taTable As DataTable
|
||
' Dim queryCols As String = $"DISTINCT RoomType, Remarks "
|
||
' Dim conditions As String = $"WHERE ProjectNumber = '{projectCode}' AND RoomNumber = '{roomNumber}'"
|
||
' taTable = _SqlServer.Query(queryCols, _RoomInfoLists, conditions)
|
||
|
||
' If taTable.Rows.Count > 0 Then
|
||
' Dim addItem As String = taTable.Rows(0)(0)
|
||
' TextBox24.Text = addItem
|
||
' Dim addRemarks As String = taTable.Rows(0)(1)
|
||
' TextBox29.Text = addRemarks
|
||
' End If
|
||
'End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 配置存在
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
|
||
''Console.WriteLine($"请选择主机 {GrdRCUHost.ActiveCell.Row}")
|
||
'If GrdRCUHost.ActiveCell.Row = 0 Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
' Exit Sub
|
||
'End If
|
||
|
||
'If TextIsNull(ComboBox6, $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}") = False Then Exit Sub
|
||
'If TextIsNull(ComboBox7, $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ConfigVersion)}") = False Then Exit Sub
|
||
'If TextIsNull(ComboBox4, $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNumberRemark)}") = False Then Exit Sub
|
||
'If TextIsNull(TextBox24, $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomTypeRemark)}") = False Then Exit Sub
|
||
|
||
''1、设置配置
|
||
'SetConfig()
|
||
'PauseWait(100)
|
||
|
||
''2、配置下发
|
||
'If _SetConfigSign = True Then
|
||
' ConfigIssued()
|
||
'End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设置配置
|
||
''' </summary>
|
||
Private Sub SetConfig()
|
||
Dim cmd As Byte = &H31
|
||
Dim data As Byte() = FillSetConfigData() '发送
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUDPData(sendData)
|
||
'Console.WriteLine($"设置配置:{ByteToString(sendData)}")
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 填充设置配置数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function FillSetConfigData() As Byte()
|
||
Dim projectNumber As String = ComboBox6.Text
|
||
Dim configNumber As String = ComboBox7.Text
|
||
Dim roomNumber As String = ComboBox4.Text
|
||
Dim roomType As String = TextBox24.Text
|
||
Dim configCount As Byte = &H4
|
||
|
||
Dim proNum() As Byte
|
||
Dim conNum() As Byte
|
||
Dim roomNum() As Byte
|
||
Dim roomT() As Byte
|
||
Dim roomtypes(3) As Byte
|
||
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(configCount)
|
||
|
||
'项目编号
|
||
databuf.Add(&H38)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
proNum = StringToByte(projectNumber)
|
||
databuf.AddRange(proNum)
|
||
|
||
'配置版本号
|
||
databuf.Add(&H40)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
conNum = VerStringToByte(configNumber)
|
||
databuf.AddRange(conNum)
|
||
|
||
'房间编号
|
||
databuf.Add(&H44)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
roomNum = StringToByte(roomNumber)
|
||
databuf.AddRange(roomNum)
|
||
|
||
'房型
|
||
databuf.Add(&H48)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
roomT = System.Text.Encoding.UTF8.GetBytes(roomType)
|
||
Array.Copy(roomT, 0, roomtypes, 0, roomT.Length)
|
||
databuf.AddRange(roomtypes)
|
||
|
||
'Console.WriteLine($"设置配置数据:{ByteToString(databuf.ToArray)}")
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 字符串转4个byte的数组
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <returns></returns>
|
||
Private Function StringToByte(txt As String) As Byte()
|
||
Dim buf(3) As Byte
|
||
Dim arrtxt As Long = txt
|
||
buf = BitConverter.GetBytes(arrtxt)
|
||
|
||
Dim buff(3) As Byte
|
||
Array.Copy(buf, 0, buff, 0, buff.Length)
|
||
Return buff
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 字符串转4个字节Byte
|
||
''' </summary>
|
||
''' <param name="txt"></param>
|
||
''' <returns></returns>
|
||
Private Function VerStringToByte(txt As String) As Byte()
|
||
Dim txtString() As String = txt.Split(".")
|
||
Dim buf(3) As Byte
|
||
|
||
For index = 0 To txtString.Length - 1
|
||
If index = 4 Then Exit For
|
||
buf(index) = txtString(index)
|
||
Next
|
||
|
||
Return buf
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 配置下发
|
||
''' </summary>
|
||
Private Sub ConfigIssued()
|
||
Dim dtTable As DataTable = GrdConfigDatas.DataSource
|
||
If dtTable.Rows().Count = 0 Then
|
||
'特殊处理
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.EquipmentIsEmpty)}!")
|
||
Exit Sub
|
||
End If
|
||
|
||
SelectDevListData(dtTable)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 查询设备列表数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function SelectDevListData(dtTable As DataTable)
|
||
'一包最多容纳2个设备,一个设备240个字节
|
||
Dim sendCount As Integer = dtTable.Rows().Count \ 2 + 1
|
||
Dim sendIndex As Integer = 1
|
||
|
||
Dim data As New List(Of Byte)
|
||
data.Add(sendCount)
|
||
data.Add(sendIndex)
|
||
|
||
Dim devIndex As Integer = 0
|
||
For Each dtRow As DataRow In dtTable.Rows()
|
||
'填充buf
|
||
data.Add(&H0) '设备存在
|
||
|
||
'If _devTypes.Contains(dtRow("DevType")) Then '设备类型
|
||
' data.Add(_devTypes.ToList.IndexOf(dtRow("DevType")))
|
||
'Else
|
||
' data.Add(&H0)
|
||
'End If
|
||
|
||
data.Add(GetDevTypeToByte(dtRow("DevType"))) '设备类型
|
||
|
||
data.Add(dtRow("DevAddress")) '设备地址
|
||
|
||
data.Add(GetDevBaudToByte(dtRow("DevBaud"))) '波特率
|
||
|
||
If _devPorts.Contains(dtRow("DevPort")) Then '端口号
|
||
data.Add(_devPorts.ToList.IndexOf(dtRow("DevPort")))
|
||
Else
|
||
data.Add(&H0)
|
||
End If
|
||
|
||
data.Add(dtRow("DevProtocol")) '设备协议
|
||
|
||
For index = 1 To 64
|
||
data.Add(&H0) '保留64位
|
||
Next
|
||
|
||
'data.AddRange(BitConverter.GetBytes(CShort(dtRow("DevInput")))) '输入回路
|
||
'data.AddRange(BitConverter.GetBytes(CShort(dtRow("DevOutput")))) '输出回路
|
||
|
||
Dim devTypeNumber(15) As Byte
|
||
Dim temp() As Byte
|
||
temp = System.Text.Encoding.UTF8.GetBytes("DevTypeNumber")
|
||
Array.Copy(temp, 0, devTypeNumber, 0, temp.Length)
|
||
'Console.WriteLine($"{BitConverter.ToString(devTypeNumber)}")
|
||
'Console.WriteLine($"{System.Text.Encoding.UTF8.GetString(devTypeNumber)}")
|
||
data.AddRange(devTypeNumber) '设备型号
|
||
|
||
Dim devName(15) As Byte
|
||
Dim tmp() As Byte
|
||
tmp = System.Text.Encoding.UTF8.GetBytes("DevName")
|
||
Array.Copy(tmp, 0, devName, 0, tmp.Length)
|
||
'Console.WriteLine($"{BitConverter.ToString(devName)}")
|
||
'Console.WriteLine($"{System.Text.Encoding.UTF8.GetString(devName)}")
|
||
data.AddRange(devName) '设备名称
|
||
|
||
Dim remarks(137) As Byte
|
||
Dim temps() As Byte
|
||
temps = System.Text.Encoding.UTF8.GetBytes(dtRow("Remarks"))
|
||
Array.Copy(temps, 0, devTypeNumber, 0, temps.Length)
|
||
data.AddRange(remarks) '备注
|
||
|
||
devIndex += 1
|
||
If devIndex = 2 Then
|
||
SendDevlistData(data.ToArray) '发送
|
||
|
||
devIndex = 0
|
||
sendIndex += 1
|
||
|
||
data.Clear()
|
||
data.Add(sendCount)
|
||
data.Add(sendIndex)
|
||
End If
|
||
Next
|
||
|
||
If devIndex > 0 Then
|
||
SendDevlistData(data.ToArray) '发送
|
||
End If
|
||
|
||
Return data
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 发送设备列表数据
|
||
''' </summary>
|
||
''' <param name="data"></param>
|
||
Private Sub SendDevlistData(data() As Byte)
|
||
Dim cmd As Byte = &HD2
|
||
|
||
'发送
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUDPData(sendData)
|
||
'Console.WriteLine($"配置主机:{ByteToString(sendData)}")
|
||
'Console.WriteLine($"配置主机数据长:{sendData.Length}")
|
||
|
||
_SetConfigSign = False
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取设备类型
|
||
''' </summary>
|
||
''' <param name="devType"></param>
|
||
''' <returns></returns>
|
||
Private Function GetDevTypeToByte(devType As String) As Byte
|
||
Dim devTypeBt As Byte
|
||
Select Case devType
|
||
Case $"0_无效设备"
|
||
devTypeBt = &H0
|
||
Case $"1_电继电器"
|
||
devTypeBt = &H1
|
||
Case $"2_继电器输入状态"
|
||
devTypeBt = &H2
|
||
Case $"3_继电器输出状态"
|
||
devTypeBt = &H3
|
||
Case $"4_服务信息"
|
||
devTypeBt = &H4
|
||
Case $"5_干节点窗帘"
|
||
devTypeBt = &H5
|
||
Case $"6_开关指示灯"
|
||
devTypeBt = &H6
|
||
Case $"7_空调1"
|
||
devTypeBt = &H7
|
||
Case $"8_红外感应"
|
||
devTypeBt = &H8
|
||
Case $"9_空气质量检测设备"
|
||
devTypeBt = &H9
|
||
Case $"10_插卡取电"
|
||
devTypeBt = &HA
|
||
Case $"11_地暖"
|
||
devTypeBt = &HB
|
||
Case $"12_RCU设备网络"
|
||
devTypeBt = &HC
|
||
Case $"13_窗帘"
|
||
devTypeBt = &HD
|
||
Case $"14_继电器"
|
||
devTypeBt = &HE
|
||
Case $"15_红外发送"
|
||
devTypeBt = &HF
|
||
Case $"16_直流调光"
|
||
devTypeBt = &H10
|
||
Case $"17_可控硅调光"
|
||
devTypeBt = &H11
|
||
Case $"18_灯带"
|
||
devTypeBt = &H12
|
||
Case $"19_中控"
|
||
devTypeBt = &H13
|
||
Case $"20_微信锁"
|
||
devTypeBt = &H14
|
||
Case $"21_背景音乐"
|
||
devTypeBt = &H15
|
||
Case $"22_房态下发"
|
||
devTypeBt = &H16
|
||
Case $"23_主机本地调光"
|
||
devTypeBt = &H17
|
||
Case $"24_PWM调光"
|
||
devTypeBt = &H18
|
||
Case $"25_LED调光"
|
||
devTypeBt = &H19
|
||
Case $"26_RCU电源"
|
||
devTypeBt = &H1A
|
||
Case $"27_A9IO开关"
|
||
devTypeBt = &H1B
|
||
Case $"28_A9IO扩展"
|
||
devTypeBt = &H1C
|
||
Case $"29_A9IO电源"
|
||
devTypeBt = &H1D
|
||
Case $"30_无线网关轮询"
|
||
devTypeBt = &H1E
|
||
Case $"31_无线网关主动"
|
||
devTypeBt = &H1F
|
||
Case Else
|
||
devTypeBt = &H0
|
||
End Select
|
||
|
||
Return devTypeBt
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取设备类型
|
||
''' </summary>
|
||
''' <param name="devTypeBy"></param>
|
||
''' <returns></returns>
|
||
Private Function GetDevTypeToString(devTypeBy As Byte) As String
|
||
Dim devType As String
|
||
Select Case devTypeBy
|
||
Case &H0
|
||
devType = $"无效设备-{devTypeBy}"
|
||
Case &H1
|
||
devType = $"电继电器"
|
||
Case &H2
|
||
devType = $"继电器输入状态"
|
||
Case &H3
|
||
devType = $"继电器输出状态"
|
||
Case &H4
|
||
devType = $"服务信息"
|
||
Case &H5
|
||
devType = $"干节点窗帘"
|
||
Case &H6
|
||
devType = $"开关指示灯"
|
||
Case &H7
|
||
devType = $"空调"
|
||
Case &H8
|
||
devType = $"红外感应"
|
||
Case &H9
|
||
devType = $"空气质量检测设备"
|
||
Case &HA
|
||
devType = $"插卡取电"
|
||
Case &HC
|
||
devType = $"RCU设备网络"
|
||
Case &HD
|
||
devType = $"窗帘"
|
||
Case &HE
|
||
devType = $"继电器"
|
||
Case &HF
|
||
devType = $"红外发送"
|
||
Case &H10
|
||
devType = $"直流调光"
|
||
Case &H11
|
||
devType = $"可控硅调光"
|
||
Case &H12
|
||
devType = $"灯带"
|
||
Case &H13
|
||
devType = $"中控"
|
||
Case &H14
|
||
devType = $"微信锁"
|
||
Case &H15
|
||
devType = $"背景音乐"
|
||
Case &H16
|
||
devType = $"房态下发"
|
||
Case &H17
|
||
devType = $"主机本地调光"
|
||
Case &H18
|
||
devType = $"PWM调光"
|
||
Case &H19
|
||
devType = $"LED调光"
|
||
Case &H1A
|
||
devType = $"RCU电源"
|
||
Case &H1B
|
||
devType = $"A9IO开关"
|
||
Case &H1C
|
||
devType = $"A9IO扩展"
|
||
Case &H1D
|
||
devType = $"A9IO电源"
|
||
Case &H1E
|
||
devType = $"无线网关轮询"
|
||
Case &H1F
|
||
devType = $"无线网关主动"
|
||
Case &HF2
|
||
devType = $"PC测试"
|
||
Case &HF1
|
||
devType = $"C5IO"
|
||
Case Else
|
||
devType = $"未知设备-{devTypeBy}"
|
||
End Select
|
||
|
||
Return devType
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取设备波特率Byte值
|
||
''' </summary>
|
||
''' <param name="devBaud"></param>
|
||
''' <returns></returns>
|
||
Private Function GetDevBaudToByte(devBaud As String) As Byte
|
||
Dim baud As Byte
|
||
Select Case devBaud
|
||
Case "9600"
|
||
baud = &H1
|
||
Case "14400"
|
||
baud = &H2
|
||
Case "19200"
|
||
baud = &H3
|
||
Case "38400"
|
||
baud = &H4
|
||
Case "56000"
|
||
baud = &H5
|
||
Case "57600"
|
||
baud = &H6
|
||
Case "115200"
|
||
baud = &H7
|
||
Case "4800"
|
||
baud = &H8
|
||
Case "2400"
|
||
baud = &H9
|
||
Case Else
|
||
baud = &H0
|
||
End Select
|
||
|
||
Return baud
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 读取设置配置
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
|
||
'If GrdRCUHost.ActiveCell.Row = 0 Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
' Exit Sub
|
||
'End If
|
||
'Dim cmd As Byte = &H30
|
||
|
||
''发送
|
||
'Dim data As Byte() = FillReadConfigData()
|
||
'Dim sendData As Byte() = FillSendData(cmd, data)
|
||
'SendUDPData(sendData)
|
||
''Console.WriteLine($"读取设置配置:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 填充读取设置数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function FillReadConfigData() As Byte()
|
||
Dim configCount As Byte = &H4
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(configCount)
|
||
|
||
'项目编号
|
||
databuf.Add(&H34)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
'配置版本号
|
||
databuf.Add(&H3C)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
'房间编号
|
||
databuf.Add(&H40)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
'房型
|
||
databuf.Add(&H44)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 是否点击OK
|
||
''' </summary>
|
||
Public _IsOK As Boolean
|
||
|
||
|
||
''' <summary>
|
||
''' 设置MAC
|
||
''' </summary>
|
||
Private Sub SetMAC()
|
||
Dim frmmacdia As New FrmMACDialog(Me)
|
||
frmmacdia.ShowMyDialog()
|
||
|
||
If _IsOK = True Then
|
||
Dim data() As Byte = frmmacdia.GetMACAddress()
|
||
Dim cmd As Byte = &H31
|
||
'发送
|
||
Dim databuff As Byte() = FillMACIssuedData(data)
|
||
Dim senddata As Byte() = FillSendData(cmd, databuff)
|
||
'Console.WriteLine($"设置mac:{ByteToString(senddata)}")
|
||
SendUDPData(senddata)
|
||
Console.WriteLine($"设置mac:{ByteToString(senddata)}")
|
||
|
||
_IsOK = False
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 填充MAC下发数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Public Function FillMACIssuedData(data As Byte())
|
||
Dim dataBuff As New List(Of Byte)
|
||
dataBuff.Add(&H1) '寄存器个数
|
||
dataBuff.Add(&H14) '寄存器地址'00000014
|
||
dataBuff.Add(&H0)
|
||
dataBuff.Add(&H0)
|
||
dataBuff.Add(&H0)
|
||
dataBuff.AddRange(data)
|
||
|
||
Return dataBuff.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' MAC地址下发
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub BtnMAC_Click(sender As Object, e As EventArgs) Handles BtnMAC.Click
|
||
SetMAC()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' MAC地址下发
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button20_Click(sender As Object, e As EventArgs) Handles Button20.Click
|
||
SetMAC()
|
||
End Sub
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "调试信息"
|
||
|
||
''' <summary>
|
||
''' 系统信息
|
||
''' </summary>
|
||
Private Sub SystemInfo()
|
||
Dim cmd As Byte = &H9
|
||
Dim state(0) As Byte
|
||
If CheckBox1.Checked = True Then
|
||
state(0) = &H1
|
||
Else
|
||
state(0) = &H0
|
||
End If
|
||
|
||
Dim sendData() As Byte = FillModelsSerialPortTest(cmd, state)
|
||
'Console.WriteLine($"系统信息测试:{ByteToString(sendData)}")
|
||
SendPortData(sendData)
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 网络信息
|
||
''' </summary>
|
||
Private Sub NetworkInfo()
|
||
Dim cmd As Byte = &H9
|
||
Dim state(0) As Byte
|
||
If CheckBox2.Checked = True Then
|
||
state(0) = &H2
|
||
Else
|
||
state(0) = &H0
|
||
End If
|
||
|
||
Dim sendData() As Byte = FillModelsSerialPortTest(cmd, state)
|
||
'Console.WriteLine($"网络信息测试:{ByteToString(sendData)}")
|
||
SendPortData(sendData)
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 设备信息
|
||
''' </summary>
|
||
Private Sub EquipmentInfo()
|
||
Dim cmd As Byte = &H9
|
||
Dim state(0) As Byte
|
||
If CheckBox3.Checked = True Then
|
||
state(0) = &H4
|
||
Else
|
||
state(0) = &H0
|
||
End If
|
||
|
||
Dim sendData() As Byte = FillModelsSerialPortTest(cmd, state)
|
||
'Console.WriteLine($"设备信息测试:{ByteToString(sendData)}")
|
||
SendPortData(sendData)
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 逻辑信息
|
||
''' </summary>
|
||
Private Sub LogicalInfo()
|
||
Dim cmd As Byte = &H9
|
||
Dim state(0) As Byte
|
||
If CheckBox4.Checked = True Then
|
||
state(0) = &H8
|
||
Else
|
||
state(0) = &H0
|
||
End If
|
||
|
||
Dim sendData() As Byte = FillModelsSerialPortTest(cmd, state)
|
||
' Console.WriteLine($"逻辑信息测试:{ByteToString(sendData)}")
|
||
SendPortData(sendData)
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 临时信息
|
||
''' </summary>
|
||
Private Sub TemporaryInfo()
|
||
Dim cmd As Byte = &H9
|
||
Dim state(0) As Byte
|
||
If CheckBox5.Checked = True Then
|
||
state(0) = &H16
|
||
Else
|
||
state(0) = &H0
|
||
End If
|
||
|
||
Dim sendData() As Byte = FillModelsSerialPortTest(cmd, state)
|
||
'Console.WriteLine($"临时信息测试:{ByteToString(sendData)}")
|
||
SendPortData(sendData)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 系统信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
|
||
SystemInfo()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 网络信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
|
||
NetworkInfo()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设备信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox3_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox3.CheckedChanged
|
||
EquipmentInfo()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 逻辑信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox4_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox4.CheckedChanged
|
||
LogicalInfo()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 临时信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox5_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox5.CheckedChanged
|
||
TemporaryInfo()
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "固件升级"
|
||
|
||
#Region "RCU主机列表"
|
||
|
||
''' <summary>
|
||
''' EnRCUHosts
|
||
''' </summary>
|
||
Enum EnRCUHosts
|
||
''' <summary>ID</summary>
|
||
ID
|
||
''' <summary>勾选</summary>
|
||
IsCheck
|
||
''' <summary>升级</summary>
|
||
Update
|
||
''' <summary>项目编码</summary>
|
||
ProjectCode
|
||
''' <summary>房型</summary>
|
||
RoomType
|
||
''' <summary>房号</summary>
|
||
RoomNumber
|
||
''' <summary>MAC</summary>
|
||
MAC
|
||
IPType
|
||
''' <summary>IP地址</summary>
|
||
IPAddress
|
||
''' <summary>房间备注</summary>
|
||
RoomRemarks
|
||
''' <summary>房态</summary>
|
||
RoomState
|
||
''' <summary>机型编号</summary>
|
||
ModelNumber
|
||
''' <summary>软件版本号</summary>
|
||
SoftwareVersion
|
||
''' <summary>配置版本号</summary>
|
||
ConfigVersion
|
||
pzholtename
|
||
pzroomname
|
||
''' <summary>按键状态</summary>
|
||
BtnSatae
|
||
''' <summary>房号ID</summary>
|
||
RoomNumberId
|
||
''' <summary>房型ID</summary>
|
||
RoomTypeId
|
||
''' <summary>端口号</summary>
|
||
Port
|
||
''' <summary>网关</summary>
|
||
Gateway
|
||
''' <summary>子网掩码</summary>
|
||
Subnet
|
||
''' <summary>DNS</summary>
|
||
DNS
|
||
''' <summary>服务器地址</summary>
|
||
ServiceAddr
|
||
''' <summary>主机时间</summary>
|
||
Time
|
||
''' <summary>季节</summary>
|
||
Season
|
||
''' <summary>锁定</summary>
|
||
Lock
|
||
''' <summary>授权时间</summary>
|
||
PrivilegedTime
|
||
''' <summary>授权到期时间</summary>
|
||
PrivilegedDays
|
||
''' <summary>MCU机型名称</summary>
|
||
MCUName
|
||
''' <summary>中控机型名称</summary>
|
||
CentralName
|
||
Launcher
|
||
End Enum
|
||
|
||
''' <summary>
|
||
''' RFU主机列名
|
||
''' </summary>
|
||
Private _colNames() As String = {$"空",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Ticked)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.UpgradeProgress)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomTypeRemark)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNumberRemark)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MAC)}",
|
||
$"IP类型",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.IPAddress)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomRemark)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomStatus)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ModelNumber)}",
|
||
$"固件APP版本",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ConfigVersion)}",
|
||
$"配置酒店名",
|
||
$"配置房型名",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Buttons)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNumberID)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomTypeID)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Port)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Gateway)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SubnetMask)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DNS)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Server)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.HostTime)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Season)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Lock)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PrivilegedTime)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.AuthorizationExpirationTime)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Core)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Model)}",
|
||
$"Launcher"}
|
||
|
||
|
||
''' <summary>
|
||
''' 初始化RCU主机表格数据
|
||
''' </summary>
|
||
Private Sub InitRCUHostsTablesData()
|
||
GrdRCUHost.DisplayRowNumber = True
|
||
GrdRCUHost.Cols = _colNames.Length
|
||
GrdRCUHost.Rows = 1
|
||
|
||
For index = 1 To GrdRCUHost.Cols - 1
|
||
With GrdRCUHost.Cell(0, index)
|
||
.Text = _colNames(index)
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font($"Arial", 9, FontStyle.Bold)
|
||
End With
|
||
|
||
If CBoPort.Checked = True Then '端口-40
|
||
GrdRCUHost.Column(EnRCUHosts.Port).Width = 40
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.Port).Width = 0
|
||
End If
|
||
If CheckBox16.Checked = True Then '服务器-90
|
||
GrdRCUHost.Column(EnRCUHosts.ServiceAddr).Width = 90
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.ServiceAddr).Width = 0
|
||
End If
|
||
If CheckBox21.Checked = True Then '子网掩码-90
|
||
GrdRCUHost.Column(EnRCUHosts.Subnet).Width = 90
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.Subnet).Width = 0
|
||
End If
|
||
|
||
If CheckBox20.Checked = True Then '网关-90
|
||
GrdRCUHost.Column(EnRCUHosts.Gateway).Width = 90
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.Gateway).Width = 0
|
||
End If
|
||
If CheckBox19.Checked = True Then 'DNS-110
|
||
GrdRCUHost.Column(EnRCUHosts.DNS).Width = 110
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.DNS).Width = 0
|
||
End If
|
||
If CBoLock.Checked = True Then '锁定-40px
|
||
GrdRCUHost.Column(EnRCUHosts.Lock).Width = 40
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.Lock).Width = 0
|
||
End If
|
||
|
||
If CBoMandateDate.Checked = True Then '授权时间-120px
|
||
GrdRCUHost.Column(EnRCUHosts.PrivilegedTime).Width = 120
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.PrivilegedTime).Width = 0
|
||
End If
|
||
If CBoMandateEnd.Checked = True Then '授权到期时间-120px
|
||
GrdRCUHost.Column(EnRCUHosts.PrivilegedDays).Width = 120
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.PrivilegedDays).Width = 0
|
||
End If
|
||
If CheckBox18.Checked = True Then '房间备注-200px
|
||
GrdRCUHost.Column(EnRCUHosts.RoomRemarks).Width = 200
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.RoomRemarks).Width = 0
|
||
End If
|
||
|
||
With GrdRCUHost.Column(index)
|
||
If index = EnRCUHosts.MAC Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 110
|
||
ElseIf index = EnRCUHosts.ConfigVersion OrElse
|
||
index = EnRCUHosts.SoftwareVersion OrElse
|
||
index = EnRCUHosts.MCUName OrElse
|
||
index = EnRCUHosts.CentralName OrElse
|
||
index = EnRCUHosts.PrivilegedTime OrElse
|
||
index = EnRCUHosts.PrivilegedDays OrElse
|
||
index = EnRCUHosts.Time Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 120
|
||
ElseIf index = EnRCUHosts.RoomRemarks OrElse
|
||
index = EnRCUHosts.Season Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 200
|
||
ElseIf index = EnRCUHosts.IPAddress Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 90
|
||
ElseIf index = EnRCUHosts.ProjectCode OrElse
|
||
index = EnRCUHosts.ModelNumber Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 60
|
||
ElseIf index = EnRCUHosts.Update Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 100
|
||
ElseIf index = EnRCUHosts.IsCheck Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 40
|
||
ElseIf index = EnRCUHosts.Launcher Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 100
|
||
ElseIf index = EnRCUHosts.pzholtename Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 240
|
||
ElseIf index = EnRCUHosts.pzroomname Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 240
|
||
Else
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 70
|
||
End If
|
||
|
||
If index = 1 Then
|
||
.CellType = FlexCell.CellTypeEnum.CheckBox
|
||
End If
|
||
End With
|
||
Next
|
||
GrdRCUHost.Column(0).Width = 25
|
||
GrdRCUHost.SelectionMode = FlexCell.SelectionModeEnum.ByRow '设置选中行
|
||
GrdRCUHost.Column(EnRCUHosts.BtnSatae).Visible = False
|
||
GrdRCUHost.FrozenCols = 7
|
||
GrdRCUHost.AllowUserSort = True
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "文件解析"
|
||
|
||
#Region "搜索"
|
||
|
||
''' <summary> 升级文件的名称 </summary>
|
||
Private _UpdateFileName As String
|
||
|
||
''' <summary>
|
||
''' 初始化网络信息
|
||
''' </summary>
|
||
Private Sub InitLocalNetWorkInfo()
|
||
CboLocalIPInfo.Items.Clear()
|
||
CboLocalIPInfo.Items.AddRange(GetLocalIp().ToArray)
|
||
If CboLocalIPInfo.Items.Count > 0 Then CboLocalIPInfo.SelectedIndex = 0
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 切换本地IP地址
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CboLocalIPInfo_TextChanged(sender As Object, e As EventArgs) Handles CboLocalIPInfo.TextChanged
|
||
_localIP = CboLocalIPInfo.Text
|
||
_localPort = GetRandomPort()
|
||
|
||
ConnNetWork()
|
||
|
||
|
||
'FrmAdvancedSettings.BtnNetworkConnect.PerformClick()
|
||
'_localIP = CboLocalIPInfo.Text
|
||
'_localPort = FrmAdvancedSettings.NudLocalPort.Text
|
||
'FrmAdvancedSettings.BtnNetworkConnect.PerformClick()
|
||
End Sub
|
||
|
||
|
||
Public Sub ConnNetWork()
|
||
If _connectStatus = True Then
|
||
_connectStatus = False
|
||
_isReceiving = False
|
||
_isNetWork = False
|
||
''加保护机制
|
||
_socket.Shutdown(SocketShutdown.Both)
|
||
_socket.Close()
|
||
End If
|
||
UpdataConnectStatus()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 网络发送方式
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox6_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox6.CheckedChanged
|
||
If CheckBox6.Checked = True Then
|
||
CheckBox6.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Radio)
|
||
Else
|
||
CheckBox6.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.DirectlyConn)
|
||
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary> 按键文本改变 </summary>
|
||
Private _BtnTextThread As Thread
|
||
|
||
''' <summary>
|
||
''' 固件升级_搜索
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button25_Click(sender As Object, e As EventArgs) Handles Button25.Click
|
||
|
||
|
||
|
||
If CheckBox6.Checked = True Then
|
||
_RemoteIP = IPAddress.Parse($"255.255.255.255")
|
||
_RemotePort = 3341
|
||
Else
|
||
Dim ipaddr As IPAddress = LocalIPInfo()
|
||
_RemoteIP = ipaddr
|
||
_RemotePort = 3341
|
||
End If
|
||
|
||
'If _connectStatus = False Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseOpenTheNetworkOrSerialPort)}!")
|
||
' Return
|
||
'End If
|
||
ShowTestModels("")
|
||
_countMatching = 0
|
||
'RadioButton1.Checked = True
|
||
Panel2.Visible = False
|
||
Panel1.BringToFront()
|
||
Panel1.Visible = True
|
||
|
||
'StateReplyLabel($"...", Color.Black)
|
||
If Button25.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Search) Then
|
||
|
||
|
||
|
||
'pollThreadclass.SetPollingState(9)
|
||
'pollThreadclass.StopPolling()
|
||
ConnNetWork()
|
||
_hostsList.Clear()
|
||
InitRCUHostsTablesData()
|
||
_RCUSearchIndex = 1
|
||
_searchHost = False
|
||
_searchHosts = True
|
||
_isShowCol = True
|
||
GrdRCUHost.Enabled = False
|
||
Console.WriteLine("SearchHosts")
|
||
_BtnTextThread = New Thread(New ThreadStart(AddressOf SearchHosts))
|
||
_BtnTextThread.Start()
|
||
|
||
Else
|
||
|
||
|
||
'SendIntervalTime = 10
|
||
'pollThreadclass.SetPollingState(2)
|
||
GrdRCUHost.Enabled = True
|
||
_BtnTextThread.Abort()
|
||
Button25.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Search)
|
||
LabelCount.Text = $"0/{GrdRCUHost.Rows - 1}"
|
||
|
||
'RichText_Debug.Text = rcvData
|
||
End If
|
||
|
||
RichTextBox2.Clear() '清空匹配记录
|
||
|
||
'_RemoteIP = IPAddress.Parse($"255.255.255.255")
|
||
'InitRCUHostsTablesData()
|
||
'_RCUHostsSearchIndex = 1
|
||
|
||
'Dim cmd As Byte = &H1
|
||
'Dim data As Byte() = FillDataBuff()
|
||
'Dim sendData As Byte() = FillSendData(cmd, data)
|
||
|
||
|
||
'SendUDPData(sendData)
|
||
'Console.WriteLine($"固件升级-搜索主机:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 搜索按键文本改变
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button25_TextChanged(sender As Object, e As EventArgs) Handles Button25.TextChanged
|
||
If Button25.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Stops)}(0s)" Then
|
||
GrdRCUHost.Enabled = True
|
||
_BtnTextThread.Abort()
|
||
Button25.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Search)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 搜索主机
|
||
''' </summary>
|
||
Public SendIntervalTime As Integer = 10
|
||
Private Sub SearchHosts()
|
||
For index = 300 To 0 Step -1
|
||
If index Mod 10 = 0 Then
|
||
ReadHostsParameterInfo()
|
||
End If
|
||
|
||
ChangeButtonText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Stops)}({index}s)")
|
||
Thread.Sleep(1000)
|
||
Next
|
||
End Sub
|
||
Public threadIsflag As Boolean = True
|
||
Public gsocket As Socket
|
||
Private Sub ThreadSearchHosts()
|
||
Dim Index As Integer = 1
|
||
Dim address As IPAddress = IPAddress.Parse("192.168.1.10")
|
||
Dim ep = New IPEndPoint(address, 21891)
|
||
'If IsNothing(gsocket) Then
|
||
gsocket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
|
||
gsocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1)
|
||
gsocket.Bind(ep)
|
||
' End If
|
||
|
||
|
||
Dim t As Date = Now
|
||
While threadIsflag
|
||
If Index Mod SendIntervalTime = 0 Then
|
||
t = Now
|
||
threadReadHostsParameterInfo()
|
||
End If
|
||
Thread.Sleep(1000)
|
||
Console.WriteLine($"发送时间隔:{(Now - t).TotalMilliseconds }")
|
||
|
||
If Index = 300 Then
|
||
Index = 1
|
||
Else
|
||
Index = Index + 1
|
||
End If
|
||
|
||
End While
|
||
gsocket.Close()
|
||
|
||
|
||
End Sub
|
||
Private Sub NewSearchHosts()
|
||
For index = 300 To 0 Step -1
|
||
If index Mod SendIntervalTime = 0 Then
|
||
ReadHostsParameterInfo()
|
||
End If
|
||
' ChangeButtonText($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Stops)}({index}s)")
|
||
Thread.Sleep(1000)
|
||
Next
|
||
End Sub
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' 进度条委托
|
||
''' </summary>
|
||
''' <param name="text"></param>
|
||
Delegate Sub delegate_Button_Text(text As String)
|
||
|
||
''' <summary>
|
||
''' 进度条委托
|
||
''' </summary>
|
||
''' <param name="text"></param>
|
||
Private Sub ChangeButtonText(text As String)
|
||
If Me.InvokeRequired = True Then
|
||
Dim changeval As New delegate_Button_Text(AddressOf ChangeButtonText)
|
||
Me.Invoke(changeval, New Object() {text})
|
||
Else
|
||
Button25.Text = text
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 浏览-选择文件-固件升级
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button27_Click(sender As Object, e As EventArgs) Handles Button27.Click
|
||
_UpgradeType = False
|
||
LoadTheFile()
|
||
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 浏览-选择文件-配置下发
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button35_Click(sender As Object, e As EventArgs) Handles Button35.Click
|
||
_UpgradeType = True
|
||
LoadTheFile()
|
||
End Sub
|
||
|
||
|
||
Private Sub LoadTheFile()
|
||
If _UpgradeType = True Then
|
||
_ParseConfigData = Nothing
|
||
StateLabelConfig($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadyToFile)}......", Color.Blue, False)
|
||
Else
|
||
_ParseData = Nothing
|
||
StateLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadyToFile)}......", Color.Blue, False)
|
||
End If
|
||
Dim dlg As New OpenFileDialog
|
||
dlg.InitialDirectory = Application.StartupPath
|
||
If _UpgradeType = True Then
|
||
dlg.Filter = $"Issued File|*.dat"
|
||
Else
|
||
dlg.Filter = $"Update File|*.hex|Update File|*.bin"
|
||
End If
|
||
Dim oldPath As String = TextBox7.Text
|
||
|
||
If IO.File.Exists(oldPath) Then
|
||
dlg.InitialDirectory = IO.Path.GetDirectoryName(oldPath)
|
||
dlg.FileName = oldPath
|
||
Else
|
||
dlg.InitialDirectory = Application.StartupPath
|
||
End If
|
||
|
||
If dlg.ShowDialog() = DialogResult.OK Then
|
||
If _UpgradeType = True Then
|
||
TextBox61.Text = dlg.FileName
|
||
Else
|
||
TextBox7.Text = dlg.FileName
|
||
End If
|
||
_UpdateFileName = dlg.SafeFileName
|
||
'BtnSelectFile.PerformClick()
|
||
Else
|
||
If _UpgradeType = True Then
|
||
StateLabelConfig($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadyToFile)}......", Color.Blue, True)
|
||
TextBox61.Text = Nothing
|
||
Else
|
||
StateLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ReadyToFile)}......", Color.Blue, True)
|
||
TextBox7.Text = Nothing
|
||
End If
|
||
Exit Sub
|
||
End If
|
||
|
||
'解析Hex文件
|
||
Dim path As String
|
||
If _UpgradeType = True Then
|
||
path = TextBox61.Text
|
||
If path.Contains($"dat") = True OrElse path.Contains($"Dat") = True Then
|
||
ThreadPool.QueueUserWorkItem(AddressOf DealDatFile, path)
|
||
End If
|
||
Else
|
||
path = TextBox7.Text
|
||
If path.Contains($"hex") = True OrElse path.Contains($"Hex") = True Then
|
||
ThreadPool.QueueUserWorkItem(AddressOf DealHexFile, path)
|
||
ElseIf path.Contains($"bin") = True OrElse path.Contains($"Bin") = True Then
|
||
ThreadPool.QueueUserWorkItem(AddressOf DealBinFile, path)
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取主机系统参数信息
|
||
''' </summary>
|
||
Private Sub ReadHostsParameterInfo()
|
||
Dim cmd As Byte = &HB1
|
||
Dim data As Byte() = FillReadCmdData()
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
|
||
SendUDPData(sendData)
|
||
'Console.WriteLine($"读取主机系统参数信息")
|
||
Console.WriteLine($"读取主机:{ByteToString(sendData)}")
|
||
End Sub
|
||
Private Sub threadReadHostsParameterInfo()
|
||
Dim cmd As Byte = &HB1
|
||
Dim data As Byte() = FillReadCmdData()
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
|
||
threadSendUDPData(sendData)
|
||
'Console.WriteLine($"读取主机系统参数信息")
|
||
Console.WriteLine($"读取主机:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 本地IP信息委托
|
||
''' </summary>
|
||
Delegate Function delegate_LocalIPInfo_Change()
|
||
|
||
''' <summary>
|
||
''' 本地IP信息
|
||
''' </summary>
|
||
Public Function LocalIPInfo() As IPAddress
|
||
If InvokeRequired = True Then
|
||
Dim dev As New delegate_LocalIPInfo_Change(AddressOf LocalIPInfo)
|
||
Return Me.Invoke(dev)
|
||
Else
|
||
Dim ipAddr As IPAddress = IPAddress.Parse($"{CboLocalIPInfo.Text}")
|
||
Return ipAddr
|
||
End If
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 填充读取命令数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Public Function FillReadCmdData()
|
||
|
||
Dim data(4) As Byte
|
||
If SendIntervalTime = 10 Then
|
||
data(0) = &H0
|
||
Else
|
||
data(0) = &H1
|
||
End If
|
||
|
||
data(1) = &H0
|
||
data(2) = &H0
|
||
data(3) = &H0
|
||
data(4) = &H0
|
||
|
||
Return data
|
||
End Function
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "设置信息"
|
||
|
||
''' <summary> 季节 </summary>
|
||
Private _roomSeason() As String = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Spring)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Summer)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Autumn)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Winter)}"}
|
||
|
||
''' <summary> 房态 </summary>
|
||
Private _roomState() As String = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Rent)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CheckingOut)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.VacantRoom)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ForRent)}"}
|
||
|
||
''' <summary> 房间是否锁定 </summary>
|
||
Private _roomLock() As String = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Normal)}", $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Lock)}"}
|
||
|
||
|
||
''' <summary>
|
||
''' 初始化房间信息
|
||
''' </summary>
|
||
Private Sub InitRoomInfo()
|
||
SetSeason()
|
||
|
||
ComboBox15.Items.Clear() '房态
|
||
ComboBox15.Items.AddRange(_roomState)
|
||
If ComboBox15.Items.Count > 0 Then ComboBox15.SelectedIndex = 2
|
||
ComboBox13.Items.Clear() '房间锁定
|
||
ComboBox13.Items.AddRange(_roomLock)
|
||
If ComboBox13.Items.Count > 0 Then ComboBox13.SelectedIndex = 0
|
||
DateTimePicker2.MinDate = Date.Now()
|
||
|
||
CBoSeasons.Items.Clear() '研发使用季节
|
||
CBoSeasons.Items.AddRange(_roomSeason)
|
||
If CBoSeasons.Items.Count > 0 Then CBoSeasons.SelectedIndex = 0
|
||
CBoRoomStates.Items.Clear() '研发使用房态
|
||
CBoRoomStates.Items.AddRange(_roomState)
|
||
If CBoRoomStates.Items.Count > 0 Then CBoRoomStates.SelectedIndex = 2
|
||
CBoLocks.Items.Clear() '研发使用房间锁定
|
||
CBoLocks.Items.AddRange(_roomLock)
|
||
If CBoLocks.Items.Count > 0 Then CBoLocks.SelectedIndex = 1
|
||
DateTimePicker1.MinDate = Date.Now()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设置季节
|
||
''' </summary>
|
||
Private Sub SetSeason()
|
||
SetMonthSeason(ComboBox14, 0)
|
||
SetMonthSeason(ComboBox18, 0)
|
||
SetMonthSeason(ComboBox19, 0)
|
||
|
||
SetMonthSeason(ComboBox20, 1)
|
||
SetMonthSeason(ComboBox21, 1)
|
||
SetMonthSeason(ComboBox22, 1)
|
||
|
||
SetMonthSeason(ComboBox23, 2)
|
||
SetMonthSeason(ComboBox24, 2)
|
||
SetMonthSeason(ComboBox25, 2)
|
||
|
||
SetMonthSeason(ComboBox26, 3)
|
||
SetMonthSeason(ComboBox27, 3)
|
||
SetMonthSeason(ComboBox28, 3)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设置当月季节
|
||
''' </summary>
|
||
''' <param name="cbo"></param>
|
||
Private Sub SetMonthSeason(cbo As ComboBox, index As Integer)
|
||
cbo.Items.Clear() '季节
|
||
cbo.Items.AddRange(_roomSeason)
|
||
If cbo.Items.Count >= 3 Then cbo.SelectedIndex = index
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取房间状态
|
||
''' </summary>
|
||
''' <param name="state"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomState(state As String) As Byte
|
||
Dim sta As Byte
|
||
Select Case state
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Rent)}"
|
||
sta = &H1
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CheckingOut)}"
|
||
sta = &H2
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.VacantRoom)}"
|
||
sta = &H3
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ForRent)}"
|
||
sta = &H4
|
||
End Select
|
||
Return sta
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取房间是否锁定
|
||
''' </summary>
|
||
''' <param name="lock"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomLock(lock As String) As Byte
|
||
Dim loc As Byte
|
||
Select Case lock
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Normal)}"
|
||
loc = &H0
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Lock)}"
|
||
loc = &H1
|
||
End Select
|
||
Return loc
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取房间季节
|
||
''' </summary>
|
||
''' <param name="season"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomSeason(season As String) As Byte
|
||
Dim rseason As Byte
|
||
Select Case season
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Spring)}"
|
||
rseason = &H1
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Summer)}"
|
||
rseason = &H2
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Autumn)}"
|
||
rseason = &H0
|
||
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Winter)}"
|
||
rseason = &H3
|
||
End Select
|
||
Return rseason
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 下发计数
|
||
''' </summary>
|
||
Private _count As Integer = 0
|
||
|
||
|
||
''' <summary>
|
||
''' 设置主机信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button26_Click_1(sender As Object, e As EventArgs) Handles Button26.Click
|
||
If TextBox9.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode) Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}")
|
||
Return
|
||
End If
|
||
|
||
If GrdRCUHost.Rows > 1 Then
|
||
'For index = 1 To GrdRCUHost.Rows - 1
|
||
' If GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"1" Then
|
||
' _count += 1
|
||
' End If
|
||
'Next
|
||
_count = CheckedCount()
|
||
|
||
If _count = 0 Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
Exit Sub
|
||
ElseIf _count > 1 Then
|
||
If CBoRoomNuRemark.Checked = True Then
|
||
'MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNumbersCannotBeDeliveredInBatches)}!")
|
||
MsgBox("不可勾选两台或两台以上主机")
|
||
_count = 0
|
||
Exit Sub
|
||
End If
|
||
If CBoRoomRemark.Checked = True Then
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNotesCannotBeDeliveredInBatches)}!")
|
||
MsgBox("不可勾选两台或两台以上主机")
|
||
_count = 0
|
||
Exit Sub
|
||
End If
|
||
End If
|
||
|
||
For index = 1 To GrdRCUHost.Rows - 1
|
||
If GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"1" Then
|
||
_RemoteIP = IPAddress.Parse(GrdRCUHost.Cell(index, EnRCUHosts.IPAddress).Text)
|
||
SetHostInfo() '设置主键信息
|
||
End If
|
||
Next
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheInformationToBeDeliveredAndTheHost)}")
|
||
End If
|
||
_count = 0
|
||
_remarksCount = 0
|
||
_remarkAddr = &H1C
|
||
|
||
Dim roomNumber As String = ComboBox17.Text
|
||
If CBoRoomNuRemark.Checked = True Then UpdateMACDB(roomNumber)
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 更新MAC地址
|
||
''' </summary>
|
||
''' <param name="roomNumber"></param>
|
||
Private Sub UpdateMACDB(roomNumber As String)
|
||
'If CBoUpdateDB.Checked = True Then
|
||
If roomNumber <> Nothing Then
|
||
Dim creatDate As String
|
||
If _hotelListData.ContainsKey(_projectNumber) = True Then
|
||
creatDate = _hotelListData(_projectNumber).CreatDate
|
||
If DealSetHostMACInterfaceInfo(_projectNumber, creatDate, roomNumber, _MAC) = True Then
|
||
AppendMatchTipText($"项目编码:[{_projectNumber}], 房号:[{roomNumber}]与MAC:[{_MAC}] 已绑定!", Color.Green)
|
||
AppendMatchTipText($"MAC地址绑定成功!{vbCrLf}", Color.Green)
|
||
Else
|
||
AppendMatchTipText($"项目编码:[{_projectNumber}], 房号:[{roomNumber}]与MAC:[{_MAC}] 绑定失败!{vbCrLf}", Color.Red)
|
||
AppendMatchTipText($"失败原因:{_setResult}{vbCrLf}", Color.Red)
|
||
|
||
Dim state As String = String.Empty
|
||
If DealHostListInterfaceInfo(_projectNumber, creatDate) = True Then
|
||
For index = 0 To _hostListData.Keys.Count - 1
|
||
If _hostListData(index).MAC = _MAC Then
|
||
state = _hostListData(index).Status
|
||
End If
|
||
Next
|
||
End If
|
||
If state = "0" Then
|
||
state = $"离线"
|
||
ElseIf state = "1" Then
|
||
state = $"在线"
|
||
End If
|
||
|
||
FrmMACBindingResults.TBoBindingTxt.Text = $"项目编码:{_projectNumber}{vbCrLf}房号:{roomNumber}{vbCrLf}MAC:{_MAC}{vbCrLf}绑定失败!{vbCrLf}{vbCrLf}失败原因:{_setResult}{vbCrLf}{vbCrLf}主机在线状态:{state} {vbCrLf}"
|
||
FrmMACBindingResults.ShowDialog()
|
||
|
||
If _isMACUnbundle = True Then
|
||
Console.WriteLine($"解绑")
|
||
If DealSetHostMACInterfaceInfo(_projectNumber, creatDate, roomNumber, "") = True Then
|
||
AppendMatchTipText($"项目编码:[{_projectNumber}], 房号:[{roomNumber}], MAC地址解绑成功!", Color.Green)
|
||
Else
|
||
AppendMatchTipText($"项目编码:[{_projectNumber}], 房号:[{roomNumber}], MAC地址解绑失败!", Color.Green)
|
||
End If
|
||
_isMACUnbundle = False
|
||
End If
|
||
|
||
'If _isMACRetry = True Then
|
||
' Console.WriteLine($"重试")
|
||
' If RetrySetting(_projectNumber, creatDate, roomNumber, _MAC) = True Then
|
||
' AppendMatchTipText($"项目编码:[{_projectNumber}], 房号:[{roomNumber}]与MAC:[{_MAC}] 已绑定!", Color.Green)
|
||
' AppendMatchTipText($"MAC地址绑定成功!{vbCrLf}", Color.Green)
|
||
' Else
|
||
' AppendMatchTipText($"项目编码:[{_projectNumber}], 房号:[{roomNumber}]与MAC:[{_MAC}] 绑定失败!{vbCrLf}", Color.Red)
|
||
' AppendMatchTipText($"失败原因:{_setResult}{vbCrLf}", Color.Red)
|
||
' End If
|
||
' _isMACRetry = False
|
||
'End If
|
||
End If
|
||
End If
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheRoomNumberCannotBeEmpty)}!")
|
||
End If
|
||
'End If
|
||
End Sub
|
||
|
||
|
||
'''' <summary>
|
||
'''' 重试绑定MAC
|
||
'''' </summary>
|
||
'''' <param name="projectNumber"></param>
|
||
'''' <param name="createDate"></param>
|
||
'''' <param name="roomNumber"></param>
|
||
'''' <param name="mac"></param>
|
||
'''' <returns></returns>
|
||
'Private Function RetrySetting(projectNumber As String, createDate As String, roomNumber As String, mac As String)
|
||
' For index = 1 To 5
|
||
' Threading.Thread.Sleep(100)
|
||
' Console.WriteLine($"重试{index}次")
|
||
' If DealSetHostMACInterfaceInfo(projectNumber, createDate, roomNumber, mac) = True Then
|
||
' Return True
|
||
' End If
|
||
' Next
|
||
|
||
' Return False
|
||
'End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 设置主机信息
|
||
''' </summary>
|
||
Private Sub SetHostInfo()
|
||
Dim projectNumber As String = TextBox9.Text '项目编号
|
||
Dim roomType As String = ComboBox16.Text '房型备注
|
||
Dim roomNumber As String = ComboBox17.Text '房号备注
|
||
Dim roomTpId As String = TextBox21.Text '房型ID
|
||
Dim roomNuId As String = TextBox25.Text '房号ID
|
||
Dim roomStates As String = ComboBox15.Text '房态
|
||
Dim roomSeason As String = ComboBox14.Text '季节
|
||
Dim locks As String = ComboBox13.Text '锁定
|
||
Dim roomRemarks As String = TextBox30.Text '房间注释
|
||
Dim setTime As Boolean = CBoMandateTimeSet.Checked '授权时间是否设置
|
||
Dim dateTimeValue As Date = DateTimePicker2.Value '授权到期时间
|
||
|
||
Dim projectNumberB As Boolean = CBoProjectNumber.Checked
|
||
Dim RoomStateB As Boolean = CBoRoomState.Checked
|
||
Dim RoomTpRemarkB As Boolean = CBoRoomTpRemark.Checked
|
||
Dim RoomNuRemarkB As Boolean = CBoRoomNuRemark.Checked
|
||
Dim roomRemarkB As Boolean = CBoRoomRemark.Checked
|
||
Dim SeasonB As Boolean = CBoSeason.Checked
|
||
Dim MandateEndTimeB As Boolean = CBoMandateEndTime.Checked
|
||
Dim RoomLockB As Boolean = CBoRoomLock.Checked
|
||
|
||
Dim ipconfig As New HostConfig
|
||
ipconfig.Ischeck = Network_cke.Checked
|
||
ipconfig.IFNetworkFormat(ipconfig.IPDNS, IpDns_txt.Text)
|
||
ipconfig.IFPortisNumber(ipconfig.Port, IpPort_txt.Text)
|
||
ipconfig.IPType = Iptype_txt.Tag
|
||
ipconfig.IFNetworkFormat(ipconfig.IPMask, IPMask_txt.Text)
|
||
ipconfig.IFNetworkFormat(ipconfig.LoadIP, Loadip_txt.Text)
|
||
ipconfig.IFNetworkFormat(ipconfig.IPGateway, IPGateway_txt.Text)
|
||
'ipconfig.Remark = Remark_txt.Text
|
||
ipconfig.IFNetworkFormat(ipconfig.ServerIP, ServerIP_txt.Text)
|
||
ipconfig.IFPortisNumber(ipconfig.ServerPort, ipconfig_txt.Text)
|
||
|
||
Dim cmd As Byte = &H31
|
||
Dim data As Byte() = FillSetHostsInfo(projectNumber, roomType, roomNumber, roomTpId, roomNuId, roomStates, roomSeason, locks, roomRemarks, setTime, dateTimeValue, projectNumberB, RoomStateB, RoomTpRemarkB, RoomNuRemarkB, roomRemarkB, SeasonB, MandateEndTimeB, RoomLockB, ipconfig)
|
||
If Enumerable.SequenceEqual(data, _roomNull) = False Then
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUDPData(sendData)
|
||
End If
|
||
'Console.WriteLine($"设置主机信息:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取设置总数数据
|
||
''' </summary>
|
||
''' <param name="proNum">项目编码</param>
|
||
''' <param name="roomSta">房态</param>
|
||
''' <param name="roomT">房型备注房型ID</param>
|
||
''' <param name="roomNum">房号备注房号ID</param>
|
||
''' <param name="roomRemark">房间备注</param>
|
||
''' <param name="seasons">季节</param>
|
||
''' <param name="dateTime">授权到期时间</param>
|
||
''' <param name="Loc">锁定</param>
|
||
''' <returns></returns>
|
||
Private Function GetSetCountData(proNum() As Byte, roomSta() As Byte, roomT() As Byte, roomNum() As Byte, roomRemark() As Byte, seasons() As Byte, dateTime() As Byte, Loc() As Byte, ProjectNumber As Boolean, RoomState As Boolean, RoomTpRemark As Boolean, RoomNuRemark As Boolean, RoomRemarks As Boolean, Season As Boolean, MandateEndTime As Boolean, RoomLock As Boolean, isserverip As Boolean, serverip() As Byte, Optional Isipcheck As Boolean = False, Optional Ipdata() As Byte = Nothing) As Byte()
|
||
'1、判断勾选项, 算出设备个数
|
||
Dim setCount As Byte = 0
|
||
Dim databuf As New List(Of Byte)
|
||
|
||
If ProjectNumber = True Then '项目编码
|
||
setCount += 1
|
||
databuf.AddRange(proNum)
|
||
End If
|
||
If RoomState = True Then '房态
|
||
setCount += 1
|
||
databuf.AddRange(roomSta)
|
||
End If
|
||
If RoomTpRemark = True Then '房型备注和房型ID
|
||
setCount += 5
|
||
databuf.AddRange(roomT)
|
||
End If
|
||
If RoomNuRemark = True Then '房号备注和房号ID
|
||
setCount += 5
|
||
databuf.AddRange(roomNum)
|
||
End If
|
||
If RoomRemarks = True Then '房间备注
|
||
setCount += _remarksCount
|
||
databuf.AddRange(roomRemark)
|
||
End If
|
||
If Season = True Then '季节
|
||
setCount += 1
|
||
databuf.AddRange(seasons)
|
||
End If
|
||
If MandateEndTime = True Then '授权到期时间
|
||
setCount += 2
|
||
databuf.AddRange(dateTime)
|
||
End If
|
||
If RoomLock = True Then '锁定
|
||
setCount += 1
|
||
databuf.AddRange(Loc)
|
||
End If
|
||
If Isipcheck Then
|
||
databuf.AddRange(Ipdata)
|
||
If Iptype_txt.Text.Equals("自动") Then
|
||
setCount += 1
|
||
Else
|
||
setCount += 6
|
||
End If
|
||
|
||
End If
|
||
If isserverip Then
|
||
setCount += 2
|
||
databuf.AddRange(serverip)
|
||
End If
|
||
|
||
databuf.Insert(0, setCount)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
Private _roomNull() As Byte = {&H0, &H0}
|
||
|
||
''' <summary>
|
||
''' 设置主机信息数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function FillSetHostsInfo(projectNumber As String, roomType As String, roomNumber As String, roomTpId As String, roomNuId As String, roomStates As String, RoomSeason As String, locks As String, roomRemarks As String, setTime As Boolean, dateTimeValue As Date, ProjectNumberB As Boolean, RoomStateB As Boolean, RoomTpRemarkB As Boolean, RoomNuRemarkB As Boolean, RoomRemarksB As Boolean, SeasonB As Boolean, MandateEndTimeB As Boolean, RoomLockB As Boolean, Optional Hofig As HostConfig = Nothing) As Byte()
|
||
If projectNumber = "" Then projectNumber = &H0
|
||
If roomType = "" Then roomType = &H0
|
||
If roomNumber = "" Then roomNumber = &H0
|
||
If roomTpId = "" Then roomTpId = &H0
|
||
If roomNuId = "" Then roomNuId = &H0
|
||
|
||
Dim roomTs() As Byte
|
||
Dim roomTypes(15) As Byte
|
||
'roomT = System.Text.Encoding.Unicode.GetBytes(roomType)
|
||
roomTs = System.Text.Encoding.GetEncoding("GBK").GetBytes(roomType)
|
||
If roomTs.Length > 16 Then
|
||
MsgBox($"房型长度过长!")
|
||
Return _roomNull
|
||
End If
|
||
Array.Copy(roomTs, 0, roomTypes, 0, roomTs.Length)
|
||
|
||
Dim roomNumbers() As Byte
|
||
Dim roomNums(15) As Byte
|
||
roomNumbers = System.Text.Encoding.GetEncoding("GBK").GetBytes(roomNumber)
|
||
If roomNumbers.Length > 16 Then
|
||
MsgBox($"房号长度过长!")
|
||
Return _roomNull
|
||
End If
|
||
Array.Copy(roomNumbers, 0, roomNums, 0, roomNumbers.Length)
|
||
|
||
Dim roomState As Byte = GetRoomState(roomStates) '房态
|
||
Dim season As String = RoomSeason '季节
|
||
Dim lock As Byte = GetRoomLock(locks) '锁定
|
||
Dim proNum() As Byte = GetProjectNumber(projectNumber) '项目编码
|
||
Dim roomT() As Byte = GetRoomType(roomTypes, roomTpId) '房型
|
||
Dim roomNum() As Byte = GetRoomNumber(roomNums, roomNuId) '房号
|
||
Dim roomSta() As Byte = GetRoomStateData(roomState) '房态
|
||
Dim seasons() As Byte = GetSeasonData(season) '季节
|
||
|
||
Dim loc() As Byte = GetLockData(lock) '锁定
|
||
Dim roomRemark() As Byte = GetRoomRemarks(roomRemarks) '备注
|
||
Dim dateTime() As Byte = GetTimeByte(setTime, dateTimeValue) '授权时间
|
||
|
||
|
||
'Dim roomTpIds() As Byte = GetRoomTypeID(roomTpId) '房型ID
|
||
'Dim roomNuIds() As Byte = GetRoomNumberID(roomNuId) '房号ID
|
||
|
||
|
||
Dim serverbyte() As Byte
|
||
|
||
If CheckBox37.Checked Then
|
||
serverbyte = GetServerIpByte(Hofig)
|
||
End If
|
||
Dim databuf() As Byte
|
||
If IsNothing(Hofig) Then
|
||
databuf = GetSetCountData(proNum, roomSta, roomT, roomNum, roomRemark, seasons, dateTime, loc, ProjectNumberB, RoomStateB, RoomTpRemarkB, RoomNuRemarkB, RoomRemarksB, SeasonB, MandateEndTimeB, RoomLockB, CheckBox37.Checked, serverbyte)
|
||
Else
|
||
If Hofig.Ischeck Then
|
||
Dim ipbyte() As Byte = getHostconfigbyte(Hofig, CheckBox37.Checked)
|
||
databuf = GetSetCountData(proNum, roomSta, roomT, roomNum, roomRemark, seasons, dateTime, loc, ProjectNumberB, RoomStateB, RoomTpRemarkB, RoomNuRemarkB, RoomRemarksB, SeasonB, MandateEndTimeB, RoomLockB, CheckBox37.Checked, serverbyte, Hofig.Ischeck, ipbyte)
|
||
|
||
Else
|
||
databuf = GetSetCountData(proNum, roomSta, roomT, roomNum, roomRemark, seasons, dateTime, loc, ProjectNumberB, RoomStateB, RoomTpRemarkB, RoomNuRemarkB, RoomRemarksB, SeasonB, MandateEndTimeB, RoomLockB, CheckBox37.Checked, serverbyte)
|
||
End If
|
||
|
||
End If
|
||
|
||
'Console.WriteLine($"设置主机信息数据:{ByteToString(databuf.ToArray)}")
|
||
|
||
Return databuf.ToArray
|
||
|
||
End Function
|
||
Public Function getHostconfigbyte(Hofig As HostConfig, isserver As Boolean) As Byte()
|
||
Dim li As New List(Of Byte)
|
||
|
||
Dim dhcp() As Byte = GetDHCP(Hofig.IPType, isserver)
|
||
If dhcp(4) = &H1 Then Return dhcp
|
||
|
||
Dim ip() As String = Hofig.LoadIP.Split(".")
|
||
Dim subnet1() As String = Hofig.IPMask.Split(".")
|
||
Dim gateway1() As String = Hofig.IPGateway.Split(".")
|
||
Dim DNS1() As String = Hofig.IPDNS.Split(".")
|
||
|
||
Dim databuf() As Byte = GetSetData(ip(0), ip(1), ip(2), ip(3), subnet1(0), subnet1(1), subnet1(2), subnet1(3), gateway1(0), gateway1(1), gateway1(2), gateway1(3), DNS1(0), DNS1(1), DNS1(2), DNS1(3))
|
||
li.AddRange(dhcp)
|
||
li.AddRange(databuf)
|
||
li.Add(&H4) '项目编号
|
||
li.Add(&H0)
|
||
li.Add(&H0)
|
||
li.Add(&H0)
|
||
Dim loadport() As Byte = StringToByte(Hofig.Port)
|
||
li.AddRange(loadport)
|
||
li.Add(&H1C) '项目编号
|
||
li.Add(&H0)
|
||
li.Add(&H0)
|
||
li.Add(&H0)
|
||
|
||
'Dim ServerPort() As Byte = StringToByte(Hofig.ServerPort)
|
||
'li.AddRange(ServerPort)
|
||
'buff = Hofig.ServerIP.Split(".")
|
||
'Dim serverIp() As Byte = GetServerData(buff(0), buff(1), buff(2), buff(3))
|
||
'li.AddRange(serverIp)
|
||
|
||
Return li.ToArray
|
||
|
||
End Function
|
||
|
||
Public Function GetServerIpByte(Hofig As HostConfig) As Byte()
|
||
Dim buff() As String
|
||
Dim li As New List(Of Byte)
|
||
Dim ServerPort() As Byte = GetServerPort(Hofig.ServerPort)
|
||
li.AddRange(ServerPort)
|
||
buff = Hofig.ServerIP.Split(".")
|
||
Dim serverIp() As Byte = GetServerData(buff(0), buff(1), buff(2), buff(3))
|
||
li.AddRange(serverIp)
|
||
|
||
Return li.ToArray
|
||
|
||
End Function
|
||
Private Function GetServerPort(txt As String) As Byte()
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H1C) '使能
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
Dim ServerPort() As Byte = StringToByte(txt)
|
||
databuf.AddRange(ServerPort)
|
||
Return databuf.ToArray
|
||
End Function
|
||
Private Function GetDHCP(dhcp As String, isserver As Boolean) As Byte()
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H30) '使能
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
If dhcp.Trim.Equals("1") Then
|
||
|
||
databuf.Add(&H1) '使能
|
||
databuf.Add(&H2)
|
||
If isserver Then
|
||
databuf.Add(&H1)
|
||
Else
|
||
databuf.Add(&H2)
|
||
End If
|
||
|
||
databuf.Add(&H0)
|
||
Else
|
||
databuf.Add(&H2) '使能
|
||
databuf.Add(&H1)
|
||
If isserver Then
|
||
databuf.Add(&H1)
|
||
Else
|
||
databuf.Add(&H2)
|
||
End If
|
||
databuf.Add(&H0)
|
||
End If
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
Private Function GetSeason() As Byte()
|
||
Dim m1 As Integer = GetRoomSeason(ComboBox14.Text)
|
||
Dim m2 As Integer = GetRoomSeason(ComboBox18.Text)
|
||
Dim m3 As Integer = GetRoomSeason(ComboBox19.Text)
|
||
Dim m4 As Integer = GetRoomSeason(ComboBox20.Text)
|
||
|
||
Dim m5 As Integer = GetRoomSeason(ComboBox21.Text)
|
||
Dim m6 As Integer = GetRoomSeason(ComboBox22.Text)
|
||
Dim m7 As Integer = GetRoomSeason(ComboBox23.Text)
|
||
Dim m8 As Integer = GetRoomSeason(ComboBox24.Text)
|
||
|
||
Dim m9 As Integer = GetRoomSeason(ComboBox25.Text)
|
||
Dim m10 As Integer = GetRoomSeason(ComboBox26.Text)
|
||
Dim m11 As Integer = GetRoomSeason(ComboBox27.Text)
|
||
Dim m12 As Integer = GetRoomSeason(ComboBox28.Text)
|
||
|
||
'Console.WriteLine($"季节:{m1} - {m2} - {m3} - {m4} - {m5} - {m6} - {m7} - {m8} - {m9} - {m10} - {m11} - {m12}")
|
||
|
||
Dim b1 As Byte = (m4 << 6) Or (m3 << 4) Or (m2 << 2) Or m1
|
||
Dim b2 As Byte = (m8 << 6) Or (m7 << 4) Or (m6 << 2) Or m5
|
||
Dim b3 As Byte = (m12 << 6) Or (m11 << 4) Or (m10 << 2) Or m9
|
||
|
||
Dim season(3) As Byte
|
||
season(0) = b1
|
||
season(1) = b2
|
||
season(2) = b3
|
||
|
||
Return season
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取两个授权时间的Byte数据
|
||
''' </summary>
|
||
Private Function GetTimeByte(setTime As Boolean, dateTimeValeu As Date)
|
||
Dim times1 As Date = Date.Now()
|
||
Dim times2 As Date
|
||
|
||
Dim time1Long As Long
|
||
Dim time2Long As Long
|
||
|
||
If setTime = True Then
|
||
times2 = dateTimeValeu
|
||
time1Long = GetUTCTimeStamp(times1)
|
||
time2Long = GetUTCTimeStamp(times2)
|
||
Else
|
||
times2 = Nothing
|
||
time1Long = GetUTCTimeStamp(times1)
|
||
time2Long = 0
|
||
End If
|
||
|
||
'Dim time1Long As Long = times1.ToUniversalTime.Ticks
|
||
'Dim time2Long As Long = times2.ToUniversalTime.Ticks
|
||
'Console.WriteLine($"求出设定时间的UTC时间戳: {time1Long} - {time2Long} {vbCrLf}")
|
||
|
||
'Dim time1By() As Byte = BitConverter.GetBytes(time1Long)
|
||
'Dim time2By() As Byte = BitConverter.GetBytes(time2Long)
|
||
'Console.WriteLine($"求出设定时间的Byte数组: {BitConverter.ToString(time1By)} - {BitConverter.ToString(time2By)}")
|
||
|
||
Dim t1Byte As Byte() = GetUTCTimeByte(time1Long)
|
||
Dim t2Byte As Byte()
|
||
If setTime = True Then
|
||
t2Byte = GetUTCTimeByte(time2Long)
|
||
Else
|
||
Dim times(3) As Byte
|
||
t2Byte = times
|
||
End If
|
||
|
||
Dim data As New List(Of Byte)
|
||
data.Add(&H20)
|
||
data.Add(&H0)
|
||
data.Add(&H0)
|
||
data.Add(&H0)
|
||
data.AddRange(t2Byte)
|
||
|
||
data.Add(&H28)
|
||
data.Add(&H0)
|
||
data.Add(&H0)
|
||
data.Add(&H0)
|
||
data.AddRange(t1Byte)
|
||
|
||
'Console.WriteLine($"设置授权时间:{BitConverter.ToString(data.ToArray)}")
|
||
|
||
Return data.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取UTC时间戳
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetUTCTimeStamp(dates As Date) As Long
|
||
Dim span As TimeSpan = dates.ToUniversalTime() - New DateTime(1970, 1, 1, 0, 0, 0, 0)
|
||
Dim stamp As Long = Convert.ToInt64(span.TotalSeconds)
|
||
Console.WriteLine($"{stamp}")
|
||
|
||
Return stamp
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取UTC时间戳Byte数组_4个字节长度
|
||
''' </summary>
|
||
''' <param name="dates"></param>
|
||
''' <returns></returns>
|
||
Private Function GetUTCTimeByte(dates As Long) As Byte()
|
||
Dim tH As Integer = dates \ 65536
|
||
Dim tL As Integer = dates Mod 65536
|
||
|
||
'Console.WriteLine($"时间高位:{tH} 时间低位{tL}")
|
||
|
||
Dim bTimes(3) As Byte
|
||
bTimes(3) = tH \ 256
|
||
bTimes(2) = tH Mod 256
|
||
|
||
bTimes(1) = tL \ 256
|
||
bTimes(0) = tL Mod 256
|
||
|
||
'Console.WriteLine($"求出数组:{BitConverter.ToString(bTimes)}{vbCrLf}")
|
||
|
||
Return bTimes
|
||
End Function
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' 获取项目编号
|
||
''' </summary>
|
||
''' <param name="projectNumber"></param>
|
||
''' <returns></returns>
|
||
Private Function GetProjectNumber(projectNumber As String) As Byte()
|
||
Dim proNum() As Byte
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H38) '项目编号
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
proNum = StringToByte(projectNumber)
|
||
databuf.AddRange(proNum)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 房型ID
|
||
''' </summary>
|
||
''' <param name="roomNuId"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomTypeID(roomNuId As String) As Byte()
|
||
Dim proNum() As Byte
|
||
Dim databuf As New List(Of Byte)
|
||
'房型ID
|
||
databuf.Add(&H48)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
proNum = StringToByte(roomNuId)
|
||
databuf.AddRange(proNum)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 房号ID
|
||
''' </summary>
|
||
''' <param name="roomNuId"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomNumberID(roomNuId As String) As Byte()
|
||
Dim proNum() As Byte
|
||
Dim databuf As New List(Of Byte)
|
||
'房号ID
|
||
databuf.Add(&H44)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
proNum = StringToByte(roomNuId)
|
||
databuf.AddRange(proNum)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取房型
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetRoomType(roomTypes As Byte(), roomTpId As String) As Byte()
|
||
Dim roomTaddr1() As Byte = {&H10, &H1, &H0, &H0} '房型地址
|
||
Dim roomTaddr2() As Byte = {&H14, &H1, &H0, &H0} '房型地址
|
||
Dim roomTaddr3() As Byte = {&H18, &H1, &H0, &H0} '房型地址
|
||
Dim roomTaddr4() As Byte = {&H1C, &H1, &H0, &H0} '房型地址
|
||
|
||
Dim databuf As New List(Of Byte)
|
||
Dim roomda(3) As Byte
|
||
Array.Copy(roomTypes, 0, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomTaddr1)
|
||
databuf.AddRange(roomda)
|
||
|
||
Array.Copy(roomTypes, 4, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomTaddr2)
|
||
databuf.AddRange(roomda)
|
||
|
||
Array.Copy(roomTypes, 8, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomTaddr3)
|
||
databuf.AddRange(roomda)
|
||
|
||
Array.Copy(roomTypes, 12, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomTaddr4)
|
||
databuf.AddRange(roomda)
|
||
|
||
'房型ID
|
||
databuf.Add(&H48)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
Dim proNum() As Byte = StringToByte(roomTpId)
|
||
databuf.AddRange(proNum)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 获取房号
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetRoomNumber(roomNums As Byte(), roomNuId As String) As Byte()
|
||
Dim roomNaddr1() As Byte = {&H0, &H1, &H0, &H0} '房号地址
|
||
Dim roomNaddr2() As Byte = {&H4, &H1, &H0, &H0} '房号地址
|
||
Dim roomNaddr3() As Byte = {&H8, &H1, &H0, &H0} '房号地址
|
||
Dim roomNaddr4() As Byte = {&HC, &H1, &H0, &H0} '房号地址
|
||
|
||
Dim databuf As New List(Of Byte)
|
||
Dim roomda(3) As Byte
|
||
Array.Copy(roomNums, 0, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomNaddr1)
|
||
databuf.AddRange(roomda)
|
||
|
||
Array.Copy(roomNums, 4, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomNaddr2)
|
||
databuf.AddRange(roomda)
|
||
|
||
Array.Copy(roomNums, 8, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomNaddr3)
|
||
databuf.AddRange(roomda)
|
||
|
||
Array.Copy(roomNums, 12, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomNaddr4)
|
||
databuf.AddRange(roomda)
|
||
|
||
'房号ID
|
||
databuf.Add(&H44)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
Dim proNum() As Byte = StringToByte(roomNuId)
|
||
databuf.AddRange(proNum)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取房态
|
||
''' </summary>
|
||
''' <param name="roomState"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomStateData(roomState As String) As Byte()
|
||
Dim roomSta() As Byte
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H4C) '房态
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
roomSta = GetRoomSetInfo(roomState)
|
||
databuf.AddRange(roomSta)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取季节
|
||
''' </summary>
|
||
''' <param name="season"></param>
|
||
''' <returns></returns>
|
||
Private Function GetSeasonData(season As String) As Byte()
|
||
Dim seasons() As Byte = GetSeason()
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H50) '季节
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
'seasons = GetRoomSeasonData(season)
|
||
databuf.AddRange(seasons)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取季节数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetRoomSeasonData(season As String) As Byte()
|
||
Dim time As Integer = Date.Now.Month
|
||
Dim seasons(3) As Byte
|
||
Select Case time
|
||
Case 1
|
||
seasons(0) = GetRoomSeason(season)
|
||
Case 2
|
||
seasons(0) = GetRoomSeason(season)
|
||
Case 3
|
||
seasons(0) = GetRoomSeason(season)
|
||
Case 4
|
||
seasons(0) = GetRoomSeason(season)
|
||
Case 5
|
||
seasons(1) = GetRoomSeason(season)
|
||
Case 6
|
||
seasons(1) = GetRoomSeason(season)
|
||
Case 7
|
||
seasons(1) = GetRoomSeason(season)
|
||
Case 8
|
||
seasons(1) = GetRoomSeason(season)
|
||
Case 9
|
||
seasons(2) = GetRoomSeason(season)
|
||
Case 10
|
||
seasons(2) = GetRoomSeason(season)
|
||
Case 11
|
||
seasons(2) = GetRoomSeason(season)
|
||
Case 12
|
||
seasons(2) = GetRoomSeason(season)
|
||
End Select
|
||
|
||
Return seasons
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取锁定
|
||
''' </summary>
|
||
''' <param name="lock"></param>
|
||
''' <returns></returns>
|
||
Private Function GetLockData(lock As String) As Byte()
|
||
Dim loc() As Byte
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H2C) '锁定
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
loc = GetRoomSetInfo(lock)
|
||
databuf.AddRange(loc)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary> 房间备注偏移地址数量 </summary>
|
||
Private _remarksCount As Int16 = 0
|
||
|
||
''' <summary> 房间备注偏移地址 </summary>
|
||
Private _remarkAddr As Byte = &H1C
|
||
|
||
''' <summary>
|
||
''' 房间注释
|
||
''' </summary>
|
||
''' <param name="roomRemarks"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomRemarks(roomRemarks As String) As Byte()
|
||
Dim roomRemark() As Byte
|
||
Dim remark(95) As Byte
|
||
Dim databuf As New List(Of Byte)
|
||
roomRemark = Encoding.GetEncoding("GBK").GetBytes(roomRemarks)
|
||
Array.Copy(roomRemark, 0, remark, 0, roomRemark.Length)
|
||
'Console.WriteLine($"设置备注数据:{BitConverter.ToString(remark)}")
|
||
|
||
For index = 1 To remark.Length Step 4
|
||
If index = remark.Length Then Exit For
|
||
_remarksCount += 1
|
||
Dim roomda(3) As Byte
|
||
Array.Copy(remark, index - 1, roomda, 0, roomda.Length)
|
||
|
||
databuf.Add(_remarkAddr + 4) '房间注释
|
||
databuf.Add(&H1)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.AddRange(roomda)
|
||
|
||
_remarkAddr += 4
|
||
Next
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 项目编码变化事件
|
||
''' 项目编码与房号同步
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CBoProjectNumber_CheckedChanged(sender As Object, e As EventArgs) Handles CBoProjectNumber.CheckedChanged
|
||
If CBoProjectNumber.Checked = True Then
|
||
CBoProjectNumber.Checked = True
|
||
CBoRoomNuRemark.Checked = True
|
||
Else
|
||
CBoProjectNumber.Checked = False
|
||
CBoRoomNuRemark.Checked = False
|
||
End If
|
||
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 房号变化事件
|
||
''' 房号与项目编码同步
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CBoRoomNuRemark_CheckedChanged(sender As Object, e As EventArgs) Handles CBoRoomNuRemark.CheckedChanged
|
||
If ComboBox16.Text.Contains("全部") Then
|
||
CBoRoomNuRemark.Checked = False
|
||
CBoRoomTpRemark.Checked = False
|
||
End If
|
||
If CBoRoomNuRemark.Checked = True Then
|
||
CBoProjectNumber.Checked = True
|
||
CBoRoomNuRemark.Checked = True
|
||
CBoRoomTpRemark.Checked = True
|
||
Network_cke.Enabled = True
|
||
Else
|
||
'CBoProjectNumber.Checked = False
|
||
CBoRoomNuRemark.Checked = False
|
||
'CBoRoomTpRemark.Checked = False
|
||
Network_cke.Enabled = False
|
||
Network_cke.Checked = False
|
||
|
||
End If
|
||
|
||
'If CBoRoomTpRemark.Checked And Not CBoRoomNuRemark.Checked Then
|
||
' Network_cke.Checked = False
|
||
|
||
'Else
|
||
|
||
|
||
'End If
|
||
End Sub
|
||
|
||
|
||
|
||
#Region "互斥"
|
||
|
||
|
||
Private Sub CBoMandateTimeSet_CheckedChanged(sender As Object, e As EventArgs) Handles CBoMandateTimeSet.CheckedChanged
|
||
If CBoMandateTimeSet.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Clear)}" Then
|
||
CBoMandateTimeSet.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.HomeSet)}"
|
||
DateTimePicker2.Enabled = True
|
||
Else
|
||
CBoMandateTimeSet.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Clear)}"
|
||
DateTimePicker2.Enabled = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub TextBox9_TextChanged(sender As Object, e As EventArgs) Handles TextBox9.TextChanged
|
||
'项目编码
|
||
CBoProjectNumber.Checked = True
|
||
CBoRoomNuRemark.Checked = True
|
||
End Sub
|
||
|
||
'Private Sub ComboBox15_TextChanged(sender As Object, e As EventArgs) Handles ComboBox15.TextChanged
|
||
' '房态
|
||
' CBoRoomState.Checked = True
|
||
'End Sub
|
||
|
||
'Private Sub TextBox30_TextChanged(sender As Object, e As EventArgs) Handles TextBox30.TextChanged
|
||
' '房间注释
|
||
' CBoRoomRemark.Checked = True
|
||
'End Sub
|
||
|
||
'Private Sub ComboBox14_TextChanged(sender As Object, e As EventArgs) Handles ComboBox14.TextChanged
|
||
' '季节
|
||
' CBoSeason.Checked = True
|
||
'End Sub
|
||
|
||
'Private Sub ComboBox13_TextChanged(sender As Object, e As EventArgs) Handles ComboBox13.TextChanged
|
||
' '锁定
|
||
' CBoRoomLock.Checked = True
|
||
'End Sub
|
||
|
||
'Private Sub DateTimePicker2_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker2.ValueChanged
|
||
' '授权时间
|
||
' CBoMandateEndTime.Checked = True
|
||
'End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
|
||
''' <summary>
|
||
''' 获取房间设置信息
|
||
''' </summary>
|
||
''' <param name="setitfo"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomSetInfo(setitfo As Byte) As Byte()
|
||
Dim buf(3) As Byte
|
||
buf(0) = setitfo
|
||
buf(1) = &H0
|
||
buf(2) = &H0
|
||
buf(3) = &H0
|
||
|
||
Return buf
|
||
End Function
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' 填充设置配置数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function FillSetConfig() As Byte()
|
||
Dim projectNumber As String = ComboBox6.Text
|
||
Dim configNumber As String = ComboBox7.Text
|
||
Dim roomNumber As String = ComboBox4.Text
|
||
Dim roomType As String = TextBox24.Text
|
||
Dim configCount As Byte = &H4
|
||
|
||
Dim proNum() As Byte
|
||
Dim conNum() As Byte
|
||
Dim roomNum() As Byte
|
||
Dim roomT() As Byte
|
||
Dim roomtypes(3) As Byte
|
||
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(configCount)
|
||
|
||
'项目编号
|
||
databuf.Add(&H38)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
proNum = StringToByte(projectNumber)
|
||
databuf.AddRange(proNum)
|
||
|
||
'配置版本号
|
||
databuf.Add(&H40)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
conNum = VerStringToByte(configNumber)
|
||
databuf.AddRange(conNum)
|
||
|
||
'房号
|
||
databuf.Add(&H44)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
roomNum = StringToByte(roomNumber)
|
||
databuf.AddRange(roomNum)
|
||
|
||
'房型
|
||
databuf.Add(&H48)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
roomT = System.Text.Encoding.UTF8.GetBytes(roomType)
|
||
Array.Copy(roomT, 0, roomtypes, 0, roomT.Length)
|
||
databuf.AddRange(roomtypes)
|
||
|
||
'Console.WriteLine($"设置配置数据:{ByteToString(databuf.ToArray)}")
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "高级设置_勾选显示主机信息"
|
||
''勾选设置是否显示选中列
|
||
|
||
''' <summary>
|
||
''' 显示列信息
|
||
''' </summary>
|
||
Private _isShowCol As Boolean
|
||
|
||
|
||
''' <summary>
|
||
''' 端口号
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox14_CheckedChanged(sender As Object, e As EventArgs) Handles CBoPort.CheckedChanged
|
||
If _isShowCol = False Then Exit Sub
|
||
If CBoPort.Checked = True Then
|
||
GrdRCUHost.Column(EnRCUHosts.Port).Width = 40
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.Port).Width = 0
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 服务器
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox16_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox16.CheckedChanged
|
||
If _isShowCol = False Then Exit Sub
|
||
If CheckBox16.Checked = True Then
|
||
GrdRCUHost.Column(EnRCUHosts.ServiceAddr).Width = 90
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.ServiceAddr).Width = 0
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 子网掩码
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox21_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox21.CheckedChanged
|
||
If _isShowCol = False Then Exit Sub
|
||
If CheckBox21.Checked = True Then
|
||
GrdRCUHost.Column(EnRCUHosts.Subnet).Width = 90
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.Subnet).Width = 0
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 网关
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox20_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox20.CheckedChanged
|
||
If _isShowCol = False Then Exit Sub
|
||
If CheckBox20.Checked = True Then
|
||
GrdRCUHost.Column(EnRCUHosts.Gateway).Width = 90
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.Gateway).Width = 0
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' DNS
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox19_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox19.CheckedChanged
|
||
If _isShowCol = False Then Exit Sub
|
||
If CheckBox19.Checked = True Then
|
||
GrdRCUHost.Column(EnRCUHosts.DNS).Width = 110
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.DNS).Width = 0
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 锁定
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox25_CheckedChanged(sender As Object, e As EventArgs) Handles CBoLock.CheckedChanged
|
||
If _isShowCol = False Then Exit Sub
|
||
If CBoLock.Checked = True Then
|
||
GrdRCUHost.Column(EnRCUHosts.Lock).Width = 40
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.Lock).Width = 0
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 授权时间
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox23_CheckedChanged(sender As Object, e As EventArgs) Handles CBoMandateDate.CheckedChanged
|
||
If _isShowCol = False Then Exit Sub
|
||
If CBoMandateDate.Checked = True Then
|
||
GrdRCUHost.Column(EnRCUHosts.PrivilegedTime).Width = 130
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.PrivilegedTime).Width = 0
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 授权到期时间
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox22_CheckedChanged(sender As Object, e As EventArgs) Handles CBoMandateEnd.CheckedChanged
|
||
If _isShowCol = False Then Exit Sub
|
||
If CBoMandateEnd.Checked = True Then
|
||
GrdRCUHost.Column(EnRCUHosts.PrivilegedDays).Width = 130
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.PrivilegedDays).Width = 0
|
||
End If
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 房间备注
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox18_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox18.CheckedChanged
|
||
If _isShowCol = False Then Exit Sub
|
||
If CheckBox18.Checked = True Then
|
||
GrdRCUHost.Column(EnRCUHosts.RoomRemarks).Width = 120
|
||
Else
|
||
GrdRCUHost.Column(EnRCUHosts.RoomRemarks).Width = 0
|
||
End If
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "Hex文件"
|
||
|
||
|
||
''' <summary> 加载文件大小 </summary>
|
||
Const _loadFileSize As Integer = 1024 * 1024 * 2
|
||
|
||
''' <summary> 加载数据大小 </summary>
|
||
Const _loadDataSize As Integer = 1024 * 1024 * 2
|
||
|
||
''' <summary> 加载Hex文件数据 </summary>
|
||
Private _LoadHexFileData(_loadFileSize - 1) As Byte
|
||
|
||
''' <summary> 加载数据Buff </summary>
|
||
Private _LoadDataBuff(_loadDataSize - 1) As Byte
|
||
|
||
''' <summary> 加载结束地址 </summary>
|
||
Private _LoadEndAddr As Integer
|
||
|
||
''' <summary> C1-Hex文件起始值 </summary>
|
||
Private _HexStart_C1 As Integer = 0
|
||
|
||
''' <summary> 解析出的文件数据 </summary>
|
||
Private _ParseData As Byte()
|
||
|
||
''' <summary> 解析出的配置数据 </summary>
|
||
Private _ParseConfigData As Byte()
|
||
|
||
''' <summary>
|
||
''' 解析Hex文件
|
||
''' </summary>
|
||
''' <param name="filePath"></param>
|
||
Private Sub DealHexFile(filePath As String)
|
||
StateLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ParsingHexFile)}...", Color.Blue, False)
|
||
|
||
Dim tmpRet As Boolean = LoadDataFromFile(filePath)
|
||
Dim checkSum(3) As Byte
|
||
|
||
Dim tmpIdx As Integer = 0
|
||
Dim tmpLineCnt As Integer = 1
|
||
Dim tmpHexValidLenght As Integer = _LoadEndAddr - _HexStart_C1
|
||
|
||
If tmpRet Then
|
||
Dim parse As New StringBuilder
|
||
'Dim tmpStrBuffer As String
|
||
For tmpIdx = _HexStart_C1 To _LoadEndAddr - 1
|
||
parse.Append(HexByteStr(_LoadDataBuff(tmpIdx))) '<10ms
|
||
Next
|
||
|
||
_ParseData = GetStringToDataByte(parse.ToString)
|
||
'Console.WriteLine($"解析出的数据:{vbCrLf}{parse.ToString}")
|
||
|
||
Array.Copy(_ParseData, _matchingValue, _matchingData, 0, _matchingData.Length)
|
||
'Console.WriteLine($"——解析匹配数据——:{vbCrLf}{BitConverter.ToString(_matchingData)}")
|
||
|
||
StateLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ParsingIsComplete)}", Color.Green, True)
|
||
|
||
''Dim a() As Byte = {&H0}
|
||
''Dim b As String = Encoding.GetEncoding("GBK").GetString(a)
|
||
|
||
'_matchingData
|
||
Dim project(1) As Byte '项目编码 2 Bytes
|
||
Array.Copy(_matchingData, 0, project, 0, project.Length)
|
||
'Dim projects As String = Encoding.GetEncoding("GBK").GetString(project)
|
||
Dim projects As String = $"{project(0) + project(1) * 256}"
|
||
projects = projects.Replace(vbNullChar, "")
|
||
|
||
Dim roomId(3) As Byte '房型Id 4 Bytes
|
||
Array.Copy(_matchingData, project.Length, roomId, 0, roomId.Length)
|
||
'Dim roomIds As String = Encoding.GetEncoding("GBK").GetString(roomId)
|
||
Dim roomIds As String = $"{BitConverter.ToUInt32(roomId, 0)}"
|
||
roomIds = roomIds.Replace(vbNullChar, "")
|
||
|
||
Dim version(19) As Byte '版本号 20 Bytes
|
||
Array.Copy(_matchingData, (project.Length + roomId.Length), version, 0, version.Length)
|
||
Dim versions As String = Encoding.GetEncoding("GBK").GetString(version)
|
||
versions = versions.Replace(vbNullChar, "")
|
||
|
||
Dim mcu(15) As Byte 'MCU型号 16 Bytes
|
||
Array.Copy(_matchingData, (project.Length + roomId.Length + version.Length), mcu, 0, mcu.Length)
|
||
Dim mcus As String = Encoding.GetEncoding("GBK").GetString(mcu)
|
||
mcus = mcus.Replace(vbNullChar, "")
|
||
|
||
Dim central(15) As Byte '中控型号 16 Bytes
|
||
Array.Copy(_matchingData, (project.Length + roomId.Length + version.Length + mcu.Length), central, 0, central.Length)
|
||
Dim centrals As String = Encoding.GetEncoding("GBK").GetString(central)
|
||
centrals = centrals.Replace(vbNullChar, "")
|
||
|
||
Dim remark(63) As Byte '备注 64 Bytes
|
||
Array.Copy(_matchingData, (project.Length + roomId.Length + version.Length + mcu.Length + central.Length), remark, 0, remark.Length)
|
||
Dim remarks As String = Encoding.GetEncoding("GBK").GetString(remark)
|
||
remarks = remarks.Replace(vbNullChar, "")
|
||
|
||
Console.WriteLine($"项目编码:{projects} 房型Id:{roomIds} 版本号:{versions} MCU型号:{mcus} 中控型号:{centrals} 备注:{remarks}")
|
||
|
||
MatchingInfo(projects, roomIds, versions, mcus, centrals, remarks)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 匹配信息委托
|
||
''' </summary>
|
||
Delegate Sub delegate_MatchingInfo_Change(projects As String, roomIds As String, versions As String, mcus As String, centrals As String, remarks As String)
|
||
|
||
''' <summary>
|
||
''' 匹配信息
|
||
''' </summary>
|
||
Private _Mcus As String
|
||
Public Sub MatchingInfo(projects As String, roomIds As String, versions As String, mcus As String, centrals As String, remarks As String)
|
||
_Mcus = mcus
|
||
'If InvokeRequired = True Then
|
||
' Dim dev As New delegate_MatchingInfo_Change(AddressOf MatchingInfo)
|
||
' Me.Invoke(dev, New Object() {projects, roomIds, versions, mcus, centrals, remarks})
|
||
'Else
|
||
' GrdMatching.Cell(1, EnMatchingInfo.HexDeal).Text = projects
|
||
' GrdMatching.Cell(2, EnMatchingInfo.HexDeal).Text = roomIds
|
||
' GrdMatching.Cell(3, EnMatchingInfo.HexDeal).Text = versions
|
||
' GrdMatching.Cell(4, EnMatchingInfo.HexDeal).Text = mcus
|
||
' GrdMatching.Cell(5, EnMatchingInfo.HexDeal).Text = centrals
|
||
' GrdMatching.Cell(6, EnMatchingInfo.HexDeal).Text = remarks
|
||
'End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 加载hex文件数据
|
||
''' </summary>
|
||
''' <param name="path"></param>
|
||
''' <returns></returns>
|
||
Private Function LoadDataFromFile(ByVal path As String) As Boolean
|
||
Array.Clear(_LoadHexFileData, 0, _LoadHexFileData.Length)
|
||
|
||
Try
|
||
Dim fs As New IO.FileStream(path, IO.FileMode.Open, IO.FileAccess.Read)
|
||
If fs.Length <= _loadFileSize Then
|
||
fs.Read(_LoadHexFileData, 0, fs.Length)
|
||
Else
|
||
Return False
|
||
End If
|
||
fs.Close()
|
||
Catch ex As Exception
|
||
Return False
|
||
End Try
|
||
|
||
Return HexFileToData(_LoadHexFileData, _LoadDataBuff, _LoadEndAddr)
|
||
End Function
|
||
|
||
|
||
''' <summary> 匹配数据 </summary>
|
||
Private _matchingData(511) As Byte
|
||
|
||
''' <summary> 匹配起始地址 </summary>
|
||
Private ReadOnly _matchingAddr As Integer = 49152 '0xC000 匹配数据起始地址
|
||
|
||
''' <summary> 匹配起始值 </summary>
|
||
Private _matchingValue As Integer
|
||
|
||
|
||
''' <summary>
|
||
''' 解析Hex文件到Byte数组
|
||
''' </summary>
|
||
''' <param name="hexBuffer"></param>
|
||
''' <param name="dataBuffer"></param>
|
||
''' <param name="endAddr"></param>
|
||
''' <returns></returns>
|
||
Private Function HexFileToData(ByVal hexBuffer() As Byte, ByVal dataBuffer() As Byte, ByRef endAddr As Integer) As Boolean
|
||
Dim i As Integer
|
||
|
||
'行数
|
||
Dim LineCnt As Integer = 0
|
||
Dim DataType_00_Idx As Integer = 0
|
||
|
||
'清空数据缓存区域
|
||
For i = 0 To dataBuffer.Length - 1
|
||
dataBuffer(i) = &HFF
|
||
Next
|
||
|
||
'本行数据缓存
|
||
Dim dataStrBuf(31) As Byte
|
||
Dim dataValBuf(15) As Byte
|
||
|
||
'首地址标记
|
||
Dim headAddrFlag As Boolean = True
|
||
|
||
'本行地址值
|
||
Dim tmpLineAdd As Integer = 0
|
||
|
||
'偏移地址 0x04 数据类型指示偏移地址
|
||
Dim LineAddOffestBase As Integer = 0
|
||
|
||
'结束地址
|
||
endAddr = 0
|
||
|
||
Dim flashAddressBuf(3) As Byte
|
||
Dim flashAddress As Integer
|
||
|
||
For i = 0 To hexBuffer.Length - 1
|
||
'首先找到冒号
|
||
If hexBuffer(i) = &H3A Then '&H3A = ":"
|
||
LineCnt += 1
|
||
'B0:数据长度
|
||
Dim dataLen As Integer = (StrToHex(hexBuffer(i + 1)) * 16 + StrToHex(hexBuffer(i + 2)))
|
||
If dataLen > 0 Then
|
||
'By:CheckSum
|
||
Dim checkSum As Byte = (StrToHex(hexBuffer(i + 9 + dataLen * 2)) * 16 + StrToHex(hexBuffer(i + 10 + dataLen * 2)))
|
||
|
||
'取出整行数据
|
||
Dim rowDataStrBuf(41) As Byte
|
||
Dim rowDataValBuf(20) As Byte
|
||
Dim rowLen As Integer
|
||
Array.Clear(rowDataStrBuf, 0, 42)
|
||
Array.Clear(rowDataValBuf, 0, 21)
|
||
|
||
rowLen = (dataLen * 2) + 10
|
||
Array.Copy(hexBuffer, i + 1, rowDataStrBuf, 0, rowLen)
|
||
StrToHex(rowDataValBuf, rowDataStrBuf, rowLen / 2)
|
||
|
||
Dim tempCheckSum As Byte = GetSumChecks(rowDataValBuf, rowLen / 2)
|
||
|
||
If tempCheckSum <> &HFF Then
|
||
Return False 'CheckSum校验不通过,返回错误
|
||
End If
|
||
|
||
'B4~Bx:数据内容
|
||
Array.Clear(dataStrBuf, 0, 32)
|
||
Array.Clear(dataValBuf, 0, 16)
|
||
Array.Copy(hexBuffer, i + 9, dataStrBuf, 0, dataLen * 2)
|
||
StrToHex(dataValBuf, dataStrBuf, dataLen)
|
||
End If
|
||
|
||
'B1~B2:取出地址位的值
|
||
Array.Copy(hexBuffer, i + 3, flashAddressBuf, 0, 4)
|
||
|
||
'本行地址取出来放在 flashAddress中’
|
||
StrToHex(tmpLineAdd, flashAddressBuf)
|
||
flashAddress = LineAddOffestBase + tmpLineAdd
|
||
|
||
'B3:数据类型
|
||
Dim dataType = StrToHex(hexBuffer(i + 8))
|
||
Select Case dataType
|
||
Case 0 '数据记录
|
||
DataType_00_Idx = DataType_00_Idx + 1
|
||
'将第一个00类型数据的地址作为起始地址, 保存到 _HexStart_C1
|
||
If DataType_00_Idx = 1 Then
|
||
_HexStart_C1 = flashAddress
|
||
_matchingValue = _matchingAddr - _HexStart_C1
|
||
End If
|
||
Array.Copy(dataValBuf, 0, dataBuffer, flashAddress, dataLen)
|
||
endAddr = flashAddress + dataLen
|
||
Case 1 '文件结束
|
||
If endAddr = 0 Then
|
||
Return False
|
||
Else
|
||
Return True
|
||
End If
|
||
Case 2, 3, 5 '扩展段地址, 开始段地址, 开始线性地址’
|
||
Continue For
|
||
Case 4 '扩展线性地址
|
||
If dataLen = 2 Then
|
||
LineAddOffestBase = (dataValBuf(0) * 256 + dataValBuf(1)) * 65536
|
||
Else
|
||
Return False '确认DataLen必须是2,否则报错
|
||
End If
|
||
Case Else
|
||
Return False
|
||
End Select
|
||
End If
|
||
Next
|
||
|
||
Return False
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 和校验
|
||
''' 求Byte数组的和校验
|
||
''' </summary>
|
||
''' <param name="dataPacket">Byte数组</param>
|
||
''' <returns></returns>
|
||
Public Function GetSumChecks(dataPacket As Byte(), ByRef len As Integer) As Byte
|
||
Dim sum As Integer
|
||
For idx = 0 To len - 1
|
||
sum += dataPacket(idx)
|
||
sum = sum And &HFF
|
||
Next
|
||
|
||
sum = (Not sum) And &HFF
|
||
Return sum
|
||
End Function
|
||
|
||
|
||
Private Function HexByteStr(hexByte As Byte) As String
|
||
If hexByte < 16 Then
|
||
Return "0" & Hex(hexByte)
|
||
Else
|
||
Return Hex(hexByte)
|
||
End If
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取和校验
|
||
''' </summary>
|
||
''' <param name="buf"></param>
|
||
''' <param name="len"></param>
|
||
''' <param name="resultBuf"></param>
|
||
Private Sub GetSumCheck(ByVal buf() As Byte, ByVal len As UInt32, ByRef resultBuf() As Byte)
|
||
Dim sum As Integer = 0
|
||
Dim i As Integer = 0
|
||
Dim j As Integer = 0
|
||
Dim retByte As Integer
|
||
|
||
Do
|
||
For j = 0 To 127
|
||
sum += buf(i + j)
|
||
sum = sum And &HFFFFFFFF
|
||
Next
|
||
i += 128
|
||
Loop Until i >= len
|
||
|
||
retByte = sum
|
||
|
||
resultBuf(0) = (retByte \ &H1000000) And &HFF
|
||
resultBuf(1) = (retByte \ &H10000) And &HFF
|
||
resultBuf(2) = (retByte \ &H100) And &HFF
|
||
resultBuf(3) = retByte And &HFF
|
||
End Sub
|
||
|
||
|
||
Private Sub StrToHex(pbDest() As Byte, pbSrc() As Byte, nLen As UInt16)
|
||
Dim h1 As Byte
|
||
Dim h2 As Byte
|
||
Dim s1 As Byte
|
||
Dim s2 As Byte
|
||
Dim i As Integer
|
||
|
||
For i = 0 To nLen - 1
|
||
h1 = pbSrc(2 * i)
|
||
h2 = pbSrc(2 * i + 1)
|
||
|
||
s1 = toupper(h1) - &H30
|
||
If s1 > 9 Then
|
||
s1 -= 7
|
||
End If
|
||
|
||
s2 = toupper(h2) - &H30
|
||
If s2 > 9 Then
|
||
s2 -= 7
|
||
End If
|
||
|
||
pbDest(i) = s1 * 16 + s2
|
||
Next
|
||
End Sub
|
||
|
||
Private Sub StrToHex(ByRef pbDest As UInt16, pbSrc() As Byte)
|
||
Dim pBufDest(1) As Byte
|
||
Dim h1 As Byte
|
||
Dim h2 As Byte
|
||
Dim s1 As Byte
|
||
Dim s2 As Byte
|
||
Dim i As UInt16
|
||
|
||
For i = 0 To 2 - 1
|
||
h1 = pbSrc(2 * i)
|
||
h2 = pbSrc(2 * i + 1)
|
||
|
||
s1 = toupper(h1) - &H30
|
||
If s1 > 9 Then
|
||
s1 -= 7
|
||
End If
|
||
|
||
s2 = toupper(h2) - &H30
|
||
If s2 > 9 Then
|
||
s2 -= 7
|
||
End If
|
||
|
||
pBufDest(i) = s1 * 16 + s2
|
||
Next
|
||
'pbDest = (pBufDest(0) << 8) + pBufDest(1)
|
||
pbDest = pBufDest(0) * 256 + pBufDest(1)
|
||
End Sub
|
||
|
||
Private Function StrToHex(ByVal src) As Byte
|
||
If src >= &H30 AndAlso src <= &H39 Then
|
||
Return (src - &H30)
|
||
ElseIf src >= &H41 AndAlso src <= &H46 Then
|
||
Return (src - &H41 + 10)
|
||
ElseIf src >= &H61 AndAlso src <= &H66 Then
|
||
Return (src - &H61 + 10)
|
||
Else
|
||
Return 0
|
||
End If
|
||
End Function
|
||
|
||
Private Function toupper(val As Byte) As Byte
|
||
If val >= &H61 AndAlso val <= &H7A Then
|
||
Return (val - &H20)
|
||
Else
|
||
Return val
|
||
End If
|
||
End Function
|
||
|
||
#End Region
|
||
|
||
#Region "Bin文件"
|
||
|
||
|
||
''' <summary>
|
||
''' 解析Bin文件
|
||
''' </summary>
|
||
''' <param name="filePath"></param>
|
||
Private Sub DealBinFile(filePath As String)
|
||
StateLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.NOTNULL)}...", Color.Blue, False)
|
||
Dim dataFile() As Byte = File.ReadAllBytes(filePath)
|
||
|
||
_ParseData = dataFile
|
||
StateLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ParsingBinFile)}", Color.Green, True)
|
||
'Console.WriteLine($"{BitConverter.ToString(dataFile)}")
|
||
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "dat文件"
|
||
|
||
''' <summary>
|
||
''' 解析dat文件
|
||
''' </summary>
|
||
Private _DatPath As String
|
||
Private Sub DealDatFile(filePath As String)
|
||
_DatPath = filePath
|
||
StateLabelConfig($"正在解析配置文件...", Color.Green, True)
|
||
Dim dataFile() As Byte = File.ReadAllBytes(filePath)
|
||
|
||
Dim vars As Integer = dataFile.Length Mod 4
|
||
If vars <> 0 Then
|
||
Dim eb(3 - vars) As Byte
|
||
Dim parseData As New List(Of Byte)
|
||
parseData.AddRange(dataFile)
|
||
parseData.AddRange(eb)
|
||
|
||
_ParseConfigData = parseData.ToArray
|
||
Else
|
||
_ParseConfigData = dataFile
|
||
End If
|
||
|
||
If _ParseConfigData.Length = 0 Then
|
||
StateLabelConfig($"配置文件为空", Color.Blue, True)
|
||
Else
|
||
StateLabelConfig($"配置文件解析完成", Color.Green, True)
|
||
End If
|
||
Console.WriteLine($"解析dat文件:{BitConverter.ToString(dataFile)}")
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "状态栏委托"
|
||
|
||
|
||
''' <summary>
|
||
''' 状态栏解析文本委托
|
||
''' 改变文本和颜色
|
||
''' </summary>
|
||
''' <param name="text"></param>
|
||
''' <param name="color"></param>
|
||
''' <param name="flg"></param>
|
||
Delegate Sub Delegate_StateLabel_Change(text As String, color As Color, flg As Boolean)
|
||
|
||
''' <summary>
|
||
''' 状态栏解析文本
|
||
''' 改变文本和颜色
|
||
''' </summary>
|
||
''' <param name="text"></param>
|
||
''' <param name="color"></param>
|
||
''' <param name="flg"></param>
|
||
Private Sub StateLabel(text As String, color As Color, flg As Boolean)
|
||
If Me.InvokeRequired = True Then
|
||
Dim a As New Delegate_StateLabel_Change(AddressOf StateLabel)
|
||
Me.Invoke(a, New Object() {text, color, flg})
|
||
Else
|
||
TSSLbl1.ForeColor = color
|
||
TSSLbl1.Text = text
|
||
BtnUpdateFile.Enabled = flg
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 状态栏解析文本委托
|
||
''' 改变文本和颜色
|
||
''' </summary>
|
||
''' <param name="text"></param>
|
||
''' <param name="color"></param>
|
||
''' <param name="flg"></param>
|
||
Delegate Sub Delegate_StateLabelConfig_Change(text As String, color As Color, flg As Boolean)
|
||
|
||
''' <summary>
|
||
''' 状态栏解析文本
|
||
''' 改变文本和颜色
|
||
''' </summary>
|
||
''' <param name="text"></param>
|
||
''' <param name="color"></param>
|
||
''' <param name="flg"></param>
|
||
Private Sub StateLabelConfig(text As String, color As Color, flg As Boolean)
|
||
If Me.InvokeRequired = True Then
|
||
Dim a As New Delegate_StateLabelConfig_Change(AddressOf StateLabelConfig)
|
||
Me.Invoke(a, New Object() {text, color, flg})
|
||
Else
|
||
TSSLbl1.ForeColor = color
|
||
TSSLbl1.Text = text
|
||
Button36.Enabled = flg
|
||
End If
|
||
End Sub
|
||
|
||
|
||
|
||
'''' <summary>
|
||
'''' 状态栏解析回复文本委托
|
||
'''' 改变文本和颜色
|
||
'''' </summary>
|
||
'''' <param name="text"></param>
|
||
'''' <param name="color"></param>
|
||
'Delegate Sub Delegate_StateReplyLabel_Change(text As String, color As Color)
|
||
|
||
'''' <summary>
|
||
'''' 状态栏解析回复文本
|
||
'''' 改变文本和颜色
|
||
'''' </summary>
|
||
'''' <param name="text"></param>
|
||
'''' <param name="color"></param>
|
||
'Private Sub StateReplyLabel(text As String, color As Color)
|
||
' If Me.InvokeRequired = True Then
|
||
' Dim a As New Delegate_StateReplyLabel_Change(AddressOf StateReplyLabel)
|
||
' Me.Invoke(a, New Object() {text, color})
|
||
' Else
|
||
' TSSLblReply.ForeColor = color
|
||
' TSSLblReply.Text = text
|
||
' End If
|
||
'End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#End Region
|
||
|
||
#Region "匹配信息"
|
||
|
||
''' <summary>
|
||
''' 匹配信息
|
||
''' </summary>
|
||
Enum EnMatchingInfo
|
||
''' <summary>空</summary>
|
||
null
|
||
''' <summary>是否选中</summary>
|
||
CKS
|
||
''' <summary>数据类型</summary>
|
||
DataType
|
||
''' <summary>主机数据</summary>
|
||
HostsData
|
||
''' <summary>Hex解析</summary>
|
||
HexDeal
|
||
End Enum
|
||
|
||
|
||
'''' <summary> 匹配列名 </summary>
|
||
'Private _colsMatching() As String = {"空", "CKS", "DataType", "HostData", "HexParsing"}
|
||
|
||
'''' <summary> 匹配数据类型 </summary>
|
||
'Private _matchingType() As String = {"ProjectCode", "RoomTypeID", "Version", "Core", "Model", "Remark"}
|
||
|
||
''' <summary> 匹配列名 </summary>
|
||
Private _colsMatching() As String = {"空", $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CKS)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DataType)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.HostData)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.HexParsing)}"}
|
||
|
||
''' <summary> 匹配数据类型 </summary>
|
||
Private _matchingType() As String = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomTypeID)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoftwareVersion)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Core)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Model)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomRemark)}"}
|
||
|
||
|
||
''' <summary>
|
||
''' 初始化匹配表格信息
|
||
''' </summary>
|
||
Private Sub InitMatchingGridInfo()
|
||
GrdMatching.DisplayRowNumber = True
|
||
GrdMatching.Cols = _colsMatching.Length
|
||
GrdMatching.Rows = 1
|
||
|
||
For index = 1 To GrdMatching.Cols - 1
|
||
With GrdMatching.Cell(0, index)
|
||
.Text = _colsMatching(index)
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font($"Arial", 9, FontStyle.Bold)
|
||
End With
|
||
|
||
With GrdMatching.Column(index)
|
||
If index = 1 Then
|
||
.CellType = FlexCell.CellTypeEnum.CheckBox
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 40
|
||
ElseIf index = 2 Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 70
|
||
Else
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 130
|
||
End If
|
||
End With
|
||
Next
|
||
GrdMatching.SelectionMode = FlexCell.SelectionModeEnum.ByRow '设置选中行
|
||
GrdMatching.Rows += _matchingType.Length
|
||
|
||
For index = 1 To _matchingType.Length
|
||
GrdMatching.Cell(index, EnMatchingInfo.CKS).Text = 1
|
||
GrdMatching.Cell(index, EnMatchingInfo.DataType).Text = _matchingType(index - 1)
|
||
Next
|
||
GrdMatching.Cell(_matchingType.Length, EnMatchingInfo.CKS).Text = 0
|
||
GrdMatching.Cell(_matchingType.Length, EnMatchingInfo.CKS).Locked = True '锁定房间备注_单元格
|
||
'GrdMatching.Cell(_matchingType.Length - 1, EnMatchingInfo.CKS).Locked = True '锁定Model_单元格
|
||
GrdMatching.Cell(_matchingType.Length - 2, EnMatchingInfo.CKS).Locked = True '锁定Core_单元格
|
||
GrdMatching.Cell(_matchingType.Length - 1, EnMatchingInfo.HostsData).Locked = True '锁定Model_单元格
|
||
GrdMatching.Cell(_matchingType.Length - 2, EnMatchingInfo.HostsData).Locked = True '锁定Core_单元格
|
||
GrdMatching.Cell(_matchingType.Length - 1, EnMatchingInfo.HexDeal).Locked = True '锁定Model_单元格
|
||
GrdMatching.Cell(_matchingType.Length - 2, EnMatchingInfo.HexDeal).Locked = True '锁定Core_单元格
|
||
GrdMatching.Cell(_matchingType.Length - 1, EnMatchingInfo.DataType).Locked = True '锁定Model_单元格
|
||
GrdMatching.Cell(_matchingType.Length - 2, EnMatchingInfo.DataType).Locked = True
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 下发匹配信息
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function UpdateMatching() As Boolean
|
||
For index = 1 To _matchingType.Length - 1 '备注不参与匹配
|
||
If GrdMatching.Cell(index, EnMatchingInfo.CKS).Text = 1 Then '选择匹配类型参与匹配
|
||
If GetMatchingCheck(GrdMatching.Cell(index, EnMatchingInfo.HostsData).Text, GrdMatching.Cell(index, EnMatchingInfo.HexDeal).Text) = True Then
|
||
Button28.ForeColor = Color.Red
|
||
Button28.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Mismatching)}"
|
||
Return False
|
||
End If
|
||
End If
|
||
Next
|
||
|
||
|
||
Return True
|
||
End Function
|
||
Private Function UpdateMatching(rowid As Integer) As Boolean
|
||
|
||
'For index = 1 To _matchingType.Length - 1 '备注不参与匹配
|
||
' If GrdMatching.Cell(index, EnMatchingInfo.CKS).Text = 1 Then '选择匹配类型参与匹配
|
||
If GetMatchingCheck(GrdRCUHost.Cell(rowid, EnRCUHosts.MCUName).Text, _Mcus) = True Then
|
||
Button28.ForeColor = Color.Red
|
||
Button28.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Mismatching)}"
|
||
Return False
|
||
End If
|
||
' End If
|
||
'Next
|
||
Return True
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 获取匹配校验
|
||
''' </summary>
|
||
''' <param name="hosts">主机数据</param>
|
||
''' <param name="hexdeal">Hex解析数据</param>
|
||
''' <returns></returns>
|
||
Private Function GetMatchingCheck(hosts As String, hexdeal As String) As Boolean
|
||
'Console.WriteLine($"匹配比对:主机数据-{hosts} Hex数据-{hexdeal}")
|
||
If String.IsNullOrWhiteSpace(hosts) OrElse String.IsNullOrWhiteSpace(hexdeal) Then Return False
|
||
If String.Compare(hosts, hexdeal) = 0 Then
|
||
Return False
|
||
End If
|
||
|
||
Return True
|
||
End Function
|
||
|
||
#End Region
|
||
|
||
#Region "固件升级"
|
||
|
||
''' <summary> Tftp端口 </summary>
|
||
Private _TftpPort As Integer = 69
|
||
|
||
''' <summary> Tftp新端口 </summary>
|
||
Private _TftpNewPort As Integer
|
||
|
||
''' <summary> 是否升级回复 </summary>
|
||
Private _isUpdateReply As Boolean
|
||
|
||
''' <summary> 是否Tftp写请求回复 </summary>
|
||
Private _isUpdateWRQReply As Boolean
|
||
|
||
''' <summary> 是否Tftp发送数据包回复 </summary>
|
||
Private _isTftpSendReply As Boolean
|
||
|
||
''' <summary> Tftp回复超时 </summary>
|
||
Private ReadOnly _TftpRelayTimeout As Integer = 1000
|
||
|
||
''' <summary> 校验包回复 </summary>
|
||
Private _isCheckReply As Boolean
|
||
|
||
''' <summary> 复位回复 </summary>
|
||
Private _isResetReply As Boolean
|
||
|
||
''' <summary> 最后端口 </summary>
|
||
Private _endPort As Integer
|
||
|
||
''' <summary> 下发升级线程 </summary>
|
||
Private _IssuedUpgradeThread As Thread
|
||
|
||
Private _UpgradeType As Boolean
|
||
|
||
''' <summary>
|
||
''' 勾选
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox12_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox12.CheckedChanged
|
||
Dim check As Integer
|
||
If CheckBox12.Checked = True Then
|
||
check = 1
|
||
Else
|
||
check = 0
|
||
End If
|
||
|
||
For index = 1 To GrdRCUHost.Rows - 1
|
||
GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"{check}"
|
||
Next
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 勾选计数
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function CheckedCount() As Integer
|
||
Dim count As Integer = 0
|
||
For index = 1 To GrdRCUHost.Rows - 1
|
||
If GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"1" Then
|
||
count += 1
|
||
End If
|
||
Next
|
||
|
||
Return count
|
||
End Function
|
||
|
||
Private Function CheckedCount(flag As Boolean) As List(Of Integer)
|
||
Dim count As New List(Of Integer)
|
||
For index = 1 To GrdRCUHost.Rows - 1
|
||
If GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"1" Then
|
||
count.Add(index)
|
||
End If
|
||
Next
|
||
|
||
Return count
|
||
End Function
|
||
''' <summary>
|
||
''' 升级计数
|
||
''' </summary>
|
||
Private _upgradeCount As Integer = 0
|
||
|
||
''' <summary>
|
||
''' 升级总数
|
||
''' </summary>
|
||
Private _upgradeSum As Integer = 0
|
||
|
||
''' <summary>
|
||
''' 同时最大升级个数
|
||
''' </summary>
|
||
Private _upgradeMaxCount As Integer = 128
|
||
|
||
|
||
''' <summary>
|
||
''' 勾选下发
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub BtnUpdateFile_Click(sender As Object, e As EventArgs) Handles BtnUpdateFile.Click
|
||
_UpgradeType = False
|
||
FirmwareUpdate()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 固件升级
|
||
''' </summary>
|
||
Private Sub FirmwareUpdate()
|
||
ChangePrgAirBurnValue(0)
|
||
Dim li = CheckedCount(False)
|
||
_upgradeSum = li.Count
|
||
If TextBox7.Text = Nothing Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheFileYouWantToUpgrade)}!")
|
||
Exit Sub
|
||
End If
|
||
If _upgradeSum = 0 Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
Return
|
||
End If
|
||
If _upgradeSum > _upgradeMaxCount Then
|
||
MsgBox($"超出最大升级 {_upgradeMaxCount} 个数。请重试!")
|
||
Return
|
||
End If
|
||
|
||
''下发匹配信息——GrdMatching
|
||
If UpdateMatching(li(0)) = False Then
|
||
MsgBox($"{GrdRCUHost.Cell(li(0), EnRCUHosts.MCUName).Text}, {_Mcus} 不匹配")
|
||
Exit Sub
|
||
Else
|
||
Button28.ForeColor = Color.Green
|
||
Button28.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Matching)}"
|
||
End If
|
||
|
||
Button25.Enabled = False
|
||
_upgradeCount = 0
|
||
TSSUpgradeCount.ForeColor = Color.Green
|
||
TSSUpgradeCount.Text = $"升级成功个数:{_upgradeCount}/{_upgradeSum}"
|
||
|
||
_IssuedUpgradeThread = New Thread(AddressOf StartUpdate)
|
||
_IssuedUpgradeThread.Start(True)
|
||
'StartUpdate()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 升级键值对
|
||
''' </summary>
|
||
'Private _upgrade As New Dictionary(Of IPEndPoint, String)
|
||
Private _newupgrade As New Dictionary(Of String, String)
|
||
|
||
''' <summary>
|
||
''' 升级方式_两种升级命令, 不同升级方式
|
||
''' </summary>
|
||
Private _updateWay As Boolean = False
|
||
|
||
Public Function CompareVersions(filename As String, launcherver As String) As Boolean
|
||
Dim buff1() As String = filename.Split("_")
|
||
Dim laver As String
|
||
If String.IsNullOrEmpty(launcherver) Then
|
||
Return True
|
||
laver = "L2"
|
||
Else
|
||
If IsNumeric(launcherver.Substring(launcherver.Length - 2, 2)) Then
|
||
laver = launcherver.Substring(0, 1) & CInt(launcherver.Substring(launcherver.Length - 2, 2))
|
||
Else
|
||
laver = "L2"
|
||
End If
|
||
|
||
End If
|
||
|
||
If laver.ToLower.Equals(buff1(2).ToLower) Then Return True
|
||
|
||
Return False
|
||
|
||
|
||
End Function
|
||
''' <summary>
|
||
''' 开始固件升级
|
||
''' </summary>
|
||
Private Sub StartUpdate(flag As Boolean)
|
||
'_upgrade.Clear()
|
||
_newupgrade.Clear()
|
||
Try
|
||
If GrdRCUHost.Rows > 1 Then
|
||
For index = 1 To GrdRCUHost.Rows - 1
|
||
If GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"1" Then
|
||
If flag Then
|
||
If UpdateMatching(index) = False Then
|
||
Continue For
|
||
End If
|
||
If CompareVersions(_UpdateFileName, GrdRCUHost.Cell(index, EnRCUHosts.Launcher).Text) Then
|
||
Else
|
||
MsgBox($"该文件launch版本与主机launch不匹配请更换升级文件")
|
||
Continue For
|
||
End If
|
||
Else
|
||
If String.IsNullOrEmpty(_DatPath) Then Return
|
||
Dim filetxt As String = File.ReadAllText(_DatPath).Replace(vbNullChar, "")
|
||
Dim tabletxt As String = GrdRCUHost.Cell(index, EnRCUHosts.CentralName).Text
|
||
If String.IsNullOrEmpty(tabletxt) OrElse String.IsNullOrEmpty(filetxt) Then
|
||
MsgBox("该主机未设置机型,请先设置机型再升级配置")
|
||
Continue For
|
||
End If
|
||
If ComparisonModelNames(filetxt, tabletxt) Then
|
||
Else
|
||
If MsgBox($"该配置文件主机型与当前主机机型不一致,是否继续升级?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
||
Else
|
||
Continue For
|
||
End If
|
||
|
||
End If
|
||
End If
|
||
Dim ipAddr As String = GrdRCUHost.Cell(index, EnRCUHosts.IPAddress).Text
|
||
Dim port As String = GrdRCUHost.Cell(index, EnRCUHosts.Port).Text
|
||
|
||
Dim localIp As IPAddress = LocalIPInfo()
|
||
Dim localport As Integer = GetRandomPort()
|
||
Dim localEP As IPEndPoint = New IPEndPoint(localIp, localport)
|
||
Dim remoteEP As IPEndPoint = New IPEndPoint(IPAddress.Parse(ipAddr), port)
|
||
|
||
Dim udpSocket As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
|
||
Dim commSockets As New CommSocketBLL
|
||
commSockets.Sockets = udpSocket
|
||
commSockets.LocalEP = localEP
|
||
commSockets.ReomteEP = remoteEP
|
||
commSockets.ConnSocket = False
|
||
|
||
'If CommSocket(commSockets) = True Then
|
||
_RemoteIP = IPAddress.Parse(ipAddr)
|
||
_RemotePort = port
|
||
_endPort = port
|
||
'UpdateBCmd(commSockets, ipAddr, port, remoteEP)
|
||
|
||
If _UpgradeType = True Then
|
||
ConfigIssuedCmd(ipAddr, port)
|
||
Else
|
||
UpdateBCmd(ipAddr, port)
|
||
End If
|
||
|
||
WaitReplyUpdate(500) '500
|
||
Dim localporttftp As Integer = GetRandomPort()
|
||
Dim localEPtftp As IPEndPoint = New IPEndPoint(localIp, localporttftp)
|
||
Dim remoteEPtftp As IPEndPoint = New IPEndPoint(IPAddress.Parse(ipAddr), _TftpPort)
|
||
Dim tftpSocket As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
|
||
Dim tftpSockets As New CommSocketBLL
|
||
tftpSockets.Sockets = tftpSocket
|
||
tftpSockets.LocalEP = localEPtftp
|
||
tftpSockets.ReomteEP = remoteEPtftp
|
||
tftpSockets.ConnSocket = False
|
||
|
||
If _isUpdateReply = True Then
|
||
_updateWay = True
|
||
|
||
If CommSocket(tftpSockets) = True Then
|
||
tftpSockets.ConnSocket = True
|
||
'_RemotePort = _TftpPort '69端口
|
||
'tftpSockets.ReomteEP.Port = _TftpPort
|
||
TftpSendWRQ(tftpSockets, remoteEPtftp) '发送写请求
|
||
WaitReplyWrite(500) '500
|
||
'WaitReply(_isUpdateWRQReply, _relayTimeout) '等待回复,记录端口
|
||
|
||
If _isUpdateWRQReply = False Then
|
||
TftpSendWRQ(tftpSockets, remoteEPtftp) '发送写请求
|
||
WaitReplyWrite(500) '1000
|
||
End If
|
||
|
||
_isTftpSendReply = False
|
||
IsBatchPrgAirBurnValueChange(2, _upgradeCount)
|
||
If _isUpdateWRQReply = True Then
|
||
Dim ud As New UpgradeBLL
|
||
ud.Index = index
|
||
ud.ReomteEP = New IPEndPoint(tftpSockets.ReomteEP.Address, _TftpNewPort)
|
||
ud.socket = tftpSocket
|
||
|
||
Dim reomteEP As IPEndPoint = New IPEndPoint(tftpSockets.ReomteEP.Address, port)
|
||
' _upgrade.Add(reomteEP, index)
|
||
Dim upkey As String = tftpSockets.ReomteEP.Address.ToString & ":" & port
|
||
_newupgrade.Add(upkey, index)
|
||
tftpSockets.ReomteEP.Port = _TftpNewPort 'Tftp新端口
|
||
'_RemotePort = _TftpNewPort 'Tftp新端口
|
||
'发送数据
|
||
'ThreadPool.QueueUserWorkItem(AddressOf SendUpdateData, ud)
|
||
SendUpdateData(ud, tftpSockets)
|
||
Else
|
||
MsgBox($"主机写请求未回复,请检查网络是否通畅、电脑防火墙是否拦截!")
|
||
End If
|
||
End If
|
||
Else
|
||
'UpdateACmd(commSockets, ipAddr, port, remoteEP)
|
||
UpdateACmd(ipAddr, port)
|
||
'WaitReply(_isUpdateReply, _relayTimeout)
|
||
WaitReplyUpdate(200)
|
||
If _isUpdateReply = True Then
|
||
If CommSocket(tftpSockets) = True Then
|
||
tftpSockets.ConnSocket = True
|
||
'tftpSockets.ReomteEP.Port = _TftpPort
|
||
'_RemotePort = _TftpPort '69端口
|
||
TftpSendWRQ(tftpSockets, remoteEPtftp) '发送写请求
|
||
WaitReplyWrite(200)
|
||
'WaitReply(_isUpdateWRQReply, _relayTimeout) '等待回复,记录端口
|
||
|
||
If _isUpdateWRQReply = False Then
|
||
TftpSendWRQ(tftpSockets, remoteEPtftp) '发送写请求
|
||
WaitReplyWrite(500)
|
||
End If
|
||
|
||
_isTftpSendReply = False
|
||
IsBatchPrgAirBurnValueChange(2, _upgradeCount)
|
||
If _isUpdateWRQReply = True Then
|
||
Dim ud As New UpgradeBLL
|
||
ud.Index = index
|
||
ud.ReomteEP = New IPEndPoint(tftpSockets.ReomteEP.Address, _TftpNewPort)
|
||
ud.socket = tftpSocket
|
||
|
||
Dim reomteEP As IPEndPoint = New IPEndPoint(tftpSockets.ReomteEP.Address, port)
|
||
' _upgrade.Add(reomteEP, index)
|
||
Dim upkey As String = tftpSockets.ReomteEP.Address.ToString & ":" & port
|
||
_newupgrade.Add(upkey, index)
|
||
tftpSockets.ReomteEP.Port = _TftpNewPort 'Tftp新端口
|
||
'_RemotePort = _TftpNewPort 'Tftp新端口
|
||
'发送数据
|
||
'ThreadPool.QueueUserWorkItem(AddressOf SendUpdateData, ud)
|
||
SendUpdateData(ud, tftpSockets)
|
||
Else
|
||
MsgBox($"主机写请求未回复!!!")
|
||
End If
|
||
End If
|
||
End If
|
||
End If
|
||
End If
|
||
Next
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SearchForTheHostToUpgrade)}!")
|
||
End If
|
||
Catch ex As Exception
|
||
MsgBox($"升级下发异常:{ex.Message}!")
|
||
End Try
|
||
|
||
BtnEnabledChange(Button25, True)
|
||
End Sub
|
||
|
||
|
||
Private Function ComparisonModelNames(filetxt As String, tabletxt As String) As Boolean
|
||
tabletxt = tabletxt.Replace("-", "_")
|
||
Return filetxt.Contains(tabletxt)
|
||
End Function
|
||
|
||
|
||
|
||
Private Function CommSocket(csb As CommSocketBLL)
|
||
If UpdataConnUdpSocket(csb) = True Then
|
||
Return True
|
||
End If
|
||
Return False
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 更新连接状态
|
||
''' </summary>
|
||
Public Function UpdataConnUdpSocket(csb As CommSocketBLL)
|
||
Dim ep As IPEndPoint
|
||
Try
|
||
ep = New IPEndPoint(csb.LocalEP.Address, csb.LocalEP.Port)
|
||
If csb.ConnSocket = False Then
|
||
'csb.Sockets = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
|
||
csb.Sockets.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1) '广播的精髓
|
||
csb.Sockets.Bind(ep)
|
||
ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf UdpRecvSocketData), csb)
|
||
Return True
|
||
Else
|
||
Return False
|
||
csb.Sockets.Shutdown(SocketShutdown.Both)
|
||
csb.Sockets.Close()
|
||
End If
|
||
Catch ex As Exception
|
||
Console.WriteLine($"网络异常! {ex.Message}")
|
||
Return False
|
||
End Try
|
||
End Function
|
||
|
||
|
||
'''' <summary>
|
||
'''' UDP Socket接收数据
|
||
'''' </summary>
|
||
'Private Sub UdpRecvSocketData(csb As CommSocketBLL)
|
||
' Dim ep As New IPEndPoint(IPAddress.Any, csb.ReomteEP.Port)
|
||
' Dim recvLength As Integer
|
||
' Dim recvBuffer(2048) As Byte
|
||
|
||
' While _connectStatus = True
|
||
' Try
|
||
' recvLength = csb.Sockets.ReceiveFrom(recvBuffer, ep)
|
||
' Catch ex As Exception
|
||
' Console.WriteLine($"Socket Error:{ex.Message}")
|
||
' Return
|
||
' End Try
|
||
|
||
' ReceivingDataProcessing(recvBuffer, recvLength, ep)
|
||
' End While
|
||
'End Sub
|
||
|
||
''' <summary>
|
||
''' UDP Socket接收数据
|
||
''' </summary>
|
||
Private Sub UdpRecvSocketData(csb As CommSocketBLL)
|
||
Dim ep As New IPEndPoint(IPAddress.Any, csb.ReomteEP.Port)
|
||
Dim recvLength As Integer
|
||
Dim recvBuffer(2048) As Byte
|
||
|
||
'2024-06-13 Add timeout Momo/CZH
|
||
'Dim tickLast As Integer = My.Computer.Clock.TickCount
|
||
'Dim tickNow As Integer = My.Computer.Clock.TickCount
|
||
'Dim tmpBuffLen As Integer = 0
|
||
|
||
While _connectStatus = True
|
||
Try
|
||
'tickNow = My.Computer.Clock.TickCount
|
||
'tmpBuffLen = csb.Sockets.ReceiveBufferSize
|
||
|
||
|
||
|
||
recvLength = csb.Sockets.ReceiveFrom(recvBuffer, ep)
|
||
|
||
|
||
|
||
|
||
Catch ex As Exception
|
||
Console.WriteLine($"Socket Error:{ex.Message}")
|
||
Return
|
||
End Try
|
||
ReceivingDataProcessing(recvBuffer, recvLength, ep)
|
||
End While
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 按键是否可用
|
||
''' </summary>
|
||
Delegate Sub Delegate_BtnEnabled_Change(btn As Button, enab As Boolean)
|
||
|
||
''' <summary>
|
||
''' 按键是否可用
|
||
''' </summary>
|
||
Private Sub BtnEnabledChange(btn As Button, enab As Boolean)
|
||
If Me.InvokeRequired = True Then
|
||
Dim a As New Delegate_BtnEnabled_Change(AddressOf BtnEnabledChange)
|
||
Me.Invoke(a, New Object() {btn, enab})
|
||
Else
|
||
btn.Enabled = enab
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 固件升级-0x0A升级命令
|
||
''' </summary>
|
||
''' <param name="ipAddr"></param>
|
||
''' <param name="port"></param>
|
||
Private Sub UpdateACmd(commSockets As CommSocketBLL, ipAddr As String, port As String, remoteEP As IPEndPoint)
|
||
Dim cmd As Byte = &HA '升级命令 0x0A
|
||
Dim data As Byte() = FillUpdateCmdData(ipAddr, port)
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendSocketData(commSockets, sendData, remoteEP)
|
||
'SendUDPData(sendData)
|
||
'Console.WriteLine($"固件升级-升级命令:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 固件升级-0xB2升级命令
|
||
''' </summary>
|
||
''' <param name="ipAddr"></param>
|
||
''' <param name="port"></param>
|
||
Private Sub UpdateBCmd(commSockets As CommSocketBLL, ipAddr As String, port As String, remoteEP As IPEndPoint)
|
||
Dim cmd As Byte = &HB2 '升级命令由 0x0A 更改为 0xB2 更改时间:2022/1/6
|
||
Dim data As Byte() = FillUpdateCmdData(ipAddr, port)
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendSocketData(commSockets, sendData, remoteEP)
|
||
'SendUDPData(sendData)
|
||
'Console.WriteLine($"固件升级-升级命令:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 固件升级-0x0A升级命令
|
||
''' </summary>
|
||
''' <param name="ipAddr"></param>
|
||
''' <param name="port"></param>
|
||
Private Sub UpdateACmd(ipAddr As String, port As String)
|
||
Dim cmd As Byte = &HA '升级命令 0x0A
|
||
Dim data As Byte() = FillUpdateCmdData(ipAddr, port)
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUDPData(sendData)
|
||
'Console.WriteLine($"固件升级-升级命令:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 固件升级-0xB2升级命令
|
||
''' </summary>
|
||
''' <param name="ipAddr"></param>
|
||
''' <param name="port"></param>
|
||
Private Sub UpdateBCmd(ipAddr As String, port As String)
|
||
Dim cmd As Byte = &HB2 '升级命令由 0x0A 更改为 0xB2 更改时间:2022/1/6
|
||
Dim data As Byte() = FillUpdateCmdData(ipAddr, port)
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUDPData(sendData)
|
||
'Console.WriteLine($"固件升级-升级命令:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 配置下发-0xB5升级命令
|
||
''' </summary>
|
||
Private Sub ConfigIssuedCmd(ipAddr As String, port As String)
|
||
Dim cmd As Byte = &HB5 '配置下发命令
|
||
Dim data As Byte() = FillUpdateCmdData(ipAddr, port)
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUDPData(sendData)
|
||
'Console.WriteLine($"配置下发-下发命令:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 固件升级-升级命令数据
|
||
''' </summary>
|
||
''' <param name="ipAddr"></param>
|
||
''' <param name="port"></param>
|
||
''' <returns></returns>
|
||
Private Function FillUpdateCmdData(ipAddr As String, port As String) As Byte()
|
||
Dim ipAddress As Byte() = GetAddressToBytes(ipAddr)
|
||
Dim ports As Byte() = GetPortToBytes(port)
|
||
|
||
Dim md5 As Byte()
|
||
Dim blocks As Byte()
|
||
If _UpgradeType = True Then
|
||
md5 = GetDataMd5Byte(_ParseConfigData)
|
||
blocks = IntToByteHB(GetBlocks(_ParseConfigData, 512))
|
||
Else
|
||
md5 = GetDataMd5Byte(_ParseData)
|
||
blocks = IntToByteHB(GetBlocks(_ParseData, 512))
|
||
End If
|
||
|
||
Dim md5s As Byte() = GetMd5Sort(md5)
|
||
'Dim md5 As Byte() = GetDataMd5Byte(_ParseData)
|
||
'Console.WriteLine($"MD5-String:{BitConverter.ToString(md5s)}")
|
||
|
||
Dim data As New List(Of Byte)
|
||
data.AddRange(ipAddress)
|
||
data.AddRange(ports)
|
||
data.AddRange(md5s)
|
||
data.AddRange(blocks)
|
||
|
||
Return data.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 固件升级-校验命令
|
||
''' </summary>
|
||
Private Sub CheckCmd(remoteip As IPAddress, port As Integer)
|
||
Dim ep As IPEndPoint = New IPEndPoint(remoteip, port)
|
||
Dim cmd As Byte = &HB3 '校验命令
|
||
Dim data(0) As Byte
|
||
data(0) = &H1 'App文件校验
|
||
'data(0) = &H2 '配置文件校验
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUpdateData(sendData, ep)
|
||
Console.WriteLine($"固件升级-校验命令:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 固件升级-复位命令
|
||
''' </summary>
|
||
Private Sub ResetCmd(remoteip As IPAddress, port As Integer)
|
||
Dim ep As IPEndPoint = New IPEndPoint(remoteip, port)
|
||
Dim cmd As Byte = &HB4 '复位命令
|
||
Dim data(0) As Byte
|
||
data(0) = &H1 '软件复位
|
||
'data(0) = &H2 '看门狗复位
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUpdateData(sendData, ep)
|
||
Console.WriteLine($"固件升级-复位命令:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' MD5值排序
|
||
''' </summary>
|
||
''' <param name="md5"></param>
|
||
''' <returns></returns>
|
||
Private Function GetMd5Sort(md5 As Byte()) As Byte()
|
||
Dim md51(3) As Byte
|
||
Dim md52(3) As Byte
|
||
Dim md53(3) As Byte
|
||
Dim md54(3) As Byte
|
||
|
||
Array.Copy(md5, 0, md51, 0, md51.Length)
|
||
Array.Copy(md5, 4, md52, 0, md52.Length)
|
||
Array.Copy(md5, 8, md53, 0, md53.Length)
|
||
Array.Copy(md5, 12, md54, 0, md54.Length)
|
||
|
||
Array.Reverse(md51)
|
||
Array.Reverse(md52)
|
||
Array.Reverse(md53)
|
||
Array.Reverse(md54)
|
||
|
||
Dim md5Sort As New List(Of Byte)
|
||
md5Sort.AddRange(md51)
|
||
md5Sort.AddRange(md52)
|
||
md5Sort.AddRange(md53)
|
||
md5Sort.AddRange(md54)
|
||
|
||
Return md5Sort.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 升级等待回复
|
||
''' </summary>
|
||
''' <param name="TimeOut">超时时间</param>
|
||
Public Sub WaitReplyUpdate(TimeOut As Integer)
|
||
Dim tick As Integer
|
||
Dim startTick As Integer = My.Computer.Clock.TickCount
|
||
_isUpdateReply = False
|
||
While _isUpdateReply = False AndAlso tick <= TimeOut
|
||
Thread.Sleep(20)
|
||
tick = My.Computer.Clock.TickCount - startTick
|
||
Application.DoEvents()
|
||
End While
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 写请求等待回复
|
||
''' </summary>
|
||
''' <param name="TimeOut">超时时间</param>
|
||
Public Sub WaitReplyWrite(TimeOut As Integer)
|
||
Dim tick As Integer
|
||
Dim startTick As Integer = My.Computer.Clock.TickCount
|
||
_isUpdateWRQReply = False
|
||
While _isUpdateWRQReply = False AndAlso tick <= TimeOut
|
||
Thread.Sleep(20)
|
||
tick = My.Computer.Clock.TickCount - startTick
|
||
Application.DoEvents()
|
||
End While
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 发送数据包等待回复
|
||
''' </summary>
|
||
''' <param name="TimeOut">超时时间</param>
|
||
Public Sub WaitReplySendPacket(TimeOut As Integer)
|
||
Dim tick As Integer
|
||
Dim startTick As Integer = My.Computer.Clock.TickCount
|
||
_isTftpSendReply = False
|
||
While _isTftpSendReply = False AndAlso tick <= TimeOut
|
||
Thread.Sleep(10)
|
||
tick = My.Computer.Clock.TickCount - startTick
|
||
Application.DoEvents()
|
||
End While
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 等待校验回复
|
||
''' </summary>
|
||
''' <param name="TimeOut">超时时间</param>
|
||
Public Sub WaitReplyCheckPacket(TimeOut As Integer)
|
||
Dim tick As Integer
|
||
Dim startTick As Integer = My.Computer.Clock.TickCount
|
||
_isCheckReply = False
|
||
While _isCheckReply = False AndAlso tick <= TimeOut
|
||
Thread.Sleep(100)
|
||
tick = My.Computer.Clock.TickCount - startTick
|
||
Application.DoEvents()
|
||
End While
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 等待复位回复
|
||
''' </summary>
|
||
''' <param name="TimeOut">超时时间</param>
|
||
Public Sub WaitReplyResetPacket(TimeOut As Integer)
|
||
Dim tick As Integer
|
||
Dim startTick As Integer = My.Computer.Clock.TickCount
|
||
_isResetReply = False
|
||
While _isResetReply = False AndAlso tick <= TimeOut
|
||
Thread.Sleep(50)
|
||
tick = My.Computer.Clock.TickCount - startTick
|
||
Application.DoEvents()
|
||
End While
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' Tftp命令
|
||
''' </summary>
|
||
Enum EnTftpCmd
|
||
''' <summary> 空 </summary>
|
||
Null = 0
|
||
|
||
''' <summary> 读请求 </summary>
|
||
RRQ = 1
|
||
|
||
''' <summary> 写请求 </summary>
|
||
WRQ = 2
|
||
|
||
''' <summary> 数据 </summary>
|
||
DATA = 3
|
||
|
||
''' <summary> Ack确认 </summary>
|
||
ACK = 4
|
||
|
||
''' <summary> Tftp_错误 </summary>
|
||
TError = 5
|
||
End Enum
|
||
|
||
|
||
''' <summary>
|
||
''' Tftp开始发送写请求_数据
|
||
''' </summary>
|
||
Private Sub TftpSendWRQ(commSockets As CommSocketBLL, remoteEP As IPEndPoint)
|
||
Dim sendData As Byte() = TftpStartSend()
|
||
'SendUDPData(sendData)
|
||
SendSocketData(commSockets, sendData, remoteEP)
|
||
Console.WriteLine($"Tftp开始发送写请求_数据命令:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' Tftp开始发送写请求
|
||
''' </summary>
|
||
Private Sub TftpSendWRQ()
|
||
Dim sendData As Byte() = TftpStartSend()
|
||
SendUDPData(sendData)
|
||
Console.WriteLine($"Tftp开始发送写请求_数据命令:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' Tftp开始发送写请求_数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function TftpStartSend() As Byte()
|
||
Dim data As New List(Of Byte)
|
||
data.Add(EnTftpCmd.Null)
|
||
data.Add(EnTftpCmd.WRQ)
|
||
data.AddRange(Encoding.UTF8.GetBytes(_UpdateFileName))
|
||
data.Add(EnTftpCmd.Null)
|
||
data.AddRange(Encoding.UTF8.GetBytes($"octet"))
|
||
data.Add(EnTftpCmd.Null)
|
||
|
||
Return data.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 重发次数标志位
|
||
''' </summary>
|
||
Public _resend As Integer = 0
|
||
Public _resendCheck As Integer = 0
|
||
Public _resendReset As Integer = 0
|
||
|
||
''' <summary>
|
||
''' 向Tftp发送升级数据
|
||
''' </summary>
|
||
Private Sub SendUpdateData(ud As UpgradeBLL, csb As CommSocketBLL)
|
||
_resend = 0
|
||
'StateReplyLabel($"升级中...", Color.Blue)
|
||
|
||
Dim blockCount As Integer
|
||
If _UpgradeType = True Then
|
||
blockCount = GetBlocks(_ParseConfigData, 512)
|
||
Else
|
||
blockCount = GetBlocks(_ParseData, 512)
|
||
End If
|
||
|
||
Dim burnPackage() As Byte
|
||
Dim packageNumber As Integer
|
||
For packageNumber = 1 To blockCount
|
||
If _UpgradeType = True Then
|
||
burnPackage = FillOnePackage(_ParseConfigData, packageNumber, blockCount)
|
||
Else
|
||
burnPackage = FillOnePackage(_ParseData, packageNumber, blockCount)
|
||
End If
|
||
'Console.WriteLine($"开始发送第{packageNumber}包数据..." & vbCrLf, Color.Blue)
|
||
|
||
'SendUpdateData(burnPackage, ud.ReomteEP)
|
||
SendSocketData(csb, burnPackage, ud.ReomteEP)
|
||
|
||
GrdRCUHost.Cell(ud.Index, EnRCUHosts.Update).Text = $"{packageNumber}/{blockCount}"
|
||
Console.WriteLine($"{Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}:开始发送第{packageNumber}包({burnPackage.Length }):{ByteToString(burnPackage)}")
|
||
|
||
If _upgradeSum = 1 Then
|
||
ChangePrgValue(packageNumber, blockCount) '进度条显示
|
||
Else
|
||
ChangePrgValue(_upgradeCount, _upgradeSum) '批量升级显示
|
||
End If
|
||
WaitReplySendPacket(500)
|
||
|
||
If _isTftpSendReply = True Then '重发机制
|
||
If packageNumber = blockCount Then
|
||
Console.WriteLine($"升级数据发送完成!")
|
||
GrdRCUHost.Cell(ud.Index, EnRCUHosts.Update).Text = $"升级中"
|
||
|
||
If _updateWay = True Then
|
||
GrdRCUHost.Cell(ud.Index, EnRCUHosts.Update).Text = $"等待校验"
|
||
'StateReplyLabel($"等待校验", Color.Blue)
|
||
CheckCmd(ud.ReomteEP.Address, _endPort)
|
||
WaitReplyCheckPacket(30000)
|
||
If _isCheckReply = True Then
|
||
ResetCmd(ud.ReomteEP.Address, _endPort)
|
||
'GrdRCUHost.Cell(ud.Index, EnRCUHosts.Update).Text = $"等待复位"
|
||
'StateReplyLabel($"等待复位", Color.Blue)
|
||
WaitReplyResetPacket(2000)
|
||
If _isResetReply = True Then
|
||
GrdRCUHost.Cell(ud.Index, EnRCUHosts.Update).Text = $"等待重启"
|
||
'StateReplyLabel($"升级完成", Color.Blue)
|
||
Else
|
||
If ResendReset(ud.ReomteEP) = True Then
|
||
GrdRCUHost.Cell(ud.Index, EnRCUHosts.Update).Text = $"等待重启"
|
||
'StateReplyLabel($"升级完成", Color.Blue)
|
||
Else
|
||
GrdRCUHost.Cell(ud.Index, EnRCUHosts.Update).Text = $"升级失败"
|
||
'StateReplyLabel($"升级失败", Color.Blue)
|
||
End If
|
||
BtnEnabledChange(Button25, True)
|
||
End If
|
||
Else
|
||
If ResendCheck(ud.ReomteEP) = True Then
|
||
ResetCmd(ud.ReomteEP.Address, _endPort)
|
||
End If
|
||
End If
|
||
End If
|
||
_updateWay = False
|
||
End If
|
||
_resend = 0
|
||
Else
|
||
_resend += 1
|
||
If _resend <= 5 Then
|
||
Console.WriteLine($"未回复,开始重发数据, 重发{_resend}次!")
|
||
packageNumber -= 1
|
||
Else
|
||
Console.WriteLine($"重发次数已超出最大重发次数")
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.UpgradeFailed)}!")
|
||
IsBatchPrgAirBurnValueChange(0, _upgradeCount)
|
||
'StateReplyLabel($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.UpgradeFailed)}", Color.Red)
|
||
_resend = 0
|
||
BtnEnabledChange(Button25, True)
|
||
Exit For
|
||
End If
|
||
End If
|
||
Next
|
||
End Sub
|
||
|
||
|
||
Private Function ResendCheck(remoteEp As IPEndPoint)
|
||
For index = 0 To 5
|
||
CheckCmd(remoteEp.Address, _endPort)
|
||
WaitReplyCheckPacket(30000)
|
||
If _isCheckReply = True Then
|
||
Return True
|
||
End If
|
||
Next
|
||
|
||
Return False
|
||
End Function
|
||
|
||
Private Function ResendReset(remoteEp As IPEndPoint)
|
||
For index = 0 To 10
|
||
ResetCmd(remoteEp.Address, _endPort)
|
||
WaitReplyResetPacket(2000)
|
||
If _isResetReply = True Then
|
||
Return True
|
||
End If
|
||
Next
|
||
|
||
Return False
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 填充单包数据
|
||
''' </summary>
|
||
''' <param name="padData"></param>
|
||
''' <param name="blockIndex"></param>
|
||
''' <param name="blockCount"></param>
|
||
''' <returns></returns>
|
||
Private Function FillOnePackage(padData() As Byte, blockIndex As Integer, blockCount As Integer) As Byte()
|
||
Dim data As New List(Of Byte)
|
||
data.Add(EnTftpCmd.Null)
|
||
data.Add(EnTftpCmd.DATA)
|
||
data.AddRange(IntToByteLB(blockIndex))
|
||
data.AddRange(FillOnePackageData(padData, blockIndex, blockCount))
|
||
Return data.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 填充单包_取对应包数据
|
||
''' </summary>
|
||
''' <param name="padData"></param>
|
||
''' <param name="blockIndex"></param>
|
||
''' <param name="blockCount"></param>
|
||
''' <returns></returns>
|
||
Private Function FillOnePackageData(padData() As Byte, blockIndex As Integer, blockCount As Integer) As Byte()
|
||
Dim data As New List(Of Byte)
|
||
If blockIndex = blockCount Then
|
||
For index = 512 * (blockIndex - 1) To padData.Length - 1
|
||
data.Add(padData(index))
|
||
Next
|
||
Else
|
||
For index = 512 * (blockIndex - 1) To 512 * blockIndex - 1
|
||
data.Add(padData(index))
|
||
Next
|
||
End If
|
||
Return data.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 进度条变化
|
||
''' </summary>
|
||
Private Sub ChangePrgValue(packageNumber As Integer, blockCount As Integer)
|
||
If packageNumber > blockCount * 0 AndAlso packageNumber < blockCount * 0.1 Then
|
||
ChangePrgAirBurnValue(5)
|
||
ElseIf packageNumber > blockCount * 0.1 AndAlso packageNumber < blockCount * 0.2 Then
|
||
ChangePrgAirBurnValue(10)
|
||
ElseIf packageNumber > blockCount * 0.2 AndAlso packageNumber < blockCount * 0.3 Then
|
||
ChangePrgAirBurnValue(20)
|
||
ElseIf packageNumber > blockCount * 0.3 AndAlso packageNumber < blockCount * 0.4 Then
|
||
ChangePrgAirBurnValue(30)
|
||
ElseIf packageNumber > blockCount * 0.4 AndAlso packageNumber < blockCount * 0.5 Then
|
||
ChangePrgAirBurnValue(40)
|
||
ElseIf packageNumber > blockCount * 0.5 AndAlso packageNumber < blockCount * 0.6 Then
|
||
ChangePrgAirBurnValue(50)
|
||
ElseIf packageNumber > blockCount * 0.6 AndAlso packageNumber < blockCount * 0.7 Then
|
||
ChangePrgAirBurnValue(60)
|
||
ElseIf packageNumber > blockCount * 0.7 AndAlso packageNumber < blockCount * 0.8 Then
|
||
ChangePrgAirBurnValue(70)
|
||
ElseIf packageNumber > blockCount * 0.8 AndAlso packageNumber < blockCount * 0.9 Then
|
||
ChangePrgAirBurnValue(80)
|
||
ElseIf packageNumber > blockCount * 0.9 AndAlso packageNumber < blockCount Then
|
||
ChangePrgAirBurnValue(90)
|
||
ElseIf packageNumber = blockCount Then
|
||
ChangePrgAirBurnValue(100)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 进度条委托
|
||
''' </summary>
|
||
''' <param name="Value"></param>
|
||
Delegate Sub delegate_PrgAirBurn_Value(ByRef Value As Integer)
|
||
|
||
''' <summary>
|
||
''' 进度条委托
|
||
''' </summary>
|
||
''' <param name="value"></param>
|
||
Private Sub ChangePrgAirBurnValue(ByRef value As Integer)
|
||
If Me.InvokeRequired = True Then
|
||
Dim changeval As New delegate_PrgAirBurn_Value(AddressOf ChangePrgAirBurnValue)
|
||
Me.Invoke(changeval, New Object() {value})
|
||
Else
|
||
TStPrgBurn.Value = value
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 是否批量下发改变进度值
|
||
''' </summary>
|
||
Private Sub IsBatchPrgAirBurnValueChange(one As Integer, count As Integer)
|
||
If _upgradeSum = 1 Then
|
||
ChangePrgAirBurnValue(one)
|
||
Else
|
||
'ChangePrgAirBurnValue(count)
|
||
End If
|
||
End Sub
|
||
|
||
#End Region
|
||
|
||
#Region "配置下发"
|
||
|
||
Private Sub Button36_Click(sender As Object, e As EventArgs) Handles Button36.Click
|
||
_UpgradeType = True
|
||
ConfigurationIssued()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 配置下发
|
||
''' </summary>
|
||
Private Sub ConfigurationIssued()
|
||
ChangePrgAirBurnValue(0)
|
||
|
||
If TextBox61.Text = Nothing Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheFileYouWantToUpgrade)}!")
|
||
Exit Sub
|
||
End If
|
||
If CheckedCount() = 0 Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
Return
|
||
End If
|
||
If CheckedCount() > _upgradeMaxCount Then
|
||
MsgBox($"超出最大升级 {_upgradeMaxCount} 个数。请重试!")
|
||
Return
|
||
End If
|
||
_upgradeSum = CheckedCount()
|
||
|
||
Button25.Enabled = False
|
||
_upgradeCount = 0
|
||
TSSUpgradeCount.ForeColor = Color.Green
|
||
TSSUpgradeCount.Text = $"升级成功个数:{_upgradeCount}/{_upgradeSum}"
|
||
|
||
_IssuedUpgradeThread = New Thread(AddressOf StartUpdate)
|
||
_IssuedUpgradeThread.Start(False)
|
||
|
||
End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#End Region
|
||
|
||
#Region "研发使用"
|
||
|
||
#Region "通讯方式设置"
|
||
|
||
|
||
'''' <summary>
|
||
'''' 切换网络&通讯记录
|
||
'''' </summary>
|
||
'''' <param name="sender"></param>
|
||
'''' <param name="e"></param>
|
||
'Private Sub TabControl3_TabIndexChanged(sender As Object, e As EventArgs) Handles TabControl3.TabIndexChanged
|
||
' If TabControl3.SelectedIndex = 0 OrElse TabControl3.SelectedIndex = 1 OrElse TabControl3.SelectedIndex = 2 Then
|
||
' Panel1.Visible = True
|
||
' Panel1.BringToFront()
|
||
' Panel2.Visible = False
|
||
' Else
|
||
' Panel2.Visible = True
|
||
' Panel2.BringToFront()
|
||
' Panel1.Visible = False
|
||
' End If
|
||
'End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 按键次数
|
||
''' </summary>
|
||
Private _rBtncount As Integer = 0
|
||
|
||
|
||
Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
|
||
_rBtncount += 1
|
||
If _rBtncount > 1 Then
|
||
If RadioButton1.Checked = True Then
|
||
Panel2.Visible = False
|
||
Panel1.BringToFront()
|
||
Panel1.Visible = True
|
||
'FrmAdvancedSettings.ShowDialog()
|
||
End If
|
||
End If
|
||
End Sub
|
||
|
||
|
||
Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged
|
||
If RadioButton2.Checked = True Then
|
||
Panel1.Visible = False
|
||
Panel2.BringToFront()
|
||
Panel2.Visible = True
|
||
'FrmSerialportSetting.ShowDialog()
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设置寄存器组包
|
||
''' </summary>
|
||
''' <param name="cmd"></param>
|
||
''' <param name="dataBuff"></param>
|
||
''' <returns></returns>
|
||
Public Function FillPacket(cmd As Byte, dataBuff() As Byte) As Byte()
|
||
If RadioButton1.Checked = True AndAlso _isNetWork = True Then
|
||
dataBuff = FillSendData(cmd, dataBuff) '网络数据
|
||
ElseIf RadioButton2.Checked = True AndAlso _isSerialPort = True Then
|
||
cmd = &H6 '串口Cmd
|
||
dataBuff = FillModelsSerialPortTest(cmd, dataBuff) '串口数据
|
||
End If
|
||
|
||
Return dataBuff
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 发送方式
|
||
''' </summary>
|
||
''' <param name="dataBuff"></param>
|
||
Private Sub SendPacket(dataBuff() As Byte)
|
||
If RadioButton1.Checked = True AndAlso _isNetWork = True Then
|
||
SendUDPData(dataBuff)
|
||
ElseIf RadioButton2.Checked = True AndAlso _isSerialPort = True Then
|
||
SendPortData(dataBuff)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 读取寄存器组包
|
||
''' </summary>
|
||
''' <param name="cmd"></param>
|
||
''' <param name="dataBuff"></param>
|
||
''' <returns></returns>
|
||
Public Function FillReadPacket(cmd As Byte, dataBuff() As Byte) As Byte()
|
||
If RadioButton1.Checked = True AndAlso _isNetWork = True Then
|
||
dataBuff = FillSendData(cmd, dataBuff) '网络数据
|
||
ElseIf RadioButton2.Checked = True AndAlso _isSerialPort = True Then
|
||
cmd = &H15 '串口Cmd
|
||
dataBuff = FillModelsSerialPortTest(cmd, dataBuff) '串口数据
|
||
End If
|
||
|
||
Return dataBuff
|
||
End Function
|
||
|
||
|
||
'''' <summary>
|
||
'''' 设置MQTT组包
|
||
'''' </summary>
|
||
'''' <param name="cmd"></param>
|
||
'''' <param name="dataBuff"></param>
|
||
'''' <returns></returns>
|
||
'Public Function FillMQTTPacket(cmd As Byte, dataBuff() As Byte) As Byte()
|
||
' If RadioButton1.Checked = True AndAlso _isNetWork = True Then
|
||
' cmd = &HD4 '网络设置MQTT_Cmd
|
||
' dataBuff = FillSendData(cmd, dataBuff) '网络数据
|
||
' ElseIf RadioButton2.Checked = True AndAlso _isSerialPort = True Then
|
||
' cmd = &HD '串口设置MQTT_Cmd
|
||
' dataBuff = FillModelsSerialPortTest(cmd, dataBuff) '串口数据
|
||
' End If
|
||
|
||
' Return dataBuff
|
||
'End Function
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "设置读取_项目信息"
|
||
|
||
|
||
Private _setCount As Integer = 0
|
||
|
||
''' <summary>
|
||
''' 设置主机信息按键
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub BtnCheckSetting_Click(sender As Object, e As EventArgs) Handles BtnCheckSetting.Click
|
||
If RadioButton1.Checked = True Then
|
||
If GrdRCUHost.Rows > 1 Then
|
||
_setCount = CheckedCount()
|
||
|
||
If _setCount = 0 Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
Exit Sub
|
||
End If
|
||
|
||
For index = 1 To GrdRCUHost.Rows - 1
|
||
If GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"1" Then
|
||
_RemoteIP = IPAddress.Parse(GrdRCUHost.Cell(index, EnRCUHosts.IPAddress).Text)
|
||
SetHostInfoRD() '设置主键信息
|
||
End If
|
||
Next
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheInformationToBeDeliveredAndTheHost)}")
|
||
End If
|
||
_setCount = 0
|
||
_remarksCount = 0
|
||
_remarkAddr = &H1C
|
||
Else
|
||
SetHostInfoRD() '设置主键信息
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设置主机信息
|
||
''' </summary>
|
||
Private Sub SetHostInfoRD()
|
||
Dim projectNumber As String = TBoProjectCode.Text '项目编号
|
||
Dim roomType As String = TBoRoomTP.Text '房型备注
|
||
Dim roomNumber As String = TBoRoomTN.Text '房号备注
|
||
Dim roomTpId As String = TBoRoomTPId.Text '房型ID
|
||
Dim roomNuId As String = TBoRoomTNId.Text '房号ID
|
||
Dim roomStates As String = CBoRoomStates.Text '房态
|
||
Dim roomSeason As String = CBoSeasons.Text '季节
|
||
Dim locks As String = CBoLocks.Text '锁定
|
||
Dim roomRemarks As String = TBoRoomRemarks.Text '房间注释
|
||
Dim setTime As Boolean = CheckBoxSet.Checked '授权时间是否设置
|
||
Dim dateTimeValue As Date = DateTimePicker1.Value '授权到期时间
|
||
|
||
Dim projectCodeB As Boolean = CBo1.Checked
|
||
Dim RoomTpRemarkB As Boolean = CBo2.Checked
|
||
Dim RoomNuRemarkB As Boolean = CBo3.Checked
|
||
Dim SeasonB As Boolean = CBo4.Checked
|
||
Dim RoomStateB As Boolean = CBo5.Checked
|
||
Dim RoomLockB As Boolean = CBo6.Checked
|
||
Dim roomRemarkB As Boolean = CBo7.Checked
|
||
Dim MandateEndTimeB As Boolean = CBo8.Checked
|
||
|
||
Dim cmd As Byte = &H31
|
||
Dim data As Byte() = FillSetHostsInfo(projectNumber, roomType, roomNumber, roomTpId, roomNuId, roomStates, roomSeason, locks, roomRemarks, setTime, dateTimeValue, projectCodeB, RoomStateB, RoomTpRemarkB, RoomNuRemarkB, roomRemarkB, SeasonB, MandateEndTimeB, RoomLockB)
|
||
If Enumerable.SequenceEqual(data, _roomNull) = False Then
|
||
Dim sendData As Byte() = FillPacket(cmd, data)
|
||
SendPacket(sendData)
|
||
Console.WriteLine($"研发设置主机信息:{ByteToString(sendData)}")
|
||
End If
|
||
End Sub
|
||
|
||
|
||
Private Sub CheckBoxSet_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxSet.CheckedChanged
|
||
If CheckBoxSet.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Clear)}" Then
|
||
CheckBoxSet.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.HomeSet)}"
|
||
DateTimePicker1.Enabled = True
|
||
Else
|
||
CheckBoxSet.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Clear)}"
|
||
DateTimePicker1.Enabled = False
|
||
End If
|
||
End Sub
|
||
|
||
|
||
#Region "读取项目信息"
|
||
|
||
Private _networkIpInfo() As Byte = {&H0, &H0, &H0, &H0}
|
||
Private _networkSubnetInfo() As Byte = {&H8, &H0, &H0, &H0}
|
||
Private _networkGatewayInfo() As Byte = {&HC, &H0, &H0, &H0}
|
||
Private _networkDNSInfo() As Byte = {&H10, &H0, &H0, &H0}
|
||
Private _networkServerInfo() As Byte = {&H18, &H0, &H0, &H0}
|
||
|
||
Private _projectCode() As Byte = {&H38, &H0, &H0, &H0}
|
||
Private _roomLocks() As Byte = {&H2C, &H0, &H0, &H0}
|
||
Private _roomStates() As Byte = {&H4C, &H0, &H0, &H0}
|
||
Private _season() As Byte = {&H50, &H0, &H0, &H0}
|
||
|
||
Private _roomNuRemark() As Byte = {&H0, &H1, &H0, &H0}
|
||
Private _roomNuRemark1() As Byte = {&H4, &H1, &H0, &H0}
|
||
Private _roomNuRemark2() As Byte = {&H8, &H1, &H0, &H0}
|
||
Private _roomNuRemark3() As Byte = {&HC, &H1, &H0, &H0}
|
||
Private _roomNuRemarkID() As Byte = {&H44, &H0, &H0, &H0}
|
||
|
||
Private _roomTpRemark() As Byte = {&H10, &H1, &H0, &H0}
|
||
Private _roomTpRemark1() As Byte = {&H14, &H1, &H0, &H0}
|
||
Private _roomTpRemark2() As Byte = {&H18, &H1, &H0, &H0}
|
||
Private _roomTpRemark3() As Byte = {&H1C, &H1, &H0, &H0}
|
||
Private _roomTpRemarkID() As Byte = {&H48, &H0, &H0, &H0}
|
||
|
||
Private _roomRemark() As Byte = {&H20, &H1, &H0, &H0}
|
||
Private _mandateTime() As Byte = {&H28, &H0, &H0, &H0}
|
||
Private _mandateEndTime() As Byte = {&H20, &H0, &H0, &H0}
|
||
|
||
|
||
''' <summary>
|
||
''' 读取信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button23_Click(sender As Object, e As EventArgs) Handles Button23.Click
|
||
'Dim projectCodeB As Boolean = CBo1.Checked
|
||
'Dim RoomTpRemarkB As Boolean = CBo2.Checked
|
||
'Dim RoomNuRemarkB As Boolean = CBo3.Checked
|
||
'Dim SeasonB As Boolean = CBo4.Checked
|
||
'Dim RoomStateB As Boolean = CBo5.Checked
|
||
'Dim RoomLockB As Boolean = CBo6.Checked
|
||
'Dim roomRemarkB As Boolean = CBo7.Checked
|
||
'Dim MandateEndTimeB As Boolean = CBo8.Checked
|
||
'Dim MandateTimeB As Boolean = CheckBoxSet.Checked
|
||
|
||
'If projectCodeB = True OrElse RoomTpRemarkB = True OrElse RoomNuRemarkB = True OrElse SeasonB = True OrElse RoomStateB = True OrElse RoomLockB = True OrElse roomRemarkB = True OrElse MandateEndTimeB = True OrElse MandateTimeB = True Then
|
||
'Else
|
||
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheItemInfoItemToRead)}!")
|
||
' Return
|
||
'End If
|
||
|
||
Dim cmd As Byte = &H30
|
||
Dim data() As Byte = GetReadCountData()
|
||
'Dim data() As Byte = GetReadCountData(projectCodeB, RoomTpRemarkB, RoomNuRemarkB, SeasonB, RoomStateB, RoomLockB, roomRemarkB, MandateEndTimeB, MandateTimeB)
|
||
Dim sendData As Byte() = FillReadPacket(cmd, data)
|
||
SendPacket(sendData)
|
||
Console.WriteLine($"研发读取主机信息:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取设置总数数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetReadCountData() As Byte()
|
||
'1、判断勾选项, 算出设备个数
|
||
Dim setCount As Byte = 0
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(14)
|
||
|
||
databuf.AddRange(_projectCode) '项目编码
|
||
databuf.AddRange(_roomLocks) '锁定
|
||
databuf.AddRange(_roomStates) '房态
|
||
databuf.AddRange(_season) '季节
|
||
databuf.AddRange(_roomNuRemark) '房号备注
|
||
databuf.AddRange(_roomNuRemark1) '房号备注
|
||
databuf.AddRange(_roomNuRemark2) '房号备注
|
||
databuf.AddRange(_roomNuRemark3) '房号备注
|
||
databuf.AddRange(_roomNuRemarkID) '房号ID
|
||
|
||
databuf.AddRange(_roomTpRemark) '房型备注
|
||
databuf.AddRange(_roomTpRemark1) '房型备注
|
||
databuf.AddRange(_roomTpRemark2) '房型备注
|
||
databuf.AddRange(_roomTpRemark3) '房型备注
|
||
databuf.AddRange(_roomTpRemarkID) '房型ID
|
||
'databuf.AddRange(_roomRemark) '房间备注
|
||
'databuf.AddRange(_mandateEndTime) '授权到期时间
|
||
'databuf.AddRange(_mandateTime) '授权时间
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
'''' <summary>
|
||
'''' 获取设置总数数据
|
||
'''' </summary>
|
||
'''' <param name="ProjectNumber">项目编码</param>
|
||
'''' <param name="RoomState">房态</param>
|
||
'''' <param name="RoomTpRemark">房型备注&房型ID</param>
|
||
'''' <param name="RoomNuRemark">房型备注&房型ID</param>
|
||
'''' <param name="RoomRemarks">房间备注</param>
|
||
'''' <param name="Season">季节</param>
|
||
'''' <param name="MandateEndTime">授权到期时间</param>
|
||
'''' <param name="RoomLock">锁定</param>
|
||
'''' <param name="MandateTime">授权时间</param>
|
||
'''' <returns></returns>
|
||
'Private Function GetReadCountData(ProjectNumber As Boolean, RoomState As Boolean, RoomTpRemark As Boolean, RoomNuRemark As Boolean, RoomRemarks As Boolean, Season As Boolean, MandateEndTime As Boolean, RoomLock As Boolean, MandateTime As Boolean) As Byte()
|
||
' '1、判断勾选项, 算出设备个数
|
||
' Dim setCount As Byte = 0
|
||
' Dim databuf As New List(Of Byte)
|
||
|
||
' If ProjectNumber = True Then '项目编码
|
||
' setCount += 1
|
||
' databuf.AddRange(_projectCode)
|
||
' End If
|
||
' If RoomState = True Then '房态
|
||
' setCount += 1
|
||
' databuf.AddRange(_roomStates)
|
||
' End If
|
||
' If RoomTpRemark = True Then '房型备注和房型ID
|
||
' setCount += 5
|
||
' databuf.AddRange(_roomTpRemark)
|
||
' End If
|
||
' If RoomNuRemark = True Then '房号备注和房号ID
|
||
' setCount += 5
|
||
' databuf.AddRange(_roomNuRemark)
|
||
' End If
|
||
' If RoomRemarks = True Then '房间备注
|
||
' setCount += _remarksCount
|
||
' databuf.AddRange(_roomRemark)
|
||
' End If
|
||
' If Season = True Then '季节
|
||
' setCount += 1
|
||
' databuf.AddRange(_season)
|
||
' End If
|
||
' If MandateEndTime = True Then '授权到期时间
|
||
' setCount += 1
|
||
' databuf.AddRange(_mandateEndTime)
|
||
' End If
|
||
' If RoomLock = True Then '锁定
|
||
' setCount += 1
|
||
' databuf.AddRange(_roomLocks)
|
||
' End If
|
||
' If MandateTime = True Then '授权时间
|
||
' setCount += 1
|
||
' databuf.AddRange(_mandateTime)
|
||
' End If
|
||
' databuf.Insert(0, setCount)
|
||
|
||
' Return databuf.ToArray
|
||
'End Function
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "复位"
|
||
|
||
'Private ReadOnly resetText() As String = {"软件复位", "看门狗复位"}
|
||
|
||
'Private Sub InitReset()
|
||
' ComboBox29.Items.Clear()
|
||
' ComboBox29.Items.AddRange(resetText)
|
||
' If ComboBox29.Items.Count > 0 Then ComboBox29.SelectedIndex = 0
|
||
'End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 复位命令
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button34_Click(sender As Object, e As EventArgs) Handles Button34.Click, Button39.Click
|
||
Label71.Text = $"等待重启中..."
|
||
Dim resetCMD As Byte = &H1
|
||
'If ComboBox29.SelectedIndex = 0 Then
|
||
' resetCMD = &H1
|
||
'ElseIf ComboBox29.SelectedIndex = 1 Then
|
||
' resetCMD = &H2
|
||
'End If
|
||
|
||
Dim cmd As Byte = &HB4
|
||
Dim data(0) As Byte
|
||
data(0) = resetCMD
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
SendUDPData(sendData)
|
||
End Sub
|
||
|
||
Private Sub LogServiceInformation()
|
||
|
||
|
||
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "设置MAC"
|
||
|
||
''' <summary>
|
||
''' 研发使用MAC地址下发
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button21_Click(sender As Object, e As EventArgs) Handles Button21.Click
|
||
RDSetMAC()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 是否点击OK
|
||
''' </summary>
|
||
Public _RDIsOK As Boolean
|
||
|
||
|
||
''' <summary>
|
||
''' 设置MAC
|
||
''' </summary>
|
||
Private Sub RDSetMAC()
|
||
Dim frmmacdia As New FrmMACDialog(Me)
|
||
frmmacdia.ShowMyDialog()
|
||
If _IsOK = True Then
|
||
Dim data() As Byte = frmmacdia.GetMACAddress()
|
||
Dim cmd As Byte = &H31
|
||
'发送
|
||
Dim databuff As Byte() = FillMACIssuedData(data)
|
||
Dim senddata As Byte() = FillPacket(cmd, data)
|
||
SendPacket(senddata)
|
||
Console.WriteLine($"研发设置MAC:{ByteToString(senddata)}")
|
||
|
||
_IsOK = False
|
||
End If
|
||
End Sub
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "设置读取_网络信息"
|
||
|
||
''' <summary>
|
||
''' 网络计数
|
||
''' </summary>
|
||
Private _NetCount As Integer = 0
|
||
|
||
''' <summary>
|
||
''' 设置网络信息按键
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button22_Click(sender As Object, e As EventArgs) Handles Button22.Click
|
||
Dim ip1 As String = TextBox49.Text
|
||
Dim ip2 As String = TextBox48.Text
|
||
Dim ip3 As String = TextBox51.Text
|
||
Dim ip4 As String = TextBox50.Text
|
||
|
||
Dim subnet1 As String = TextBox39.Text
|
||
Dim subnet2 As String = TextBox38.Text
|
||
Dim subnet3 As String = TextBox37.Text
|
||
Dim subnet4 As String = TextBox36.Text
|
||
|
||
Dim gateway1 As String = TextBox43.Text
|
||
Dim gateway2 As String = TextBox42.Text
|
||
Dim gateway3 As String = TextBox41.Text
|
||
Dim gateway4 As String = TextBox40.Text
|
||
|
||
Dim DNS1 As String = TextBox47.Text
|
||
Dim DNS2 As String = TextBox46.Text
|
||
Dim DNS3 As String = TextBox45.Text
|
||
Dim DNS4 As String = TextBox44.Text
|
||
|
||
Dim server1 As String = TextBox60.Text
|
||
Dim server2 As String = TextBox59.Text
|
||
Dim server3 As String = TextBox58.Text
|
||
Dim server4 As String = TextBox35.Text
|
||
|
||
|
||
If CheckBox32.Checked = True Then
|
||
If GetNetworkInfoIsLegal(ip1, $"IP地址") = False Then Return
|
||
If GetNetworkInfoIsLegal(ip2, $"IP地址") = False Then Return
|
||
If GetNetworkInfoIsLegal(ip3, $"IP地址") = False Then Return
|
||
If GetNetworkInfoIsLegal(ip4, $"IP地址") = False Then Return
|
||
If GetNetworkInfoIsLegal(subnet1, $"子网掩码") = False Then Return
|
||
If GetNetworkInfoIsLegal(subnet2, $"子网掩码") = False Then Return
|
||
If GetNetworkInfoIsLegal(subnet3, $"子网掩码") = False Then Return
|
||
If GetNetworkInfoIsLegal(subnet4, $"子网掩码") = False Then Return
|
||
If GetNetworkInfoIsLegal(gateway1, $"网关") = False Then Return
|
||
If GetNetworkInfoIsLegal(gateway2, $"网关") = False Then Return
|
||
If GetNetworkInfoIsLegal(gateway3, $"网关") = False Then Return
|
||
If GetNetworkInfoIsLegal(gateway4, $"网关") = False Then Return
|
||
If GetNetworkInfoIsLegal(DNS1, $"DNS") = False Then Return
|
||
If GetNetworkInfoIsLegal(DNS2, $"DNS") = False Then Return
|
||
If GetNetworkInfoIsLegal(DNS3, $"DNS") = False Then Return
|
||
If GetNetworkInfoIsLegal(DNS4, $"DNS") = False Then Return
|
||
End If
|
||
|
||
If CheckBox33.Checked = True Then
|
||
If GetNetworkInfoIsLegal(server1, $"服务器") = False Then Return
|
||
If GetNetworkInfoIsLegal(server2, $"服务器") = False Then Return
|
||
If GetNetworkInfoIsLegal(server3, $"服务器") = False Then Return
|
||
If GetNetworkInfoIsLegal(server4, $"服务器") = False Then Return
|
||
End If
|
||
|
||
If RadioButton1.Checked = True Then
|
||
If GrdRCUHost.Rows > 1 Then
|
||
_NetCount = CheckedCount()
|
||
|
||
If _NetCount = 0 Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
Exit Sub
|
||
End If
|
||
|
||
For index = 1 To GrdRCUHost.Rows - 1
|
||
If GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"1" Then
|
||
_RemoteIP = IPAddress.Parse(GrdRCUHost.Cell(index, EnRCUHosts.IPAddress).Text)
|
||
SetNetworkInfo(ip1, ip2, ip3, ip4, subnet1, subnet2, subnet3, subnet4, gateway1, gateway2, gateway3, gateway4, DNS1, DNS2, DNS3, DNS4, server1, server2, server3, server4)
|
||
End If
|
||
Next
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheInformationToBeDeliveredAndTheHost)}")
|
||
End If
|
||
_NetCount = 0
|
||
Else
|
||
SetNetworkInfo(ip1, ip2, ip3, ip4, subnet1, subnet2, subnet3, subnet4, gateway1, gateway2, gateway3, gateway4, DNS1, DNS2, DNS3, DNS4, server1, server2, server3, server4)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设置网络信息
|
||
''' </summary>
|
||
Private Sub SetNetworkInfo(ip1 As String, ip2 As String, ip3 As String, ip4 As String, subnet1 As String, subnet2 As String, subnet3 As String, subnet4 As String, gateway1 As String, gateway2 As String, gateway3 As String, gateway4 As String, DNS1 As String, DNS2 As String, DNS3 As String, DNS4 As String, server1 As String, server2 As String, server3 As String, server4 As String)
|
||
Dim cmd As Byte = &H31
|
||
Dim data As Byte() = GetDHCPData()
|
||
Dim databuff As Byte() = GetDHCP(data)
|
||
Dim getServer As Byte() = GetServerData(server1, server2, server3, server4)
|
||
Dim dataPackage As Byte()
|
||
Dim count As Byte
|
||
|
||
Dim sendData As Byte()
|
||
If CheckBox32.Checked = False Then
|
||
If CheckBox33.Checked = True Then
|
||
count = &H2
|
||
dataPackage = GetServerSendData(databuff, getServer)
|
||
dataPackage = GetDHCPPackage(count, dataPackage)
|
||
Else
|
||
count = &H1
|
||
dataPackage = GetDHCPPackage(count, databuff)
|
||
End If
|
||
Else
|
||
Dim setData As Byte() = GetSetData(ip1, ip2, ip3, ip4, subnet1, subnet2, subnet3, subnet4, gateway1, gateway2, gateway3, gateway4, DNS1, DNS2, DNS3, DNS4)
|
||
Dim setDataDHCP As Byte() = GetSetDHCPPackage(databuff, setData)
|
||
If CheckBox33.Checked = True Then
|
||
count = &H6
|
||
dataPackage = GetServerSendData(setDataDHCP, getServer)
|
||
dataPackage = GetDHCPPackage(count, dataPackage)
|
||
Else
|
||
count = &H5
|
||
dataPackage = GetDHCPPackage(count, setDataDHCP)
|
||
End If
|
||
End If
|
||
|
||
sendData = FillPacket(cmd, dataPackage)
|
||
SendPacket(sendData)
|
||
Console.WriteLine($"研发设置网络信息:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
Private Function GetServerSendData(data1 As Byte(), data2 As Byte()) As Byte()
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.AddRange(data1)
|
||
databuf.AddRange(data2)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
Private Function GetDHCPData()
|
||
Dim dh As Byte
|
||
Dim setdh As Byte
|
||
Dim server As Byte
|
||
If CheckBox31.Checked = True Then
|
||
dh = &H1 '1设置
|
||
Else
|
||
dh = &H2
|
||
End If
|
||
|
||
If CheckBox32.Checked = True Then
|
||
setdh = &H1
|
||
Else
|
||
setdh = &H2
|
||
End If
|
||
|
||
If CheckBox33.Checked = True Then
|
||
server = &H1
|
||
Else
|
||
server = &H2
|
||
End If
|
||
|
||
Dim data(3) As Byte
|
||
data(0) = dh
|
||
data(1) = setdh
|
||
data(2) = server
|
||
data(3) = &H0
|
||
|
||
Return data
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取 DHCP 使能
|
||
''' </summary>
|
||
''' <param name="data"></param>
|
||
''' <returns></returns>
|
||
Private Function GetDHCP(data As Byte()) As Byte()
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H30) '使能
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.AddRange(data)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 获取DHCP包
|
||
''' </summary>
|
||
''' <param name="count"></param>
|
||
''' <param name="data"></param>
|
||
''' <returns></returns>
|
||
Private Function GetDHCPPackage(count As Byte, data As Byte())
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(count)
|
||
databuf.AddRange(data)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取DHCP设置包
|
||
''' </summary>
|
||
''' <param name="dhcp"></param>
|
||
''' <param name="data"></param>
|
||
''' <returns></returns>
|
||
Private Function GetSetDHCPPackage(dhcp As Byte(), data As Byte())
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.AddRange(dhcp)
|
||
databuf.AddRange(data)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取服务器IP地址数据
|
||
''' </summary>
|
||
''' <param name="server1"></param>
|
||
''' <param name="server2"></param>
|
||
''' <param name="server3"></param>
|
||
''' <param name="server4"></param>
|
||
''' <returns></returns>
|
||
Private Function GetServerData(server1 As String, server2 As String, server3 As String, server4 As String)
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H18) '服务器IP地址
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
databuf.Add(server1)
|
||
databuf.Add(server2)
|
||
databuf.Add(server3)
|
||
databuf.Add(server4)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' 获取设置DHCP数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetSetData(ip1 As String, ip2 As String, ip3 As String, ip4 As String, subnet1 As String, subnet2 As String, subnet3 As String, subnet4 As String, gateway1 As String, gateway2 As String, gateway3 As String, gateway4 As String, DNS1 As String, DNS2 As String, DNS3 As String, DNS4 As String) As Byte()
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H0) 'IP地址
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
databuf.Add(ip1)
|
||
databuf.Add(ip2)
|
||
databuf.Add(ip3)
|
||
databuf.Add(ip4)
|
||
|
||
databuf.Add(&H8) '子网掩码
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
databuf.Add(subnet1)
|
||
databuf.Add(subnet2)
|
||
databuf.Add(subnet3)
|
||
databuf.Add(subnet4)
|
||
|
||
databuf.Add(&HC) '网关
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
databuf.Add(gateway1)
|
||
databuf.Add(gateway2)
|
||
databuf.Add(gateway3)
|
||
databuf.Add(gateway4)
|
||
|
||
databuf.Add(&H10) 'DNS
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
databuf.Add(DNS1)
|
||
databuf.Add(DNS2)
|
||
databuf.Add(DNS3)
|
||
databuf.Add(DNS4)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
Private Sub CheckBox32_Click(sender As Object, e As EventArgs) Handles CheckBox32.Click
|
||
If CheckBox32.Checked = True Then
|
||
SetRadioBtnState(True)
|
||
Else
|
||
SetRadioBtnState(False)
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox33_Click(sender As Object, e As EventArgs) Handles CheckBox33.Click
|
||
If CheckBox31.Checked = False AndAlso CheckBox32.Checked = False Then
|
||
CheckBox33.Checked = False
|
||
MsgBox($"请选择DHCP或者固定IP")
|
||
Return
|
||
End If
|
||
|
||
If CheckBox33.Checked = True Then
|
||
SetServerBtnState(True)
|
||
Else
|
||
SetServerBtnState(False)
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox32_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox32.CheckedChanged
|
||
If CheckBox32.Checked = True Then
|
||
SetRadioBtnState(True)
|
||
Else
|
||
SetRadioBtnState(False)
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox33_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox33.CheckedChanged
|
||
If CheckBox33.Checked = True Then
|
||
SetServerBtnState(True)
|
||
Else
|
||
SetServerBtnState(False)
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设置按键状态
|
||
''' </summary>
|
||
''' <param name="state"></param>
|
||
Private Sub SetRadioBtnState(state As Boolean)
|
||
TextBox49.Enabled = state
|
||
TextBox48.Enabled = state
|
||
TextBox51.Enabled = state
|
||
TextBox50.Enabled = state
|
||
TextBox39.Enabled = state
|
||
TextBox38.Enabled = state
|
||
TextBox37.Enabled = state
|
||
TextBox36.Enabled = state
|
||
TextBox43.Enabled = state
|
||
TextBox42.Enabled = state
|
||
TextBox41.Enabled = state
|
||
TextBox40.Enabled = state
|
||
TextBox47.Enabled = state
|
||
TextBox46.Enabled = state
|
||
TextBox45.Enabled = state
|
||
TextBox44.Enabled = state
|
||
|
||
Label36.Enabled = state
|
||
Label37.Enabled = state
|
||
Label38.Enabled = state
|
||
Label39.Enabled = state
|
||
Label40.Enabled = state
|
||
Label41.Enabled = state
|
||
Label42.Enabled = state
|
||
Label43.Enabled = state
|
||
Label44.Enabled = state
|
||
Label45.Enabled = state
|
||
Label46.Enabled = state
|
||
Label47.Enabled = state
|
||
Label48.Enabled = state
|
||
Label50.Enabled = state
|
||
Label51.Enabled = state
|
||
Label55.Enabled = state
|
||
End Sub
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' 设置服务器按键状态
|
||
''' </summary>
|
||
''' <param name="state"></param>
|
||
Private Sub SetServerBtnState(state As Boolean)
|
||
TextBox60.Enabled = state
|
||
TextBox59.Enabled = state
|
||
TextBox58.Enabled = state
|
||
TextBox35.Enabled = state
|
||
|
||
Label69.Enabled = state
|
||
Label68.Enabled = state
|
||
Label67.Enabled = state
|
||
Label66.Enabled = state
|
||
|
||
End Sub
|
||
|
||
|
||
|
||
#Region "读取网络信息"
|
||
|
||
''' <summary>
|
||
''' 读取网络信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
|
||
CheckBox31.Checked = False
|
||
CheckBox32.Checked = False
|
||
CheckBox33.Checked = False
|
||
_isNetWork = True
|
||
Dim cmd As Byte = &H30
|
||
Dim data As Byte() = GetReadNetworkInfo()
|
||
Dim sendData As Byte() = FillReadPacket(cmd, data)
|
||
SendPacket(sendData)
|
||
Console.WriteLine($"研发读取网络信息:{ByteToString(sendData)}")
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取读取数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetReadNetworkInfo() As Byte()
|
||
Dim databuff As New List(Of Byte)
|
||
databuff.Add(&H6)
|
||
|
||
databuff.Add(&H0) 'IP地址
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
|
||
databuff.Add(&H8) '子网掩码
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
|
||
databuff.Add(&HC) '网关
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
|
||
databuff.Add(&H10) 'DNS
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
|
||
databuff.Add(&H18) '服务器
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
|
||
databuff.Add(&H30) '使能
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
databuff.Add(&H0)
|
||
|
||
Return databuff.ToArray
|
||
End Function
|
||
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "设置读取_MQTT"
|
||
|
||
Private _MQTTItem() = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MQTT)}_{LanguageData.StringList(MultiLanguageDAL.StringEnum.AliCloud)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MQTT)}_{LanguageData.StringList(MultiLanguageDAL.StringEnum.CustomCloud)}"}
|
||
|
||
|
||
Private Sub InitMQTTItem()
|
||
ComboBox10.Items.Clear()
|
||
ComboBox10.Items.AddRange(_MQTTItem)
|
||
If ComboBox10.Items.Count > 0 Then ComboBox10.SelectedIndex = 0
|
||
End Sub
|
||
|
||
|
||
Private Sub InitPage()
|
||
TabControl4.SizeMode = TabSizeMode.Fixed
|
||
TabControl4.ItemSize = New Size(0, 1)
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' MQTT选择
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub ComboBox10_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox10.SelectedIndexChanged
|
||
Select Case ComboBox10.SelectedIndex
|
||
Case 0
|
||
TabControl4.SelectedIndex = 0
|
||
Case 1
|
||
TabControl4.SelectedIndex = 1
|
||
Case Else
|
||
|
||
End Select
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设置计数
|
||
''' </summary>
|
||
Private _setcounts As Integer = 0
|
||
|
||
''' <summary>
|
||
''' 设置MQTT
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub BtnSetMQTT_Click(sender As Object, e As EventArgs) Handles BtnSetMQTT.Click
|
||
Dim aliProductKeyB As Boolean = CheckBox8.Checked
|
||
Dim aliDevNameB As Boolean = CheckBox9.Checked
|
||
Dim aliDevKeyB As Boolean = CheckBox10.Checked
|
||
Dim aliReSessionB As Boolean = CheckBox14.Checked
|
||
Dim aliSubSessionB As Boolean = CheckBox13.Checked
|
||
Dim onlineTimeB As Boolean = CheckBox11.Checked
|
||
Dim reSsessionB As Boolean = CheckBox22.Checked
|
||
Dim subSessionB As Boolean = CheckBox17.Checked
|
||
Dim domainNameB As Boolean = CheckBox15.Checked
|
||
Dim clientIDB As Boolean = CheckBox29.Checked
|
||
Dim userNameB As Boolean = CheckBox28.Checked
|
||
Dim passwordB As Boolean = CheckBox27.Checked
|
||
|
||
Dim aliProductKey() As Byte = GetMQTTSingleData(TextBox28.Text)
|
||
Dim aliDevName() As Byte = GetMQTTSingleData(TextBox31.Text)
|
||
Dim aliDevKey() As Byte = GetMQTTSingleData(TextBox32.Text)
|
||
Dim aliReSession() As Byte = GetMQTTSingleData(TextBox33.Text)
|
||
Dim aliSubSession() As Byte = GetMQTTSingleData(TextBox34.Text)
|
||
Dim onlineTime() As Byte = GetMQTTSingleByte(IntToByteHB(NumericUpDown1.Value))
|
||
Dim reSsession() As Byte = GetMQTTSingleData(TextBox52.Text)
|
||
Dim subSession() As Byte = GetMQTTSingleData(TextBox53.Text)
|
||
Dim domainName() As Byte = GetMQTTSingleData(TextBox54.Text)
|
||
Dim clientID() As Byte = GetMQTTSingleData(TextBox55.Text)
|
||
Dim userName() As Byte = GetMQTTSingleData(TextBox56.Text)
|
||
Dim password() As Byte = GetMQTTSingleData(TextBox57.Text)
|
||
|
||
Dim cmd As Byte
|
||
Dim sendData As Byte()
|
||
Dim data As Byte() = GetMQTTData(aliProductKeyB, aliDevNameB, aliDevKeyB, aliReSessionB, aliSubSessionB, onlineTimeB, reSsessionB, subSessionB, domainNameB, clientIDB, userNameB, passwordB, aliProductKey, aliDevName, aliDevKey, aliReSession, aliSubSession, onlineTime, reSsession, subSession, domainName, clientID, userName, password)
|
||
Dim networkDate As Byte() = GetNetworkData(aliProductKeyB, aliDevNameB, aliDevKeyB, aliReSessionB, aliSubSessionB, onlineTimeB, reSsessionB, subSessionB, domainNameB, clientIDB, userNameB, passwordB, aliProductKey, aliDevName, aliDevKey, aliReSession, aliSubSession, onlineTime, reSsession, subSession, domainName, clientID, userName, password)
|
||
|
||
If RadioButton1.Checked = True AndAlso _isNetWork = True Then
|
||
cmd = &HD4 '网络设置MQTT_Cmd
|
||
sendData = FillSendData(cmd, networkDate) '网络数据
|
||
ElseIf RadioButton2.Checked = True AndAlso _isSerialPort = True Then
|
||
cmd = &HD '串口设置MQTT_Cmd
|
||
sendData = FillModelsSerialPortTest(cmd, data) '串口数据
|
||
Else
|
||
MsgBox($"非法设置")
|
||
Return
|
||
End If
|
||
Console.WriteLine($"设置MQTT:{ByteToString(sendData)}")
|
||
|
||
If RadioButton1.Checked = True Then
|
||
If GrdRCUHost.Rows > 1 Then
|
||
_setcounts = CheckedCount()
|
||
If _setcounts = 0 Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
Exit Sub
|
||
End If
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheInformationToBeDeliveredAndTheHost)}")
|
||
End If
|
||
|
||
For index = 1 To GrdRCUHost.Rows - 1
|
||
If GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"1" Then
|
||
_RemoteIP = IPAddress.Parse(GrdRCUHost.Cell(index, EnRCUHosts.IPAddress).Text)
|
||
SendPacket(sendData)
|
||
End If
|
||
Next
|
||
Else
|
||
SendPacket(sendData)
|
||
End If
|
||
_setcounts = 0
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取 MQTT 数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetMQTTData(aliProductKeyB As Boolean, aliDevNameB As Boolean, aliDevKeyB As Boolean, aliReSessionB As Boolean, aliSubSessionB As Boolean, onlineTimeB As Boolean, reSsessionB As Boolean, subSessionB As Boolean, domainNameB As Boolean, clientIDB As Boolean, userNameB As Boolean, passwordB As Boolean, aliProductKey() As Byte, aliDevName() As Byte, aliDevKey() As Byte, aliReSession() As Byte, aliSubSession() As Byte, onlineTime() As Byte, reSsession() As Byte, subSession() As Byte, domainName() As Byte, clientID() As Byte, userName() As Byte, password() As Byte)
|
||
Dim setCount As Byte = 0
|
||
Dim databuf As New List(Of Byte)
|
||
If aliProductKeyB = True Then '阿里云产品密钥
|
||
setCount += 1
|
||
databuf.Add(&H1)
|
||
databuf.AddRange(aliProductKey)
|
||
End If
|
||
If aliDevNameB = True Then '阿里云设备名称
|
||
setCount += 1
|
||
databuf.Add(&H2)
|
||
databuf.AddRange(aliDevName)
|
||
End If
|
||
If aliDevKeyB = True Then '阿里云设备密钥
|
||
setCount += 1
|
||
databuf.Add(&H3)
|
||
databuf.AddRange(aliDevKey)
|
||
End If
|
||
If aliReSessionB = True Then '阿里云发布会话
|
||
setCount += 1
|
||
databuf.Add(&H4)
|
||
databuf.AddRange(aliReSession)
|
||
End If
|
||
If aliSubSessionB = True Then '阿里云订阅会话
|
||
setCount += 1
|
||
databuf.Add(&H5)
|
||
databuf.AddRange(aliSubSession)
|
||
End If
|
||
If onlineTimeB = True Then '在线时间
|
||
setCount += 1
|
||
databuf.Add(&H6)
|
||
databuf.AddRange(onlineTime)
|
||
End If
|
||
If reSsessionB = True Then '发布会话
|
||
setCount += 1
|
||
databuf.Add(&H7)
|
||
databuf.AddRange(reSsession)
|
||
End If
|
||
If subSessionB = True Then '订阅会话
|
||
setCount += 1
|
||
databuf.Add(&H8)
|
||
databuf.AddRange(subSession)
|
||
End If
|
||
If domainNameB = True Then '域名
|
||
setCount += 1
|
||
databuf.Add(&H9)
|
||
databuf.AddRange(domainName)
|
||
End If
|
||
If clientIDB = True Then '客户端ID
|
||
setCount += 1
|
||
databuf.Add(&HA)
|
||
databuf.AddRange(clientID)
|
||
End If
|
||
If userNameB = True Then '用户名
|
||
setCount += 1
|
||
databuf.Add(&HB)
|
||
databuf.AddRange(userName)
|
||
End If
|
||
If passwordB = True Then '密码
|
||
setCount += 1
|
||
databuf.Add(&HC)
|
||
databuf.AddRange(password)
|
||
End If
|
||
databuf.Insert(0, setCount)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取 MQTT 网络数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetNetworkData(aliProductKeyB As Boolean, aliDevNameB As Boolean, aliDevKeyB As Boolean, aliReSessionB As Boolean, aliSubSessionB As Boolean, onlineTimeB As Boolean, reSsessionB As Boolean, subSessionB As Boolean, domainNameB As Boolean, clientIDB As Boolean, userNameB As Boolean, passwordB As Boolean, aliProductKey() As Byte, aliDevName() As Byte, aliDevKey() As Byte, aliReSession() As Byte, aliSubSession() As Byte, onlineTime() As Byte, reSsession() As Byte, subSession() As Byte, domainName() As Byte, clientID() As Byte, userName() As Byte, password() As Byte)
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H1) 'MQTT参数
|
||
|
||
If aliProductKeyB = True Then '阿里云产品密钥
|
||
Dim offset() As Byte = {&H0, &H0, &H0, &H0} '偏移地址
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(aliProductKey)
|
||
End If
|
||
If aliDevNameB = True Then '阿里云设备名称
|
||
Dim offset() As Byte = {&HC, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(aliDevName)
|
||
End If
|
||
If aliDevKeyB = True Then '阿里云设备密钥
|
||
Dim offset() As Byte = {&H4D, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(aliDevKey)
|
||
End If
|
||
If aliReSessionB = True Then '阿里云发布会话
|
||
Dim offset() As Byte = {&H6E, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(aliReSession)
|
||
End If
|
||
If aliSubSessionB = True Then '阿里云订阅会话
|
||
Dim offset() As Byte = {&HAF, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(aliSubSession)
|
||
End If
|
||
If onlineTimeB = True Then '在线时间
|
||
Dim offset() As Byte = {&HF0, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(onlineTime)
|
||
End If
|
||
If reSsessionB = True Then '发布会话
|
||
Dim offset() As Byte = {&HF2, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(reSsession)
|
||
End If
|
||
If subSessionB = True Then '订阅会话
|
||
Dim offset() As Byte = {&H33, &H1, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(subSession)
|
||
End If
|
||
If domainNameB = True Then '域名
|
||
Dim offset() As Byte = {&H74, &H1, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(domainName)
|
||
End If
|
||
If clientIDB = True Then '客户端ID
|
||
Dim offset() As Byte = {&HB5, &H1, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(clientID)
|
||
End If
|
||
If userNameB = True Then '用户名
|
||
Dim offset() As Byte = {&HF6, &H1, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(userName)
|
||
End If
|
||
If passwordB = True Then '密码
|
||
Dim offset() As Byte = {&H37, &H2, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(password)
|
||
End If
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取MQTT单项数据
|
||
''' </summary>
|
||
''' <param name="singleStr"></param>
|
||
''' <returns></returns>
|
||
Private Function GetMQTTSingleData(singleStr As String) As Byte()
|
||
If singleStr = "" Then singleStr = 0
|
||
Dim data() As Byte = System.Text.Encoding.ASCII.GetBytes(singleStr)
|
||
|
||
Dim databuf As New List(Of Byte)
|
||
If RadioButton1.Checked = True Then '网络
|
||
databuf.AddRange(IntToByteHB(data.Length))
|
||
Else '串口
|
||
databuf.Add(data.Length)
|
||
End If
|
||
databuf.AddRange(data)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 获取MQTT单项数据
|
||
''' </summary>
|
||
''' <param name="singlebyte"></param>
|
||
''' <returns></returns>
|
||
Private Function GetMQTTSingleByte(singlebyte As Byte()) As Byte()
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(singlebyte.Length)
|
||
databuf.Add(&H0)
|
||
databuf.AddRange(singlebyte)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
#Region "读取MQTT"
|
||
|
||
''' <summary>
|
||
''' 读取计数
|
||
''' </summary>
|
||
Private _readcounts As Integer = 0
|
||
|
||
''' <summary>
|
||
''' 读取MQTT
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click
|
||
Dim aliProductKeyB As Boolean = CheckBox8.Checked
|
||
Dim aliDevNameB As Boolean = CheckBox9.Checked
|
||
Dim aliDevKeyB As Boolean = CheckBox10.Checked
|
||
Dim aliReSessionB As Boolean = CheckBox14.Checked
|
||
Dim aliSubSessionB As Boolean = CheckBox13.Checked
|
||
Dim onlineTimeB As Boolean = CheckBox11.Checked
|
||
Dim reSsessionB As Boolean = CheckBox22.Checked
|
||
Dim subSessionB As Boolean = CheckBox17.Checked
|
||
Dim domainNameB As Boolean = CheckBox15.Checked
|
||
Dim clientIDB As Boolean = CheckBox29.Checked
|
||
Dim userNameB As Boolean = CheckBox28.Checked
|
||
Dim passwordB As Boolean = CheckBox27.Checked
|
||
|
||
If aliProductKeyB = True OrElse aliDevNameB = True OrElse aliDevKeyB = True OrElse aliReSessionB = True OrElse aliSubSessionB = True OrElse onlineTimeB = True OrElse
|
||
reSsessionB = True OrElse subSessionB = True OrElse domainNameB = True OrElse clientIDB = True OrElse userNameB = True OrElse passwordB = True Then
|
||
Else
|
||
MsgBox($"请选择要读取的MQTT信息项")
|
||
Return
|
||
End If
|
||
|
||
Dim cmd As Byte
|
||
Dim sendData As Byte()
|
||
Dim data As Byte() = GetReadPortMQTTData(aliProductKeyB, aliDevNameB, aliDevKeyB, aliReSessionB, aliSubSessionB, onlineTimeB, reSsessionB, subSessionB, domainNameB, clientIDB, userNameB, passwordB)
|
||
Dim networkDate As Byte() = GetReadNetworkData(aliProductKeyB, aliDevNameB, aliDevKeyB, aliReSessionB, aliSubSessionB, onlineTimeB, reSsessionB, subSessionB, domainNameB, clientIDB, userNameB, passwordB)
|
||
|
||
If RadioButton1.Checked = True AndAlso _isNetWork = True Then
|
||
cmd = &HD5 '网络MQTT_Cmd
|
||
sendData = FillSendData(cmd, networkDate) '网络数据
|
||
ElseIf RadioButton2.Checked = True AndAlso _isSerialPort = True Then
|
||
cmd = &HE '串口MQTT_Cmd
|
||
sendData = FillModelsSerialPortTest(cmd, data) '串口数据
|
||
Else
|
||
MsgBox($"非法读取")
|
||
Return
|
||
End If
|
||
Console.WriteLine($"读取MQTT:{ByteToString(sendData)}")
|
||
|
||
If RadioButton1.Checked = True Then
|
||
If GrdRCUHost.Rows > 1 Then
|
||
_readcounts = CheckedCount()
|
||
If _readcounts = 0 Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
Exit Sub
|
||
End If
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheInformationToBeDeliveredAndTheHost)}")
|
||
End If
|
||
|
||
For index = 1 To GrdRCUHost.Rows - 1
|
||
If GrdRCUHost.Cell(index, EnRCUHosts.IsCheck).Text = $"1" Then
|
||
_RemoteIP = IPAddress.Parse(GrdRCUHost.Cell(index, EnRCUHosts.IPAddress).Text)
|
||
SendPacket(sendData)
|
||
End If
|
||
Next
|
||
Else
|
||
SendPacket(sendData)
|
||
End If
|
||
_readcounts = 0
|
||
|
||
End Sub
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' 获取 MQTT 数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetReadPortMQTTData(aliProductKeyB As Boolean, aliDevNameB As Boolean, aliDevKeyB As Boolean, aliReSessionB As Boolean, aliSubSessionB As Boolean, onlineTimeB As Boolean, reSsessionB As Boolean, subSessionB As Boolean, domainNameB As Boolean, clientIDB As Boolean, userNameB As Boolean, passwordB As Boolean)
|
||
Dim setCount As Byte = 0
|
||
Dim databuf As New List(Of Byte)
|
||
If aliProductKeyB = True Then '阿里云产品密钥
|
||
setCount += 1
|
||
databuf.Add(&H1)
|
||
End If
|
||
If aliDevNameB = True Then '阿里云设备名称
|
||
setCount += 1
|
||
databuf.Add(&H2)
|
||
End If
|
||
If aliDevKeyB = True Then '阿里云设备密钥
|
||
setCount += 1
|
||
databuf.Add(&H3)
|
||
End If
|
||
If aliReSessionB = True Then '阿里云发布会话
|
||
setCount += 1
|
||
databuf.Add(&H4)
|
||
End If
|
||
If aliSubSessionB = True Then '阿里云订阅会话
|
||
setCount += 1
|
||
databuf.Add(&H5)
|
||
End If
|
||
If onlineTimeB = True Then '在线时间
|
||
setCount += 1
|
||
databuf.Add(&H6)
|
||
End If
|
||
If reSsessionB = True Then '发布会话
|
||
setCount += 1
|
||
databuf.Add(&H7)
|
||
End If
|
||
If subSessionB = True Then '订阅会话
|
||
setCount += 1
|
||
databuf.Add(&H8)
|
||
End If
|
||
If domainNameB = True Then '域名
|
||
setCount += 1
|
||
databuf.Add(&H9)
|
||
End If
|
||
If clientIDB = True Then '客户端ID
|
||
setCount += 1
|
||
databuf.Add(&HA)
|
||
End If
|
||
If userNameB = True Then '用户名
|
||
setCount += 1
|
||
databuf.Add(&HB)
|
||
End If
|
||
If passwordB = True Then '密码
|
||
setCount += 1
|
||
databuf.Add(&HC)
|
||
End If
|
||
databuf.Insert(0, setCount)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
|
||
''' <summary>
|
||
''' 获取 MQTT 数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetReadNetworkData(aliProductKeyB As Boolean, aliDevNameB As Boolean, aliDevKeyB As Boolean, aliReSessionB As Boolean, aliSubSessionB As Boolean, onlineTimeB As Boolean, reSsessionB As Boolean, subSessionB As Boolean, domainNameB As Boolean, clientIDB As Boolean, userNameB As Boolean, passwordB As Boolean)
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H1) 'MQTT参数
|
||
|
||
If aliProductKeyB = True Then '阿里云产品密钥
|
||
Dim offset() As Byte = {&H0, &H0, &H0, &H0} '偏移地址
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(12))
|
||
End If
|
||
If aliDevNameB = True Then '阿里云设备名称
|
||
Dim offset() As Byte = {&HC, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(65))
|
||
End If
|
||
If aliDevKeyB = True Then '阿里云设备密钥
|
||
Dim offset() As Byte = {&H4D, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(33))
|
||
End If
|
||
If aliReSessionB = True Then '阿里云发布会话
|
||
Dim offset() As Byte = {&H6E, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(65))
|
||
End If
|
||
If aliSubSessionB = True Then '阿里云订阅会话
|
||
Dim offset() As Byte = {&HAF, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(65))
|
||
End If
|
||
If onlineTimeB = True Then '在线时间
|
||
Dim offset() As Byte = {&HF0, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(2))
|
||
End If
|
||
If reSsessionB = True Then '发布会话
|
||
Dim offset() As Byte = {&HF2, &H0, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(65))
|
||
End If
|
||
If subSessionB = True Then '订阅会话
|
||
Dim offset() As Byte = {&H33, &H1, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(65))
|
||
End If
|
||
If domainNameB = True Then '域名
|
||
Dim offset() As Byte = {&H74, &H1, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(65))
|
||
End If
|
||
If clientIDB = True Then '客户端ID
|
||
Dim offset() As Byte = {&HB5, &H1, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(65))
|
||
End If
|
||
If userNameB = True Then '用户名
|
||
Dim offset() As Byte = {&HF6, &H1, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(65))
|
||
End If
|
||
If passwordB = True Then '密码
|
||
Dim offset() As Byte = {&H37, &H2, &H0, &H0}
|
||
databuf.AddRange(offset)
|
||
databuf.AddRange(IntToByteHB(65))
|
||
End If
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "选择MQTT"
|
||
|
||
|
||
Private Sub CheckBox8_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox8.CheckedChanged
|
||
If CheckBox8.Checked = True Then
|
||
CheckBox8.Checked = True
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox9_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox9.CheckedChanged
|
||
If CheckBox9.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = True
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox10_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox10.CheckedChanged
|
||
If CheckBox10.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = True
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox14_CheckedChanged_1(sender As Object, e As EventArgs) Handles CheckBox14.CheckedChanged
|
||
If CheckBox14.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = True
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox13_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox13.CheckedChanged
|
||
If CheckBox13.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = True
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox11_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox11.CheckedChanged
|
||
If CheckBox11.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = True
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox22_CheckedChanged_1(sender As Object, e As EventArgs) Handles CheckBox22.CheckedChanged
|
||
If CheckBox22.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = True
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox17_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox17.CheckedChanged
|
||
If CheckBox17.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = True
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox15_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox15.CheckedChanged
|
||
If CheckBox15.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = True
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox29_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox29.CheckedChanged
|
||
If CheckBox29.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = True
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox28_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox28.CheckedChanged
|
||
If CheckBox28.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = True
|
||
CheckBox27.Checked = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CheckBox27_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox27.CheckedChanged
|
||
If CheckBox27.Checked = True Then
|
||
CheckBox8.Checked = False
|
||
CheckBox9.Checked = False
|
||
CheckBox10.Checked = False
|
||
CheckBox14.Checked = False
|
||
CheckBox13.Checked = False
|
||
CheckBox11.Checked = False
|
||
CheckBox22.Checked = False
|
||
CheckBox17.Checked = False
|
||
CheckBox15.Checked = False
|
||
CheckBox29.Checked = False
|
||
CheckBox28.Checked = False
|
||
CheckBox27.Checked = True
|
||
End If
|
||
End Sub
|
||
|
||
|
||
|
||
'Todo:思考优解
|
||
Private Sub SetMQTTState(ck1 As CheckBox, ck2 As CheckBox, ck3 As CheckBox, ck4 As CheckBox, ck5 As CheckBox, ck6 As CheckBox, ck7 As CheckBox, ck8 As CheckBox, ck9 As CheckBox, ck10 As CheckBox, ck11 As CheckBox, ck12 As CheckBox)
|
||
If ck1.Checked = True Then
|
||
ck1.Checked = False
|
||
ck2.Checked = False
|
||
ck3.Checked = False
|
||
ck4.Checked = False
|
||
ck5.Checked = False
|
||
ck6.Checked = False
|
||
ck7.Checked = False
|
||
ck8.Checked = False
|
||
ck9.Checked = False
|
||
ck10.Checked = False
|
||
ck11.Checked = False
|
||
ck12.Checked = True
|
||
End If
|
||
End Sub
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "设置打印调试信息"
|
||
|
||
''' <summary>
|
||
''' 系统信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox26_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox26.CheckedChanged
|
||
SystemInfo()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 网络信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox25_CheckedChanged_1(sender As Object, e As EventArgs) Handles CheckBox25.CheckedChanged
|
||
NetworkInfo()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 设备信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox24_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox24.CheckedChanged
|
||
EquipmentInfo()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 逻辑信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox23_CheckedChanged_1(sender As Object, e As EventArgs) Handles CheckBox23.CheckedChanged
|
||
LogicalInfo()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 临时信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox7_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox7.CheckedChanged
|
||
TemporaryInfo()
|
||
End Sub
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "设置读取核心参数"
|
||
|
||
''' <summary> 主机信息 </summary>
|
||
Private _hostInfo() As String = {"BLV-C1", "BLV-C1F", "BLV-C2", "BLV-PDU-A8"}
|
||
|
||
''' <summary> 主板信息 </summary>
|
||
Private _amdInfo() As String = {"BLV-C5", "BLV-C6", "BLV-C7", "BLV-C8", "BLV-C12", "BLV-PDU-A8"}
|
||
|
||
''' <summary>
|
||
''' 初始化信息
|
||
''' </summary>
|
||
Private Sub InitHostsInfo()
|
||
ComboBox9.Items.Clear() '主机型号
|
||
ComboBox9.Items.AddRange(_hostInfo)
|
||
If ComboBox9.Items.Count > 0 Then ComboBox9.SelectedIndex = 0
|
||
|
||
ComboBox8.Items.Clear() '主板型号
|
||
ComboBox8.Items.AddRange(_amdInfo)
|
||
If ComboBox8.Items.Count > 0 Then ComboBox8.SelectedIndex = 0
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 设置核心板参数
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button31_Click(sender As Object, e As EventArgs) Handles Button31.Click
|
||
'组包
|
||
Dim cmd As Byte = &HB
|
||
Dim data() As Byte = GetSetInfo(ComboBox9.Text, ComboBox8.Text, CheckBox34.Checked, CheckBox35.Checked)
|
||
Dim sendData() As Byte = FillModelsSerialPortTest(cmd, data)
|
||
Console.WriteLine($"设置核心参数信息:{ByteToString(sendData)}")
|
||
|
||
'串口发送
|
||
SendPortData(sendData)
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 获取设置信息
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetSetInfo(hostInfo As String, amdInfo As String, hostInfoB As Boolean, amdInfoB As Boolean) As Byte()
|
||
Dim data As New List(Of Byte)
|
||
Dim host() As Byte = System.Text.Encoding.ASCII.GetBytes(hostInfo)
|
||
Dim amd() As Byte = System.Text.Encoding.ASCII.GetBytes(amdInfo)
|
||
Dim hosts(63) As Byte
|
||
Dim amds(63) As Byte
|
||
Dim isSet As Byte = &H0
|
||
|
||
If hostInfoB = True Then
|
||
Array.Copy(host, 0, hosts, 0, host.Length)
|
||
isSet = isSet Or &H1
|
||
End If
|
||
|
||
If amdInfoB = True Then
|
||
Array.Copy(amd, 0, amds, 0, amd.Length)
|
||
isSet = isSet Or &H2
|
||
End If
|
||
|
||
data.Add(isSet)
|
||
data.AddRange(hosts)
|
||
data.AddRange(amds)
|
||
Return data.ToArray
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 读取核心参数
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button30_Click(sender As Object, e As EventArgs) Handles Button30.Click
|
||
Label58.Text = Nothing
|
||
Label56.Text = Nothing
|
||
|
||
Dim cmd As Byte = &HC
|
||
Dim data(0) As Byte
|
||
data(0) = &H0
|
||
Dim sendData() As Byte = FillModelsSerialPortTest(cmd, data)
|
||
Console.WriteLine($"读取核心参数信息:{ByteToString(sendData)}")
|
||
|
||
'串口发送
|
||
SendPortData(sendData)
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#End Region
|
||
|
||
#Region "批量数据下发"
|
||
|
||
#Region "刷新云数据"
|
||
|
||
''' <summary>
|
||
''' 批量数据枚举
|
||
''' </summary>
|
||
Enum EnBatchData
|
||
''' <summary>ID</summary>
|
||
ID
|
||
''' <summary>勾选</summary>
|
||
IsCheck
|
||
''' <summary>房号</summary>
|
||
RoomNumber
|
||
''' <summary>MAC</summary>
|
||
MAC
|
||
''' <summary>IP地址</summary>
|
||
IPAddress
|
||
'''' <summary>房间备注</summary>
|
||
'RoomRemarks
|
||
'''' <summary>房号ID</summary>
|
||
'RoomNumberId
|
||
'''' <summary>房型ID</summary>
|
||
'RoomTypeId
|
||
'''' <summary>端口号</summary>
|
||
'Port
|
||
'''' <summary>网关</summary>
|
||
'Gateway
|
||
'''' <summary>子网掩码</summary>
|
||
'Subnet
|
||
'''' <summary>DNS</summary>
|
||
'DNS
|
||
'''' <summary>锁定</summary>
|
||
'Lock
|
||
'''' <summary>授权时间</summary>
|
||
'PrivilegedTime
|
||
End Enum
|
||
|
||
|
||
''' <summary>
|
||
''' 批量数据表格列名
|
||
''' </summary>
|
||
Private _batchDataCols() As String = {$"空",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Ticked)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNumberRemark)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MAC)}",
|
||
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.IPAddress)}"}
|
||
|
||
'$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomRemark)}",
|
||
'$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomNumberID)}",
|
||
'$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.RoomTypeID)}",
|
||
'$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Port)}",
|
||
'$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Gateway)}",
|
||
'$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SubnetMask)}",
|
||
'$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DNS)}",
|
||
'$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Lock)}",
|
||
'$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PrivilegedTime)}"
|
||
|
||
|
||
''' <summary>
|
||
''' 初始化批量下发表格数据
|
||
''' </summary>
|
||
Private Sub InitBatchIssuedTableData()
|
||
GrdBatchData.DisplayRowNumber = True
|
||
GrdBatchData.Cols = _batchDataCols.Length
|
||
GrdBatchData.Rows = 1
|
||
|
||
For index = 1 To GrdBatchData.Cols - 1
|
||
With GrdBatchData.Cell(0, index)
|
||
.Text = _batchDataCols(index)
|
||
.BackColor = Color.LightGray
|
||
.ForeColor = Color.Blue
|
||
.Font = New Font($"Arial", 9, FontStyle.Bold)
|
||
End With
|
||
|
||
'index = EnBatchData.DNS OrElse
|
||
'index = EnBatchData.Gateway OrElse
|
||
'index = EnBatchData.Subnet OrElse
|
||
With GrdBatchData.Column(index)
|
||
If index = EnBatchData.MAC OrElse
|
||
index = EnBatchData.IPAddress Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 120
|
||
ElseIf index = EnBatchData.RoomNumber Then
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 100
|
||
Else
|
||
.Alignment = FlexCell.AlignmentEnum.CenterCenter
|
||
.Width = 50
|
||
End If
|
||
|
||
If index = 1 Then
|
||
.CellType = FlexCell.CellTypeEnum.CheckBox
|
||
End If
|
||
End With
|
||
Next
|
||
GrdBatchData.Column(0).Width = 30
|
||
GrdBatchData.SelectionMode = FlexCell.SelectionModeEnum.ByRow '设置选中行
|
||
|
||
'GrdBatchData.FrozenCols = 7
|
||
GrdBatchData.AllowUserSort = True
|
||
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 刷新云数据
|
||
''' 根据当前选中酒店查询
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button29_Click(sender As Object, e As EventArgs) Handles Button29.Click
|
||
GrdBatchData.NewFile()
|
||
InitBatchIssuedTableData()
|
||
_QueryBatchDataIndex = 1
|
||
|
||
Dim projectCode As String = _projectNumber
|
||
Console.WriteLine($"批量查询的项目编码:{projectCode}")
|
||
If _projectNumber = LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode) Then
|
||
MsgBox($"请选择酒店!")
|
||
Return
|
||
End If
|
||
|
||
'Dim dtUser As DataTable = _backstageData.GetBatchDataInfo(projectCode)
|
||
Dim dtUser As DataTable = GetCloudData(projectCode)
|
||
|
||
For index = 0 To dtUser.Rows.Count - 1
|
||
Dim RoomNumber As String = String.Empty
|
||
Dim MAC As String = String.Empty
|
||
Dim IPAddress As String = String.Empty
|
||
'Dim Gateway As String = String.Empty
|
||
'Dim Subnet As String = String.Empty
|
||
'Dim DNS As String = String.Empty
|
||
|
||
RoomNumber = GetBatchItemData(RoomNumber, dtUser(index)(0))
|
||
MAC = GetBatchItemData(MAC, dtUser(index)(1))
|
||
IPAddress = GetBatchItemData(IPAddress, dtUser(index)(2))
|
||
'Gateway = GetBatchItemData(Port, dtUser(index)(7))
|
||
'Subnet = GetBatchItemData(Subnet, dtUser(index)(8))
|
||
'DNS = GetBatchItemData(DNS, dtUser(index)(9))
|
||
|
||
'RefreshBatchDataTable(RoomNumber, MAC, IPAddress, Gateway, Subnet, Dns)
|
||
RefreshBatchDataTable(RoomNumber, MAC, IPAddress)
|
||
Next
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取云端数据
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetCloudData(projectNumber As String)
|
||
Dim dtUser As New DataTable
|
||
dtUser.Columns.Add("房号")
|
||
dtUser.Columns.Add("MAC")
|
||
dtUser.Columns.Add("IP")
|
||
|
||
Dim creatDate As String
|
||
If _hotelListData.ContainsKey(projectNumber) = True Then
|
||
creatDate = _hotelListData(projectNumber).CreatDate
|
||
If DealHostListInterfaceInfo(projectNumber, creatDate) = True Then
|
||
For row = 0 To _hostListData.Keys.Count - 1
|
||
dtUser.Rows.Add("")
|
||
dtUser(row)(0) = _hostListData(row).RoomNumber
|
||
dtUser(row)(1) = _hostListData(row).MAC
|
||
dtUser(row)(2) = _hostListData(row).IP
|
||
Next
|
||
End If
|
||
End If
|
||
|
||
Return dtUser
|
||
End Function
|
||
|
||
|
||
Private Function GetBatchItemData(items As String, itemVar As Object)
|
||
If TypeOf itemVar Is DBNull Then
|
||
items = ""
|
||
Else
|
||
items = itemVar
|
||
End If
|
||
|
||
Return items
|
||
End Function
|
||
|
||
|
||
Private Sub RefreshBatchDataTable(RoomNumber As String, MAC As String, IPAddress As String)
|
||
GrdBatchData.AddItem("")
|
||
GrdBatchData.Cell(_QueryBatchDataIndex, EnBatchData.RoomNumber).Text = RoomNumber
|
||
GrdBatchData.Cell(_QueryBatchDataIndex, EnBatchData.MAC).Text = MAC
|
||
GrdBatchData.Cell(_QueryBatchDataIndex, EnBatchData.IPAddress).Text = IPAddress
|
||
_QueryBatchDataIndex += 1
|
||
End Sub
|
||
|
||
'Private Sub RefreshBatchDataTable(RoomNumber As String, MAC As String, IPAddress As String, RoomRemarks As String, RoomNumberId As String, RoomTypeId As String, Port As String, Gateway As String, Subnet As String, DNS As String, Lock As String, PrivilegedTime As String)
|
||
' GrdBatchData.AddItem("")
|
||
' GrdBatchData.Cell(_QueryBatchDataIndex, EnBatchData.RoomNumber).Text = RoomNumber
|
||
' GrdBatchData.Cell(_QueryBatchDataIndex, EnBatchData.MAC).Text = MAC
|
||
' GrdBatchData.Cell(_QueryBatchDataIndex, EnBatchData.IPAddress).Text = IPAddress
|
||
' GrdBatchData.Cell(_QueryBatchDataIndex, EnBatchData.Gateway).Text = Gateway
|
||
' GrdBatchData.Cell(_QueryBatchDataIndex, EnBatchData.Subnet).Text = Subnet
|
||
' GrdBatchData.Cell(_QueryBatchDataIndex, EnBatchData.DNS).Text = DNS
|
||
' _QueryBatchDataIndex += 1
|
||
'End Sub
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "比对数据"
|
||
|
||
Private _localData As New Dictionary(Of String, List(Of Integer))
|
||
Private _remoteData As New Dictionary(Of String, List(Of Integer))
|
||
|
||
Private Sub Button32_Click(sender As Object, e As EventArgs) Handles Button32.Click
|
||
If GrdRCUHost.Rows = 1 Then Return
|
||
If GrdBatchData.Rows = 1 Then Return
|
||
_rcu = 0
|
||
_batch = 0
|
||
|
||
ComparisonData()
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 比对数据
|
||
''' </summary>
|
||
Private Sub ComparisonData()
|
||
Dim localMAC As String
|
||
Dim remoteMAC As String
|
||
For i = 1 To GrdRCUHost.Rows - 1
|
||
localMAC = GrdRCUHost.Cell(i, EnRCUHosts.MAC).Text
|
||
For j = 1 To GrdBatchData.Rows - 1
|
||
remoteMAC = GrdBatchData.Cell(j, EnBatchData.MAC).Text
|
||
If GetComparison(localMAC, remoteMAC) = True Then
|
||
'Console.WriteLine($"比对:{_countCom}次 ---- 本地MAC:{localMAC} 云端MAC:{remoteMAC} 匹配成功!")
|
||
'GrdRCUHost.Cell(i, EnRCUHosts.MAC).BackColor = Color.LightCyan
|
||
GrdRCUHost.Range(i, 1, i, GrdRCUHost.Cols - 1).BackColor = Color.LightCyan
|
||
GrdBatchData.Range(j, 1, j, GrdBatchData.Cols - 1).BackColor = Color.LightCyan
|
||
|
||
'Console.WriteLine($"比对 ---- 本地房号:{GrdRCUHost.Cell(i, EnRCUHosts.RoomNumber).Text} 云端房号:{GrdBatchData.Cell(j, EnBatchData.RoomNumber).Text} ")
|
||
If GetComparison(GrdRCUHost.Cell(i, EnRCUHosts.RoomNumber).Text, GrdBatchData.Cell(j, EnBatchData.RoomNumber).Text) = True Then
|
||
GrdRCUHost.Cell(i, EnRCUHosts.RoomNumber).ForeColor = Color.Green
|
||
Else
|
||
GrdRCUHost.Cell(i, EnRCUHosts.RoomNumber).ForeColor = Color.Red
|
||
End If
|
||
|
||
If GetComparison(GrdRCUHost.Cell(i, EnRCUHosts.IPAddress).Text, GrdBatchData.Cell(j, EnBatchData.IPAddress).Text) = True Then
|
||
GrdRCUHost.Cell(i, EnRCUHosts.IPAddress).ForeColor = Color.Green
|
||
Else
|
||
GrdRCUHost.Cell(i, EnRCUHosts.IPAddress).ForeColor = Color.Red
|
||
End If
|
||
|
||
GrdRCUHost.Row(i).Position = 1
|
||
GrdBatchData.Row(j).Position = 1
|
||
Exit For
|
||
End If
|
||
Next
|
||
Next
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取比对结果
|
||
''' </summary>
|
||
''' <param name="localMAC"></param>
|
||
''' <param name="remoteMAC"></param>
|
||
''' <returns></returns>
|
||
Private Function GetComparison(localMAC As String, remoteMAC As String)
|
||
If String.IsNullOrWhiteSpace(localMAC) OrElse String.IsNullOrWhiteSpace(remoteMAC) Then Return False
|
||
If String.Compare(localMAC, remoteMAC) = 0 Then
|
||
Return True
|
||
End If
|
||
|
||
Return False
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 批量表格点击事件
|
||
''' </summary>
|
||
''' <param name="Sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub GrdBatchData_Click(Sender As Object, e As EventArgs) Handles GrdBatchData.Click
|
||
If GrdBatchData.ActiveCell.Row > 0 Then
|
||
SetRCUTableData(GrdBatchData.Cell(GrdBatchData.ActiveCell.Row, EnBatchData.MAC).Text)
|
||
End If
|
||
End Sub
|
||
|
||
Private _rcu As Integer = 0
|
||
|
||
|
||
''' <summary>
|
||
''' 设置RCU表格数据显示
|
||
''' </summary>
|
||
''' <param name="mac"></param>
|
||
Private Sub SetRCUTableData(mac As String)
|
||
Dim localMAC As String
|
||
For i = 1 To GrdRCUHost.Rows - 1
|
||
localMAC = GrdRCUHost.Cell(i, EnRCUHosts.MAC).Text
|
||
If GetComparison(localMAC, mac) = True Then
|
||
If GrdBatchData.ActiveCell.Row <> _batch Then
|
||
GrdRCUHost.Range(_batch, 1, _batch, GrdRCUHost.Cols - 1).BackColor = Color.LightCyan
|
||
GrdBatchData.Range(_batch, 1, _batch, GrdBatchData.Cols - 1).BackColor = Color.LightCyan
|
||
End If
|
||
GrdRCUHost.Range(_rcu, 1, _rcu, GrdRCUHost.Cols - 1).BackColor = Color.LightCyan
|
||
GrdRCUHost.Range(i, 1, i, GrdRCUHost.Cols - 1).BackColor = Color.LightSkyBlue
|
||
_rcu = i
|
||
Exit For
|
||
'Else
|
||
'GrdRCUHost.Range(i, 1, i, GrdRCUHost.Cols - 1).BackColor = Color.LightCyan
|
||
End If
|
||
Next
|
||
End Sub
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region "批量配置"
|
||
|
||
|
||
''' <summary>
|
||
''' 勾选表格信息
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub CheckBox30_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox30.CheckedChanged
|
||
Dim check As Integer
|
||
If CheckBox30.Checked = True Then
|
||
check = 1
|
||
Else
|
||
check = 0
|
||
End If
|
||
|
||
For index = 1 To GrdBatchData.Rows - 1
|
||
GrdBatchData.Cell(index, EnBatchData.IsCheck).Text = $"{check}"
|
||
Next
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 批量配置
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
Private Sub Button33_Click(sender As Object, e As EventArgs) Handles Button33.Click
|
||
If GrdBatchData.Rows > 1 Then
|
||
Dim localCount As Integer = CheckedCount()
|
||
Dim batchCount As Integer = GetLocalTableCheckCount()
|
||
|
||
If localCount > 1 AndAlso batchCount > 1 AndAlso localCount = batchCount Then
|
||
For index = 1 To GrdBatchData.Rows - 1
|
||
If GetComparison(GrdRCUHost.Cell(index, EnRCUHosts.MAC).Text, GrdBatchData.Cell(index, EnBatchData.MAC).Text) = True Then
|
||
If GrdBatchData.Cell(index, EnBatchData.IsCheck).Text = $"1" Then
|
||
_RemoteIP = IPAddress.Parse(GrdBatchData.Cell(index, EnBatchData.IPAddress).Text)
|
||
'设置云端信息到主机
|
||
Dim roomNumber As String = GrdBatchData.Cell(index, EnBatchData.RoomNumber).Text
|
||
Dim ipAddr As String = GrdBatchData.Cell(index, EnBatchData.IPAddress).Text
|
||
SetCloudInfoToHosts(roomNumber, ipAddr)
|
||
End If
|
||
End If
|
||
Next
|
||
Else
|
||
MsgBox($"两个表格勾选数量不匹配且至少选择一个:主机表:{localCount} 个 云端表:{batchCount} 个")
|
||
End If
|
||
Else
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheInformationToBeDeliveredAndTheHost)}")
|
||
End If
|
||
End Sub
|
||
|
||
|
||
''' <summary>
|
||
''' 获取批量表格勾选个数
|
||
''' </summary>
|
||
''' <returns></returns>
|
||
Private Function GetLocalTableCheckCount()
|
||
Dim count As Integer = 0
|
||
For index = 1 To GrdBatchData.Rows - 1
|
||
If GrdBatchData.Cell(index, EnBatchData.IsCheck).Text = $"1" Then
|
||
count += 1
|
||
End If
|
||
Next
|
||
|
||
Return count
|
||
End Function
|
||
|
||
|
||
''' <summary>
|
||
''' 设置云端信息到主机
|
||
''' </summary>
|
||
Private Sub SetCloudInfoToHosts(roomNumber As String, ipAddr As String)
|
||
Dim cmd As Byte = &H31
|
||
Dim data As Byte() = GetSetCloudSendData(roomNumber, ipAddr)
|
||
Dim sendData As Byte() = FillSendData(cmd, data)
|
||
Console.WriteLine($"设置云端信息到主机:{ByteToString(sendData)}")
|
||
SendUDPData(sendData)
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 获取设置云端发送数据
|
||
''' </summary>
|
||
''' <param name="roomNumber"></param>
|
||
''' <param name="ipAddr"></param>
|
||
''' <returns></returns>
|
||
Private Function GetSetCloudSendData(roomNumber As String, ipAddr As String) As Byte()
|
||
Dim roomNumbers As Byte() = GetRoomNumber(roomNumber)
|
||
Dim ipAddress As Byte() = GetCloudIPAddr(ipAddr)
|
||
|
||
Dim count As Byte = &H5
|
||
Dim data As New List(Of Byte)
|
||
data.Add(count)
|
||
data.AddRange(roomNumbers)
|
||
data.AddRange(ipAddress)
|
||
|
||
Return data.ToArray
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 获取房号
|
||
''' </summary>
|
||
''' <param name="roomNumber"></param>
|
||
''' <returns></returns>
|
||
Private Function GetRoomNumber(roomNumber As String) As Byte()
|
||
Dim roomNaddr1() As Byte = {&H0, &H1, &H0, &H0} '房号偏移地址
|
||
Dim roomNaddr2() As Byte = {&H4, &H1, &H0, &H0} '房号偏移地址
|
||
Dim roomNaddr3() As Byte = {&H8, &H1, &H0, &H0} '房号偏移地址
|
||
Dim roomNaddr4() As Byte = {&HC, &H1, &H0, &H0} '房号偏移地址
|
||
|
||
Dim roomNum() As Byte
|
||
Dim roomNums(15) As Byte
|
||
roomNum = System.Text.Encoding.GetEncoding("GBK").GetBytes(roomNumber)
|
||
Array.Copy(roomNum, 0, roomNums, 0, roomNum.Length)
|
||
|
||
Dim databuf As New List(Of Byte)
|
||
Dim roomda(3) As Byte
|
||
Array.Copy(roomNums, 0, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomNaddr1)
|
||
databuf.AddRange(roomda)
|
||
|
||
Array.Copy(roomNums, 4, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomNaddr2)
|
||
databuf.AddRange(roomda)
|
||
|
||
Array.Copy(roomNums, 8, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomNaddr3)
|
||
databuf.AddRange(roomda)
|
||
|
||
Array.Copy(roomNums, 12, roomda, 0, roomda.Length)
|
||
databuf.AddRange(roomNaddr4)
|
||
databuf.AddRange(roomda)
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 获取云端数据要设置主机的IP地址
|
||
''' </summary>
|
||
''' <param name="ipAddr"></param>
|
||
''' <returns></returns>
|
||
Private Function GetCloudIPAddr(ipAddr As String) As Byte()
|
||
Dim ip() As String = ipAddr.Split($".")
|
||
|
||
Dim databuf As New List(Of Byte)
|
||
databuf.Add(&H0) 'IP地址
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
databuf.Add(&H0)
|
||
|
||
databuf.Add(ip(0))
|
||
databuf.Add(ip(1))
|
||
databuf.Add(ip(2))
|
||
databuf.Add(ip(3))
|
||
|
||
Return databuf.ToArray
|
||
End Function
|
||
|
||
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#End Region
|
||
|
||
#Region "关闭主窗体"
|
||
|
||
''' <summary>
|
||
''' 关闭窗体
|
||
''' </summary>
|
||
''' <param name="sender"></param>
|
||
''' <param name="e"></param>
|
||
'Private Sub FrmCSeriesConfig_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
|
||
' If _connectStatus = True Then
|
||
' _connectStatus = False
|
||
' _socket.Shutdown(SocketShutdown.Both)
|
||
' _socket.Close()
|
||
' _receiveThread.Abort()
|
||
' End If
|
||
' If _BtnTextThread IsNot Nothing Then _BtnTextThread.Abort()
|
||
|
||
' _SqlServer.ConnClose()
|
||
|
||
' My.Settings.ProjectCode = _projectNumber
|
||
' My.Settings.HotelName = _HotelName
|
||
' My.Settings.UserName = _userNames
|
||
' My.Settings.Save()
|
||
' FrmCSeriesConfig_FormClosing()
|
||
' If _blvC5TestForm IsNot Nothing Then _blvC5TestForm.Close()
|
||
' If _blvC12TestForm IsNot Nothing Then _blvC12TestForm.Close()
|
||
'End Sub
|
||
Public Sub FrmCSeriesConfig_Closing() 'sender As Object, e As CancelEventArgs)
|
||
If _connectStatus = True Then
|
||
_connectStatus = False
|
||
_socket.Shutdown(SocketShutdown.Both)
|
||
_socket.Close()
|
||
_receiveThread.Abort()
|
||
End If
|
||
If _BtnTextThread IsNot Nothing Then _BtnTextThread.Abort()
|
||
|
||
_SqlServer.ConnClose()
|
||
|
||
My.Settings.ProjectCode = _projectNumber
|
||
My.Settings.CHotelName = _HotelName
|
||
My.Settings.UserName = _userNames
|
||
My.Settings.Save()
|
||
|
||
If _blvC5TestForm IsNot Nothing Then _blvC5TestForm.Close()
|
||
If _blvC12TestForm IsNot Nothing Then _blvC12TestForm.Close()
|
||
FrmCSeriesConfig_FormClosing()
|
||
Close()
|
||
End Sub
|
||
|
||
Private Sub CBoMandateEndTime_CheckedChanged(sender As Object, e As EventArgs) Handles CBoMandateEndTime.CheckedChanged
|
||
If CBoMandateEndTime.Checked Then
|
||
'"yyyy-MM-dd HH:mm:ss.fff
|
||
Now.Month.ToString.PadLeft(0)
|
||
' Console .WriteLine (date.)
|
||
Dim str As String = $"{Now.Year + 80}-{ Now.Month.ToString.PadLeft(2, "0") }-{Now.Day.ToString.PadLeft(2, "0")} {Now.Hour.ToString.PadLeft(2, "0") }:{Now.Minute.ToString.PadLeft(2, "0")}:{Now.Second.ToString.PadLeft(2, "0") }"
|
||
'Date.Parse(index.Item("DateTime")).ToString("yyyy-MM-dd HH:mm:ss")
|
||
DateTimePicker2.Value = Date.Parse(str)
|
||
DateTimePicker2.Enabled = True
|
||
DateTimePicker2.Visible = True
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub CBoRoomTpRemark_CheckedChanged(sender As Object, e As EventArgs) Handles CBoRoomTpRemark.CheckedChanged
|
||
If CBoRoomTpRemark.Checked And Not CBoRoomNuRemark.Checked Then
|
||
Network_cke.Checked = False
|
||
Network_cke.Enabled = False
|
||
Else
|
||
' Network_cke.Enabled = True
|
||
End If
|
||
If CBoRoomTpRemark.Checked Then
|
||
Getfile_btn.Enabled = True
|
||
CBoRoomNuRemark.Enabled = True
|
||
|
||
Else
|
||
Getfile_btn.Enabled = False
|
||
CBoRoomNuRemark.Enabled = False
|
||
CBoRoomNuRemark.Checked = False
|
||
End If
|
||
End Sub
|
||
Public DownloadRoonTypeFile As New Dictionary(Of String, String)
|
||
Private Sub Getfile_btn_Click(sender As Object, e As EventArgs) Handles Getfile_btn.Click
|
||
If String.IsNullOrEmpty(ComboBox16.Text) Then
|
||
MsgBox("未选择房型")
|
||
Else
|
||
'获取
|
||
'Dim li As List(Of Integer) = CheckedCount(True)
|
||
|
||
'If li.Count = 1 Then
|
||
' Dim tabrow As Integer = li.Item(0)
|
||
' Dim laver As String = getlauncherver(GrdRCUHost.Cell(tabrow, EnRCUHosts.Launcher).Text.Trim)
|
||
' If String.IsNullOrEmpty(laver) Then
|
||
' laver = "L2"
|
||
' End If
|
||
DownloadRoonTypeFile.Clear()
|
||
ComboBox30.Items.Clear()
|
||
TextBox63.Text = ""
|
||
GetRoomTypeFile(_projectNumber, ComboBox16.Text)
|
||
'Dim hexquery = From filename As String In DownloadRoonTypeFile.Keys
|
||
' Where filename.ToLower.Contains(".hex")
|
||
' Select filename
|
||
For Each filename In DownloadRoonTypeFile.Keys
|
||
If filename.ToLower.Contains(".dat") Then
|
||
TextBox63.Text = filename
|
||
TextBox63.Tag = DownloadRoonTypeFile.Item(filename)
|
||
ElseIf filename.ToLower.Contains(".hex") Then
|
||
ComboBox30.Items.Add(filename)
|
||
ComboBox30.SelectedIndex = 0
|
||
Else
|
||
Continue For
|
||
End If
|
||
Next
|
||
|
||
|
||
|
||
|
||
'Else
|
||
' MsgBox("未勾选主机或勾选多个主机。")
|
||
'End If
|
||
|
||
End If
|
||
End Sub
|
||
Public Function GetRoomTypeFile(Projectnumber As String, RoomType As String) As Boolean
|
||
Dim sqlstr As String = $"select a.* ,b.PROJECT_NUMBER,b.HOTEL_NAME_CN ,c.HOTEL_GROUP_NAME FROM tbl_room_type_list a left JOIN tbl_hotel_basic_info b on a.HOTEL_OLD_ID =b.IDOLD left JOIN tbl_hotel_group_info c on c.HOTEL_GROUP_OLD_ID =b.HOTEL_OLD_GROUP where b.PROJECT_NUMBER='{Projectnumber}' and a.ROOM_TYPE_NAME='{RoomType}' and a.IsDel='0'"
|
||
Dim dic = _SqlServer.SelectTable(sqlstr)
|
||
If IsNothing(dic) OrElse dic.Count < 1 Then
|
||
MsgBox("获取文件失败所选房型没上传固件(APP)或配置,请检查网络或联系管理员")
|
||
Return False
|
||
End If
|
||
|
||
Dim loadfiledir As String
|
||
Dim loadfilepath As String
|
||
Dim serverfilepath As String
|
||
loadfiledir = Application.StartupPath
|
||
'下载app
|
||
loadfilepath = loadfiledir & "\CStool\Firmware\" & $"{dic.Item("PROJECT_NUMBER")}-{dic.Item("HOTEL_NAME_CN")}\{ComboBox16.Text}\"
|
||
'InputBox("请输入密码", "密码", loadfilepath)
|
||
serverfilepath = "\Data\Firmware\"
|
||
If Not DowFirmware(loadfilepath, serverfilepath, dic) Then
|
||
MsgBox("该房型固件文件下载错误,请查看网络或联系开发者")
|
||
Return False
|
||
End If
|
||
|
||
If dic.Item("APPTYPE").Equals("Hex_Code") Then
|
||
MsgBox("此项目,APP固件类型包含了配置逻辑,无需配置逻辑文件,只下发APP固件即可")
|
||
Return True
|
||
End If
|
||
|
||
loadfilepath = loadfiledir & "\CStool\Config\" & $"{dic.Item("PROJECT_NUMBER")}-{dic.Item("HOTEL_NAME_CN")}\{ComboBox16.Text}\{dic.Item("CONFIG_BIN")}"
|
||
serverfilepath = "\Data\Config\" & $"{dic.Item("HOTEL_GROUP_NAME").Trim}\{dic.Item("PROJECT_NUMBER")}-{dic.Item("HOTEL_NAME_CN")}\{dic.Item("CONFIG_BIN")}"
|
||
Dim md5 As String = $"{dic.Item("CONFIG_BIN_MD5")}"
|
||
|
||
'下载dat文件
|
||
If String.IsNullOrEmpty(dic.Item("CONFIG_BIN")) Then
|
||
MsgBox("该房型未上传配置文件到数据库,请先上传文件再下载。")
|
||
Return False
|
||
End If
|
||
|
||
If Not CSFileDownload(loadfilepath, serverfilepath, md5) Then
|
||
MsgBox("该房型DAT文件下载错误,请查看网络或联系开发者")
|
||
Return False
|
||
End If
|
||
|
||
Return True
|
||
End Function
|
||
Private Function DowFirmware(loadfilepath As String, serverfilepath As String, dic As Dictionary(Of String, String)) As Boolean
|
||
Dim md5 As String
|
||
Dim filename As String
|
||
Dim nmd5 As String
|
||
Dim nfilename As String
|
||
If dic.Item("APPTYPE").Equals("Hex_Code") Then
|
||
|
||
md5 = dic.Item("Hex_Code_For_L2_MD5")
|
||
filename = dic.Item("Hex_Code_For_L2")
|
||
|
||
nmd5 = dic.Item("Hex_Code_For_L4_MD5")
|
||
nfilename = dic.Item("Hex_Code_For_L4")
|
||
|
||
Else
|
||
|
||
md5 = dic.Item("App_Cfg_For_L2_MD5")
|
||
filename = dic.Item("App_Cfg_For_L2")
|
||
|
||
nmd5 = dic.Item("App_Cfg_For_L4_MD5")
|
||
nfilename = dic.Item("App_Cfg_For_L4")
|
||
|
||
End If
|
||
|
||
If String.IsNullOrEmpty(nfilename) And String.IsNullOrEmpty(filename) Then
|
||
Return False
|
||
End If
|
||
|
||
If CSFileDownload(loadfilepath & filename, serverfilepath & filename, md5) Or CSFileDownload(loadfilepath & nfilename, serverfilepath & nfilename, nmd5) Then
|
||
' 解析文件
|
||
'_UpgradeType = False
|
||
'LoadTheFile2(serverfilepath & filename)
|
||
Return True
|
||
'下载
|
||
Else
|
||
Return False
|
||
End If
|
||
|
||
End Function
|
||
|
||
Private Function CSFileDownload(loadfilepath As String, serverfilepath As String, md5 As String) As Boolean
|
||
|
||
If loadfilepath.Trim.Substring(loadfilepath.Length - 1).Equals("\") Then Return True
|
||
|
||
If File.Exists(loadfilepath) Then
|
||
If ftp.VerifyFileMD5(loadfilepath, md5) Then
|
||
'一致=不下载
|
||
Else
|
||
'If MsgBox("本地文件和远端文件存在差异,是否下载最新文件", MsgBoxStyle.YesNo) = MsgBoxResult.Ok Then
|
||
'下载
|
||
If Not ftp.FtpfileDownload(serverfilepath, loadfilepath, md5) Then
|
||
' MsgBox("文件下载错误,请查看网络或联系开发者")
|
||
Return False
|
||
End If
|
||
' End If
|
||
End If
|
||
Else
|
||
'下载
|
||
If Not ftp.FtpfileDownload(serverfilepath, loadfilepath, md5) Then
|
||
'MsgBox("文件下载错误,请查看网络或联系开发者")
|
||
Return False
|
||
End If
|
||
End If
|
||
If DownloadRoonTypeFile.ContainsKey(loadfilepath.Substring(loadfilepath.LastIndexOf("\") + 1)) Then Return True
|
||
|
||
DownloadRoonTypeFile.Add(loadfilepath.Substring(loadfilepath.LastIndexOf("\") + 1), loadfilepath)
|
||
Return True
|
||
|
||
End Function
|
||
|
||
Private Sub CheckBox36_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox36.CheckedChanged
|
||
If CheckBox36.Checked Then
|
||
Button37.Enabled = True
|
||
Button45.Enabled = True
|
||
Else
|
||
Button37.Enabled = False
|
||
Button45.Enabled = False
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub Button37_Click(sender As Object, e As EventArgs) Handles Button37.Click
|
||
_UpgradeType = False
|
||
If String.IsNullOrEmpty(ComboBox30.Text) Then
|
||
MsgBox("云固件为空")
|
||
Return
|
||
End If
|
||
'解析文件
|
||
DealHexFile(ComboBox30.Tag)
|
||
_UpdateFileName = ComboBox30.Text
|
||
FirmwareUpdate2(True)
|
||
End Sub
|
||
Public Sub FirmwareUpdate2(isIssued As Boolean)
|
||
ChangePrgAirBurnValue(0)
|
||
Dim li = CheckedCount(False)
|
||
_upgradeSum = li.Count
|
||
If _upgradeSum = 0 Then
|
||
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheHostToBeConfigured)}!")
|
||
Return
|
||
End If
|
||
|
||
If _upgradeSum > _upgradeMaxCount Then
|
||
MsgBox($"超出最大升级 {_upgradeMaxCount} 个数。请重试!")
|
||
Return
|
||
End If
|
||
If GrdRCUHost.Cell(li(0), EnRCUHosts.RoomType).Text.Trim.Equals(ComboBox16.Text.Trim) Then
|
||
Else
|
||
If MsgBox("所选主机下发固件(APP)或配置时房型与当前酒店不符是 否继续", MsgBoxStyle.OkCancel) <> 1 Then
|
||
Return
|
||
End If
|
||
End If
|
||
If isIssued Then
|
||
''下发匹配信息——GrdMatching
|
||
If UpdateMatching(li(0)) = False Then
|
||
MsgBox("文件配套主机型号与勾选主机型号不匹配")
|
||
Exit Sub
|
||
Else
|
||
Button28.ForeColor = Color.Green
|
||
Button28.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Matching)}"
|
||
End If
|
||
End If
|
||
Button25.Enabled = False
|
||
_upgradeCount = 0
|
||
TSSUpgradeCount.ForeColor = Color.Green
|
||
TSSUpgradeCount.Text = $"升级成功个数:{_upgradeCount}/{_upgradeSum}"
|
||
|
||
_IssuedUpgradeThread = New Thread(AddressOf StartUpdate)
|
||
_IssuedUpgradeThread.Start(isIssued)
|
||
|
||
|
||
|
||
End Sub
|
||
Private Sub ComboBox30_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox30.SelectedIndexChanged
|
||
ComboBox30.Tag = DownloadRoonTypeFile.Item(ComboBox30.Text)
|
||
End Sub
|
||
|
||
Private Sub Button45_Click(sender As Object, e As EventArgs) Handles Button45.Click
|
||
_UpgradeType = True
|
||
If String.IsNullOrEmpty(TextBox63.Text) Then
|
||
MsgBox("云配置为空")
|
||
Return
|
||
End If
|
||
DealDatFile(TextBox63.Tag)
|
||
_UpdateFileName = TextBox63.Text
|
||
FirmwareUpdate2(False)
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
|
||
#Region “DHCP”
|
||
Public TheDHCPServer As DhcpServer
|
||
|
||
Private Sub CboLocalIPInfo_DropDown(sender As Object, e As EventArgs) Handles CboLocalIPInfo.DropDown
|
||
CboLocalIPInfo.Items.Clear()
|
||
CboLocalIPInfo.Items.AddRange(GetLocalIp().ToArray)
|
||
End Sub
|
||
Public Sub InitDHCPTable()
|
||
Dhcp_table.NewFile()
|
||
Dhcp_table.Cols = 5
|
||
Dhcp_table.Rows = 1
|
||
Dhcp_table.Cell(0, 1).Text = "allocated at"
|
||
Dhcp_table.Cell(0, 2).Text = "IP"
|
||
Dhcp_table.Cell(0, 3).Text = "MAC"
|
||
Dhcp_table.Cell(0, 4).Text = "renew at"
|
||
Dhcp_table.Column(1).Width = 100
|
||
Dhcp_table.Column(2).Width = 100
|
||
Dhcp_table.Column(3).Width = 100
|
||
Dhcp_table.Column(4).Width = 100
|
||
|
||
End Sub
|
||
Public DirectConnection As Thread
|
||
Public intcat As Integer = 0
|
||
Private Sub ComboBox31_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox31.SelectedIndexChanged
|
||
SendIntervalTime = 10
|
||
threadIsflag = False
|
||
Dim tip As String
|
||
If ComboBox31.SelectedIndex = 0 Then '直连
|
||
tip = $"选择【直连电脑为路由】模式搜索时{vbCrLf }
|
||
1、需要把连接主机网络的网口IP属性设置为 [手动设置]{vbCrLf }
|
||
IP:192.168.1.10{vbCrLf }
|
||
掩码:255.255.0.0{vbCrLf }
|
||
网关;192.168.1.1{vbCrLf }
|
||
首选DNS: 114.114.114.114{vbCrLf }
|
||
备选DNS:223.5.5.5{vbCrLf }
|
||
2、禁用多余适配器,只保留 上网Wifi 与直连网口适配器{vbCrLf }
|
||
3、必须关闭电脑防火墙"
|
||
MsgBox(tip)
|
||
'CheckBox6.Checked = False
|
||
If Not NetworkHelp.SetNetworkAdapter() Then
|
||
|
||
|
||
If intcat < 5 Then
|
||
If intcat = 0 Then
|
||
intcat = 1
|
||
End If
|
||
MsgBox($"ip分配失败!请确保主机与电脑已处于直连状态!重试:{intcat}")
|
||
intcat = intcat + 1
|
||
ComboBox31_SelectedIndexChanged(Nothing, Nothing)
|
||
Return
|
||
Else
|
||
MsgBox("以太网连接中断,直连失败!")
|
||
intcat = 1
|
||
Return
|
||
End If
|
||
|
||
End If
|
||
|
||
'刷新ip 并延时等待设置完成
|
||
|
||
|
||
SendIntervalTime = 1
|
||
CboLocalIPInfo.Text = "192.168.1.10"
|
||
|
||
|
||
'Button25.Enabled = False
|
||
If Not IsNothing(TheDHCPServer) Then Return
|
||
Try
|
||
TheDHCPServer = New DhcpServer
|
||
AddHandler TheDHCPServer.OupPrintfDHCPlog, AddressOf OupPrintfDHCPlog
|
||
Catch ex As Exception
|
||
MsgBox($"通信网卡异常,请禁用蓝牙网卡以及多余的本地网卡!{ex.Message }")
|
||
End Try
|
||
|
||
_connectStatus = True
|
||
threadIsflag = True
|
||
If IsNothing(DirectConnection) Then
|
||
DirectConnection = New Thread(New ThreadStart(AddressOf ThreadSearchHosts))
|
||
DirectConnection.Start()
|
||
Else
|
||
Thread.Sleep(1000)
|
||
'If Not IsNothing(gsocket) Then gsocket.Close()
|
||
DirectConnection.Abort()
|
||
DirectConnection = New Thread(New ThreadStart(AddressOf ThreadSearchHosts))
|
||
DirectConnection.Start()
|
||
End If
|
||
|
||
|
||
ElseIf ComboBox31.SelectedIndex = 1 Then
|
||
|
||
If intcat > 0 Then
|
||
tip = $"选择:【局域网内有路由】模式搜索时注意:
|
||
1、需要把连接主机网络的网口的IP属性设置为自动获取{vbCrLf }
|
||
2、确保电脑网段与主机一致{vbCrLf }
|
||
3、必须关闭电脑防火墙"
|
||
intcat = 1
|
||
MsgBox(tip)
|
||
Else
|
||
intcat = 1
|
||
End If
|
||
|
||
|
||
'CheckBox6.Checked = True
|
||
If Not IsNothing(DirectConnection) Then
|
||
threadIsflag = False
|
||
If Not IsNothing(gsocket) Then gsocket.Close()
|
||
DirectConnection.Abort()
|
||
End If
|
||
|
||
|
||
Button25.Enabled = True
|
||
If IsNothing(TheDHCPServer) Then Return
|
||
TheDHCPServer.ClockDHCPServer()
|
||
TheDHCPServer = Nothing
|
||
NetworkHelp.SetNetworkAdapterDHCP()
|
||
ElseIf ComboBox31.SelectedIndex = 2 Then
|
||
' If Not IsNothing(TheDHCPServer) Then TheDHCPServer.ClockDHCPServer()
|
||
If Not NetworkHelp.SetNetworkAdapter() Then
|
||
Return
|
||
End If
|
||
SendIntervalTime = 1
|
||
CboLocalIPInfo.Text = "192.168.1.10"
|
||
threadIsflag = True
|
||
If IsNothing(DirectConnection) Then
|
||
If Not IsNothing(gsocket) Then
|
||
gsocket.Close()
|
||
End If
|
||
DirectConnection = New Thread(New ThreadStart(AddressOf ThreadSearchHosts))
|
||
DirectConnection.Start()
|
||
Else
|
||
Thread.Sleep(1000)
|
||
If Not IsNothing(gsocket) Then
|
||
gsocket.Close()
|
||
End If
|
||
DirectConnection.Abort()
|
||
|
||
DirectConnection = New Thread(New ThreadStart(AddressOf ThreadSearchHosts))
|
||
DirectConnection.Start()
|
||
End If
|
||
|
||
End If
|
||
End Sub
|
||
Public Sub OupPrintfDHCPlog(IPadd As String, mac As String, msgtype As Integer)
|
||
If msgtype = 5 Then
|
||
SetButton25Enabled()
|
||
If SetdhcpTable(IPadd, mac) Then
|
||
SetRegistData($"客户端:{mac}:请求IP:{IPadd} 成功", 2)
|
||
|
||
End If
|
||
End If
|
||
If isDhcp Then
|
||
Select Case msgtype
|
||
Case 1 '
|
||
SetRegistData($"客户端:{mac}:请求接入", 1)
|
||
Case 2
|
||
SetRegistData($"客户端:{mac}:请求接入失败:IP池无可用IP", 3)
|
||
Case 3
|
||
SetRegistData($"客户端:{mac}:正在请求IP:{IPadd}", 2)
|
||
Case 4
|
||
SetRegistData($"客户端:{mac}:请求IP:{IPadd} 失败,该IP 已被占用。", 3)
|
||
Case 5
|
||
|
||
|
||
End Select
|
||
End If
|
||
|
||
End Sub
|
||
Public Function SetdhcpTable(IPadd As String, mac As String) As Boolean
|
||
For inrow As Integer = 1 To Dhcp_table.Rows - 1
|
||
If Dhcp_table.Cell(inrow, 2).Text.Equals(IPadd) Then
|
||
Return False
|
||
End If
|
||
Next
|
||
SetDhcp_tableshow(IPadd, mac)
|
||
Return True
|
||
End Function
|
||
Delegate Sub theSetDhcp_tableshow(IPadd As String, mac As String)
|
||
|
||
Public Sub SetDhcp_tableshow(IPadd As String, mac As String)
|
||
If Dhcp_table.InvokeRequired Then
|
||
Dim dev As New theSetDhcp_tableshow(AddressOf SetDhcp_tableshow)
|
||
Dhcp_table.Invoke(dev, IPadd, mac)
|
||
Return
|
||
End If
|
||
Dhcp_table.AddItem("")
|
||
Dhcp_table.Cell(Dhcp_table.Rows - 1, 2).Text = IPadd
|
||
Dhcp_table.Cell(Dhcp_table.Rows - 1, 3).Text = mac
|
||
End Sub
|
||
|
||
|
||
Delegate Sub theSetButton25Enabledshow()
|
||
|
||
Public Sub SetButton25Enabled()
|
||
If RichText_Debug.InvokeRequired Then
|
||
Dim dev As New theSetButton25Enabledshow(AddressOf SetButton25Enabled)
|
||
RichText_Debug.Invoke(dev)
|
||
Return
|
||
Else
|
||
Button25.Enabled = True
|
||
Console.WriteLine("======================================")
|
||
End If
|
||
End Sub
|
||
|
||
' Delegate Sub theSetopenUartshow(txt As String, bcolor As Integer)
|
||
Private logqe As Queue(Of (String, Color))
|
||
Private logtick As Date = Now
|
||
Public Sub SetRegistData(Text As String, porttype As Integer)
|
||
|
||
'If RichText_Debug.InvokeRequired Then
|
||
' Dim dev As New theSetopenUartshow(AddressOf SetRegistData)
|
||
' RichText_Debug.Invoke(dev, Text, porttype)
|
||
' Return
|
||
'Else
|
||
|
||
If String.IsNullOrEmpty(Text) Then Return
|
||
Dim tsp As TimeSpan
|
||
Dim at As String = ""
|
||
Dim txtcolor As Color
|
||
If porttype = 1 Then
|
||
'TextBox1.Text = Text & "mA"
|
||
txtcolor = Color.Black
|
||
at = $"{Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}:{Text} {vbCrLf}"
|
||
ElseIf porttype = 2 Then
|
||
txtcolor = Color.Blue
|
||
at = $"{Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}:{Text} {vbCrLf}"
|
||
ElseIf porttype = 3 Then
|
||
txtcolor = Color.BlueViolet
|
||
at = $"{Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}:{Text} {vbCrLf}"
|
||
ElseIf porttype = 4 Then
|
||
txtcolor = Color.BlueViolet
|
||
tsp = Now - logtick
|
||
logtick = Now
|
||
at = $"{Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}:【{tsp.TotalMilliseconds }】:{Text} {vbCrLf}"
|
||
ElseIf porttype = 5 Then
|
||
tsp = Now - logtick
|
||
logtick = Now
|
||
txtcolor = Color.OrangeRed
|
||
at = $"{Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}:【{tsp.TotalMilliseconds }】:{Text} {vbCrLf}"
|
||
End If
|
||
' nAppendTextAndSetStyle(at, txtcolor)
|
||
If logqe.Count > 2000 Then
|
||
logqe.Dequeue()
|
||
End If
|
||
logqe.Enqueue((at, txtcolor))
|
||
' End If
|
||
End Sub
|
||
Private Sub ToolStripButton1_Click(sender As Object, e As EventArgs) Handles ToolStripButton1.Click
|
||
RichText_Debug.Clear()
|
||
logqe.Clear()
|
||
End Sub
|
||
|
||
''' <summary>
|
||
''' 添加记录文本和颜色
|
||
''' </summary>
|
||
''' <param name="str">需要添加的记录内容</param>
|
||
''' <param name="cor">需要设置的记录颜色</param>
|
||
Public Sub nAppendTextAndSetStyle(ByVal str As String, ByVal cor As Color)
|
||
Dim selStart As Integer
|
||
Dim selLength As Integer
|
||
selStart = RichText_Debug.TextLength
|
||
RichText_Debug.AppendText(str)
|
||
selLength = RichText_Debug.TextLength - selStart
|
||
RichText_Debug.Select(selStart, selLength)
|
||
RichText_Debug.SelectionColor = cor
|
||
RichText_Debug.ScrollToCaret()
|
||
End Sub
|
||
Private Sub ric_DhcpLog_TextChanged(sender As Object, e As EventArgs) Handles RichText_Debug.TextChanged
|
||
|
||
If RichText_Debug.TextLength > 1555000 Then
|
||
|
||
RichText_Debug.Select(0, 4000)
|
||
RichText_Debug.SelectedText = "..."
|
||
End If
|
||
RichText_Debug.ScrollToCaret()
|
||
End Sub
|
||
Public isDhcp As Boolean = False
|
||
Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
|
||
If isDhcp Then
|
||
ToolStripButton2.Text = "显示信息"
|
||
isDhcp = Not isDhcp
|
||
Else
|
||
Dim strInputMsg As String = InputBox("请输入用户密码", "密码确认").Trim
|
||
If strInputMsg.Equals("Cc2022OK") Then
|
||
ToolStripButton2.Text = "隐藏信息"
|
||
isDhcp = Not isDhcp
|
||
Dim logqeCount = logqe.Count - 1
|
||
For i = 0 To logqeCount
|
||
Dim snode = logqe.Dequeue
|
||
nAppendTextAndSetStyle(snode.Item1, snode.Item2)
|
||
Next
|
||
|
||
End If
|
||
|
||
End If
|
||
End Sub
|
||
|
||
Private Sub ToolStripButton3_Click(sender As Object, e As EventArgs) Handles ToolStripButton3.Click
|
||
InitDHCPTable()
|
||
End Sub
|
||
|
||
Private Sub FrmCSeriesConfig_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
|
||
NetworkHelp.SetNetworkAdapterDHCP()
|
||
If Not IsNothing(DirectConnection) Then
|
||
threadIsflag = False
|
||
If Not IsNothing(gsocket) Then gsocket.Close()
|
||
DirectConnection.Abort()
|
||
End If
|
||
FrmCSeriesConfig_FormClosing()
|
||
End Sub
|
||
|
||
Private Sub FrmCSeriesConfig_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
|
||
NetworkHelp.SetNetworkAdapterDHCP()
|
||
If Not IsNothing(DirectConnection) Then
|
||
threadIsflag = False
|
||
If Not IsNothing(gsocket) Then gsocket.Close()
|
||
DirectConnection.Abort()
|
||
End If
|
||
End Sub
|
||
Public Sub FrmCSeriesConfig_FormClosing()
|
||
NetworkHelp.SetNetworkAdapterDHCP()
|
||
If Not IsNothing(pollThreadclass) Then
|
||
pollThreadclass.PollingThreadClosed()
|
||
End If
|
||
|
||
If Not IsNothing(DirectConnection) Then
|
||
threadIsflag = False
|
||
If Not IsNothing(gsocket) Then gsocket.Close()
|
||
DirectConnection.Abort()
|
||
|
||
End If
|
||
End Sub
|
||
|
||
Public Sub ShowForm(parentControl As Control)
|
||
FormBorderStyle = FormBorderStyle.None
|
||
TopLevel = False
|
||
Dock = DockStyle.Fill
|
||
Parent = parentControl
|
||
|
||
Enabled = True
|
||
|
||
|
||
Show()
|
||
End Sub
|
||
|
||
Private Sub Button38_Click(sender As Object, e As EventArgs) Handles Button38.Click
|
||
TSMSwitchHotel_Click(Nothing, Nothing)
|
||
|
||
End Sub
|
||
|
||
Private Sub CheckBox37_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox37.CheckedChanged
|
||
If CheckBox37.Checked Then
|
||
If MsgBox($"注意下发服务器IP,主机将连接到本地服务器。云端服务器将无法检测到该主机!!!{vbCrLf }是否使用本地服务器?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
|
||
Return
|
||
Else
|
||
CheckBox37.Checked = False
|
||
End If
|
||
End If
|
||
|
||
|
||
End Sub
|
||
Private formlog As LogInformation
|
||
Private Sub Button40_Click(sender As Object, e As EventArgs) Handles Button40.Click
|
||
If IsNothing(formlog) Then
|
||
formlog = New LogInformation
|
||
AddHandler formlog.Readconfigdata, AddressOf Readconfigdata
|
||
AddHandler formlog.Writeconfigdata, AddressOf Writeconfigdata
|
||
End If
|
||
formlog.result = Button40.Tag
|
||
If formlog.ShowDialog() = DialogResult.OK Then
|
||
DescriptionEnablingLogServiceOccurred(formlog.result)
|
||
Else
|
||
|
||
End If
|
||
Button40.Tag = formlog.result
|
||
'RemoveHandler formlog.Readconfigdata, AddressOf Readconfigdata
|
||
|
||
End Sub
|
||
Public Sub Readconfigdata()
|
||
Dim cmd As Byte = &HDA
|
||
Dim li As List(Of Byte) = New List(Of Byte)
|
||
li.Add(&H0)
|
||
_isNetWork = True
|
||
Dim sendData As Byte() = FillReadPacket(cmd, li.ToArray)
|
||
SendPacket(sendData)
|
||
End Sub
|
||
Public Sub Writeconfigdata()
|
||
DescriptionEnablingLogServiceOccurred(formlog.result)
|
||
End Sub
|
||
Public Function DescriptionEnablingLogServiceOccurred(logstr As String) As Boolean
|
||
If String.IsNullOrEmpty(logstr) Then Return False
|
||
|
||
Dim cmd As Byte = &HD9
|
||
Dim strbuf As String() = logstr.Split(",")
|
||
If strbuf.Length < 4 Then Return False
|
||
Dim li As List(Of Byte) = New List(Of Byte)
|
||
|
||
If strbuf(0) = "1" OrElse strbuf(0) = "True" Then
|
||
li.Add(&HFF)
|
||
Else
|
||
li.Add(&H0)
|
||
End If
|
||
Dim number As Integer = 69
|
||
If String.IsNullOrEmpty(strbuf(1)) Then
|
||
li.AddRange(IntToByteHB(number))
|
||
Else
|
||
Integer.TryParse(strbuf(1), number)
|
||
li.AddRange(IntToByteHB(number))
|
||
End If
|
||
number = 360
|
||
If String.IsNullOrEmpty(strbuf(2)) Then
|
||
li.AddRange(IntToByteHB(number))
|
||
Else
|
||
Integer.TryParse(strbuf(2), number)
|
||
li.AddRange(IntToByteHB(number))
|
||
End If
|
||
Dim cstrbuf() As Byte = System.Text.Encoding.UTF8.GetBytes(strbuf(3))
|
||
li.Add(cstrbuf.Length)
|
||
li.AddRange(cstrbuf)
|
||
|
||
_isNetWork = True
|
||
'Dim data() As Byte = GetReadCountData(projectCodeB, RoomTpRemarkB, RoomNuRemarkB, SeasonB, RoomStateB, RoomLockB, roomRemarkB, MandateEndTimeB, MandateTimeB)
|
||
'Dim data As Byte() = GetReadNetworkInfo()
|
||
Dim sendData As Byte() = FillReadPacket(cmd, li.ToArray)
|
||
SendPacket(sendData)
|
||
Console.WriteLine($"研发读取主机信息:{ByteToString(sendData)}")
|
||
End Function
|
||
|
||
Private Sub ComboBox16_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox16.SelectedIndexChanged
|
||
|
||
End Sub
|
||
|
||
Private Sub Button41_Click(sender As Object, e As EventArgs) Handles Button41.Click
|
||
GrdRCUHost.Rows = 1
|
||
End Sub
|
||
|
||
Private Sub ToolStripTextBox2_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ToolStripTextBox2.KeyPress, ToolStripTextBox1.KeyPress, ToolStrip2.KeyPress, ToolStripTextBox4.KeyPress, ToolStripTextBox3.KeyPress
|
||
e.Handled = Not $"0123456789{vbBack}".Contains(e.KeyChar) '如果要只允许输入数字,就把上一行字符串中的字母删除
|
||
End Sub
|
||
|
||
Public Sub ToolStripButton6_Click(sender As Object, e As EventArgs) Handles ToolStripButton6.Click
|
||
|
||
If ToolStripButton6.Text = "启动" Then
|
||
If CInt(ToolStripTextBox3.Text) > 255 OrElse CInt(ToolStripTextBox4.Text) > 255 Then
|
||
MsgBox("请输入正确的IP网关范围 最小为0,最大为255")
|
||
Return
|
||
End If
|
||
If CInt(ToolStripTextBox1.Text) > 255 OrElse CInt(ToolStripTextBox2.Text) > 255 OrElse CInt(ToolStripTextBox1.Text) = 0 OrElse CInt(ToolStripTextBox2.Text) = 0 Then
|
||
MsgBox("请输入正确的IP地址范围 最小为1,最大为255")
|
||
Return
|
||
End If
|
||
|
||
ConnNetWork()
|
||
_hostsList.Clear()
|
||
InitRCUHostsTablesData()
|
||
_RCUSearchIndex = 1
|
||
_searchHost = False
|
||
_searchHosts = True
|
||
_isShowCol = True
|
||
GrdRCUHost.Enabled = False
|
||
|
||
pollThreadclass.Setg_listobjPar(CInt(ToolStripTextBox3.Text), CInt(ToolStripTextBox4.Text), CInt(ToolStripTextBox1.Text), CInt(ToolStripTextBox2.Text))
|
||
pollThreadclass.SetPollingState(2)
|
||
ToolStripButton6.Text = "停止"
|
||
|
||
Else
|
||
|
||
GrdRCUHost.Enabled = True
|
||
'_BtnTextThread.Abort()
|
||
'Button25.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Search)
|
||
LabelCount.Text = $"0/{GrdRCUHost.Rows - 1}"
|
||
ToolStripButton6.Text = "启动"
|
||
pollThreadclass.SetPollingState(9)
|
||
End If
|
||
|
||
|
||
|
||
End Sub
|
||
|
||
Private Sub Button42_Click(sender As Object, e As EventArgs) Handles Button42.Click
|
||
|
||
Dim regcount As Integer = (CInt("&H9F") - CInt("&H5C") + 1) / 4
|
||
_isNetWork = True
|
||
|
||
Dim li As List(Of Byte) = New List(Of Byte)
|
||
li.Add(regcount + 1)
|
||
li.AddRange(BitConverter.GetBytes(&H1C))
|
||
For i As Integer = CInt("&H5C") To CInt("&H9F") Step 4
|
||
'如果 i =5c 则把 servernameLen 添加到 li
|
||
li.AddRange(BitConverter.GetBytes(i))
|
||
Next
|
||
Dim sendData As Byte()
|
||
Dim cmd As Byte = &H30
|
||
sendData = FillPacket(cmd, li.ToArray)
|
||
SendPacket(sendData)
|
||
End Sub
|
||
|
||
Private Sub Button43_Click(sender As Object, e As EventArgs) Handles Button43.Click
|
||
_isNetWork = True
|
||
Dim servername As String = TextBox64.Text.Trim
|
||
''把十进制servername长度 按照小端序 存进 4 字节(32 bit)byte数组
|
||
Dim servernameLen As Byte() = BitConverter.GetBytes(servername.Length)
|
||
' 将servername 转换为byte数组
|
||
Dim servernameB As Byte() = System.Text.Encoding.UTF8.GetBytes(servername)
|
||
'将servernameB 填充到一个长度为64的bytr数组中,如果长度不够,则用0填充
|
||
Dim servernameB64 As Byte() = New Byte(63) {}
|
||
Array.Copy(servernameB, servernameB64, servernameB.Length)
|
||
Dim servernameB64int As Integer = 0
|
||
'将servernameB64 按照小端序 存进 4 字节(32 bit)byte数组
|
||
Dim servernameB64Len As Byte()
|
||
Dim offlineTime As Integer
|
||
|
||
If Integer.TryParse(TextBox66.Text.Trim, offlineTime) Then
|
||
If Not (offlineTime > 0 AndAlso offlineTime < 65535) Then
|
||
MsgBox("请输入正确的离线时间")
|
||
Return
|
||
End If
|
||
Else
|
||
MsgBox("请输入正确的离线时间")
|
||
Return
|
||
End If
|
||
|
||
Dim li As List(Of Byte) = New List(Of Byte)
|
||
|
||
'获取 5C到 9f 每4个算一个寄存器 寄存器个数
|
||
Dim regcount As Integer = (CInt("&H9F") - CInt("&H5C") + 1) / 4
|
||
'添加寄存器个数
|
||
li.Add(regcount + 1)
|
||
li.AddRange(BitConverter.GetBytes(&H1C))
|
||
li.AddRange(BitConverter.GetBytes(offlineTime))
|
||
'从5c 遍历到9f 每个寄存器4个字节一组
|
||
For i As Integer = CInt("&H5C") To CInt("&H9F") Step 4
|
||
'如果 i =5c 则把 servernameLen 添加到 li
|
||
li.AddRange(BitConverter.GetBytes(i))
|
||
If i = CInt("&H5C") Then
|
||
li.AddRange(servernameLen)
|
||
Else
|
||
' 每次从servernameB64 数组下表 servernameB64int中取4个字节
|
||
servernameB64Len = New Byte(3) {}
|
||
Array.Copy(servernameB64, servernameB64int, servernameB64Len, 0, servernameB64Len.Length)
|
||
servernameB64int += 4
|
||
li.AddRange(servernameB64Len)
|
||
|
||
End If
|
||
|
||
Next
|
||
Dim sendData As Byte()
|
||
Dim cmd As Byte = &H31
|
||
sendData = FillPacket(cmd, li.ToArray)
|
||
SendPacket(sendData)
|
||
|
||
|
||
End Sub
|
||
|
||
Private Sub Button48_Click(sender As Object, e As EventArgs) Handles Button48.Click
|
||
'定义离线时间变量
|
||
Dim offlineTime, OuptputTime As Integer
|
||
Dim vOuptputTime As Integer = 86400000
|
||
If Integer.TryParse(TextBox62.Text.Trim, offlineTime) Then
|
||
If Not (offlineTime >= 0 AndAlso offlineTime <= vOuptputTime) Then
|
||
MsgBox("请输入正确的离线时间")
|
||
Return
|
||
End If
|
||
Else
|
||
MsgBox("请输入正确的离线时间")
|
||
Return
|
||
End If
|
||
If Integer.TryParse(TextBox65.Text.Trim, OuptputTime) Then
|
||
If Not (offlineTime >= 0 AndAlso OuptputTime <= vOuptputTime) Then
|
||
MsgBox("请输入正确的定期上报时间")
|
||
Return
|
||
End If
|
||
Else
|
||
MsgBox("请输入正确的定期上报时间")
|
||
Return
|
||
End If
|
||
_isNetWork = True
|
||
Dim li As List(Of Byte) = New List(Of Byte)
|
||
li.Add(2)
|
||
li.AddRange(BitConverter.GetBytes(&H34))
|
||
li.AddRange(BitConverter.GetBytes(offlineTime))
|
||
li.AddRange(BitConverter.GetBytes(&HA0))
|
||
li.AddRange(BitConverter.GetBytes(OuptputTime))
|
||
Dim sendData As Byte()
|
||
Dim cmd As Byte = &H31
|
||
sendData = FillPacket(cmd, li.ToArray)
|
||
SendPacket(sendData)
|
||
|
||
End Sub
|
||
|
||
Private Sub Button47_Click(sender As Object, e As EventArgs) Handles Button47.Click
|
||
Dim li As List(Of Byte) = New List(Of Byte)
|
||
li.Add(2)
|
||
li.AddRange(BitConverter.GetBytes(&H34))
|
||
li.AddRange(BitConverter.GetBytes(&HA0))
|
||
Dim sendData As Byte()
|
||
_isNetWork = True
|
||
Dim cmd As Byte = &H30
|
||
sendData = FillPacket(cmd, li.ToArray)
|
||
SendPacket(sendData)
|
||
End Sub
|
||
|
||
|
||
|
||
|
||
|
||
#End Region
|
||
End Class
|