From c26c2bf49cc6b3c009f4833cfdbf8e83ef9b9f0a Mon Sep 17 00:00:00 2001 From: chenzhihao <1798906853@qq.com> Date: Tue, 10 Mar 2026 10:08:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B8=A9=E6=8E=A7=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=E9=9F=B3=E7=89=88=E6=9C=AC=E6=8E=A7=E5=88=B6=E5=88=86?= =?UTF-8?q?=E6=94=AF=E5=92=8C=E8=AE=BE=E5=A4=87=E9=93=BE=E8=A1=A8=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 + BLV_Studio/BLV_Studio.vbproj | 2 +- BLV_Studio/Database/DbExecutor.vb | 77 + BLV_Studio/FrmMain.Designer.vb | 24 +- BLV_Studio/FrmMain.resx | 49 +- BLV_Studio/FrmMain.vb | 372 +- BLV_Studio/My Project/AssemblyInfo.vb | 4 +- BLV_Studio/Test/GridTest/TableInteraction.vb | 7 +- BLV_Studio/bin/Debug/BLV_Studio.xml | 11292 ----------------- BLV_Studio/obj/Debug/BLV_Studio.xml | 11292 ----------------- BLV_Studio/publish/BLV_Studio.application | 28 - BLV_Studio/publish/index.html | 163 - BLV_Studio/publish/setup.exe | Bin 559616 -> 0 bytes 13 files changed, 483 insertions(+), 22833 deletions(-) delete mode 100644 BLV_Studio/bin/Debug/BLV_Studio.xml delete mode 100644 BLV_Studio/obj/Debug/BLV_Studio.xml delete mode 100644 BLV_Studio/publish/BLV_Studio.application delete mode 100644 BLV_Studio/publish/index.html delete mode 100644 BLV_Studio/publish/setup.exe diff --git a/.gitignore b/.gitignore index 4d63c69..a44d123 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,9 @@ BLV_Studio/obj/Debug/BLV_Studio.vbproj.AssemblyReference.cache BLV_Studio/obj/Debug/BLV_Studio.pdb BLV_Studio/obj/Debug/BLV_Studio.vbproj.GenerateResource.cache BLV_Studio/obj/Debug/DesignTimeResolveAssemblyReferences.cache +BLV_Studio/publish +BLV_Studio/obj +BLV_Studio/obj +BLV_Studio/obj/Debug/BLV_Studio.xml +BLV_Studio/bin +BLV_Studio/bin/Debug/BLV_Studio.xml diff --git a/BLV_Studio/BLV_Studio.vbproj b/BLV_Studio/BLV_Studio.vbproj index 669fe2b..e8f6035 100644 --- a/BLV_Studio/BLV_Studio.vbproj +++ b/BLV_Studio/BLV_Studio.vbproj @@ -35,7 +35,7 @@ 4.0.0.5 true index.html - 91 + 95 4.4.3.%2a false true diff --git a/BLV_Studio/Database/DbExecutor.vb b/BLV_Studio/Database/DbExecutor.vb index 6e8877a..2bee45c 100644 --- a/BLV_Studio/Database/DbExecutor.vb +++ b/BLV_Studio/Database/DbExecutor.vb @@ -374,4 +374,81 @@ Public Class DbExecutor GC.Collect() '对所有缓存垃圾进行回收 End Sub + + + ''' + ''' 添加参数到命令(简化版本,自动推断参数类型) + ''' + ''' 参数名称(需包含@或:前缀) + ''' 参数值 + ''' 创建的DbParameter对象 + Public Function AddParameter(parameterName As String, value As Object) As DbParameter + ' 自动根据值类型推断DbType + Dim dbType As DbType + Dim convertedValue As Object = value + + If value Is Nothing OrElse DBNull.Value.Equals(value) Then + dbType = DbType.Object + convertedValue = DBNull.Value + Else + Select Case value.GetType() + Case GetType(Integer) + dbType = DbType.Int32 + Case GetType(String) + dbType = DbType.String + Case GetType(Boolean) + dbType = DbType.Boolean + Case GetType(DateTime) + dbType = DbType.DateTime + Case GetType(Decimal) + dbType = DbType.Decimal + Case GetType(Double) + dbType = DbType.Double + Case GetType(Single) + dbType = DbType.Single + Case GetType(Byte()) + dbType = DbType.Binary + Case GetType(Guid) + dbType = DbType.Guid + Case Else + dbType = DbType.Object + End Select + End If + + ' 调用现有的AddDbParameter方法 + Return AddDbParameter(dbType, parameterName, convertedValue) + End Function + + ''' + ''' 添加参数到命令(指定明确的类型) + ''' + ''' 参数名称 + ''' 参数值 + ''' 参数的数据类型 + ''' 创建的DbParameter对象 + Public Function AddParameter(parameterName As String, value As Object, dbType As DbType) As DbParameter + Dim convertedValue As Object = value + + ' 处理空值 + If value Is Nothing OrElse DBNull.Value.Equals(value) Then + convertedValue = DBNull.Value + End If + + Return AddDbParameter(dbType, parameterName, convertedValue) + End Function + + ''' + ''' 添加参数到命令(包含方向) + ''' + ''' 参数名称 + ''' 参数值 + ''' 参数的数据类型 + ''' 参数方向(输入/输出) + ''' 创建的DbParameter对象 + Public Function AddParameter(parameterName As String, value As Object, dbType As DbType, direction As ParameterDirection) As DbParameter + Dim param = AddParameter(parameterName, value, dbType) + param.Direction = direction + Return param + End Function + End Class \ No newline at end of file diff --git a/BLV_Studio/FrmMain.Designer.vb b/BLV_Studio/FrmMain.Designer.vb index cf8dff8..42b81a1 100644 --- a/BLV_Studio/FrmMain.Designer.vb +++ b/BLV_Studio/FrmMain.Designer.vb @@ -272,6 +272,7 @@ Partial Class FrmMain Me.tsb_SyncConfigFiles = New System.Windows.Forms.ToolStripButton() Me.ToolStripButton4 = New System.Windows.Forms.ToolStripButton() Me.ToolStripButton17 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton23 = New System.Windows.Forms.ToolStripButton() Me.MsMain.SuspendLayout() Me.StatusStrip1.SuspendLayout() Me.CmsEvent.SuspendLayout() @@ -1017,7 +1018,7 @@ Partial Class FrmMain ' 'toopMax ' - Me.toopMax.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripSeparator18, Me.ToolStripButton6, Me.T_OpenfileXML, Me.ToolStripButton10, Me.ToolStripButton7, Me.ToolStripButton8, Me.ToolStripSeparator19, Me.ToolStripButton13, Me.ToolStripButton11, Me.ToolStripButton12, Me.ToolStripSeparator20, Me.ToolStripButton14, Me.ToolStripButton9, Me.ToolStripButton15, Me.ToolStripButton16, Me.ToolStripButton19, Me.ToolStripSeparator22, Me.Tablet_DeleteRow, Me.ToolStripButton3, Me.ToolStripButton21, Me.ToolStripButton5, Me.ToolStripButton18, Me.ToolStripButton22}) + Me.toopMax.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripSeparator18, Me.ToolStripButton6, Me.T_OpenfileXML, Me.ToolStripButton10, Me.ToolStripButton7, Me.ToolStripButton8, Me.ToolStripSeparator19, Me.ToolStripButton13, Me.ToolStripButton11, Me.ToolStripButton12, Me.ToolStripSeparator20, Me.ToolStripButton14, Me.ToolStripButton9, Me.ToolStripButton15, Me.ToolStripButton16, Me.ToolStripSeparator22, Me.ToolStripButton19, Me.Tablet_DeleteRow, Me.ToolStripButton3, Me.ToolStripButton21, Me.ToolStripButton5, Me.ToolStripButton18, Me.ToolStripButton22}) Me.toopMax.Location = New System.Drawing.Point(0, 0) Me.toopMax.Name = "toopMax" Me.toopMax.Size = New System.Drawing.Size(993, 40) @@ -1171,17 +1172,15 @@ Partial Class FrmMain ' 'ToolStripButton19 ' - Me.ToolStripButton19.Enabled = False Me.ToolStripButton19.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) Me.ToolStripButton19.ForeColor = System.Drawing.Color.Black Me.ToolStripButton19.Image = CType(resources.GetObject("ToolStripButton19.Image"), System.Drawing.Image) Me.ToolStripButton19.ImageTransparentColor = System.Drawing.Color.Magenta Me.ToolStripButton19.Name = "ToolStripButton19" - Me.ToolStripButton19.Size = New System.Drawing.Size(33, 37) - Me.ToolStripButton19.Text = "导出" + Me.ToolStripButton19.Size = New System.Drawing.Size(81, 37) + Me.ToolStripButton19.Text = "上传设备信息" Me.ToolStripButton19.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText Me.ToolStripButton19.ToolTipText = "将文件导出到Excel表格" - Me.ToolStripButton19.Visible = False ' 'ToolStripSeparator22 ' @@ -1297,6 +1296,7 @@ Partial Class FrmMain ' Me.ToolStripTextBox1.BackColor = System.Drawing.SystemColors.ButtonHighlight Me.ToolStripTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle + Me.ToolStripTextBox1.Font = New System.Drawing.Font("Microsoft YaHei UI", 9.0!) Me.ToolStripTextBox1.Name = "ToolStripTextBox1" Me.ToolStripTextBox1.ReadOnly = True Me.ToolStripTextBox1.Size = New System.Drawing.Size(100, 25) @@ -1640,7 +1640,7 @@ Partial Class FrmMain ' 'ToolStrip2 ' - Me.ToolStrip2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsb_ReleaseToProjcet, Me.ToolStripSeparator7, Me.tsb_RuleCheck, Me.tsb_Compile, Me.tsb_DownLoad, Me.ToolStripSeparator4, Me.TsBtnNewFile, Me.TsBtnLoad, Me.tsb_SaveFile, Me.TsBtnSaveAs, Me.tsb_OpenFileFolder, Me.ToolStripSeparator6, Me.TsBtnAddModel, Me.TsBtnAddActions, Me.TsBtnAddDev, Me.TsBtnAddCondition, Me.TsBtnAddAction, Me.tsb_ExportToExcel, Me.ToolStripSeparator13, Me.UploadFirmware_btn, Me.ToolStripSeparator17, Me.ToolStripButton20, Me.ToolStripSeparator21}) + Me.ToolStrip2.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tsb_ReleaseToProjcet, Me.ToolStripSeparator7, Me.tsb_RuleCheck, Me.tsb_Compile, Me.tsb_DownLoad, Me.ToolStripSeparator4, Me.TsBtnNewFile, Me.TsBtnLoad, Me.tsb_SaveFile, Me.TsBtnSaveAs, Me.tsb_OpenFileFolder, Me.ToolStripSeparator6, Me.TsBtnAddModel, Me.TsBtnAddActions, Me.TsBtnAddDev, Me.TsBtnAddCondition, Me.TsBtnAddAction, Me.tsb_ExportToExcel, Me.ToolStripSeparator13, Me.UploadFirmware_btn, Me.ToolStripSeparator17, Me.ToolStripButton20, Me.ToolStripSeparator21, Me.ToolStripButton23}) Me.ToolStrip2.Location = New System.Drawing.Point(3, 3) Me.ToolStrip2.Name = "ToolStrip2" Me.ToolStrip2.Size = New System.Drawing.Size(987, 40) @@ -2777,6 +2777,17 @@ Partial Class FrmMain Me.ToolStripButton17.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText Me.ToolStripButton17.Visible = False ' + 'ToolStripButton23 + ' + Me.ToolStripButton23.ForeColor = System.Drawing.Color.Blue + Me.ToolStripButton23.Image = CType(resources.GetObject("ToolStripButton23.Image"), System.Drawing.Image) + Me.ToolStripButton23.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton23.Name = "ToolStripButton23" + Me.ToolStripButton23.Size = New System.Drawing.Size(60, 37) + Me.ToolStripButton23.Text = "上传设备" + Me.ToolStripButton23.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.ToolStripButton23.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText + ' 'FrmMain ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!) @@ -3112,4 +3123,5 @@ Partial Class FrmMain Friend WithEvents ToolStripSeparator21 As ToolStripSeparator Friend WithEvents ToolStripButton21 As ToolStripButton Friend WithEvents ToolStripButton22 As ToolStripButton + Friend WithEvents ToolStripButton23 As ToolStripButton End Class diff --git a/BLV_Studio/FrmMain.resx b/BLV_Studio/FrmMain.resx index 3165e2c..cf5f318 100644 --- a/BLV_Studio/FrmMain.resx +++ b/BLV_Studio/FrmMain.resx @@ -179,7 +179,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABS - PgAAAk1TRnQBSQFMAgEBQgEAAXgBIwF4ASMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + PgAAAk1TRnQBSQFMAgEBQgEAAYABIwGAASMBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARABAQIAAQEBAAEIBgABRBgAAYACAAGAAwACgAEAAYADAAGAAQABgAEAAoACAAPAAQABwAHc AcABAAHwAcoBpgEAATMFAAEzAQABMwEAATMBAAIzAgADFgEAAxwBAAMiAQADKQEAA1UBAANNAQADQgEA AzkBAAGAAXwB/wEAAlAB/wEAAZMBAAHWAQAB/wHsAcwBAAHGAdYB7wEAAdYC5wEAAZABqQGtAgAB/wEz @@ -466,7 +466,13 @@ 17, 55 - 224 + 82 + + + 188, 55 + + + 361, 55 @@ -702,6 +708,9 @@ w4fXohzSfo/RpBT6//AY2YQM5nBRfAMSHREeGw8GSAAAAABJRU5ErkJggg== + + 973, 55 + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -720,6 +729,21 @@ 868, 55 + + 512, 55 + + + 685, 17 + + + 360, 17 + + + 624, 55 + + + 868, 55 + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 @@ -1563,6 +1587,21 @@ SUVORK5CYII= + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE9SURBVDhPtVKva8NAGI2czL8wt8nJ2sDEBhOLW9wIEZWl + svbUqCphIoSKwVUUMncThZspnBlkIhAz6OTJycq3+/JjqcgtndiD4+6+vPe+j9xz/gVyqxCOGXyzwgmD + orvZm8/DICGZ0LkSk9n9HwwO0Yq9u18MyjcJsZyDJzPIjbAS83UKGfnVUk9pxyMxoKCLEN7lhdVARgH2 + yRR67IPdjDoeT1glFotTKqIs8l4TMiAxv/UwOjvvOOpVIDBF58QBX3HrBPkqBbvy4Lou+MOs431pDf25 + swoHkb+X1ZuXRXmUCXGbYw0q0FNdH/nWvZmg4tAE1EhsZH+ogohh/phh91GbiJcc04k2ZIXsuU5lO2mc + 9Pxo6k5paxNHYrUF4sUeYRT/GBxyetFOQJ0rsdnN1S6wgcZuOiNb2+LtON/B6OzDMC9GwAAAAABJRU5E + rkJggg== + + + + 82 + AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAA @@ -1729,10 +1768,4 @@ AAA= - - 188, 55 - - - 361, 55 - \ No newline at end of file diff --git a/BLV_Studio/FrmMain.vb b/BLV_Studio/FrmMain.vb index 157a599..d3ef048 100644 --- a/BLV_Studio/FrmMain.vb +++ b/BLV_Studio/FrmMain.vb @@ -2,6 +2,7 @@ Imports System.Net Imports System.Security.Cryptography Imports System.Text +Imports System.Text.RegularExpressions Imports System.Threading Imports BLV_Studio.GridModel Imports BLV_Studio.GridModel.DeviceEventModel @@ -120,21 +121,21 @@ Public Class FrmMain Else If ImgLstMain.Images.Count = 0 Then Return Dim imgindex As Integer = -1 - Select Case ftpFlag - Case 0 - imgindex = ImgLstMain.Images.IndexOfKey(“Syncing.png”) - If imgindex = -1 Then Return - FtpIcon_lab.Image = ImgLstMain.Images.Item(imgindex) - Case 1 - imgindex = ImgLstMain.Images.IndexOfKey(“Syncerror.png”) - If imgindex = -1 Then Return - FtpIcon_lab.Image = ImgLstMain.Images.Item(imgindex) - Case 2 - imgindex = ImgLstMain.Images.IndexOfKey(“SyncTrue.png”) - If imgindex = -1 Then Return - FtpIcon_lab.Image = ImgLstMain.Images.Item(imgindex) - End Select - End If + Select Case ftpFlag + Case 0 + imgindex = ImgLstMain.Images.IndexOfKey(“Syncing.png”) + If imgindex = -1 Then Return + FtpIcon_lab.Image = ImgLstMain.Images.Item(imgindex) + Case 1 + imgindex = ImgLstMain.Images.IndexOfKey(“Syncerror.png”) + If imgindex = -1 Then Return + FtpIcon_lab.Image = ImgLstMain.Images.Item(imgindex) + Case 2 + imgindex = ImgLstMain.Images.IndexOfKey(“SyncTrue.png”) + If imgindex = -1 Then Return + FtpIcon_lab.Image = ImgLstMain.Images.Item(imgindex) + End Select + End If End Sub Public ricLabelGrb_li As New List(Of Control) Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles Me.Load @@ -2423,33 +2424,33 @@ Public Class FrmMain ' Try '生成文件夹 If CreateXmlPath() Then - '先运行规则检查 - ruleCheckReslut = _grdModel.StartGobleRuleCheck(ruleCheck_ErrCnt, ruleCheck_WarningCnt) + '先运行规则检查 + ruleCheckReslut = _grdModel.StartGobleRuleCheck(ruleCheck_ErrCnt, ruleCheck_WarningCnt) - '如果规则检查有错误则不允许编译 - If ruleCheck_ErrCnt > 0 Then - MsgBox("规则检测不通过,请逐项处理后重新编译!", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "编译失败..") - Return False + '如果规则检查有错误则不允许编译 + If ruleCheck_ErrCnt > 0 Then + MsgBox("规则检测不通过,请逐项处理后重新编译!", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "编译失败..") + Return False + Else + '填充配置信息 + '_grdModel._ConfigInf + If _grdModel.Compile(compileErrMsg, savePath, dic) = True Then + _grdModel.Save(savePath) '保存配置文件 + If IsShowCompileResult Then MsgBox($"编译完成, 配置版本号:" & _grdModel._ConfigInfo.CfgFileVersion) + Return True Else - '填充配置信息 - '_grdModel._ConfigInf - If _grdModel.Compile(compileErrMsg, savePath, dic) = True Then - _grdModel.Save(savePath) '保存配置文件 - If IsShowCompileResult Then MsgBox($"编译完成, 配置版本号:" & _grdModel._ConfigInfo.CfgFileVersion) - Return True - Else - MsgBox(compileErrMsg, MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "编译失败.") - Return False - End If + MsgBox(compileErrMsg, MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "编译失败.") + Return False End If End If + End If - 'Catch ex As Exception - ' MsgBox($"编译失败,{ex.Message}") - ' Return False - 'End Try + 'Catch ex As Exception + ' MsgBox($"编译失败,{ex.Message}") + ' Return False + 'End Try - Return True + Return True End Function @@ -4649,8 +4650,8 @@ Public Class FrmMain MsgBox("编译失败!", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "创建项目文件失败..") Return False End If - Catch ex As exception - msgbox($"编译失败,{ex.message}") + Catch ex As Exception + MsgBox($"编译失败,{ex.Message}") Return False End Try @@ -5156,18 +5157,301 @@ Public Class FrmMain End Function + Private Sub ToolStripButton19_Click(sender As Object, e As EventArgs) Handles ToolStripButton19.Click + If Releaseflag And Not IsNothing(TvwMain.SelectedNode) Then + Else + MsgBox("请选择发布节点") + Return + End If + Dim TrNode As TreeNode = TvwMain.SelectedNode + + If TrNode.Level > 1 Then + TrNode = TrNode.Parent + End If + Dim FirmwareVer As String = TrNode.FirstNode.NextNode.NextNode.Text ' TrNode.NextVisibleNode.NextNode.Text + Dim FVer As Integer = 0 + If Not String.IsNullOrEmpty(FirmwareVer) Then + Dim Firbuf As String() = FirmwareVer.Split("_") + If Firbuf.Length > 3 Then + FVer = Convert.ToInt32(Firbuf(3)) + End If + End If + UploadDeviceList(FVer) + End Sub + + Public Sub UploadDeviceList(pzVer As Integer) + ' 1. 参数验证 + If Not Releaseflag OrElse IsNothing(TvwMain.SelectedNode) Then + MsgBox("请选择发布节点") + Return + End If + + If IsNothing(_TableInteraction) Then + MsgBox("未选择模型") + Return + End If + + Try + ' 2. 获取数据 + Dim aaa = _TableInteraction.TestReportingScenario1() + If IsNothing(aaa) Then + MsgBox("请先配置逻辑表") + Return + End If + + ' 3. 序列化 JSON + Dim device_list_json As String = JsonConvert.SerializeObject(aaa.TDevicemodel) + Dim hotel_id As Integer = _project.HotelIndex + Dim roomtype_id As Integer = _project.RoomType(g_CurrentTreeNodeRoomTypeItemIndex).structRoomType_ID + Dim createTime As String = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + + ' 5. 使用参数化查询 + Dim insertStr As String = "INSERT INTO `blv_rcu_db`.`tbl_room_type_device` " & + "(`hotel_id`, `roomtype_id`, `device_list_json`, `version`, `create_time`) " & + "VALUES (@hotel_id, @roomtype_id, @device_list_json, @version, @create_time)" + + Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString) + db.Open() + + ' 清空可能存在的旧参数 + db.ClearDbParameter() + + '' 使用新的AddParameter方法添加参数 + 'db.AddParameter("@hotel_id", hotel_id) + 'db.AddParameter("@roomtype_id", roomtype_id) + 'db.AddParameter("@device_list_json", device_list_json) + 'db.AddParameter("@version", pzVer) + 'db.AddParameter("@create_time", createTime) + + ' 使用明确的类型 + db.AddParameter("@hotel_id", hotel_id, DbType.Int32) + db.AddParameter("@roomtype_id", roomtype_id, DbType.Int32) + db.AddParameter("@device_list_json", device_list_json, DbType.String) + db.AddParameter("@version", pzVer, DbType.Int32) + db.AddParameter("@create_time", createTime, DbType.DateTime) + + ' 执行插入操作 + Dim result As Integer = db.ExecuteNonQuery(insertStr) + + db.Close() + + If result > 0 Then + MsgBox("设备列表上传成功") + Else + MsgBox("设备列表上传失败") + End If + End Using + + Catch ex As Exception + MsgBox($"上传设备列表时发生错误: {ex.Message}") + ' 记录详细错误日志 + LogError($"UploadDeviceList error: {ex.Message}{Environment.NewLine}{ex.StackTrace}") + End Try + + + End Sub + + ' JSON验证函数 + + + ' 日志记录函数 + Private Sub LogError(message As String) + Dim logPath As String = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ErrorLog.txt") + + Try + File.AppendAllText(logPath, $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} - {message}{Environment.NewLine}{Environment.NewLine}") + Catch + ' 日志写入失败时不抛出异常 + End Try + End Sub + + Private Sub ToolStripButton23_Click(sender As Object, e As EventArgs) Handles ToolStripButton23.Click + If Releaseflag And Not IsNothing(TvwMain.SelectedNode) Then + Else + MsgBox("请选择发布节点") + Return + End If + Dim TrNode As TreeNode = TvwMain.SelectedNode + + If TrNode.Level > 1 Then + TrNode = TrNode.Parent + End If + Dim FirmwareVer As String = TrNode.FirstNode.NextNode.NextNode.Text ' TrNode.NextVisibleNode.NextNode.Text + Dim FVer As Integer = 0 + If Not String.IsNullOrEmpty(FirmwareVer) Then + Dim Firbuf As String() = FirmwareVer.Split("_") + If Firbuf.Length > 3 Then + FVer = Convert.ToInt32(Firbuf(3)) + End If + End If + UploadDeviceList1(FVer) + End Sub + Public Sub UploadDeviceList1(pzVer As Integer) + Dim headnode As RowNode + headnode = _grdModel._rootNode + Dim childnode, D485node, Virtualnode As RowNode + '初始化treeview控件 + + Console.WriteLine("初始化treeview控件") + + ' 1. 参数验证 + If IsNothing(TvwMain.SelectedNode) Then + MsgBox("请选择发布节点") + Return + End If + childnode = headnode.Nodes(0) + childnode = childnode.Nodes(0) + + D485node = childnode.Nodes(1) + Virtualnode = childnode.Nodes(2) + + If IsNothing(_grdModel) OrElse IsNothing(_grdModel._rootNode) Then + MsgBox("未选择模型") + Return + End If + Dim li As List(Of UpdataDevnode) = New List(Of UpdataDevnode) + Dim hnode As UpdataDevnode = Extractnode(childnode, True) + li.Add(hnode) + For Each node In D485node.Nodes + + For Each node2 In node.Nodes + li.Add(Extractnode(node2)) + Next + + + Next + For Each node In Virtualnode.Nodes + For Each node2 In node.Nodes + li.Add(Extractnode(node2)) + Next + Next + + Try + ' 3. 序列化 JSON + Dim device_list_json As String = JsonConvert.SerializeObject(li) + Dim hotel_id As Integer = _project.HotelIndex + Dim roomtype_id As Integer = _project.RoomType(g_CurrentTreeNodeRoomTypeItemIndex).structRoomType_ID + Dim createTime As String = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + + ' 5. 使用参数化查询 + Dim insertStr As String = "INSERT INTO `blv_rcu_db`.`tbl_room_type_device` " & + "(`hotel_id`, `roomtype_id`, `device_list_json`, `version`, `create_time`,`format`) " & + "VALUES (@hotel_id, @roomtype_id, @device_list_json, @version, @create_time,@format)" + + Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString) + db.Open() + + ' 清空可能存在的旧参数 + db.ClearDbParameter() + + '' 使用新的AddParameter方法添加参数 + 'db.AddParameter("@hotel_id", hotel_id) + 'db.AddParameter("@roomtype_id", roomtype_id) + 'db.AddParameter("@device_list_json", device_list_json) + 'db.AddParameter("@version", pzVer) + 'db.AddParameter("@create_time", createTime) + + ' 使用明确的类型 + db.AddParameter("@hotel_id", hotel_id, DbType.Int32) + db.AddParameter("@roomtype_id", roomtype_id, DbType.Int32) + db.AddParameter("@device_list_json", device_list_json, DbType.String) + db.AddParameter("@version", pzVer, DbType.Int32) + db.AddParameter("@create_time", createTime, DbType.DateTime) + db.AddParameter("@format", 0, DbType.Int32) + ' 执行插入操作 + Dim result As Integer = db.ExecuteNonQuery(insertStr) + + db.Close() + + If result > 0 Then + MsgBox("设备列表上传成功") + Else + MsgBox("设备列表上传失败") + End If + End Using + + Catch ex As Exception + MsgBox($"上传设备列表时发生错误: {ex.Message}") + ' 记录详细错误日志 + LogError($"UploadDeviceList error: {ex.Message}{Environment.NewLine}{ex.StackTrace}") + End Try + + + End Sub + Public Function Extractnode(node As RowNode, Optional isRoot As Boolean = False) As UpdataDevnode + + + Dim updataDevnode As UpdataDevnode = New UpdataDevnode + updataDevnode.DevName = node.Text + + updataDevnode.DevAttr = New Dictionary(Of String, Dictionary(Of String, Dictionary(Of String, String))) + updataDevnode.DevFunc = New Dictionary(Of String, (String, Dictionary(Of String, (String, String)))) + + ''遍历节点默认第一个节点为设备属性 + For i As Integer = 0 To node.Nodes.Count - 1 + If i = 0 Then + Dim attr As Dictionary(Of String, Dictionary(Of String, String)) = New Dictionary(Of String, Dictionary(Of String, String)) + updataDevnode.DevAttr.Add(node.Nodes(i).Text, attr) + For j As Integer = 0 To node.Nodes(i).Nodes.Count - 1 + Dim attr2 As Dictionary(Of String, String) = New Dictionary(Of String, String) + attr.Add(node.Nodes(i).Nodes(j).Text, attr2) + '继续遍历子节点 + For k As Integer = 0 To node.Nodes(i).Nodes(j).Nodes.Count - 1 + attr2.Add(node.Nodes(i).Nodes(j).Nodes(k).Text, node.Nodes(i).Nodes(j).Nodes(k).devicetype.ToString) + Next + Next + Else + '判断节点名称不能为"RS485"、"VirtualObject" + If node.Nodes(i).name <> "RS485" AndAlso node.Nodes(i).name <> "VirtualObject" Then + '遍历节点的子节点 + Dim devtype As String = "0" + Dim tnodename As String + If isRoot Then + '"设备存在组:DO设备组信息" + tnodename = $"设备存在组:{node.Nodes(i).name}设备组信息" + If updataDevnode.DevAttr.Values(0).ContainsKey(tnodename) Then + + If updataDevnode.DevAttr.Values(0)(tnodename).ContainsKey("存在:DeviceType") Then + devtype = updataDevnode.DevAttr.Values(0).Item(tnodename).Item("存在:DeviceType") + End If + End If + Else + devtype = node.Nodes(i).DEV_TYPE_DATA + End If + + + Dim func As Dictionary(Of String, (String, String)) = New Dictionary(Of String, (String, String)) + ' 功能块名 ,类型值 ,别名,序号 + ' Dictionary(Of String, (String, Dictionary(Of String, String))) + updataDevnode.DevFunc.Add(node.Nodes(i).Text, (devtype, func)) + + 'Dim tag As AttributeRowNodeTag = node.Tag + + For j As Integer = 0 To node.Nodes(i).Nodes.Count - 1 + + func.Add(node.Nodes(i).Nodes(j).Text, (node.Nodes(i).Nodes(j).index + 1, node.Nodes(i).Nodes(j).deviceAlias)) + + Next + End If + + End If + + + Next + Return updataDevnode + End Function @@ -5258,3 +5542,15 @@ Public Class RoomType ' Public Property RoomType_OldID As String End Class + + +Public Class UpdataDevnode + '设备名称 + Public Property DevName As String + '设备属性列表 + Public Property DevAttr As Dictionary(Of String, Dictionary(Of String, Dictionary(Of String, String))) + '设备功能模块列表 功能模块名称,功能模块回路别名和回路序号 《设备功能名称,《设备类型 ,设备回路集合《回路名称,回路序号》》》 + Public Property DevFunc As Dictionary(Of String, (String, Dictionary(Of String, (String, String)))) + +End Class + diff --git a/BLV_Studio/My Project/AssemblyInfo.vb b/BLV_Studio/My Project/AssemblyInfo.vb index 24b6bfa..fdf6a6c 100644 --- a/BLV_Studio/My Project/AssemblyInfo.vb +++ b/BLV_Studio/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices '通过使用 "*",如下所示: ' - - + + diff --git a/BLV_Studio/Test/GridTest/TableInteraction.vb b/BLV_Studio/Test/GridTest/TableInteraction.vb index 7133c29..2ad9627 100644 --- a/BLV_Studio/Test/GridTest/TableInteraction.vb +++ b/BLV_Studio/Test/GridTest/TableInteraction.vb @@ -464,6 +464,7 @@ Public Class TableInteraction 'Case ' result = $"{buf(2)}"控制温控器 Case "Temp" + result = cellstr If buf.Length > 5 AndAlso cbuf(7).Equals("控制温控器") Then 'cbuf = buf(3).Split(" ") 'result = $"{cbuf(cbuf.Length - 1)}" @@ -473,7 +474,7 @@ Public Class TableInteraction result = $"{result}{cbuf(cbuf.Length - 1)}" End If - + Case Else End Select @@ -4268,7 +4269,7 @@ Public Class TableInteraction Dim btxtr As string Dim bctr As Integer=32 - If checkbuf(0).Equals("1") Then + If checkbuf(1).Equals("1") Then bctr=bctr or (1<<2) End If If checkbuf(3).Equals("1") Then @@ -4351,7 +4352,7 @@ Public Class TableInteraction Dim btxtr As string Dim bctr As Integer=32 - If checkbuf(0).Equals("1") Then + If checkbuf(1).Equals("1") Then bctr=bctr or (1<<2) End If If checkbuf(3).Equals("1") Then diff --git a/BLV_Studio/bin/Debug/BLV_Studio.xml b/BLV_Studio/bin/Debug/BLV_Studio.xml deleted file mode 100644 index 906a3f6..0000000 --- a/BLV_Studio/bin/Debug/BLV_Studio.xml +++ /dev/null @@ -1,11292 +0,0 @@ - - - - -BLV_Studio - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - 服务器密钥 - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - 密钥转换字符编码 - - - - - 日志文件所在父文件夹路径 - - - 日志文件名前缀 - - - 日志文件所在路径 - - - - 保存日志的文件夹完整路径 - - - - - 日志文件前缀 - - - - - 写入错误信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入警告信息记录日志 - - - - - - 写入错误信息记录日志 - - - - - - 写入数据库信息记录日志 - - - - - - 将信息入到日志 - - 日志类型 - 日志内容 - - - - 写日志 - - - - - 日志类型 - - - - 调试信息 - - - 系统运行信息 - - - 警告信息 - - - 错误信息应该包含对象名、发生错误点所在的方法名称、具体错误信息 - - - 致命信息 - - - - 主机ID - - - - - 所属酒店 ID - - - - - 所属酒店名称 - - - - - 主机编号 - - - - - 房号 - - - - - 状态:0 离线,1 在线 - - - - - 注册日期 - - - - - 房态 ID - - - - - 房态名称 - - - - - 房型 ID - - - - - 房型名称 - - - - - 主机 mac 地址 - - - - - mac 绑定时间 - - - - - 主机 IP 地址 - - - - - 备注 - - - - - 请求结果 - - - - - 后台主机列表 - - - - - 酒店 ID - - - - - 酒店编号 - - - - - 酒店名称-中文 - - - - - 酒店名称-英文 - - - - - 繁体名称 - - - - - 联系人 - - - - - 联系电话 - - - - - 地址 - - - - - 酒店授权有效期 - - - - - 酒店创建日期 - - - - - 备注 - - - - - 状态 - - - - - 审批 - - - - - 酒店分组 ID - - - - - 酒店分组名称 - - - - - 请求结果 - - - - - 后台酒店列表 - - - - - 房型ID - - - - - 房型编号 - - - - - 房型名称 - - - - - 回路列表 - - - - - 请求结果 - - - - - 后台房型列表 - - - - - 回路地址 - - - - - 回路名称 - - - - - 英文名称 - - - - - 繁体名称 - - - - - 类型名称 - - - - - 请求结果 - - - - - 操作返回 - - - - - 需要升级的IP和端口 - - - - - - 本地IP和端口 - - - - - - 远程IP和端口 - - - - - - Socket连接状态,默认非连接 - - - - - - 本机按键状态 - - - - - - 机型编号 - - - - - - IP地址 - - - - - - 服务器地址 - - - - - - 子网掩码 - - - - - - 网关 - - - - - - 端口 - - - - - - DNS - - - - - - 软件版本号 - - - - - - 主机时间 - - - - - - MAC - - - - - - 项目编号 - - - - - - 房号ID - - - - - - 房号备注 - - - - - - 房型ID - - - - - - 房型备注 - - - - - - 配置版本号 - - - - - - 房态 - - - - - - 季节 - - - - - - 锁定 - - - - - - 授权时间 - - - - - - 授权到期时间 - - - - - - 房间备注 - - - - - - MCU机型名称 - - - - - - 中控机型名称 - - - - - - 初始化 - - - - - 初始化 - - - - - 获取设备名称 - - 设备类型 - 设备地址 - - - - - 升级序号 - - - - - - 需要升级的IP和端口 - - - - - - 主机端口 - - - - - - 主机soket - - - - - - 初始化界面控件文本 - - - - - 窗体加载事件 - - - - - - - 显示窗体事件 - 实现接口 - - - - - - 发送函数 - - - - - - 获取继电器序号 - - - - - 发送组包 - - - - - - - - 1-13路继电器 - - - - - - - 获取继电器状态 - - - - - - - 获取继电器序号 - - - - - - - 1-5路输出 - - - - - - - 获取C12测试输出序号 - - - - - 获取继电器状态 - - - - - - - 获取输入序号 - - - - - - - C12输入测试 - - - - - - - C12音乐测试 - - - - - - - C5测试音频播放文件下 - - - - - 初始化文件夹可选项 - - - - - C5音频测试 - - - - - - 获取播放文件夹 - - - - - - - 巡回测试 - - - - - - - C12调光 - - - - - - - 设备列表表名 - - - - - 保存按键 - - - - - - - 关闭窗体按键 - - - - - - - 初始化界面控件文本 - - - - 机型测试组名称 - - - - 测试机型列表 - - - - C5机型测试 - - - C12机型测试 - - - 测试机型索引标志位 - - - - 初始化测试Page - - - - - 显示测试机型 - - - - - - 初始化测试机型 - - - - - - 窗体加载函数 - - - - - - - 初始化上一次关闭窗体前保存的配置数据 - - - - - 用户酒店列表 - - - - - 用户酒店分组 - - - - - 根据权限解锁功能 - - - - - 权限状态 - - - - 空权限 - - - 禁止权限 - - - 只读权限 - - - 读写权限 - - - 管理权限 - - - 允许权限 - - - 拒绝权限 - - - - 锁定权限 - - - - - - 锁定只读权限 - - - - - 锁定读写权限 - - - - - 锁定无权限 - - - - - 授权时间权限 - - - - - - 授权时间只读权限 - - - - - 授权时间读写权限 - - - - - 授权时间无权限 - - - - - 授权升级And房态And季节权限 - - - - - - 允许 升级/房态/季节权限 - - - - - 无 升级/房态/季节权限 - - - - - 授权研发管理权限 - - - - - - 允许 研发管理权限 - - - - - 禁止 研发管理权限 - - - - - 授权批量下发权限 - - - - - - 允许 批量下发权限 - - - - - 禁止 批量下发权限 - - - - - 无权限 - - - - - 房型备注列表 - - - - - 房号备注列表 - - - - - 房型备注_下拉框事件 - - - - - - - 房型备注_文本改变事件 - - - - - - - 房号备注_下拉框事件 - - - - - - - 房号备注_文本改变事件 - - - - - - 房型表—根据项目编码查询得到 - - - - 根据项目编码查询房型 - - - - - 房号表—根据项目编码, 房型查询得到 - - - - 根据项目编码,房型查询房号 - - - - - - - 根据项目编码,房号查询房型 - - - - - - - 高级串口设置 - - - - - - - 切换酒店 - - - - - - - 切换用户 - - - - - - - 退出 - - - - - - - 帮助_关于 - - - - - - - 发送测试数据 - - - - - - 检查网络连接 - - - - - - 以哪种方式发送 - - - - - - 当前时间 - - - - - 最后时间 - - - - - 时间间隔 - - - - - 接收数据偏移量 - - - - - 接收数据缓存包 - - - - - 配置串口 - - 串口名 - 串口波特率 - - - - 发送485串口数据 - - - - - - - 接收485串口数据 - - - - - - - 显示串口回复数据 - - - - - - 解析串口数据 - - - - - - 处理读取寄存器信息 - - - - - - 处理输入命令16_设置MAC地址 - - - - - - 处理输入命令17 - - - - - - 刷新设置MAC委托 - - - - - - - 处理设置MAC数据 - - - - - - - 刷新C5输入回复数据 - - - - - 处理输入回复数据 - - - - - 刷新C12输入回复数据 - - - - - 处理输入回复数据 - - - - - 改变Lable背景颜色 - - - - - - - 处理巡回测试 - - - - - - 刷新巡回数据委托 - - - - - - - 处理巡回测试数据 - - - - - - - 刷新巡回数据委托 - - - - - - - 处理巡回测试数据 - - - - - - - 处理巡回测试数据 - - - - - - - 处理设置信息 - - - - - - 处理读取信息 - - - - - - 读取核心参数信息-委托 - - - - - 读取核心参数信息 - - - - - 处理设置MQTT数据 - - - - - - 处理读取MQTT数据 - - - - - - 填充发送数据 - - - - - - - - 填充发送数据包头 - - - - - - - - 获取帧号 - - - - - - 填充发送信息包头 - - - - - - - - 填充C系列数据包 - - - - - - - - - 填充发送校验数据 - - - - - - - - CRC16校验 - - - - - - - - 枚举Data偏移 - - - - - 包头 - - - - - 系统固定4个字节 - - - - - 命令字 - - - - UDP通讯套接字 - - - - Socket网络套接字 - - - - - 是否处于网络接收状态 - - - - - UDP通讯接收线程 - - - - - 包头数据长度 - - - - - 数据CRC校验长度 - - - - - 发送数据包头 - - - - - 系统固定的4个字节 - - - - - 主机项目地址 - - - - - 帧号 - - - - - 搜索命令的表格索引 - - - - - RCU主机搜索命令的表格索引 - - - - - RCU搜索命令的表格索引 - - - - - 查询设备状态的表格索引 - - - - - 设置配置数据标志位 - - - - - 查询批量数据的表格索引 - - - - - 更新连接状态 - - - - - 发送UDP数据 - - - - - - 发送Update数据 - - - - - - 发送Socket数据 - - - - - - UDP接收数据 - - - - - 接收数据处理 - - - - - - - - 检验CRC16成功 - - - - - - - - 处理数据 - - 远程回复数据 - 远程IP和端口 - - - - - 搜索主机偏移量 - - - - - 搜索主机_详细信息 - - - - - 搜索主机 - - - - - 搜索主机列表键值对 - - - - - 搜索主机 - 读取主机参数信息 - - - - - - 局部刷新设备列表委托 - - - - - 刷新设备列表信息 - 局部刷新_委托 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 获取房间状态文本 - - - - - - - 获取房间是否锁定 - - - - - - - 获取房间季节 - - - - - - - 设置12个月的季节 - - - - - - - 获取当月季节 - - - - - - - 获取季节文本 - - - - - - - 搜索主机列表委托 - - - - - 搜索主机列表信息 - - - - - 提示信息委托 - - - - - 读取配置信息委托 - - - - - 查询设备状态 - - - - - - - 刷新查询设备IP和地址委托 - - - - - 刷新查询设备IP和地址 - - - - - 获取设备状态文本 - - - - - - - 获取设备状态文本 - - - - - - - 刷新查询设备状态信息委托 - - - - - 刷新查询设备状态信息 - 局部刷新_委托 - - - - - 处理固件升级 - - - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 升级校验命令处理 - - - - - - - 升级复位命令处理 - - - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 处理设置配置数据 - - - - - - 处理读取配置数据 - - - - - - 解析读取寄存器数据 - - - - - - 处理读取网络信息 - - - - - - 获取DHCP结果 - - - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络DHCP信息委托 - - - - - 读取网络信息委托 - - - - - 读取配置信息委托 - - - - - 读取配置信息委托 - - - - - 处理配置下发 - - - - - - 查询设备状态_枚举 - - - - ID - - - IP地址 - - - 端口号 - - - 设备类型 - - - 设备地址 - - - 设备状态 - - - 查询设备表状态列集合 - - - - 查询设备表状态列集合 - - - - - 匹配配置版本号 - - - - - - 根据项目编码查询项目名称 - - - - - - 处理 TFTP 数据 - - - - - - - 处理C5机型测试 - - - - - - 处理网络设置输入 - - - - - - 处理网络巡回测试 - - - - - - 各机型巡回测试结果 - - - - - - - 处理设置MQTT数据 - - - - - - 处理读取MQTT数据 - - - - - - MQTT信息委托 - - - - - MQTT信息委托 - - - - - 清除记录 - - - - - - - 添加记录文本和颜色 - - 需要添加的记录内容 - 需要设置的记录颜色 - - - - 添加记录 - - - - - - - 添加记录文本和颜色 - - 需要添加的记录内容 - 需要设置的记录颜色 - - - - 添加记录 - - - - - - - 添加匹配文本和颜色 - - 需要添加的记录内容 - 需要设置的记录颜色 - - - - 添加匹配记录 - - - - - - - 项目列表名称 - - - - - 房型列表名称 - - - - - 房间列表名称 - - - - - 配置设备列表名称 - - - - - 判断点击的是哪个Pages - - - - - - - 查询设备列表 - - - - - 项目信息_查询 - - - - - - - 项目信息_增加 - - - - - - - 项目信息_修改 - - - - - - - 项目信息_删除 - - - - - - - 项目表表格点击事件 - - - - - - - 查询设备列表 - - - - - 房型列表_查询 - - - - - - - 房型列表_添加 - - - - - - - 房型列表_修改 - - - - - - - 房型列表_删除 - - - - - - - 房型列表点击事件 - - - - - - - 初始化房间状态 - - - - - 查询设备列表 - - - - - 房间列表_查询 - - - - - - - 房间列表_增加 - - - - - - - 房间列表_修改 - - - - - - - 房间列表_删除 - - - - - - - 房间表格点击事件 - - - - - - 设备类型合集 - - - 设备波特率 - - - 设备端口号 - - - - 设备类型合集 - - - - 0_无效设备 - - - 1_电继电器 - - - 2_电输入_输入状态 - - - 3_电输出_输出状态 - - - 4_服务信息_可配置数量,输出状态 - - - 5_干节点窗帘_可配置数量,输出状态 - - - 开关指示灯 - - - 空调1_空调状态 - - - 红外感应_备用 - - - 空气质量检测设备_备用 - - - 插卡取电_取电状态 - - - 地暖_地暖状态 - - - RCU设备网络 - - - 窗帘_窗帘状态 - - - 继电器_继电器状态 - - - 红外发送_红外发送状态 - - - 直流调光_调光状态 - - - 可控硅调光_可控硅状态 - - - 灯带_灯带状态 - - - 中控 - - - 微信锁_微信锁状态 - - - 背景音乐_背景音乐状态 - - - 房态下发 - - - 主机本地调光 - - - 485PWM调光_PWM调光状态 - - - 总线调光_PBLED调光状态 - - - RCU电源 - - - A9IO开关_独立开关,没有协议区分 - - - A9IO扩展_独立扩展,没有协议区分 - - - A9IO电源_独立电源,没有协议区分 - - - 无线网关轮询_用于轮询控制轮询设备,给无线网关下发配置和询问网关状态 - - - 无线网关主动 - - - - 初始化设备类型,波特率,端口,频率 - - - - - 查询设备列表 - - - - - 配置设备列表_查询 - - - - - - - 配置设备列表_添加 - - - - - - - 配置设备列表_修改 - - - - - - - 配置设备列表_删除 - - - - - - - 设备列表点击表格事件 - - - - - - - 下拉选择项目编号 - - - - - - - 下拉框项目编号文本改变 - - - - - - - 查询配置房型 - - - - - - - 查询房间编号 - - 项目编号 - - - - 新增设备 - - - - - - - MAC地址 - - - - - 匹配次数 - - - - - 点击表格显示主机设备存在 - - - - - - - - - - - - - - 获取匹配主机信息 - - - - - 设置项目信息 - 设置主机信息到设置面板 - - - - - 获取云端匹配数据 - - - - - - 匹配信息 - - - - - 查询房间信息是否存在 - - - - - - - - 查询房间信息是否匹配 - - - - - - - - - 匹配信息表 - - - - 根据项目编码,查询匹配信息 - - - - - - 设置批量表格数据显示 - - - - - - 填充数据_搜索主机 - - - - - - IP地址转换为Byte数组 - - - - - - 端口号转换为Byte数组 - - - - - - 查询项目编号 - - - - - 查询房型编号 - - 项目编号 - - - - 配置存在 - - - - - - - 设置配置 - - - - - 填充设置配置数据 - - - - - - 字符串转4个byte的数组 - - - - - - - 字符串转4个字节Byte - - - - - - - 配置下发 - - - - - 查询设备列表数据 - - - - - - 发送设备列表数据 - - - - - - 获取设备类型 - - - - - - - 获取设备类型 - - - - - - - 获取设备波特率Byte值 - - - - - - - 读取设置配置 - - - - - - - 填充读取设置数据 - - - - - - 是否点击OK - - - - - 设置MAC - - - - - 填充MAC下发数据 - - - - - - MAC地址下发 - - - - - - - MAC地址下发 - - - - - - - 系统信息 - - - - - 网络信息 - - - - - 设备信息 - - - - - 逻辑信息 - - - - - 临时信息 - - - - - 系统信息 - - - - - - - 网络信息 - - - - - - - 设备信息 - - - - - - - 逻辑信息 - - - - - - - 临时信息 - - - - - - - EnRCUHosts - - - - ID - - - 勾选 - - - 升级 - - - 项目编码 - - - 房型 - - - 房号 - - - MAC - - - IP地址 - - - 房间备注 - - - 房态 - - - 机型编号 - - - 软件版本号 - - - 配置版本号 - - - 按键状态 - - - 房号ID - - - 房型ID - - - 端口号 - - - 网关 - - - 子网掩码 - - - DNS - - - 服务器地址 - - - 主机时间 - - - 季节 - - - 锁定 - - - 授权时间 - - - 授权到期时间 - - - MCU机型名称 - - - 中控机型名称 - - - - RFU主机列名 - - - - - 初始化RCU主机表格数据 - - - - 升级文件的名称 - - - - 初始化网络信息 - - - - - 切换本地IP地址 - - - - - - - 网络发送方式 - - - - - - 按键文本改变 - - - - 固件升级_搜索 - - - - - - - 搜索按键文本改变 - - - - - - - 搜索主机 - - - - - 进度条委托 - - - - - - 进度条委托 - - - - - - 浏览-选择文件-固件升级 - - - - - - - 浏览-选择文件-配置下发 - - - - - - - 读取主机系统参数信息 - - - - - 本地IP信息委托 - - - - - 本地IP信息 - - - - - 填充读取命令数据 - - - - - 季节 - - - 房态 - - - 房间是否锁定 - - - - 初始化房间信息 - - - - - 设置季节 - - - - - 设置当月季节 - - - - - - 获取房间状态 - - - - - - - 获取房间是否锁定 - - - - - - - 获取房间季节 - - - - - - - 下发计数 - - - - - 设置主机信息 - - - - - - - 更新MAC地址 - - - - - - 设置主机信息 - - - - - 获取设置总数数据 - - 项目编码 - 房态 - 房型备注房型ID - 房号备注房号ID - 房间备注 - 季节 - 授权到期时间 - 锁定 - - - - - 设置主机信息数据 - - - - - - 获取两个授权时间的Byte数据 - - - - - 获取UTC时间戳 - - - - - - 获取UTC时间戳Byte数组_4个字节长度 - - - - - - - 获取项目编号 - - - - - - - 房型ID - - - - - - - 房号ID - - - - - - - 获取房型 - - - - - - 获取房号 - - - - - - 获取房态 - - - - - - - 获取季节 - - - - - - - 获取季节数据 - - - - - - 获取锁定 - - - - - - 房间备注偏移地址数量 - - - 房间备注偏移地址 - - - - 房间注释 - - - - - - - 项目编码变化事件 - 项目编码与房号同步 - - - - - - - 房号变化事件 - 房号与项目编码同步 - - - - - - - 获取房间设置信息 - - - - - - - 填充设置配置数据 - - - - - - 显示列信息 - - - - - 端口号 - - - - - - - 服务器 - - - - - - - 子网掩码 - - - - - - - 网关 - - - - - - - DNS - - - - - - - 锁定 - - - - - - - 授权时间 - - - - - - - 授权到期时间 - - - - - - - 房间备注 - - - - - - 加载文件大小 - - - 加载数据大小 - - - 加载Hex文件数据 - - - 加载数据Buff - - - 加载结束地址 - - - C1-Hex文件起始值 - - - 解析出的文件数据 - - - 解析出的配置数据 - - - - 解析Hex文件 - - - - - - 匹配信息委托 - - - - - 匹配信息 - - - - - 加载hex文件数据 - - - - - - 匹配数据 - - - 匹配起始地址 - - - 匹配起始值 - - - - 解析Hex文件到Byte数组 - - - - - - - - - 和校验 - 求Byte数组的和校验 - - Byte数组 - - - - - 获取和校验 - - - - - - - - 解析Bin文件 - - - - - - 解析dat文件 - - - - - 状态栏解析文本委托 - 改变文本和颜色 - - - - - - - - 状态栏解析文本 - 改变文本和颜色 - - - - - - - - 状态栏解析文本委托 - 改变文本和颜色 - - - - - - - - 状态栏解析文本 - 改变文本和颜色 - - - - - - - - 匹配信息 - - - - - - - 是否选中 - - - 数据类型 - - - 主机数据 - - - Hex解析 - - - 匹配列名 - - - 匹配数据类型 - - - - 初始化匹配表格信息 - - - - - 下发匹配信息 - - - - - - 获取匹配校验 - - 主机数据 - Hex解析数据 - - - - Tftp端口 - - - Tftp新端口 - - - 是否升级回复 - - - 是否Tftp写请求回复 - - - 是否Tftp发送数据包回复 - - - Tftp回复超时 - - - 校验包回复 - - - 复位回复 - - - 最后端口 - - - 下发升级线程 - - - - 勾选 - - - - - - - 勾选计数 - - - - - - 升级计数 - - - - - 升级总数 - - - - - 同时最大升级个数 - - - - - 勾选下发 - - - - - - - 固件升级 - - - - - 升级方式_两种升级命令, 不同升级方式 - - - - - 开始固件升级 - - - - - 更新连接状态 - - - - - UDP Socket接收数据 - - - - - 按键是否可用 - - - - - 按键是否可用 - - - - - 固件升级-0x0A升级命令 - - - - - - - 固件升级-0xB2升级命令 - - - - - - - 固件升级-0x0A升级命令 - - - - - - - 固件升级-0xB2升级命令 - - - - - - - 配置下发-0xB5升级命令 - - - - - 固件升级-升级命令数据 - - - - - - - - 固件升级-校验命令 - - - - - 固件升级-复位命令 - - - - - MD5值排序 - - - - - - - 升级等待回复 - - 超时时间 - - - - 写请求等待回复 - - 超时时间 - - - - 发送数据包等待回复 - - 超时时间 - - - - 等待校验回复 - - 超时时间 - - - - 等待复位回复 - - 超时时间 - - - - Tftp命令 - - - - - - - 读请求 - - - 写请求 - - - 数据 - - - Ack确认 - - - Tftp_错误 - - - - Tftp开始发送写请求_数据 - - - - - Tftp开始发送写请求 - - - - - Tftp开始发送写请求_数据 - - - - - - 重发次数标志位 - - - - - 向Tftp发送升级数据 - - - - - 填充单包数据 - - - - - - - - - 填充单包_取对应包数据 - - - - - - - - - 进度条变化 - - - - - 进度条委托 - - - - - - 进度条委托 - - - - - - 是否批量下发改变进度值 - - - - - 配置下发 - - - - - 按键次数 - - - - - 设置寄存器组包 - - - - - - - - 发送方式 - - - - - - 读取寄存器组包 - - - - - - - - 设置主机信息按键 - - - - - - - 设置主机信息 - - - - - 读取信息 - - - - - - - 获取设置总数数据 - - - - - - 复位命令 - - - - - - - 研发使用MAC地址下发 - - - - - - - 是否点击OK - - - - - 设置MAC - - - - - 网络计数 - - - - - 设置网络信息按键 - - - - - - - 设置网络信息 - - - - - 获取 DHCP 使能 - - - - - - - 获取DHCP包 - - - - - - - - 获取DHCP设置包 - - - - - - - - 获取服务器IP地址数据 - - - - - - - - - - 获取设置DHCP数据 - - - - - - 设置按键状态 - - - - - - 设置服务器按键状态 - - - - - - 读取网络信息 - - - - - - - 获取读取数据 - - - - - - MQTT选择 - - - - - - - 设置计数 - - - - - 设置MQTT - - - - - - - 获取 MQTT 数据 - - - - - - 获取 MQTT 网络数据 - - - - - - 获取MQTT单项数据 - - - - - - - 获取MQTT单项数据 - - - - - - - 读取计数 - - - - - 读取MQTT - - - - - - - 获取 MQTT 数据 - - - - - - 获取 MQTT 数据 - - - - - - 系统信息 - - - - - - - 网络信息 - - - - - - - 设备信息 - - - - - - - 逻辑信息 - - - - - - - 临时信息 - - - - - - 主机信息 - - - 主板信息 - - - - 初始化信息 - - - - - 设置核心板参数 - - - - - - - 获取设置信息 - - - - - - 读取核心参数 - - - - - - - 批量数据枚举 - - - - ID - - - 勾选 - - - 房号 - - - MAC - - - IP地址 - - - - 批量数据表格列名 - - - - - 初始化批量下发表格数据 - - - - - 刷新云数据 - 根据当前选中酒店查询 - - - - - - - 获取云端数据 - - - - - - 比对数据 - - - - - 获取比对结果 - - - - - - - - 批量表格点击事件 - - - - - - - 设置RCU表格数据显示 - - - - - - 勾选表格信息 - - - - - - - 批量配置 - - - - - - - 获取批量表格勾选个数 - - - - - - 设置云端信息到主机 - - - - - 获取设置云端发送数据 - - - - - - - - 获取房号 - - - - - - - 获取云端数据要设置主机的IP地址 - - - - - - - 添加记录文本和颜色 - - 需要添加的记录内容 - 需要设置的记录颜色 - - - - 初始化界面控件文本 - - - - - 初始化酒店列表 - - - - - - 权限列表 - - - - - - - 锁定权限 - - - 授权时间 - - - 升级/房态/季节 - - - 研发管理 - - - 批量下发 - - - - 选择酒店事件 - - - - - - - 提示信息 - - - - - - 添加权限 - - - - - 添加上一次保存的酒店权限 - - - - - 权限管理_权限信息 - - - - - 初始化酒店区域信息 - - - - - 树状目录点击事件 - - - - - - - 酒店区域表列名_枚举 - - - - - - - 项目编码 - - - 酒店名称 - - - - 酒店区域表列名 - - - - - 初始化酒店表格 - - - - - 关闭窗体 - - - - - - - 窗体关闭事件 - - - - - - - 重试按键 - - - - - - - 解绑 - - - - - - - 取消 - - - - - - - 显示窗体 - - - - - 获取MAC地址 - - - - - - 字符串转换Byte数组 - - - - - - - 初始化界面控件文本 - - - - - 串口波特率 - - - - - 窗体加载事件 - - - - - - - 获取可用串口 - - - - port次数 - - - - 初始化串口波特率 - - - - - 串口点击按键 - - - - - - - 串口通讯开关 - - - - - - - 关闭串口 - - - - - 打开串口 - - - - - 配置串口 - - 串口名 - 串口波特率 - - - - 初始化界面控件文本 - - - - - 窗体加载事件 - - - - - - - 显示窗体事件 - 实现接口 - - - - - - 发送函数 - - - - - - 获取继电器序号 - - - - - 发送组包 - - - - - - - - 1-13路继电器 - - - - - - - 获取继电器状态 - - - - - - - 获取继电器序号 - - - - - - - 1-5路输出 - - - - - - - 获取C12测试输出序号 - - - - - 获取继电器状态 - - - - - - - 获取输入序号 - - - - - - - C12输入测试 - - - - - - - C12音乐测试 - - - - - - - C5测试音频播放文件下 - - - - - 初始化文件夹可选项 - - - - - C5音频测试 - - - - - - 获取播放文件夹 - - - - - - - 巡回测试 - - - - - - - C12调光 - - - - - - - 初始化界面控件文本 - - - - - 窗体加载 - - - - - - - 发送函数 - - - - - - 调光 - - - - - 初始化调光信息 - - - - - 调光发送 - - - - - - 调光数据 - - - - - - 调光参数 - - - - - - - 窗体关闭事件 - - - - - - - 初始化界面控件文本 - - - - - 窗体加载事件 - - - - - - - 显示窗体事件 - 实现接口 - - - - - - 发送函数 - - - - - - 发送组包 - - - - - - - - 获取继电器序号 - - - - - 1-24路继电器 - - - - - - - 获取继电器序号 - - - - - - - 获取继电器状态 - - - - - - - C5-IO 检测输入 - - - - - - - 输出测试 - - - - - - - 获取C5测试输出序号 - - - - - 获取继电器状态 - - - - - - - 获取输入序号 - - - - - - - C5测试音频播放文件下 - - - - - 初始化文件夹可选项 - - - - - 音乐播放 - - - - - - - C5音频测试 - - - - - - 获取播放文件夹 - - - - - - - 起始时间 - - - - - C5_巡回测试 - - - - - - - 设置MAC地址 - - - - - - - 发送MAC - - - - - - - - 初始化界面控件文本 - - - - - 窗体加载事件 - - - - - - - 显示窗体事件 - 实现接口 - - - - - - 发送函数 - - - - - - 获取继电器序号 - - - - - 发送组包 - - - - - - - - 1-13路继电器 - - - - - - - 获取继电器状态 - - - - - - - 获取继电器序号 - - - - - - - 1-5路输出 - - - - - - - 获取C12测试输出序号 - - - - - 获取继电器状态 - - - - - - - 获取输入序号 - - - - - - - C12输入测试 - - - - - - - C12音乐测试 - - - - - - - C5测试音频播放文件下 - - - - - 初始化文件夹可选项 - - - - - C5音频测试 - - - - - - 获取播放文件夹 - - - - - - - 巡回测试 - - - - - - - C12调光 - - - - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 初始化FTP连接参数 - - 端口号 - 用户名 - 用户密码 - - - - 创建类单例对象 - - - - - - Ftp服务器地址 - - - - - - 判断FTP文件是否存在 - - - - - - - 创建Ftp文件夹 - - Ftp文件夹路径 - 创建所有不存在的文件夹路径 - - - - 上传本地文件至Ftp - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 从Ftp下载文件至本地 - 从FTP下载压缩包,到本地指定路径 - - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 初始化FTP连接参数 - - 端口号 - 用户名 - 用户密码 - - - - 创建类单例对象 - - - - - - Ftp服务器地址 - - - - - - 判断FTP文件是否存在 - - - - - - - 创建Ftp文件夹 - - Ftp文件夹路径 - 创建所有不存在的文件夹路径 - - - - 上传本地文件至Ftp - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 从Ftp下载文件至本地 - 从FTP下载压缩包,到本地指定路径 - - - - - 显示测试窗体接口 - 测试窗体为各测试机型 - - - - - - 初始化 - - - - - 语言数据 - - - - 登录界面_语言 - - - 登录界面_登录 - - - 登录界面_用户名 - - - 登录界面_密码 - - - 登录界面_自动登录 - - - 登录界面_记住密码 - - - 登录界面_确定 - - - 登录界面_取消 - - - - 主界面_C系列配置工具 - - - - - 主界面_用户管理 - - - - - 主界面_切换酒店 - - - - - 主界面_切换用户 - - - - - 主界面_网络设置 - - - - - 主界面_串口设置 - - - - - 主界面_退出 - - - - - 主界面_帮助 - - - - - 主界面_关于 - - - - - 主界面_当前酒店 - - - - - 主界面_项目编码 - - - - - 主界面_酒店名称 - - - - - 主界面_欢迎您 - - - - - 主界面_酒店列表 - - - - - 主界面_请选择您的酒店 - - - - - 主界面_所有酒店 - - - - - 主界面_选中 - - - - - 主界面_松开 - - - - - 主界面_本地IP - - - - - 主界面_本地端口 - - - - - 主界面_远程IP - - - - - 主界面_远程端口 - - - - - 主界面_打开连接 - - - - - 主界面_断开连接 - - - - - 主界面_串口名称 - - - - - 主界面_波特率 - - - - - 主界面_打开串口 - - - - - 主界面_关闭串口 - - - - - 主界面_主机管理 - - - - - 主界面_搜索 - - - - - 主界面_广播 - - - - - 主界面_直连 - - - - - 主界面_主机列表 - - - - - 主界面_全选 - - - - - 主界面_勾选 - - - - - 主界面_升级 - - - - - 主界面_按键 - - - - - 主界面_房号ID - - - - - 主界面_房号 - - - - - 主界面_房型ID - - - - - 主界面_房型 - - - - - 主界面_房态 - - - - - 主界面_MAC - - - - - 主界面_机型编号 - - - - - 主界面_软件版本 - - - - - 主界面_配置版本 - - - - - 主界面_IP地址 - - - - - 主界面_端口 - - - - - 主界面_网关 - - - - - 主界面_子网掩码 - - - - - 主界面_DNS - - - - - 主界面_服务器 - - - - - 主界面_主机时间 - - - - - 主界面_季节 - - - - - 主界面_锁定 - - - - - 主界面_授权时间 - - - - - 主界面_授权到期时间 - - - - - 主界面_房间备注 - - - - - 主界面_Core - - - - - 主界面_Model - - - - - 主界面_固件升级 - - - - - 主界面_文件路径 - - - - - 主界面_浏览 - - - - - 主界面_升级 - - - - - 主界面_设置项目信息 - - - - - 主界面_出租 - - - - - 主界面_退房 - - - - - 主界面_空房 - - - - - 主界面_待租 - - - - - 主界面_春 - - - - - 主界面_夏 - - - - - 主界面_秋 - - - - - 主界面_冬 - - - - - 主界面_正常 - - - - - 主界面_设置 - - - - - 主界面_清空 - - - - - 主界面_更新云端数据 - - - - - 主界面_勾选下发 - - - - - 主界面_匹配信息 - - - - - 主界面_CKS - - - - - 主界面_数据类型 - - - - - 主界面_主机数据 - - - - - 主界面_Hex解析 - - - - - 主界面_匹配 - - - - - 主界面_不匹配 - - - - - 主界面_配置下发 - - - - - 主界面_提示 - - - - - 主界面_等待中 - - - - - 主界面_读取设置 - - - - - 主界面_设置MAC - - - - - 主界面_配置下发信息 - - - - - 主界面_查询设备状态 - - - - - 主界面_设备类型 - - - - - 主界面_设备地址 - - - - - 主界面_设备状态 - - - - - 主界面_在线 - - - - - 主界面_离线 - - - - - 主界面_通讯测试 - - - - - 主界面_系统信息 - - - - - 主界面_设备信息 - - - - - 主界面_网络信息 - - - - - 主界面_逻辑信息 - - - - - 主界面_临时信息 - - - - - 主界面_清除记录 - - - - - 主界面_通讯记录 - - - - - 主界面_机型测试 - - - - - C5机型_C5 - - - - - 测试界面_继电器控制 - - - - - 测试界面_IO输出 - - - - - 测试界面_IO输入 - - - - - 测试界面_音乐 - - - - - 测试界面_巡回测试 - - - - - 测试界面_输入检测 - - - - - 测试界面_播放文件夹 - - - - - 测试界面_播放文件序号 - - - - - 测试界面_播放 - - - - - 测试界面_音乐文件夹 - - - - - 测试界面_提示音文件夹 - - - - - 测试界面_助眠文件夹 - - - - - 测试界面_门铃文件夹 - - - - - 测试界面_欢迎词文件夹 - - - - - 测试界面_助眠文件夹1-冥想 - - - - - 测试界面_助眠文件夹2-海浪 - - - - - 测试界面_助眠文件夹3-深林 - - - - - C12机型_C12 - - - - - C12机型_调光 - - - - - C12机型_调光测试 - - - - - 主界面_研发使用 - - - - - 主界面_使能 - - - - - 主界面_使用下面的 IP 地址 - - - - - 主界面_MQTT - - - - - 主界面_阿里云 - - - - - 主界面_产品密钥 - - - - - 主界面_设备名称 - - - - - 主界面_设备秘钥 - - - - - 主界面_发布会话 - - - - - 主界面_订阅会话 - - - - - 主界面_在线时间 - - - - - 主界面_域名 - - - - - 主界面_客户端ID - - - - - 主界面_串口打印信息 - - - - - 主界面_设置核心参数 - - - - - 主界面_主机模块型号 - - - - - 主界面_主板型号 - - - - - 主界面_设置参数 - - - - - 主界面_读取参数 - - - - - 登录界面_登录失败 - - - - - 登录界面_用户不存在 - - - - - 登录界面_数据库连接成功! - - - - - 登录界面_数据库连接失败! - - - - - 登录界面_无法访问云端数据! - - - - - 登录界面_密码错误,请重试! - - - - - 登录界面_请输入用户账号 - - - - - 登录界面_请输入密码 - - - - - 主界面_请选择您名下的酒店 - - - - - 主界面_请先选择有效串口 - - - - - 主界面_请先选择有效波特率 - - - - - 主界面_串口打开失败,原因 - - - - - 主界面_串口发送错误!原因 - - - - - 主界面_串口接收数据失败,原因 - - - - - 主界面_巡回测试成功 ===================暂未使用 - - - - - 主界面_巡回测试失败 - - - - - 主界面_Port输入不合法 - - - - - 主界面_IP输入不合法 - - - - - 主界面_请打开网络或者串口 - - - - - 主界面_未知命令 - - - - - 主界面_未知状态 - - - - - 主界面_升级就绪 - - - - - 主界面_升级完成 - - - - - 主界面_升级失败 - - - - - 主界面_文件块数错误 - - - - - 主界面_文件类型错误 - - - - - 主界面_文件MD5值错误 ===================暂未使用 - - - - - 主界面_设置成功 - - - - - 主界面_设置失败 - - - - - 主界面_读取完成 - - - - - 主界面_下发成功 - - - - - 主界面_下发失败 - - - - - 主界面_当前房间未配置 - - - - - 主界面_请选择项目编号 - - - - - 主界面_请选择房间编号 - - - - - 主界面_项目编号为空 - - - - - 主界面_配置版本为空 - - - - - 主界面_项目编码不匹配 - - - - - 主界面_设备为空 - - - - - 主界面_准备文件 - - - - - 主界面_房号不可批量下发 - - - - - 主界面_房间注释不可批量下发 - - - - - 主界面_请选择要下发的信息和主机 - - - - - 主界面_正在解析Hex文件 - - - - - 主界面_解析完成 - - - - - 主界面_请搜索要升级的主机 - - - - - 主界面_请扫描MAC地址 - - - - - 主界面_全部 - - - - - 主界面_房号ID不匹配 - - - - - 主界面_房型ID不匹配 - - - - - 主界面_房号与房号ID不匹配 - - - - - 主界面_房型与房型ID不匹配 - - - - - 主界面_房号ID与房型ID不匹配 - - - - - 主界面_房号ID与MAC地址不匹配 - - - - - 主界面_请选择需要配置的主机 - - - - - 主界面_不能为空 - - - - - 主界面_正在解析Bin文件 - - - - - 主界面_请选择需要升级的文件 - - - - - 主界面_测试中 - - - - - 主界面_串口 - - - - - 主界面_停止 - - - - - 主界面_房号不能为空 - - - - - 主界面_请选择要读取的项目信息项 - - - - - 主界面_未查询到登录信息 - - - - - 主界面_请检查网络是否连接成功 - - - - - 主界面_登录超时 - - - - - 主界面_DHCP - - - - - 主界面_自定义云 - - - - - 主界面_云 - - - - - 主界面_后台 - - - - - 新增_批量数据下发 - - - - - 新增_云端数据 - - - - - 新增_刷新 - - - - - 新增_对比 - - - - - 新增_批量配置 - - - - - 语言名称 - - - - - - 语言版本 - - - - - - 初始化语言数据 - - - - - - 将类对象序列化为xml文件 - - - - - - - 从Xml文件中反序列化成指定类 - - - - - - - - 初始化 - - - - - 登录数据 - - - - - 登录状态 - - - - - 登录提示 - - - - - 用户信息 - - - - - 酒店数据 - - - - - 初始化酒店权限 - - - - - 权限状态ID - - - - - 权限ID - - - - - 权限名称 - - - - - 初始化酒店组 - - - - - 酒店组ID - - - - - 酒店组名称 - - - - - 酒店组 - - - - - 初始化酒店信息 - - - - - 酒店ID - - - - - 项目编码 - - - - - 酒店名称 - - - - - 酒店权限 - - - - - 酒店组ID - - - - - 酒店组名 - - - - - 酒店ID - - - - - 项目编码 - - - - - 酒店名称 - - - - - 权限状态 - - - - - 权限ID - - - - - 权限名称 - - - - - 用户头像 - - - - - 调光 - - - - - 调光滑动值 - - - - - 调光输入值 - - - - - 是否是网络发送 - - - - - 是否是串口发送 - - - - - 查询到的酒店编码 - - - - - 查询到的酒店名称 - - - - - 查询到权限 - - - - - 登录返回数据 - json序列号 - - - - - 后台接口返回酒店列表数据 - - - - - 后台接口返回房型列表数据 - - - - - 后台接口返回主机列表数据 - - - - - 语言数据 - - - - - SqlServer - - - - - 登录数据库 - - - - - 用户名 - - - - - 用户表格 - - - - - 本地IP - - - - - 本地端口号 - - - - - 远程IP地址 - - - - - 远程端口号 - - - - - 连接状态,默认非连接 - - - - - 是否通过UDP发送数据 - - - - - 回复超时 - - - - - 是否重试绑定MAC - - - - - 是否解绑MAC - - - - - 获取本地可用IP - - - - - - Byte数组转字符串 - - - - - - - 判断文本不能为空 - 文本框 - - - - - - - 判断文本不能为空 - 下拉框 - - - - - - - 等待回复 - - 是否回复标志位 - 超时时间 - - - - 延时N秒 - - 延时时间值 - - - - IP地址转换为Byte数组 - - - - - - - 端口号转换为Byte数组 - - - - - - - Int转2个字节Byte - 低字节在前,高字节在后 - - - - - - - Int转2个字节Byte - 高字节在前,低字节在后 - - - - - - - 获取文件的MD5值 - 返回Byte数组值 - - 文件路径 - - - - - 获取文件的MD5值 - 返回String字符串 - - 文件路径 - - - - - 获取数据的MD5值 - 返回MD5校验的Byte数组 - - 文件数据 - - - - - 获取数据的MD5值 - 返回MD5校验的Byte数组 - - 文件数据 - - - - - 获取字符串的MD5值 - - 需要求MD5的原文字符串 - - - - - 分块函数 - 计算Byte数组的块数 - - - - - - - - 字符串转换Byte数组 - 字符串为连续且不包含任意字符的字符串 - - - - - - - 把UNIX时间戳转换为标准时间 - - 要转换的UNIX时间戳 - 时区 - intTime所代表的标准时间 - - - - 判断网络信息是否合法 - - - - - - - - 判断文本输入控件输入是否合法 - - - - - - - Post请求 - - - - - - - - 处理酒店列表接口信息 - - - - - - 处理主机列表接口信息 - - - - - - 处理主机列表接口信息 - - - - - - 设置MAC地址返回结果 - - - - - 处理设置主机MAC接口信息 - - - - - - 获取操作系统已用的端口号 - - - - - 获取随机端口号 - - - - - 发送测试数据序号 - - - - 填充C5串口测试 - - - - - - - 获取发送序号 - - - - - - 和校验取余数 - 求Byte数组的和校验取余数 - - Byte数组 - - - - - 填充测试数据参数 - - 测试状态 - 设备类型 - 设备地址-默认为0 - 测试设备Cmd - 参数 - - - - - 填充测试数据参数 - - 测试状态 - 设备类型 - 设备地址-默认为0 - 测试设备Cmd - - - - - 连接字符串 - - - - - MySQL 连接器 - - - - - 初始化 MySQL 连接对象 - - - - - - - - - - 连接My SQL数据库 - - - - - 插入MySQL数据 - - - - - - - 修改MySQL数据 - - - - - - - 查询MySQL数据 - - 需要查询的列 - - - - - 查询MySQL数据 - - 需要查询的列 - 需要查询的数据表名 - 需要查询的条件,默认为空 - - - - - 获取多语种版本信息 - - - - - - 获取云端数据信息 - - - - - - SQL连接 - - - - - SQL适配器 - - - - - SQL数据集 - - - - - 是否连接数据库 - - - - - 初始化 - - - - - 连接数据库 - - IP地址或计算名 - 数据库名 - 安全连接情况(真或假),若是Windows验证方式则为真,若是用户名及密码登录则为假 - 上项为假时,提供用户名 - 上项为假时,提供密码 - - - - 获取多语种版本信息 - - - - - - 获取多语种版本信息 - - - - - - SqlServer查询 - - 需要查询的数据表名 - 要显示的表格控件 - 需要查询的条件,默认为空 - - - - SqlServer查询 - - 要查询的列 - 需要查询的数据表名 - 要显示的表格控件 - 需要查询的条件,默认为空 - - - - SqlServer查询 - - 需要查询的数据表名 - 需要查询的条件,默认为空 - - - - SqlServer查询 - - 需要查询的列 - 需要查询的数据表名 - 需要查询的条件,默认为空 - - - - - SqlServer添加 - - 需要添加的数据表名 - 要显示的表格控件 - 需要添加的数据条件,(字段1,字段2,字段3) values(字段1值,字段2值,字段3值) - (条件中若是包含中文,则用N'{值}'表示) - - - - SqlServer添加 - - 需要添加的数据表名 - 需要添加的数据条件,(字段1,字段2,字段3) values(字段1值,字段2值,字段3值) - (条件中若是包含中文,则用N'{值}'表示) - - - - SqlServer修改 - - 需要修改的数据表名 - 要显示的表格控件 - 需要修改的数据条件,Set 字段1 = 修改后的值 Where 字段1 = 修改前的值 - (条件中若是包含中文,则用N'{值}'表示) - - - - SqlServer删除 - - 需要删除的数据表名 - 要显示的表格控件 - 需要删除的数据条件,Where 字段1 = 字段1值 And 字段2 = 字段2值 And 字段3... - (条件中若是包含中文,则用N'{值}'表示) - - - - 获取匹配的用户信息 - - 用户账号 - 用户密码 - - - - - 关闭连接 - - - - - 用户Uid唯一索引_用户名 - - - - - 用户密码 - - - - - 创建日期 - - - - - 是否有效 - - - - - C系列配置工具权限所属域ID - - - - - 用户表名称 - - - - - - 用户表-权限关联表名称 - - - - - - 域-权限关联表名称 - - - - - - 权限表名称 - - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 是否为唯一值 - - - - - - 1 byte,小整数值 - - - - - 2 bytes,大整数值 - - - - - 3 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 8 bytes,极大整数值 - - - - - 4 bytes,单精度浮点数值 - - - - - 8 bytes,双精度浮点数值 - - - - - 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2.小数值 - - - - - 3 bytes,日期值,YYYY-MM-DD - - - - - 3 bytes,时间值或持续时间,HH:MM:SS - - - - - 1 bytes,年份值,YYYY - - - - - 8 bytes,混合日期和时间值,YYYY-MM-DD HH:MM:SS - - - - - 4 bytes,混合日期和时间值,时间戳,YYYYMMDD HHMMSS - - - - - 0-255 bytes,定长字符串 - - - - - 0-65535 bytes,变长字符串 - - - - - 0-255 bytes,不超过 255 个字符的二进制字符串 - - - - - 0-255 bytes,短文本字符串 - - - - - 0-65 535 bytes,二进制形式的长文本数据 - - - - - 0-65 535 bytes,长文本数据 - - - - - 0-16 777 215 bytes,二进制形式的中等长度文本数据 - - - - - 0-16 777 215 bytes,中等长度文本数据 - - - - - 0-4 294 967 295 bytes,二进制形式的极大文本数据 - - - - - 0-4 294 967 295 bytes,极大文本数据 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 数据类型是否带符号 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 数据库语句助手 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - 注意:添加一条数据库帮助语句时,需要考虑Mysql/Sqlite/Mssql等数据库是否支持命令,不支持则需要在对应帮助类中重写该帮助语句 - 注意:Sqlite数据库与大多数据库不相同,DB开头数据库语句大多不适用 - - - - - - 查询指定数据表符合条件的所有数据 - - 指定表名 - 查询条件, - - - - - 查询表符合条件的所有指定列的数据 - - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询表符合条件的所有指定列的数据 - - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据表名 - 查询条件 - - - - - 查询指定数据表的信息 - - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在数据库中存在的数量 - - 表名 - - - - - 数据表插入一行数据 - - 表名 - 列名字符串 - 列值字符串 - - - - - 数据表插入一行数据 - - 表名 - 列名与列值键值对 - - - - - 数据表插入一行,通过命令参数方式执行时使用 - - - - - - - - 数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 表名 - 字段列表 - - - - - 更新指定表数据 - - 指定表名 - 更新字符串 - - - - - - 更新指定表数据 - - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 指定数据表增加一列数据 - - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 数据表删除一列数据 - - 表名 - 需要删除的列名,仅一列 - - - - - 删除指定表多行数据 - - 表名 - 条件 - - - - - 创建数据表 - - 表名 - 创建表的列信息字符串 - - - - - 创建数据表,如果存在则不创建 - - 表名 - 创建表的列信息字符串 - - - - - 清空数据表,表依旧存在 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的去重数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据库名 - 数据表名 - 查询条件 - - - - - 查询指定数据库中指定数据表符合条件的所有数据 - - - 数据库名 - 数据表名 - 查询条件(可选) - - - - - 查询指定数据库中指定数据表的信息 - - 数据库名 - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在指定数据库中存在的数量 - - 数据库名 - 表名 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名字符串 - 列值字符串 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名与列值键值对 - - - - - 指定数据库中数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 数据库名 - - 需要插入列名的集合 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新字符串 - - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 数据库名 - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 指定数据库中指定数据表增加一列数据 - - 数据库名 - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 指定数据库中数据表删除一列数据 - - 数据库名 - 表名 - 需要删除的列名,仅一列 - - - - - 指定数据库中指定表删除多行数据 - - 数据库名 - 表名 - 条件 - - - - - 指定数据库中创建数据表 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 指定数据库中创建数据表,如果存在则不创建 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 清空指定数据库中数据表,表依旧存在 - - 数据库名 - 数据表名 - - - - - 删除指定数据库中数据表 - - 数据库名 - 数据表名 - - - - - 数据库通用命令执行器 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - - - - 数据库类型,目前支持Mysql与Sqlite - - - - - 打开数据库连接 - - - - - - 关闭数据库连接 - - - - - 创建当前连接的命令执行句柄 - - - - - - 运行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 开启事务 - - - - - - 提交事务 - - - - - 回滚事务 - - - - - 创建数据参数 - - 参数数据类型 - 参数名称 - 参数值 - - - - - 添加数据参数 - - - - - - - - - 清空数据 - - - - - 回收资源 - - - - - 查询指定数据表的信息 - - - - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建类单例对象 - - - - - - 设备对象基类信息 - - - - - - 设备对象基类信息 - - - - - - 设备对象基类信息 - - - - - - 设备对象基类信息 - - - - - - 设备键值对 设备名-设备信息集合 主机=主机名 外设=外设名+播马地址 - - - - - 设备动作信息 设备名-动作信息集合 - - - - - 保存模型信息至Xml文件 - - xml完整路径 - - - - - 获取节点选择项对应的数值 - - - - - - 动作输出使能 - - - 房态 - - - 控制取电服务 - - - 取电状态 - - - 勿扰状态 - - - 清理状态 - - - 呼叫状态 - - - 洗衣状态 - - - 退房状态 - - - 稍后状态 - - - SOS状态 - - - 预约待租状态 - - - 开锁状态 - - - 行李状态 - - - 保险箱状态 - - - 门磁状态 - - - 提示音状态 - - - 背光状态 - - - 季节状态 - - - 时间状态 - - - 起夜状态 - - - 锁定状态 - - - 保留字段 - - - - 设备键值对 设备名-设备信息集合 主机=主机名 外设=外设名+播马地址 - - - - - RCU设备名 - - - - 刷新锁计数 - - - 进度条 控件 - - - 表格控件 - - - 条件文件名 - - - - 设备对象基类信息 - - - - - 基类文件名 - - - - 条件 - - - - - - 主机名 - - - - - - 设备键值对 设备名-设备信息集合 主机=主机名 外设=外设名+播马地址 - - - - - 设备动作信息 设备名-动作信息集合 - - - - - 场景号 累加 - - - - 文件是否有修改,如果有修改,则在关闭时提示保存 - - - - 列的开始加载位置 - - - - - 服务插入行起始位 - - - - - 固定行 - - - - - 设备名 - - - - - 功能名 - - - - - 功能下属节点ID - - - - - 功能下属节点别名 - - - - - 条件列名 - - - - - 固定列 - - - - - 行号 - - - - - 列数据的数据类型 - - - - - 表列-音乐数据 - - - - - 表列-开关数据 - - - - - 表列-服务添加 - - - - - - - - - - 按键开 - - - - - 按键关 - - - - - - - - - - - 表头初始化 - - - - - 加载设备头输出信息 - - - - - - - - - 加载设备输入信息 - - - - - - 加载设备输入信息 - - - - - - 模型关联的表格控件 - - - - - - 从动作行节点获取动作数据 - - - - - - - 根据RCU模型的设备存在属性组,配置设备存在数据 - - 模型节点 - - - - - 配置RCU模型设备存在数据 - - 模型节点 - - - - - Integer 类型转 4 字节 byte数组,高字节在前 - - - - - - - Integer 类型转 3 字节 byte数组,高字节在前 - - - - - - - 行数据集合 - - - - - 设备模型名 - - - - - 按键来类型 - - - - - 无检测 - - - - - 别名转换所使用的编码格式,默认方式GBK - 8 - - - - Integer 类型转 4 字节 byte数组,高字节在前 - - - - - - - Integer 类型转 3 字节 byte数组,高字节在前 - - - - - - - 配置RCU模型设备存在数据 - - 模型节点 - - - - - 根据RCU模型的设备存在属性组,配置设备存在数据 - - 模型节点 - - - - - 在模型节点下查询指定名称的设备组节点 - - 模型节点 - - - - - 获取输入类型设备对象的回路设置 - - - - - - - 填充数据帧 - - 包含帧类型和帧参数 - - - - - CRC16校验 - - - - - - - - 获取设备对象下的所有动作编译数据(所有的设备对象动作数据) - - - - - - 从动作行节点获取动作数据 - - - - - - - 获取条件组节点下的条件编译数据 - - 条件组节点 - - - - - 客户名称 - - - - - - 客户索引 - - - - - - 客户索引 - - - - - - 列名 - - - - - 填充表 - - - - - 单独下载控制开关 和 separateMap 一起使用 - - - - - 文件同步线程 - - - - - 本地同步文件夹路径 - - - - - 数据库登录 - - - - - FTP同步标志 - - - - - FTP同步间隔 - - - - - - - 同步文件夹本地路径 - 同步云文件夹路径 - - - - 获取数据库文件数据 - - - - - - - - - - - - - - - 文件比对 - - - - - FTP下载 - - - - - 条件信息 - - - - - 执行方式 - - - - - 条件名 - - - - - 条件数据类型 - - - - - 条件数据范围 - - - - - 条件数据取值 - - - - - 条件数据默认值 - - - - - 条件描述 - - - - 输出信息打印 - - - - 场景编号,从1开始 - - - - - 动作编号,从1开始 - - - - - 便于索引的动作编号 - - - - - 事件键值对,用于保存事件编号和对应的节点 - - - - - 节点集合,表明该设备在哪些地方产生了调用 - - - - - 节点集合,表明该动作组被哪些地方调用 - - - - - 节点集合,表明该场景被哪些地方调用 - - - - - 所有已配置词条的小宝的集合 - - - - - 动作组集合,键为动作组别名,键位动作组节点 - - - - - 模型集合,键为设备对象别名,键为模型节点 - - - - - 模型集合,键为设备对象行号,键为模型节点 - - - - - 设备对象集合,键为设备对象别名,键为设备对象节点 - - - - - 场景模式集合,键为设备对象别名,键为设备对象节点 - - - - - 所有设备对象的集合 - - - - - 所有非设备事件的自定义场景集合 - - - - - 所有设备存在的集合 - - - - - 所有小宝的集合 - - - - - RCU模型节点 - - - - - 别名转换所使用的编码格式,默认方式GBK - - - - - 单条数据帧,最大动作数量,默认80 - - - - - 键为场景别名,值为场景编号 - g - - - - 键为场景编号,值为场景别名与设备动作编号 - - - - - 输出对应类型信息 - - - - - - - 输出执行信息 - - - - - - 输出警告信息 - - - - - - 输出错误信息 - - - - - - 填充编译所需要的必要索引信息 - - - - - 编译 - - - - - 下载 - - - - - 规则检测 - - - - - 填充数据帧 - - 包含帧类型和帧参数 - - - - - CRC16校验 - - - - - - - - 在模型节点下查询指定名称的设备组节点 - - 模型节点 - - - - - 在模型节点下查询属性集节点 - - 模型节点 - - - - - 在属性集节点下查询指定名称的属性组节点 - - 属性集合节点 - 属性组名称 - - - - - 在属性组节点下查询属性节点 - - - - - - - - 获取节点选择项对应的数值 - - - - - - - 在模型节点下查询指定组名下的指定名称属性节点 - - 模型节点 - - - - - 在模型节点下查询指定组名下的指定名称的属性节点值 - - 模型节点 - - - - - 在模型节点下查询指定组名下的指定名称的属性节点值 - - 模型节点 - - - - - 在属性组节点下查询指定属性名的属性节点值 - - 属性组节点 - 属性值 - - - - - 在模型节点下查询指定名称的设备组节点 - - 模型节点 - 设备组名 - - - - - 填充小宝数据 - - - - - - 获取小宝词条组的数据 - - 小宝词条组节点 - - - - - 填充配置信息 - 修改记录: - 2022-05-16 曹聪 - 1、下发的软件版本类型不对 - 已修改 - 2、下发的中文编码不对 - 已修改 - - - - - - 填充设备存在 - - - - - - 根据RCU模型的设备存在属性组,配置设备存在数据 - - 模型节点 - - - - - 根据RCU模型的设备存在属性组,配置设备存在数据 - - 模型节点 - - - - - 获取输入类型设备对象的回路设置 - - - - - - - 根据连接在485设备下的模型节点信息,配置设备存在数据 - - 模型节点 - - - - - 配置RCU模型设备存在数据 - - 模型节点 - - - - - 根据连接在485设备下的模型节点信息,配置设备存在数据 - - 模型节点 - - - - - 获取事件条件节点下的条件执行方式节点 - - 设备对象节点 - - - - - 在动作执行方式组节点下查询指定名称的动作执行方式节点 - - 模型节点 - 设备组名 - - - - - 获取事件条件下的编译数据 - - 条件组节点 - - - - - 获取设备对象的回路地址 - - - - - - - 获取执行方式组节点下的执行方式编译数据 - - - - - - - 获取条件组节点下的条件编译数据 - - 条件组节点 - - - - - 获取设备对象下的所有动作编译数据(所有的设备对象动作数据) - - - - - - 获取场景模式集下的所有编译数据(多个节点的场景数据) - - - - - - 获取设备节点下的所有编译数据(多个节点的事件数据) - - 设备对象节点 - - - - - 获取事件节点下的编译数据(多个事件的编译数据) - - 事件组节点 - - - - - 获取场景模式节点下的编译数据(多个条件的编译数据) - - 事件节点 - - - - - 获取事件节点下的编译数据(多个条件的编译数据) - - 事件节点 - - - - - 获取事件条件节点下的编译数据(单个条件的编译数据) - - - - - - - 通过设备对象别名,查找设备对象回路信息 - - - - - - - 获取场景节点的设备类型 - - - - - - 获取场景节点的设备地址 - - - - - - 获取指定名称设备对象的设备类型 - - 设备节点所在行 - - - - - 获取指定名称设备对象的设备类型 - - 设备对象别名 - - - - - 获取执行名称设备对象的设备地址 - - 设备节点所在行 - - - - - 获取执行名称设备对象的设备地址 - - 设备对象别名 - - - - - 获取节点组下所有动作的编译数据 - - - - - - - 从动作行节点获取动作数据 - - - - - - - 根据动作节点内容获取执行方式与执行内容 - - 设备类型 - 动作节点 - - - - - Integer 类型转 3 字节 byte数组,高字节在前 - - - - - - - Integer 类型转 4 字节 byte数组,高字节在前 - - - - - - - 获取延时时间 - - - - - - - 获取动作组节点下动作总数 - - - - - - - 执行条件转换为编译数据类 - 2022-05-10 曹聪 - 1、将变量类型从Integer改为Uint64 变量左移溢出导致条件参数不正确 - 2、条件参数中背光状态没有调用 - - - - 动作输出使能 - - - 房态 - - - 控制取电服务 - - - 取电状态 - - - 勿扰状态 - - - 清理状态 - - - 呼叫状态 - - - 洗衣状态 - - - 退房状态 - - - 稍后状态 - - - SOS状态 - - - 预约待租状态 - - - 开锁状态 - - - 行李状态 - - - 保险箱状态 - - - 门磁状态 - - - 提示音状态 - - - 背光状态 - - - 季节状态 - - - 时间状态 - - - 起夜状态 - - - 锁定状态 - - - 保留字段 - - - 配置信息协议位 - - - 配置发布作者 - - - 配置软件版本号 - - - 配置发布日期 - - - 用户名 - - - 项目编号 - - - 房型ID - - - 房型别名 - - - 配置数据版本 - - - - 设备存在协议位 - - - - 设备类型 - - - 设备地址 - - - 485端口 - - - 波特率 - - - 设备协议版本 - - - 通讯重发次数 - - - 通讯等待时间 - - - 保留 - - - 输入回路数 - - - 输出回路数 - - - 回路别名 - - - 设备动作协议位 - - - 设备类型 - - - 设备地址 - - - 设备动作编号 - - - 设备输入回路 - - - 设备输入类型 - - - 动作执行条件 - - - 动作执行方式 - - - 设备动作别名 - - - 保留参数 - - - 输出设备动作数 - - - 设备动作 - - - 设备动作参数协议位 - - - 设备类型,外接设备设备类型(主机特殊处理) - - - 设备地址,选择对象的设备拨码地址(主机特殊处理) - - - 设备回路,选择对象的回路地址,2位 - - - 执行方式,不同设备类型有不同方式 - - - 执行内容,不同设备类型有不同内容 - - - 延时时间,动作执行延时 - - - 延时单位,做东执行延时单位 - - - - 禁止 - - - - - 只读 - - - - - 读写 - - - - - 管理 - - - - - 允许 - - - - - 拒绝 - - - - - 发布项目 - - - - - 高级开发项 - - - - - 项目锁 - - - - - 提示信息 - - - - - - 调用窗口 - - - - - - - 串口刷新 - - - - - - - 串口句柄 - - - - - 打开串口 - - - - - - 重做命令 - - - - - 撤销命令 - - - - - 客户名称 - - - - - - 设备文件名 - - - - - 酒店名称 - - - - - - 酒店房型 - - - - - - 模型名称 - - - - - 模型说明 - - - - - 模型配置信息 - - - - - 模型子节点 - - - - - 设备名称 - - - - - - 设备商标 - - - - - - 设备模型 - - - - - - 协议 - - - - - - 协议数据 - - - - - - 协议版本 - - - - - - 设备接口 - - - - - - 设备类型数据 - - - - - - 设备数据模型版本 - - - - - - 设备说明 - - - - - - 设备说明 - - - - - - 引用基类的名称 - - - - - - 引用条件的名称 - - - - - - 设备对象类型可选对象类型集合 - - - - - - 枚举扩展类 - - - - - 获取枚举描述特性 - - 需要获取特性的枚举值 - 枚举描述特性 - - - - 获取当前枚举所有描述特性值,未填的枚举采用枚举名 - - 枚举类型 - - - - - 客户索引 - - - - - - 客户名称 - - - - - - 客户索引 - - - - - - 酒店四位数字代号,在TBL_HOTEL_BASIC_INFO 数据表中对应 “PROJECT_NUMBER”字段 - - - - - - 酒店名称 - - - - - - 账号权限 - - - - - - 酒店个数 - - - - - 酒店信息列表 - - - - - 当前选中的tree view节点信息 - - - - 当前选择的酒店组 - - - 是否记住密码 - - - 是否自动登录 - - - 是否正在登录中 - - - 产品索引 - - - 记住密码复选框状态修改触发事件 - - - 自动登录复选框状态修改触发事件 - - - 读取Setting中的缓存量 - - - 保存Setting中的缓存量 - - - - 配置信息,这些信息将会被编译到配置文件的0x01数据块 - - - - - 项目信息 - - - - - 模型表格 - - - - - 账号 - - - - - 账号 - - - - - 账号权限 - - - - - 基类信息 - - - - - 条件信息 - - - - - 当前编辑的酒店房型 node index,等同于在 _project.RoomType list列表中的位置 - - - - - 根据酒店组+酒店ID+酒店名称 确定XML文件存放目录 - - - - - 主文件夹路径 - - - - - 模型文件夹名称 - - - - - 配置文件夹名称 - - - - - 固件文件夹名称 - - - - - XML 临时文件文件名 - - - - - 添加项目设计窗体到分页控件中 - - - - - 点击登录 - - - - - - - 处理登录信息 - - - - - 下拉选择语言 - - - - - - - 获取云端数据 - - - - - - 获取云端数据版本 - - - - - 语言名称和版本信息 - - - - 初始化多语种 - - - - - 刷新编辑表 - - - - - '检测酒店发布权限,并载入酒店节点 - - - - - 获取权限ID 对应权限 - - 酒店权限集合 - 权限ID - - - - - 刷新配置文件信息,这些信息将会被编译到配置文件的0x01数据块 - - - - - 单文件下载 - - - - - - 单文件下载 - - - - - - 获取表数据 - - 表名 - 条件 - - - - - 固件上传 - - - - - - - 表格交互处理类对象 - - - - - 提示信息 - - - - - - 输出的类型 - - - - - - 输出的文本的内容 - - - - - - 普通信息 - - - - - 警告信息 - - - - - 错误信息 - - - - - 资源管理器对象 - - - - - 资源管理器treeview根节点 - - - - - 设备键值对(用于对应资源管理器TreeView Node与RowNode) - - - - - 动作键值对(用于对应资源管理器TreeView Node与RowNode) - - - - - 场景键值对(用于对应资源管理器TreeView Node与RowNode) - - - - - 小宝键值对(用于对应资源管理器TreeView Node与RowNode) - - - - 绘制表格图标API - - - 提示信息改变事件 - - - 输出信息打印 - - - TreeView 控件 - - - 进度条 控件 - - - 表格控件 - - - 树状目录跟节点,不参与显示 - - - 撤销重做管理器 - - - 表格编译器 - - - 已使用设备类型管理器 - - - 忽略鼠标移动事件 - - - 文件是否有修改,如果有修改,则在关闭时提示保存 - - - 当前是否按下Ctrl键 - - - 默认行高 - - - 默认字体大小 - - - 刷新锁计数 - - - 树状节点显示起始行 - - - 树状节点显示绘制列 - - - 当前放大倍数 - - - 动作参数最大数量 - - - 默认列宽 - - - 基类文件名 - - - 条件文件名 - - - - 树状节点绘制图标 - - - - - - 忽略单元格改变事件 - - - - - - 设备对象基类信息 - - - - - - 条件 - - - - - - 模型关联的treeView控件,用于资源管理器浏览 Momo 0422 - - - - - - 模型关联的表格控件 - - - - - - 添加酒店房型节点 - - 酒店房型模型信息 - - - - - 添加场景模式集合节点 - - - - - - 添加动作组集合节点 - - - - - - 添加设备模型节点 - - 设备模型的模型信息 - - - - - 添加设备模型属性组节点 - - 设备模型属性组模型 - - - - - 添加设备模型属性节点 - - 设备模型属性模型 - - - - - 添加设备对象组对象 - - 设备对象模型 - - - - - 添加设备对象节点 - - 设备对象模型 - 填充设备节点下的子节点 - - - - - 根据设备类型填充设备节点下内容 - - 设备节点 - - - - 填充设备属性组内容 - - 属性组节点 - 设备对象基类模型 - - - - 创建新的设备属性节点 - - 属性模型 - - - - - 填充设备事件组内容 - - 事件组节点 - 设备对象基类模型 - - - - 创建新的设备事件节点 - - 事件模型 - - - - - 添加执行方式节点 - - 执行方式模型 - - - - - 添加执行条件节点 - - 执行条件模型 - - - - - 添加已使用别名的节点 - - - - - - 当节点名被清空时,移除该节点 - - - - - - 初始化表格时,传入根节点初始化表格 - - - - - - 移除当前节点行 - - - - - - 移除节点的子行 - - - - - - 根据节点信息,添加表格行 - - 需要添加的行节点信息 - 是否包含当前节点的子节点 - - - - 添加当前节点的所有子节点的内容至表格行 - - 需要添加的行节点信息 - 是否包含当前节点的子节点 - - - - 根据行节点内容填充表格文本内容 - - - - - - 填充表格行的样式 - - - - - - 选择路径后更新基类 - - 基类文件完整路径 - 更新类型是否为外接设备 - - - - 更新模型节点内容 - - 模型节点 - 主机模型 - 是否为外接模型 - - - - 更新模型设备组节点 - - 主机模型节点 - 主机模型 - 被移除的原设备组节点集合 - - - - 更新模型属性组节点 - - 主机模型节点 - 主机模型 - 被移除的原属性组节点集合 - - - - 更新执行方式(与节点TAG为属性类型的变量处理方式有相似点,考虑整合封装) - - - - - - 更新执行条件 - - - - - - 选择路径后更新基类 - - 基类文件完整路径 - - - - 更新设备基类信息属性与事件 - - - - - - 更新设备对象属性组节点 - - 设备对象节点 - 设备对象类型 - - - - 更新设备事件集合 - - 设备对象节点 - 设备类型模型 - - - - 更新设备动作 - - - - - - treeview 双击事件,双击后导航至表格对应的节点 - - - - - - - 当前活动单元格变更到一个不同的单元格之前立即发生。 - Row 返回一个Integer值,标识单元格变更之前的行号。 - Col 返回一个Integer值, 标识单元格变更之前的列号。 - NewRow 返回或设置一个Integer值, 标识单元格变更之后的行号。NewRow属性的值可以改变,使活动单元格移动到此行。 - NewCol 返回或设置一个Integer值, 标识单元格变更之后的列号。NewCol属性的值可以改变,使活动单元格移动到此列。 - Cancel 设置一个Boolean值, 将Cancel属性设置为True, 可以防止活动单元格离开原来的位置。 - - - - - - - 表格下拉框点击事件 - - - - - - - 表格绘制事件 - - - - - - - 表格按键松开事件 - - - - - - - 表格按键按下事件 - - - - - - - 表格点击事件 - - - - - - - 表格双击事件 - - - - - - - 表格选择内容改变事件 - - - - - - - 表格下拉框显示事件 - - - - - - - 表格单元格内容改变事件 - - - - - - - 表格鼠标移动事件 - - - - - - - 表格鼠标轴滚动事件 - - - - - - - 表格放大至指定倍数 - - 放大倍数 - - - - 加载行节点 - - - - - - - 读取表格xml时,根据不同行节点类型,还原Tag属性 - - - - - - - - 保存模型信息至Xml文件 - - xml完整路径 - - - - - 写入行节点内容至Xml字段 - - xml写入流 - 行节点 - - - - 表格导出为Xls文件 - - - - - - 导出当前选择的行节点至外部模型文件 - - 导出文件的路径 - - - - 导入外部模型至指定节点下 - - 导入文件的路径 - - - - 在别名更改后,同步更改动作调用的名称,并返回修改的个数 - - - - - - - - - 填充表格选择单元格提示信息 - - 表格选择列 - 表格对应行节点信息 - - - - - 强制刷新同级的行数并显示出来,应对某些情况表格变更后没有及时刷新 - - - - - 循环嵌套调用,直到节点类型为对象组或级数小于=3 - - - - - - 获取节点下的动作数量,注意是节点下所有动作,如果有多级子节点,会全部统计到一起 - - 输入节点,只对部分节点有效 - - - - 获取对象的路径,一直溯源到第2级(RCU型号级),并将路径保存在 argStrPath 中供显示 - - - - - 禁用项视图 - - - - - 默认视图 - - - - - 指定节点向上溯源,所有的父节点都显示出来 - - 开始溯源的起点 - 溯源结束的目标级数 - - - - 指定节点,将其父系节点逐级展开 - - - - - - 指定节点和其同类节点显示或隐藏 - - 传入节点类型,函数会自动匹配同类节点并进行相应操作 - 显示状态 - - - - 仅显示对象节点,其余节点收缩起来 - - - - - 收缩行节点 - - - - - - 默认视图 - - - - - 展开行节点 - - - - - - 通过行号查找对应的行节点信息 - - - - - - - 添加行 - - 添加行的类型 - 添加行数 - - - - 添加设备行 - - 设备模型 - 添加行数 - - - - 校验当前行类型是否允许添加的指定父行类型下 - - - - - - - - 新增行时,创建对应类型行节点(可以考虑将所有节点的生成都集成在这个函数里) - - - - - - - 添加场景模式行 - - 添加数量 - - - - 添加动作组行 - - 添加数量 - - - - 添加设备对象 - - - - - 添加事件条件 - - - - - 添加动作行 - - - - - - 移除当前选中行 - - - - - 移除当前选中节点 - - - - - 插入行 - - - - - 删除行 - - - - - 上移行 - - - - - 下移行 - - - - - 复制行 - - - - - 剪切行 - - - - - 粘贴行 - - - - - 撤销 - - - - - 重做 - - - - - 启用行 - - - - - 禁用行 - - - - - 配置信息数据结构 - - - - - 配置信息,有些信息需要从App传过来 - - - - - 编译生成编译文件 - - - - - 向前导航 - - - - - 向后导航 - - - - - 清除栈数据 - - - - - 向后导航步骤数 - - - - - - 向前导航步骤数 - - - - - - 错误项的 node index - - - - - 错误项的列,与node index一起定位到具体的单元格 - - - - - 错误类型 - - - - - 错误信息 - - - - - 错误项的node信息 - - - - - 用于保存全局规则检测的错误项 - - - - - 规则检查结果 - 没问题 - - - - - 规则检查结果 - 警告:某些规则不太符合,可以编译但是可能会产生不确定的后果 - - - - - 规则检查结果 - 错误:严重错误,不可编译或确定会导致不正确的后果 - - - - - 错误列表的mouse move事件 - - - - - - - 将错误图标加入到ImageList中,程序启动时添加一次即可 - - - - - 启动一次全文规则检查,并返回错误数和告警数 - - 错误计数,错误计数为0则函数返回true - 告警计数,函数计数不影响函数返回 - - - - - 单行规则确认,主要确认单行数据填写的完整性,以及数据类型是否合法 - - 被确认的节点 - 返回该节点的错误类型 - 返回该节点详细的错误信息 - - - - - 为节点找到指定类型的父节点 - - - - - - - - - 刷新资源管理器的所有列表,暴力全局刷新,效率不咋地,而且有点闪,有空再做个单条刷新 - - - - - 展开资源管理器的treeview节点 - - - - - 通过节点返回图标,图标根据节点的DeviceType而定,当子节点非0时返回彩色图标,否则返回单色图标 - - 节点 - 该节点的子节点数(用于确定返回单色或彩色图标) - 返回一个节点类型枚举 - - - - - 编译打印 - - - - - - - 输出对应类型信息 - - - - - - - 输出执行信息 - - - - - - 输出警告信息 - - - - - - 输出错误信息 - - - - - - 错误信息表格列明枚举 - - - - 表格列对应枚举 - - - - 表格序号 - - - - - 是否启用 - - - - - 设备别名 - - - - - 树状节点 - - - - - 设备类型 - - - - - 设备名称 - - - - - 设备方法 - - - - - 执行延时 - - - - - 延时单位 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 最大列数,不作为表格列名 - - - - - Post请求 - - 目标接口网址 - 传输数据 - - - - - 初始化 - - - - - 登录数据 - - - - - 登录状态 - - - - - 登录提示 - - - - - 用户信息 - - - - - 酒店数据 - - - - - 初始化酒店权限 - - - - - 权限状态ID - - - - - 权限ID - - - - - 权限名称 - - - - - 初始化酒店组 - - - - - 酒店组ID - - - - - 酒店组名称 - - - - - 酒店 - - - - - 初始化酒店信息 - - - - - 酒店ID - - - - - 项目编码 - - - - - 酒店名称 - - - - - 酒店权限 - - - - - 用户头像 - - - - 可见节点总数 - - - 节点等级 - - - 动作是否执行 - - - - 事件编号 - - - - - - 节点类型 - - - - - - 节点名称 - - - - - - 节点接口属性,从XML读出来,仅对设备对象有效 - - - - - - 节点显示文本 - - - - - - 节点描述 - - - - - - 设备别名 - - - - - - 设备是否具有别名 - - - - - - 设备类型 - - - - - - 设备名称 - - - - - - 设备方法 - - - - - - 延时时间 - - - - - - DEV_TYPE_DATA - - - - - - PROTOCOL_VER - - - - - - 0.默认类型 - - - - - 1.小宝命令集 - - - - - 2.设备存在 - - - - - 0.根节点 - - - - - 1.酒店组 - - - - - 2.酒店项目 - - - - - 3.酒店户型 - - - - - 4.主机模型 - - - - - 5.主机模型属性集 - - - - - 6.主机模型属性分组 - - - - - 7.主机模型属性 - - - - - 8.模型外设组 - - - - - 9.模型外设对象 - - - - - 10.模型外设属性组 - - - - - 11.模型外设方法组 - - - - - 12.模型外设事件组 - - - - - 13.模型外设属性 - - - - - 14.模型外设方法 - - - - - 15.模型外设事件 - - - - - 16.模型外设事件动作执行方式组 - - - - - 17.模型外设事件动作执行方式 - - - - - 18.模型外设事件条件 - - - - - 19.模型外设事件条件 - - - - - 20.条件组节点 - - - - - 21.模型外设事件执行动作组集合 - - - - - 22.模型外设事件执行动作组 - - - - - 23.模型外设事件执行动作 - - - - - 24.情景模式组 - - - - - 25.情景模式 - - - - - 26.外设模型 - - - - - 27.属性集 = XiaoBaoCMD - - - - - 28.属性 = XiaoBaoCMD - - - - - 29.属性集 = 设备存在 - - - - - 30.属性 = 设备存在 - - - - - 延时单位 - - - - - - 动作执行参数 - - - - - 动作是否执行,仅代表表格上的勾选状态,参与编译属性参考Compile属性 - - - - - - 动作是否参与编译 - - - - - - 节点标签 - - - - - - 节点是否处于展开状态 - - - - - - 节点是否处于可见状态 - - - - - - 节点的级别,可见节点级别从0开始 - - - - - - 节点在父节点中的索引,可见节点级别从0开始 - - - - - - 下一级子节点总数 - - - - - - 所有子节点中,可见子节点总数 - - - - - - 所有子节点总数 - - - - - - 当前节点树的起始节点 - - - - - - 当前节点的父节点 - - - - - - 当前节点的同级上一节点,若当前节点为首节点则返回nothing - - - - - - 当前节点的同级下一节点,若当前节点为尾节点则返回nothing - - - - - - 节点所属节点数组的位置,从0开始,即头结点的的索引 - - - - - - 节点树的所有节点集合 - - - - - - 子节点集合 - - - - - - 更新节点参与编译属性 - - - - - 获取所有子节点 - - - - - 更新可见子节点总数 - - - - - - 更新子节点可见 - - - - - 展开节点 - - - - - 展开所有节点包括子节点 - - - - - 折叠节点 - - - - - 收缩所有节点包括子节点 - - - - - 展开或折叠节点 - - - - - 增加子节点 - - - - - 插入子节点 - - - - - 移除本身节点 - - - - - 清空节点所有子节点 - - - - - 节点上移 - - - - - 节点下移 - - - - - 节点左移 - - - - - 节点右移 - - - - - 节点深复制,创建一个完全相同信息的节点(功能待测试) - - - - - - 更新节点的上一节点指向 - - 需要更新的节点 - - - - 更新节点的下一节点指向 - - 需要更新的节点 - - - - 新增节点后,更新父节点的所有子节点计数 - - 新增的节点 - - - - 删除节点后,更新父节点的所有子节点计数 - - 被删除的节点 - 包含当前节点 - - - - 插入节点后,更新节点下方节点的索引 - - 需要更新下方节点索引的节点 - - - - 删除节点后,更新节点下方节点的索引 - - - - - - 获取新添加的节点的链状目录索引 - - - - - - - 更新节点的所有子节点的链式结合的指向 - - - - - - - 删除节点后,更新链状列表 - - - 包含当前节点 - - - - 插入节点后,更新链状目录中受影响节点的索引 - - - - - - 删除节点后,更新链状目录中受影响节点的索引 - - 删除的节点 - 是否保存该节点 - - - - 移除指定节点 - - - - - - 清空节点 - - - - - 创建已使用设备类型单例 - - - - - - 获取所有设备类型 - - - - - - 获取当前设备类型是否已使用 - - - - - - - 获取当前设备类型先所有行节点内容 - - - - - - - 添加行节点到已使用设备类型,设备类型为空则忽略添加 - - - - - - 移除行节点从已使用设备类型 - - - - - - 清空所有设备类型信息 - - - - - 获取类型 - - - - - 全部获取 - - - - - 动作相关 - - - - - 小宝相关 - - - - - 客户索引 - - - - - - 客户名称 - - - - - - 酒店ID - - - - - - 酒店名称 - - - - - - 户型链表 - - - - - 客户名称 - - - - - - 酒店名称 - - - - - - 酒店房型 - - - - - - 模块级别节点附带信息 - - - - - 属性级别节点附带信息 - - - - 当前选择参数索引 - - - 数值型参数下限 - - - 数值型参数上限 - - - 参数字符串 - - - 参数字符串集合 - - - 参数字符串对应数据集合 - - - - 参数名称 - - - - - - 当前参数类型 - - - - - - 当前参数字符串 - - - - - - 当前参数对应数据 - - - - - - 原限定范围字符串 - - - - - - 原范围对照值 - - - - - - 参数说明 - - - - - - 默认的参数值 - - - - - - 当前值是否在参数允许的范围内 - - - - - - 只允许出现真假结果 - - - - - 格式必须能够转换为时间 - - - - - 只允许出现数值结果 - - - - - 至允许出现列表范围中的数据 - - - - - 允许用户输入 - - - - - 允许用户输入 - - - - - 设备对象级别节点附带信息 - - - - - 设备对象事件节点附带信息 - - - - - 设备对象名称 - - - - - - 参与编译的事件编号 - - - - - - 设备对象说明信息 - - - - - - 设备对象事件条件节点附带信息 - - - - - 条件执行时间 - - - - - 条件执行条件 - - - - - 条件执行方式 - - - - - 设备对象事件动作节点附带信息 - - - - - 小宝输入类型 - - - - - - 小宝输入地址 - - - - - - 运行命令,并将命令添加至撤销堆栈 - - - - - - 将命令添加至撤销堆栈 - - - - - 清空撤销命令堆栈 - - - - - 清空重做命令堆栈 - - - - - 清空撤销与重做命令堆栈 - - - - - 执行撤销命令 - - - - - 执行重做命令 - - - - - 将类对象序列化为xml文件 - - - - - - - 将类对象序列化为xml文件 - - - - - - - 从Xml文件中反序列化成指定类 - - - - - - - diff --git a/BLV_Studio/obj/Debug/BLV_Studio.xml b/BLV_Studio/obj/Debug/BLV_Studio.xml deleted file mode 100644 index 906a3f6..0000000 --- a/BLV_Studio/obj/Debug/BLV_Studio.xml +++ /dev/null @@ -1,11292 +0,0 @@ - - - - -BLV_Studio - - - - - - 一个强类型的资源类,用于查找本地化的字符串等。 - - - - - 返回此类使用的缓存的 ResourceManager 实例。 - - - - - 重写当前线程的 CurrentUICulture 属性,对 - 使用此强类型资源类的所有资源查找执行重写。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - - 查找 System.Drawing.Bitmap 类型的本地化资源。 - - - - 服务器密钥 - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - - - - - 加密文本为Base64编码 - - 需要加密字符串 - 密钥 - 密钥转换字符编码 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - - - - - 解密Base64编码的字符串 - - 需要解密字符串 - 密钥 - 密钥转换字符编码 - - - - - 日志文件所在父文件夹路径 - - - 日志文件名前缀 - - - 日志文件所在路径 - - - - 保存日志的文件夹完整路径 - - - - - 日志文件前缀 - - - - - 写入错误信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入流程信息记录日志 - - - - - - 写入警告信息记录日志 - - - - - - 写入错误信息记录日志 - - - - - - 写入数据库信息记录日志 - - - - - - 将信息入到日志 - - 日志类型 - 日志内容 - - - - 写日志 - - - - - 日志类型 - - - - 调试信息 - - - 系统运行信息 - - - 警告信息 - - - 错误信息应该包含对象名、发生错误点所在的方法名称、具体错误信息 - - - 致命信息 - - - - 主机ID - - - - - 所属酒店 ID - - - - - 所属酒店名称 - - - - - 主机编号 - - - - - 房号 - - - - - 状态:0 离线,1 在线 - - - - - 注册日期 - - - - - 房态 ID - - - - - 房态名称 - - - - - 房型 ID - - - - - 房型名称 - - - - - 主机 mac 地址 - - - - - mac 绑定时间 - - - - - 主机 IP 地址 - - - - - 备注 - - - - - 请求结果 - - - - - 后台主机列表 - - - - - 酒店 ID - - - - - 酒店编号 - - - - - 酒店名称-中文 - - - - - 酒店名称-英文 - - - - - 繁体名称 - - - - - 联系人 - - - - - 联系电话 - - - - - 地址 - - - - - 酒店授权有效期 - - - - - 酒店创建日期 - - - - - 备注 - - - - - 状态 - - - - - 审批 - - - - - 酒店分组 ID - - - - - 酒店分组名称 - - - - - 请求结果 - - - - - 后台酒店列表 - - - - - 房型ID - - - - - 房型编号 - - - - - 房型名称 - - - - - 回路列表 - - - - - 请求结果 - - - - - 后台房型列表 - - - - - 回路地址 - - - - - 回路名称 - - - - - 英文名称 - - - - - 繁体名称 - - - - - 类型名称 - - - - - 请求结果 - - - - - 操作返回 - - - - - 需要升级的IP和端口 - - - - - - 本地IP和端口 - - - - - - 远程IP和端口 - - - - - - Socket连接状态,默认非连接 - - - - - - 本机按键状态 - - - - - - 机型编号 - - - - - - IP地址 - - - - - - 服务器地址 - - - - - - 子网掩码 - - - - - - 网关 - - - - - - 端口 - - - - - - DNS - - - - - - 软件版本号 - - - - - - 主机时间 - - - - - - MAC - - - - - - 项目编号 - - - - - - 房号ID - - - - - - 房号备注 - - - - - - 房型ID - - - - - - 房型备注 - - - - - - 配置版本号 - - - - - - 房态 - - - - - - 季节 - - - - - - 锁定 - - - - - - 授权时间 - - - - - - 授权到期时间 - - - - - - 房间备注 - - - - - - MCU机型名称 - - - - - - 中控机型名称 - - - - - - 初始化 - - - - - 初始化 - - - - - 获取设备名称 - - 设备类型 - 设备地址 - - - - - 升级序号 - - - - - - 需要升级的IP和端口 - - - - - - 主机端口 - - - - - - 主机soket - - - - - - 初始化界面控件文本 - - - - - 窗体加载事件 - - - - - - - 显示窗体事件 - 实现接口 - - - - - - 发送函数 - - - - - - 获取继电器序号 - - - - - 发送组包 - - - - - - - - 1-13路继电器 - - - - - - - 获取继电器状态 - - - - - - - 获取继电器序号 - - - - - - - 1-5路输出 - - - - - - - 获取C12测试输出序号 - - - - - 获取继电器状态 - - - - - - - 获取输入序号 - - - - - - - C12输入测试 - - - - - - - C12音乐测试 - - - - - - - C5测试音频播放文件下 - - - - - 初始化文件夹可选项 - - - - - C5音频测试 - - - - - - 获取播放文件夹 - - - - - - - 巡回测试 - - - - - - - C12调光 - - - - - - - 设备列表表名 - - - - - 保存按键 - - - - - - - 关闭窗体按键 - - - - - - - 初始化界面控件文本 - - - - 机型测试组名称 - - - - 测试机型列表 - - - - C5机型测试 - - - C12机型测试 - - - 测试机型索引标志位 - - - - 初始化测试Page - - - - - 显示测试机型 - - - - - - 初始化测试机型 - - - - - - 窗体加载函数 - - - - - - - 初始化上一次关闭窗体前保存的配置数据 - - - - - 用户酒店列表 - - - - - 用户酒店分组 - - - - - 根据权限解锁功能 - - - - - 权限状态 - - - - 空权限 - - - 禁止权限 - - - 只读权限 - - - 读写权限 - - - 管理权限 - - - 允许权限 - - - 拒绝权限 - - - - 锁定权限 - - - - - - 锁定只读权限 - - - - - 锁定读写权限 - - - - - 锁定无权限 - - - - - 授权时间权限 - - - - - - 授权时间只读权限 - - - - - 授权时间读写权限 - - - - - 授权时间无权限 - - - - - 授权升级And房态And季节权限 - - - - - - 允许 升级/房态/季节权限 - - - - - 无 升级/房态/季节权限 - - - - - 授权研发管理权限 - - - - - - 允许 研发管理权限 - - - - - 禁止 研发管理权限 - - - - - 授权批量下发权限 - - - - - - 允许 批量下发权限 - - - - - 禁止 批量下发权限 - - - - - 无权限 - - - - - 房型备注列表 - - - - - 房号备注列表 - - - - - 房型备注_下拉框事件 - - - - - - - 房型备注_文本改变事件 - - - - - - - 房号备注_下拉框事件 - - - - - - - 房号备注_文本改变事件 - - - - - - 房型表—根据项目编码查询得到 - - - - 根据项目编码查询房型 - - - - - 房号表—根据项目编码, 房型查询得到 - - - - 根据项目编码,房型查询房号 - - - - - - - 根据项目编码,房号查询房型 - - - - - - - 高级串口设置 - - - - - - - 切换酒店 - - - - - - - 切换用户 - - - - - - - 退出 - - - - - - - 帮助_关于 - - - - - - - 发送测试数据 - - - - - - 检查网络连接 - - - - - - 以哪种方式发送 - - - - - - 当前时间 - - - - - 最后时间 - - - - - 时间间隔 - - - - - 接收数据偏移量 - - - - - 接收数据缓存包 - - - - - 配置串口 - - 串口名 - 串口波特率 - - - - 发送485串口数据 - - - - - - - 接收485串口数据 - - - - - - - 显示串口回复数据 - - - - - - 解析串口数据 - - - - - - 处理读取寄存器信息 - - - - - - 处理输入命令16_设置MAC地址 - - - - - - 处理输入命令17 - - - - - - 刷新设置MAC委托 - - - - - - - 处理设置MAC数据 - - - - - - - 刷新C5输入回复数据 - - - - - 处理输入回复数据 - - - - - 刷新C12输入回复数据 - - - - - 处理输入回复数据 - - - - - 改变Lable背景颜色 - - - - - - - 处理巡回测试 - - - - - - 刷新巡回数据委托 - - - - - - - 处理巡回测试数据 - - - - - - - 刷新巡回数据委托 - - - - - - - 处理巡回测试数据 - - - - - - - 处理巡回测试数据 - - - - - - - 处理设置信息 - - - - - - 处理读取信息 - - - - - - 读取核心参数信息-委托 - - - - - 读取核心参数信息 - - - - - 处理设置MQTT数据 - - - - - - 处理读取MQTT数据 - - - - - - 填充发送数据 - - - - - - - - 填充发送数据包头 - - - - - - - - 获取帧号 - - - - - - 填充发送信息包头 - - - - - - - - 填充C系列数据包 - - - - - - - - - 填充发送校验数据 - - - - - - - - CRC16校验 - - - - - - - - 枚举Data偏移 - - - - - 包头 - - - - - 系统固定4个字节 - - - - - 命令字 - - - - UDP通讯套接字 - - - - Socket网络套接字 - - - - - 是否处于网络接收状态 - - - - - UDP通讯接收线程 - - - - - 包头数据长度 - - - - - 数据CRC校验长度 - - - - - 发送数据包头 - - - - - 系统固定的4个字节 - - - - - 主机项目地址 - - - - - 帧号 - - - - - 搜索命令的表格索引 - - - - - RCU主机搜索命令的表格索引 - - - - - RCU搜索命令的表格索引 - - - - - 查询设备状态的表格索引 - - - - - 设置配置数据标志位 - - - - - 查询批量数据的表格索引 - - - - - 更新连接状态 - - - - - 发送UDP数据 - - - - - - 发送Update数据 - - - - - - 发送Socket数据 - - - - - - UDP接收数据 - - - - - 接收数据处理 - - - - - - - - 检验CRC16成功 - - - - - - - - 处理数据 - - 远程回复数据 - 远程IP和端口 - - - - - 搜索主机偏移量 - - - - - 搜索主机_详细信息 - - - - - 搜索主机 - - - - - 搜索主机列表键值对 - - - - - 搜索主机 - 读取主机参数信息 - - - - - - 局部刷新设备列表委托 - - - - - 刷新设备列表信息 - 局部刷新_委托 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 获取房间状态文本 - - - - - - - 获取房间是否锁定 - - - - - - - 获取房间季节 - - - - - - - 设置12个月的季节 - - - - - - - 获取当月季节 - - - - - - - 获取季节文本 - - - - - - - 搜索主机列表委托 - - - - - 搜索主机列表信息 - - - - - 提示信息委托 - - - - - 读取配置信息委托 - - - - - 查询设备状态 - - - - - - - 刷新查询设备IP和地址委托 - - - - - 刷新查询设备IP和地址 - - - - - 获取设备状态文本 - - - - - - - 获取设备状态文本 - - - - - - - 刷新查询设备状态信息委托 - - - - - 刷新查询设备状态信息 - 局部刷新_委托 - - - - - 处理固件升级 - - - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 升级校验命令处理 - - - - - - - 升级复位命令处理 - - - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 处理设置配置数据 - - - - - - 处理读取配置数据 - - - - - - 解析读取寄存器数据 - - - - - - 处理读取网络信息 - - - - - - 获取DHCP结果 - - - - - - - 读取网络信息委托 - - - - - 读取网络信息委托 - - - - - 读取网络DHCP信息委托 - - - - - 读取网络信息委托 - - - - - 读取配置信息委托 - - - - - 读取配置信息委托 - - - - - 处理配置下发 - - - - - - 查询设备状态_枚举 - - - - ID - - - IP地址 - - - 端口号 - - - 设备类型 - - - 设备地址 - - - 设备状态 - - - 查询设备表状态列集合 - - - - 查询设备表状态列集合 - - - - - 匹配配置版本号 - - - - - - 根据项目编码查询项目名称 - - - - - - 处理 TFTP 数据 - - - - - - - 处理C5机型测试 - - - - - - 处理网络设置输入 - - - - - - 处理网络巡回测试 - - - - - - 各机型巡回测试结果 - - - - - - - 处理设置MQTT数据 - - - - - - 处理读取MQTT数据 - - - - - - MQTT信息委托 - - - - - MQTT信息委托 - - - - - 清除记录 - - - - - - - 添加记录文本和颜色 - - 需要添加的记录内容 - 需要设置的记录颜色 - - - - 添加记录 - - - - - - - 添加记录文本和颜色 - - 需要添加的记录内容 - 需要设置的记录颜色 - - - - 添加记录 - - - - - - - 添加匹配文本和颜色 - - 需要添加的记录内容 - 需要设置的记录颜色 - - - - 添加匹配记录 - - - - - - - 项目列表名称 - - - - - 房型列表名称 - - - - - 房间列表名称 - - - - - 配置设备列表名称 - - - - - 判断点击的是哪个Pages - - - - - - - 查询设备列表 - - - - - 项目信息_查询 - - - - - - - 项目信息_增加 - - - - - - - 项目信息_修改 - - - - - - - 项目信息_删除 - - - - - - - 项目表表格点击事件 - - - - - - - 查询设备列表 - - - - - 房型列表_查询 - - - - - - - 房型列表_添加 - - - - - - - 房型列表_修改 - - - - - - - 房型列表_删除 - - - - - - - 房型列表点击事件 - - - - - - - 初始化房间状态 - - - - - 查询设备列表 - - - - - 房间列表_查询 - - - - - - - 房间列表_增加 - - - - - - - 房间列表_修改 - - - - - - - 房间列表_删除 - - - - - - - 房间表格点击事件 - - - - - - 设备类型合集 - - - 设备波特率 - - - 设备端口号 - - - - 设备类型合集 - - - - 0_无效设备 - - - 1_电继电器 - - - 2_电输入_输入状态 - - - 3_电输出_输出状态 - - - 4_服务信息_可配置数量,输出状态 - - - 5_干节点窗帘_可配置数量,输出状态 - - - 开关指示灯 - - - 空调1_空调状态 - - - 红外感应_备用 - - - 空气质量检测设备_备用 - - - 插卡取电_取电状态 - - - 地暖_地暖状态 - - - RCU设备网络 - - - 窗帘_窗帘状态 - - - 继电器_继电器状态 - - - 红外发送_红外发送状态 - - - 直流调光_调光状态 - - - 可控硅调光_可控硅状态 - - - 灯带_灯带状态 - - - 中控 - - - 微信锁_微信锁状态 - - - 背景音乐_背景音乐状态 - - - 房态下发 - - - 主机本地调光 - - - 485PWM调光_PWM调光状态 - - - 总线调光_PBLED调光状态 - - - RCU电源 - - - A9IO开关_独立开关,没有协议区分 - - - A9IO扩展_独立扩展,没有协议区分 - - - A9IO电源_独立电源,没有协议区分 - - - 无线网关轮询_用于轮询控制轮询设备,给无线网关下发配置和询问网关状态 - - - 无线网关主动 - - - - 初始化设备类型,波特率,端口,频率 - - - - - 查询设备列表 - - - - - 配置设备列表_查询 - - - - - - - 配置设备列表_添加 - - - - - - - 配置设备列表_修改 - - - - - - - 配置设备列表_删除 - - - - - - - 设备列表点击表格事件 - - - - - - - 下拉选择项目编号 - - - - - - - 下拉框项目编号文本改变 - - - - - - - 查询配置房型 - - - - - - - 查询房间编号 - - 项目编号 - - - - 新增设备 - - - - - - - MAC地址 - - - - - 匹配次数 - - - - - 点击表格显示主机设备存在 - - - - - - - - - - - - - - 获取匹配主机信息 - - - - - 设置项目信息 - 设置主机信息到设置面板 - - - - - 获取云端匹配数据 - - - - - - 匹配信息 - - - - - 查询房间信息是否存在 - - - - - - - - 查询房间信息是否匹配 - - - - - - - - - 匹配信息表 - - - - 根据项目编码,查询匹配信息 - - - - - - 设置批量表格数据显示 - - - - - - 填充数据_搜索主机 - - - - - - IP地址转换为Byte数组 - - - - - - 端口号转换为Byte数组 - - - - - - 查询项目编号 - - - - - 查询房型编号 - - 项目编号 - - - - 配置存在 - - - - - - - 设置配置 - - - - - 填充设置配置数据 - - - - - - 字符串转4个byte的数组 - - - - - - - 字符串转4个字节Byte - - - - - - - 配置下发 - - - - - 查询设备列表数据 - - - - - - 发送设备列表数据 - - - - - - 获取设备类型 - - - - - - - 获取设备类型 - - - - - - - 获取设备波特率Byte值 - - - - - - - 读取设置配置 - - - - - - - 填充读取设置数据 - - - - - - 是否点击OK - - - - - 设置MAC - - - - - 填充MAC下发数据 - - - - - - MAC地址下发 - - - - - - - MAC地址下发 - - - - - - - 系统信息 - - - - - 网络信息 - - - - - 设备信息 - - - - - 逻辑信息 - - - - - 临时信息 - - - - - 系统信息 - - - - - - - 网络信息 - - - - - - - 设备信息 - - - - - - - 逻辑信息 - - - - - - - 临时信息 - - - - - - - EnRCUHosts - - - - ID - - - 勾选 - - - 升级 - - - 项目编码 - - - 房型 - - - 房号 - - - MAC - - - IP地址 - - - 房间备注 - - - 房态 - - - 机型编号 - - - 软件版本号 - - - 配置版本号 - - - 按键状态 - - - 房号ID - - - 房型ID - - - 端口号 - - - 网关 - - - 子网掩码 - - - DNS - - - 服务器地址 - - - 主机时间 - - - 季节 - - - 锁定 - - - 授权时间 - - - 授权到期时间 - - - MCU机型名称 - - - 中控机型名称 - - - - RFU主机列名 - - - - - 初始化RCU主机表格数据 - - - - 升级文件的名称 - - - - 初始化网络信息 - - - - - 切换本地IP地址 - - - - - - - 网络发送方式 - - - - - - 按键文本改变 - - - - 固件升级_搜索 - - - - - - - 搜索按键文本改变 - - - - - - - 搜索主机 - - - - - 进度条委托 - - - - - - 进度条委托 - - - - - - 浏览-选择文件-固件升级 - - - - - - - 浏览-选择文件-配置下发 - - - - - - - 读取主机系统参数信息 - - - - - 本地IP信息委托 - - - - - 本地IP信息 - - - - - 填充读取命令数据 - - - - - 季节 - - - 房态 - - - 房间是否锁定 - - - - 初始化房间信息 - - - - - 设置季节 - - - - - 设置当月季节 - - - - - - 获取房间状态 - - - - - - - 获取房间是否锁定 - - - - - - - 获取房间季节 - - - - - - - 下发计数 - - - - - 设置主机信息 - - - - - - - 更新MAC地址 - - - - - - 设置主机信息 - - - - - 获取设置总数数据 - - 项目编码 - 房态 - 房型备注房型ID - 房号备注房号ID - 房间备注 - 季节 - 授权到期时间 - 锁定 - - - - - 设置主机信息数据 - - - - - - 获取两个授权时间的Byte数据 - - - - - 获取UTC时间戳 - - - - - - 获取UTC时间戳Byte数组_4个字节长度 - - - - - - - 获取项目编号 - - - - - - - 房型ID - - - - - - - 房号ID - - - - - - - 获取房型 - - - - - - 获取房号 - - - - - - 获取房态 - - - - - - - 获取季节 - - - - - - - 获取季节数据 - - - - - - 获取锁定 - - - - - - 房间备注偏移地址数量 - - - 房间备注偏移地址 - - - - 房间注释 - - - - - - - 项目编码变化事件 - 项目编码与房号同步 - - - - - - - 房号变化事件 - 房号与项目编码同步 - - - - - - - 获取房间设置信息 - - - - - - - 填充设置配置数据 - - - - - - 显示列信息 - - - - - 端口号 - - - - - - - 服务器 - - - - - - - 子网掩码 - - - - - - - 网关 - - - - - - - DNS - - - - - - - 锁定 - - - - - - - 授权时间 - - - - - - - 授权到期时间 - - - - - - - 房间备注 - - - - - - 加载文件大小 - - - 加载数据大小 - - - 加载Hex文件数据 - - - 加载数据Buff - - - 加载结束地址 - - - C1-Hex文件起始值 - - - 解析出的文件数据 - - - 解析出的配置数据 - - - - 解析Hex文件 - - - - - - 匹配信息委托 - - - - - 匹配信息 - - - - - 加载hex文件数据 - - - - - - 匹配数据 - - - 匹配起始地址 - - - 匹配起始值 - - - - 解析Hex文件到Byte数组 - - - - - - - - - 和校验 - 求Byte数组的和校验 - - Byte数组 - - - - - 获取和校验 - - - - - - - - 解析Bin文件 - - - - - - 解析dat文件 - - - - - 状态栏解析文本委托 - 改变文本和颜色 - - - - - - - - 状态栏解析文本 - 改变文本和颜色 - - - - - - - - 状态栏解析文本委托 - 改变文本和颜色 - - - - - - - - 状态栏解析文本 - 改变文本和颜色 - - - - - - - - 匹配信息 - - - - - - - 是否选中 - - - 数据类型 - - - 主机数据 - - - Hex解析 - - - 匹配列名 - - - 匹配数据类型 - - - - 初始化匹配表格信息 - - - - - 下发匹配信息 - - - - - - 获取匹配校验 - - 主机数据 - Hex解析数据 - - - - Tftp端口 - - - Tftp新端口 - - - 是否升级回复 - - - 是否Tftp写请求回复 - - - 是否Tftp发送数据包回复 - - - Tftp回复超时 - - - 校验包回复 - - - 复位回复 - - - 最后端口 - - - 下发升级线程 - - - - 勾选 - - - - - - - 勾选计数 - - - - - - 升级计数 - - - - - 升级总数 - - - - - 同时最大升级个数 - - - - - 勾选下发 - - - - - - - 固件升级 - - - - - 升级方式_两种升级命令, 不同升级方式 - - - - - 开始固件升级 - - - - - 更新连接状态 - - - - - UDP Socket接收数据 - - - - - 按键是否可用 - - - - - 按键是否可用 - - - - - 固件升级-0x0A升级命令 - - - - - - - 固件升级-0xB2升级命令 - - - - - - - 固件升级-0x0A升级命令 - - - - - - - 固件升级-0xB2升级命令 - - - - - - - 配置下发-0xB5升级命令 - - - - - 固件升级-升级命令数据 - - - - - - - - 固件升级-校验命令 - - - - - 固件升级-复位命令 - - - - - MD5值排序 - - - - - - - 升级等待回复 - - 超时时间 - - - - 写请求等待回复 - - 超时时间 - - - - 发送数据包等待回复 - - 超时时间 - - - - 等待校验回复 - - 超时时间 - - - - 等待复位回复 - - 超时时间 - - - - Tftp命令 - - - - - - - 读请求 - - - 写请求 - - - 数据 - - - Ack确认 - - - Tftp_错误 - - - - Tftp开始发送写请求_数据 - - - - - Tftp开始发送写请求 - - - - - Tftp开始发送写请求_数据 - - - - - - 重发次数标志位 - - - - - 向Tftp发送升级数据 - - - - - 填充单包数据 - - - - - - - - - 填充单包_取对应包数据 - - - - - - - - - 进度条变化 - - - - - 进度条委托 - - - - - - 进度条委托 - - - - - - 是否批量下发改变进度值 - - - - - 配置下发 - - - - - 按键次数 - - - - - 设置寄存器组包 - - - - - - - - 发送方式 - - - - - - 读取寄存器组包 - - - - - - - - 设置主机信息按键 - - - - - - - 设置主机信息 - - - - - 读取信息 - - - - - - - 获取设置总数数据 - - - - - - 复位命令 - - - - - - - 研发使用MAC地址下发 - - - - - - - 是否点击OK - - - - - 设置MAC - - - - - 网络计数 - - - - - 设置网络信息按键 - - - - - - - 设置网络信息 - - - - - 获取 DHCP 使能 - - - - - - - 获取DHCP包 - - - - - - - - 获取DHCP设置包 - - - - - - - - 获取服务器IP地址数据 - - - - - - - - - - 获取设置DHCP数据 - - - - - - 设置按键状态 - - - - - - 设置服务器按键状态 - - - - - - 读取网络信息 - - - - - - - 获取读取数据 - - - - - - MQTT选择 - - - - - - - 设置计数 - - - - - 设置MQTT - - - - - - - 获取 MQTT 数据 - - - - - - 获取 MQTT 网络数据 - - - - - - 获取MQTT单项数据 - - - - - - - 获取MQTT单项数据 - - - - - - - 读取计数 - - - - - 读取MQTT - - - - - - - 获取 MQTT 数据 - - - - - - 获取 MQTT 数据 - - - - - - 系统信息 - - - - - - - 网络信息 - - - - - - - 设备信息 - - - - - - - 逻辑信息 - - - - - - - 临时信息 - - - - - - 主机信息 - - - 主板信息 - - - - 初始化信息 - - - - - 设置核心板参数 - - - - - - - 获取设置信息 - - - - - - 读取核心参数 - - - - - - - 批量数据枚举 - - - - ID - - - 勾选 - - - 房号 - - - MAC - - - IP地址 - - - - 批量数据表格列名 - - - - - 初始化批量下发表格数据 - - - - - 刷新云数据 - 根据当前选中酒店查询 - - - - - - - 获取云端数据 - - - - - - 比对数据 - - - - - 获取比对结果 - - - - - - - - 批量表格点击事件 - - - - - - - 设置RCU表格数据显示 - - - - - - 勾选表格信息 - - - - - - - 批量配置 - - - - - - - 获取批量表格勾选个数 - - - - - - 设置云端信息到主机 - - - - - 获取设置云端发送数据 - - - - - - - - 获取房号 - - - - - - - 获取云端数据要设置主机的IP地址 - - - - - - - 添加记录文本和颜色 - - 需要添加的记录内容 - 需要设置的记录颜色 - - - - 初始化界面控件文本 - - - - - 初始化酒店列表 - - - - - - 权限列表 - - - - - - - 锁定权限 - - - 授权时间 - - - 升级/房态/季节 - - - 研发管理 - - - 批量下发 - - - - 选择酒店事件 - - - - - - - 提示信息 - - - - - - 添加权限 - - - - - 添加上一次保存的酒店权限 - - - - - 权限管理_权限信息 - - - - - 初始化酒店区域信息 - - - - - 树状目录点击事件 - - - - - - - 酒店区域表列名_枚举 - - - - - - - 项目编码 - - - 酒店名称 - - - - 酒店区域表列名 - - - - - 初始化酒店表格 - - - - - 关闭窗体 - - - - - - - 窗体关闭事件 - - - - - - - 重试按键 - - - - - - - 解绑 - - - - - - - 取消 - - - - - - - 显示窗体 - - - - - 获取MAC地址 - - - - - - 字符串转换Byte数组 - - - - - - - 初始化界面控件文本 - - - - - 串口波特率 - - - - - 窗体加载事件 - - - - - - - 获取可用串口 - - - - port次数 - - - - 初始化串口波特率 - - - - - 串口点击按键 - - - - - - - 串口通讯开关 - - - - - - - 关闭串口 - - - - - 打开串口 - - - - - 配置串口 - - 串口名 - 串口波特率 - - - - 初始化界面控件文本 - - - - - 窗体加载事件 - - - - - - - 显示窗体事件 - 实现接口 - - - - - - 发送函数 - - - - - - 获取继电器序号 - - - - - 发送组包 - - - - - - - - 1-13路继电器 - - - - - - - 获取继电器状态 - - - - - - - 获取继电器序号 - - - - - - - 1-5路输出 - - - - - - - 获取C12测试输出序号 - - - - - 获取继电器状态 - - - - - - - 获取输入序号 - - - - - - - C12输入测试 - - - - - - - C12音乐测试 - - - - - - - C5测试音频播放文件下 - - - - - 初始化文件夹可选项 - - - - - C5音频测试 - - - - - - 获取播放文件夹 - - - - - - - 巡回测试 - - - - - - - C12调光 - - - - - - - 初始化界面控件文本 - - - - - 窗体加载 - - - - - - - 发送函数 - - - - - - 调光 - - - - - 初始化调光信息 - - - - - 调光发送 - - - - - - 调光数据 - - - - - - 调光参数 - - - - - - - 窗体关闭事件 - - - - - - - 初始化界面控件文本 - - - - - 窗体加载事件 - - - - - - - 显示窗体事件 - 实现接口 - - - - - - 发送函数 - - - - - - 发送组包 - - - - - - - - 获取继电器序号 - - - - - 1-24路继电器 - - - - - - - 获取继电器序号 - - - - - - - 获取继电器状态 - - - - - - - C5-IO 检测输入 - - - - - - - 输出测试 - - - - - - - 获取C5测试输出序号 - - - - - 获取继电器状态 - - - - - - - 获取输入序号 - - - - - - - C5测试音频播放文件下 - - - - - 初始化文件夹可选项 - - - - - 音乐播放 - - - - - - - C5音频测试 - - - - - - 获取播放文件夹 - - - - - - - 起始时间 - - - - - C5_巡回测试 - - - - - - - 设置MAC地址 - - - - - - - 发送MAC - - - - - - - - 初始化界面控件文本 - - - - - 窗体加载事件 - - - - - - - 显示窗体事件 - 实现接口 - - - - - - 发送函数 - - - - - - 获取继电器序号 - - - - - 发送组包 - - - - - - - - 1-13路继电器 - - - - - - - 获取继电器状态 - - - - - - - 获取继电器序号 - - - - - - - 1-5路输出 - - - - - - - 获取C12测试输出序号 - - - - - 获取继电器状态 - - - - - - - 获取输入序号 - - - - - - - C12输入测试 - - - - - - - C12音乐测试 - - - - - - - C5测试音频播放文件下 - - - - - 初始化文件夹可选项 - - - - - C5音频测试 - - - - - - 获取播放文件夹 - - - - - - - 巡回测试 - - - - - - - C12调光 - - - - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 初始化FTP连接参数 - - 端口号 - 用户名 - 用户密码 - - - - 创建类单例对象 - - - - - - Ftp服务器地址 - - - - - - 判断FTP文件是否存在 - - - - - - - 创建Ftp文件夹 - - Ftp文件夹路径 - 创建所有不存在的文件夹路径 - - - - 上传本地文件至Ftp - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 从Ftp下载文件至本地 - 从FTP下载压缩包,到本地指定路径 - - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 初始化FTP连接参数 - - 端口号 - 用户名 - 用户密码 - - - - 创建类单例对象 - - - - - - Ftp服务器地址 - - - - - - 判断FTP文件是否存在 - - - - - - - 创建Ftp文件夹 - - Ftp文件夹路径 - 创建所有不存在的文件夹路径 - - - - 上传本地文件至Ftp - 将本地指定路径压缩包上传到FTP服务器上manager文件夹下 - - - - - 从Ftp下载文件至本地 - 从FTP下载压缩包,到本地指定路径 - - - - - 显示测试窗体接口 - 测试窗体为各测试机型 - - - - - - 初始化 - - - - - 语言数据 - - - - 登录界面_语言 - - - 登录界面_登录 - - - 登录界面_用户名 - - - 登录界面_密码 - - - 登录界面_自动登录 - - - 登录界面_记住密码 - - - 登录界面_确定 - - - 登录界面_取消 - - - - 主界面_C系列配置工具 - - - - - 主界面_用户管理 - - - - - 主界面_切换酒店 - - - - - 主界面_切换用户 - - - - - 主界面_网络设置 - - - - - 主界面_串口设置 - - - - - 主界面_退出 - - - - - 主界面_帮助 - - - - - 主界面_关于 - - - - - 主界面_当前酒店 - - - - - 主界面_项目编码 - - - - - 主界面_酒店名称 - - - - - 主界面_欢迎您 - - - - - 主界面_酒店列表 - - - - - 主界面_请选择您的酒店 - - - - - 主界面_所有酒店 - - - - - 主界面_选中 - - - - - 主界面_松开 - - - - - 主界面_本地IP - - - - - 主界面_本地端口 - - - - - 主界面_远程IP - - - - - 主界面_远程端口 - - - - - 主界面_打开连接 - - - - - 主界面_断开连接 - - - - - 主界面_串口名称 - - - - - 主界面_波特率 - - - - - 主界面_打开串口 - - - - - 主界面_关闭串口 - - - - - 主界面_主机管理 - - - - - 主界面_搜索 - - - - - 主界面_广播 - - - - - 主界面_直连 - - - - - 主界面_主机列表 - - - - - 主界面_全选 - - - - - 主界面_勾选 - - - - - 主界面_升级 - - - - - 主界面_按键 - - - - - 主界面_房号ID - - - - - 主界面_房号 - - - - - 主界面_房型ID - - - - - 主界面_房型 - - - - - 主界面_房态 - - - - - 主界面_MAC - - - - - 主界面_机型编号 - - - - - 主界面_软件版本 - - - - - 主界面_配置版本 - - - - - 主界面_IP地址 - - - - - 主界面_端口 - - - - - 主界面_网关 - - - - - 主界面_子网掩码 - - - - - 主界面_DNS - - - - - 主界面_服务器 - - - - - 主界面_主机时间 - - - - - 主界面_季节 - - - - - 主界面_锁定 - - - - - 主界面_授权时间 - - - - - 主界面_授权到期时间 - - - - - 主界面_房间备注 - - - - - 主界面_Core - - - - - 主界面_Model - - - - - 主界面_固件升级 - - - - - 主界面_文件路径 - - - - - 主界面_浏览 - - - - - 主界面_升级 - - - - - 主界面_设置项目信息 - - - - - 主界面_出租 - - - - - 主界面_退房 - - - - - 主界面_空房 - - - - - 主界面_待租 - - - - - 主界面_春 - - - - - 主界面_夏 - - - - - 主界面_秋 - - - - - 主界面_冬 - - - - - 主界面_正常 - - - - - 主界面_设置 - - - - - 主界面_清空 - - - - - 主界面_更新云端数据 - - - - - 主界面_勾选下发 - - - - - 主界面_匹配信息 - - - - - 主界面_CKS - - - - - 主界面_数据类型 - - - - - 主界面_主机数据 - - - - - 主界面_Hex解析 - - - - - 主界面_匹配 - - - - - 主界面_不匹配 - - - - - 主界面_配置下发 - - - - - 主界面_提示 - - - - - 主界面_等待中 - - - - - 主界面_读取设置 - - - - - 主界面_设置MAC - - - - - 主界面_配置下发信息 - - - - - 主界面_查询设备状态 - - - - - 主界面_设备类型 - - - - - 主界面_设备地址 - - - - - 主界面_设备状态 - - - - - 主界面_在线 - - - - - 主界面_离线 - - - - - 主界面_通讯测试 - - - - - 主界面_系统信息 - - - - - 主界面_设备信息 - - - - - 主界面_网络信息 - - - - - 主界面_逻辑信息 - - - - - 主界面_临时信息 - - - - - 主界面_清除记录 - - - - - 主界面_通讯记录 - - - - - 主界面_机型测试 - - - - - C5机型_C5 - - - - - 测试界面_继电器控制 - - - - - 测试界面_IO输出 - - - - - 测试界面_IO输入 - - - - - 测试界面_音乐 - - - - - 测试界面_巡回测试 - - - - - 测试界面_输入检测 - - - - - 测试界面_播放文件夹 - - - - - 测试界面_播放文件序号 - - - - - 测试界面_播放 - - - - - 测试界面_音乐文件夹 - - - - - 测试界面_提示音文件夹 - - - - - 测试界面_助眠文件夹 - - - - - 测试界面_门铃文件夹 - - - - - 测试界面_欢迎词文件夹 - - - - - 测试界面_助眠文件夹1-冥想 - - - - - 测试界面_助眠文件夹2-海浪 - - - - - 测试界面_助眠文件夹3-深林 - - - - - C12机型_C12 - - - - - C12机型_调光 - - - - - C12机型_调光测试 - - - - - 主界面_研发使用 - - - - - 主界面_使能 - - - - - 主界面_使用下面的 IP 地址 - - - - - 主界面_MQTT - - - - - 主界面_阿里云 - - - - - 主界面_产品密钥 - - - - - 主界面_设备名称 - - - - - 主界面_设备秘钥 - - - - - 主界面_发布会话 - - - - - 主界面_订阅会话 - - - - - 主界面_在线时间 - - - - - 主界面_域名 - - - - - 主界面_客户端ID - - - - - 主界面_串口打印信息 - - - - - 主界面_设置核心参数 - - - - - 主界面_主机模块型号 - - - - - 主界面_主板型号 - - - - - 主界面_设置参数 - - - - - 主界面_读取参数 - - - - - 登录界面_登录失败 - - - - - 登录界面_用户不存在 - - - - - 登录界面_数据库连接成功! - - - - - 登录界面_数据库连接失败! - - - - - 登录界面_无法访问云端数据! - - - - - 登录界面_密码错误,请重试! - - - - - 登录界面_请输入用户账号 - - - - - 登录界面_请输入密码 - - - - - 主界面_请选择您名下的酒店 - - - - - 主界面_请先选择有效串口 - - - - - 主界面_请先选择有效波特率 - - - - - 主界面_串口打开失败,原因 - - - - - 主界面_串口发送错误!原因 - - - - - 主界面_串口接收数据失败,原因 - - - - - 主界面_巡回测试成功 ===================暂未使用 - - - - - 主界面_巡回测试失败 - - - - - 主界面_Port输入不合法 - - - - - 主界面_IP输入不合法 - - - - - 主界面_请打开网络或者串口 - - - - - 主界面_未知命令 - - - - - 主界面_未知状态 - - - - - 主界面_升级就绪 - - - - - 主界面_升级完成 - - - - - 主界面_升级失败 - - - - - 主界面_文件块数错误 - - - - - 主界面_文件类型错误 - - - - - 主界面_文件MD5值错误 ===================暂未使用 - - - - - 主界面_设置成功 - - - - - 主界面_设置失败 - - - - - 主界面_读取完成 - - - - - 主界面_下发成功 - - - - - 主界面_下发失败 - - - - - 主界面_当前房间未配置 - - - - - 主界面_请选择项目编号 - - - - - 主界面_请选择房间编号 - - - - - 主界面_项目编号为空 - - - - - 主界面_配置版本为空 - - - - - 主界面_项目编码不匹配 - - - - - 主界面_设备为空 - - - - - 主界面_准备文件 - - - - - 主界面_房号不可批量下发 - - - - - 主界面_房间注释不可批量下发 - - - - - 主界面_请选择要下发的信息和主机 - - - - - 主界面_正在解析Hex文件 - - - - - 主界面_解析完成 - - - - - 主界面_请搜索要升级的主机 - - - - - 主界面_请扫描MAC地址 - - - - - 主界面_全部 - - - - - 主界面_房号ID不匹配 - - - - - 主界面_房型ID不匹配 - - - - - 主界面_房号与房号ID不匹配 - - - - - 主界面_房型与房型ID不匹配 - - - - - 主界面_房号ID与房型ID不匹配 - - - - - 主界面_房号ID与MAC地址不匹配 - - - - - 主界面_请选择需要配置的主机 - - - - - 主界面_不能为空 - - - - - 主界面_正在解析Bin文件 - - - - - 主界面_请选择需要升级的文件 - - - - - 主界面_测试中 - - - - - 主界面_串口 - - - - - 主界面_停止 - - - - - 主界面_房号不能为空 - - - - - 主界面_请选择要读取的项目信息项 - - - - - 主界面_未查询到登录信息 - - - - - 主界面_请检查网络是否连接成功 - - - - - 主界面_登录超时 - - - - - 主界面_DHCP - - - - - 主界面_自定义云 - - - - - 主界面_云 - - - - - 主界面_后台 - - - - - 新增_批量数据下发 - - - - - 新增_云端数据 - - - - - 新增_刷新 - - - - - 新增_对比 - - - - - 新增_批量配置 - - - - - 语言名称 - - - - - - 语言版本 - - - - - - 初始化语言数据 - - - - - - 将类对象序列化为xml文件 - - - - - - - 从Xml文件中反序列化成指定类 - - - - - - - - 初始化 - - - - - 登录数据 - - - - - 登录状态 - - - - - 登录提示 - - - - - 用户信息 - - - - - 酒店数据 - - - - - 初始化酒店权限 - - - - - 权限状态ID - - - - - 权限ID - - - - - 权限名称 - - - - - 初始化酒店组 - - - - - 酒店组ID - - - - - 酒店组名称 - - - - - 酒店组 - - - - - 初始化酒店信息 - - - - - 酒店ID - - - - - 项目编码 - - - - - 酒店名称 - - - - - 酒店权限 - - - - - 酒店组ID - - - - - 酒店组名 - - - - - 酒店ID - - - - - 项目编码 - - - - - 酒店名称 - - - - - 权限状态 - - - - - 权限ID - - - - - 权限名称 - - - - - 用户头像 - - - - - 调光 - - - - - 调光滑动值 - - - - - 调光输入值 - - - - - 是否是网络发送 - - - - - 是否是串口发送 - - - - - 查询到的酒店编码 - - - - - 查询到的酒店名称 - - - - - 查询到权限 - - - - - 登录返回数据 - json序列号 - - - - - 后台接口返回酒店列表数据 - - - - - 后台接口返回房型列表数据 - - - - - 后台接口返回主机列表数据 - - - - - 语言数据 - - - - - SqlServer - - - - - 登录数据库 - - - - - 用户名 - - - - - 用户表格 - - - - - 本地IP - - - - - 本地端口号 - - - - - 远程IP地址 - - - - - 远程端口号 - - - - - 连接状态,默认非连接 - - - - - 是否通过UDP发送数据 - - - - - 回复超时 - - - - - 是否重试绑定MAC - - - - - 是否解绑MAC - - - - - 获取本地可用IP - - - - - - Byte数组转字符串 - - - - - - - 判断文本不能为空 - 文本框 - - - - - - - 判断文本不能为空 - 下拉框 - - - - - - - 等待回复 - - 是否回复标志位 - 超时时间 - - - - 延时N秒 - - 延时时间值 - - - - IP地址转换为Byte数组 - - - - - - - 端口号转换为Byte数组 - - - - - - - Int转2个字节Byte - 低字节在前,高字节在后 - - - - - - - Int转2个字节Byte - 高字节在前,低字节在后 - - - - - - - 获取文件的MD5值 - 返回Byte数组值 - - 文件路径 - - - - - 获取文件的MD5值 - 返回String字符串 - - 文件路径 - - - - - 获取数据的MD5值 - 返回MD5校验的Byte数组 - - 文件数据 - - - - - 获取数据的MD5值 - 返回MD5校验的Byte数组 - - 文件数据 - - - - - 获取字符串的MD5值 - - 需要求MD5的原文字符串 - - - - - 分块函数 - 计算Byte数组的块数 - - - - - - - - 字符串转换Byte数组 - 字符串为连续且不包含任意字符的字符串 - - - - - - - 把UNIX时间戳转换为标准时间 - - 要转换的UNIX时间戳 - 时区 - intTime所代表的标准时间 - - - - 判断网络信息是否合法 - - - - - - - - 判断文本输入控件输入是否合法 - - - - - - - Post请求 - - - - - - - - 处理酒店列表接口信息 - - - - - - 处理主机列表接口信息 - - - - - - 处理主机列表接口信息 - - - - - - 设置MAC地址返回结果 - - - - - 处理设置主机MAC接口信息 - - - - - - 获取操作系统已用的端口号 - - - - - 获取随机端口号 - - - - - 发送测试数据序号 - - - - 填充C5串口测试 - - - - - - - 获取发送序号 - - - - - - 和校验取余数 - 求Byte数组的和校验取余数 - - Byte数组 - - - - - 填充测试数据参数 - - 测试状态 - 设备类型 - 设备地址-默认为0 - 测试设备Cmd - 参数 - - - - - 填充测试数据参数 - - 测试状态 - 设备类型 - 设备地址-默认为0 - 测试设备Cmd - - - - - 连接字符串 - - - - - MySQL 连接器 - - - - - 初始化 MySQL 连接对象 - - - - - - - - - - 连接My SQL数据库 - - - - - 插入MySQL数据 - - - - - - - 修改MySQL数据 - - - - - - - 查询MySQL数据 - - 需要查询的列 - - - - - 查询MySQL数据 - - 需要查询的列 - 需要查询的数据表名 - 需要查询的条件,默认为空 - - - - - 获取多语种版本信息 - - - - - - 获取云端数据信息 - - - - - - SQL连接 - - - - - SQL适配器 - - - - - SQL数据集 - - - - - 是否连接数据库 - - - - - 初始化 - - - - - 连接数据库 - - IP地址或计算名 - 数据库名 - 安全连接情况(真或假),若是Windows验证方式则为真,若是用户名及密码登录则为假 - 上项为假时,提供用户名 - 上项为假时,提供密码 - - - - 获取多语种版本信息 - - - - - - 获取多语种版本信息 - - - - - - SqlServer查询 - - 需要查询的数据表名 - 要显示的表格控件 - 需要查询的条件,默认为空 - - - - SqlServer查询 - - 要查询的列 - 需要查询的数据表名 - 要显示的表格控件 - 需要查询的条件,默认为空 - - - - SqlServer查询 - - 需要查询的数据表名 - 需要查询的条件,默认为空 - - - - SqlServer查询 - - 需要查询的列 - 需要查询的数据表名 - 需要查询的条件,默认为空 - - - - - SqlServer添加 - - 需要添加的数据表名 - 要显示的表格控件 - 需要添加的数据条件,(字段1,字段2,字段3) values(字段1值,字段2值,字段3值) - (条件中若是包含中文,则用N'{值}'表示) - - - - SqlServer添加 - - 需要添加的数据表名 - 需要添加的数据条件,(字段1,字段2,字段3) values(字段1值,字段2值,字段3值) - (条件中若是包含中文,则用N'{值}'表示) - - - - SqlServer修改 - - 需要修改的数据表名 - 要显示的表格控件 - 需要修改的数据条件,Set 字段1 = 修改后的值 Where 字段1 = 修改前的值 - (条件中若是包含中文,则用N'{值}'表示) - - - - SqlServer删除 - - 需要删除的数据表名 - 要显示的表格控件 - 需要删除的数据条件,Where 字段1 = 字段1值 And 字段2 = 字段2值 And 字段3... - (条件中若是包含中文,则用N'{值}'表示) - - - - 获取匹配的用户信息 - - 用户账号 - 用户密码 - - - - - 关闭连接 - - - - - 用户Uid唯一索引_用户名 - - - - - 用户密码 - - - - - 创建日期 - - - - - 是否有效 - - - - - C系列配置工具权限所属域ID - - - - - 用户表名称 - - - - - - 用户表-权限关联表名称 - - - - - - 域-权限关联表名称 - - - - - - 权限表名称 - - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 是否为唯一值 - - - - - - 1 byte,小整数值 - - - - - 2 bytes,大整数值 - - - - - 3 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 4 bytes,大整数值 - - - - - 8 bytes,极大整数值 - - - - - 4 bytes,单精度浮点数值 - - - - - 8 bytes,双精度浮点数值 - - - - - 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2.小数值 - - - - - 3 bytes,日期值,YYYY-MM-DD - - - - - 3 bytes,时间值或持续时间,HH:MM:SS - - - - - 1 bytes,年份值,YYYY - - - - - 8 bytes,混合日期和时间值,YYYY-MM-DD HH:MM:SS - - - - - 4 bytes,混合日期和时间值,时间戳,YYYYMMDD HHMMSS - - - - - 0-255 bytes,定长字符串 - - - - - 0-65535 bytes,变长字符串 - - - - - 0-255 bytes,不超过 255 个字符的二进制字符串 - - - - - 0-255 bytes,短文本字符串 - - - - - 0-65 535 bytes,二进制形式的长文本数据 - - - - - 0-65 535 bytes,长文本数据 - - - - - 0-16 777 215 bytes,二进制形式的中等长度文本数据 - - - - - 0-16 777 215 bytes,中等长度文本数据 - - - - - 0-4 294 967 295 bytes,二进制形式的极大文本数据 - - - - - 0-4 294 967 295 bytes,极大文本数据 - - - - - 列名 - - - - - - 当前值 - - - - - - 默认值 - - - - - - 数据类型 - - - - - - 数据类型长度 - - - - - - 数据类型是否带符号 - - - - - - 是否允许为空 - - - - - - 是否自动增长 - - - - - - 是否为主键 - - - - - - 数据库语句助手 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - 注意:添加一条数据库帮助语句时,需要考虑Mysql/Sqlite/Mssql等数据库是否支持命令,不支持则需要在对应帮助类中重写该帮助语句 - 注意:Sqlite数据库与大多数据库不相同,DB开头数据库语句大多不适用 - - - - - - 查询指定数据表符合条件的所有数据 - - 指定表名 - 查询条件, - - - - - 查询表符合条件的所有指定列的数据 - - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询表符合条件的所有指定列的数据 - - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据表名 - 查询条件 - - - - - 查询指定数据表的信息 - - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在数据库中存在的数量 - - 表名 - - - - - 数据表插入一行数据 - - 表名 - 列名字符串 - 列值字符串 - - - - - 数据表插入一行数据 - - 表名 - 列名与列值键值对 - - - - - 数据表插入一行,通过命令参数方式执行时使用 - - - - - - - - 数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 表名 - 字段列表 - - - - - 更新指定表数据 - - 指定表名 - 更新字符串 - - - - - - 更新指定表数据 - - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 指定数据表增加一列数据 - - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 数据表删除一列数据 - - 表名 - 需要删除的列名,仅一列 - - - - - 删除指定表多行数据 - - 表名 - 条件 - - - - - 创建数据表 - - 表名 - 创建表的列信息字符串 - - - - - 创建数据表,如果存在则不创建 - - 表名 - 创建表的列信息字符串 - - - - - 清空数据表,表依旧存在 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 删除数据表 - - 数据表名 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的去重数据 - - 数据库名 - 列名集合,需要返回多列时用','符号分隔列名 - 表名 - 条件 - - - - - 查询指定数据库中指定数据表符合条件的所有指定列的数据 - - 数据库名 - 表名 - 条件 - - - - - 查询指定表包含的内容行数 - - 数据库名 - 数据表名 - 查询条件 - - - - - 查询指定数据库中指定数据表符合条件的所有数据 - - - 数据库名 - 数据表名 - 查询条件(可选) - - - - - 查询指定数据库中指定数据表的信息 - - 数据库名 - 表名 - - - - - 查询指定数据表是否存在的信息,返回查询当前表在指定数据库中存在的数量 - - 数据库名 - 表名 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名字符串 - 列值字符串 - - - - - 指定数据库中数据表插入一行数据 - - 数据库名 - 表名 - 列名与列值键值对 - - - - - 指定数据库中数据表插入一行,通过命令参数方式执行时使用,参数名由@{ColName} - - 数据库名 - - 需要插入列名的集合 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新字符串 - - - - - - 更新指定数据库中指定表数据,参数名由@{ColName} - - 数据库名 - 指定表名 - 更新列名的集合 - 更新列索引条件 - - - - - 更新指定数据库中指定表数据 - - 数据库名 - 指定表名 - 更新列名与列值键值对 - 更新列索引条件 - - - - - 指定数据库中指定数据表增加一列数据 - - 数据库名 - 表名 - 列名 - 列类型 - 是否允许为空 - - - - - 指定数据库中数据表删除一列数据 - - 数据库名 - 表名 - 需要删除的列名,仅一列 - - - - - 指定数据库中指定表删除多行数据 - - 数据库名 - 表名 - 条件 - - - - - 指定数据库中创建数据表 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 指定数据库中创建数据表,如果存在则不创建 - - 数据库名 - 表名 - 创建表的列信息字符串 - - - - - 清空指定数据库中数据表,表依旧存在 - - 数据库名 - 数据表名 - - - - - 删除指定数据库中数据表 - - 数据库名 - 数据表名 - - - - - 数据库通用命令执行器 - 时间:2020-12-21 - 作者:ML - 版本:1.0 - - - - - 数据库类型,目前支持Mysql与Sqlite - - - - - 打开数据库连接 - - - - - - 关闭数据库连接 - - - - - 创建当前连接的命令执行句柄 - - - - - - 运行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行非查询语句,返回执行该语句受到影响的行数 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回数据库读取流的句柄 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - - - - - 使用命令参数模式执行数据库语句,返回查询结果的第一行第一列的内容 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - - - - - 执行数据库语句,返回执行结果返回的数据表,常用于查询命令 - - 执行的数据库命令文本 - 执行的数据库命令参数 - - - - - 开启事务 - - - - - - 提交事务 - - - - - 回滚事务 - - - - - 创建数据参数 - - 参数数据类型 - 参数名称 - 参数值 - - - - - 添加数据参数 - - - - - - - - - 清空数据 - - - - - 回收资源 - - - - - 查询指定数据表的信息 - - - - - - 测试器句柄,全局唯一 - - - 初始化测试器线程锁 - - - - 创建类单例对象 - - - - - - 设备对象基类信息 - - - - - - 设备对象基类信息 - - - - - - 设备对象基类信息 - - - - - - 设备对象基类信息 - - - - - - 设备键值对 设备名-设备信息集合 主机=主机名 外设=外设名+播马地址 - - - - - 设备动作信息 设备名-动作信息集合 - - - - - 保存模型信息至Xml文件 - - xml完整路径 - - - - - 获取节点选择项对应的数值 - - - - - - 动作输出使能 - - - 房态 - - - 控制取电服务 - - - 取电状态 - - - 勿扰状态 - - - 清理状态 - - - 呼叫状态 - - - 洗衣状态 - - - 退房状态 - - - 稍后状态 - - - SOS状态 - - - 预约待租状态 - - - 开锁状态 - - - 行李状态 - - - 保险箱状态 - - - 门磁状态 - - - 提示音状态 - - - 背光状态 - - - 季节状态 - - - 时间状态 - - - 起夜状态 - - - 锁定状态 - - - 保留字段 - - - - 设备键值对 设备名-设备信息集合 主机=主机名 外设=外设名+播马地址 - - - - - RCU设备名 - - - - 刷新锁计数 - - - 进度条 控件 - - - 表格控件 - - - 条件文件名 - - - - 设备对象基类信息 - - - - - 基类文件名 - - - - 条件 - - - - - - 主机名 - - - - - - 设备键值对 设备名-设备信息集合 主机=主机名 外设=外设名+播马地址 - - - - - 设备动作信息 设备名-动作信息集合 - - - - - 场景号 累加 - - - - 文件是否有修改,如果有修改,则在关闭时提示保存 - - - - 列的开始加载位置 - - - - - 服务插入行起始位 - - - - - 固定行 - - - - - 设备名 - - - - - 功能名 - - - - - 功能下属节点ID - - - - - 功能下属节点别名 - - - - - 条件列名 - - - - - 固定列 - - - - - 行号 - - - - - 列数据的数据类型 - - - - - 表列-音乐数据 - - - - - 表列-开关数据 - - - - - 表列-服务添加 - - - - - - - - - - 按键开 - - - - - 按键关 - - - - - - - - - - - 表头初始化 - - - - - 加载设备头输出信息 - - - - - - - - - 加载设备输入信息 - - - - - - 加载设备输入信息 - - - - - - 模型关联的表格控件 - - - - - - 从动作行节点获取动作数据 - - - - - - - 根据RCU模型的设备存在属性组,配置设备存在数据 - - 模型节点 - - - - - 配置RCU模型设备存在数据 - - 模型节点 - - - - - Integer 类型转 4 字节 byte数组,高字节在前 - - - - - - - Integer 类型转 3 字节 byte数组,高字节在前 - - - - - - - 行数据集合 - - - - - 设备模型名 - - - - - 按键来类型 - - - - - 无检测 - - - - - 别名转换所使用的编码格式,默认方式GBK - 8 - - - - Integer 类型转 4 字节 byte数组,高字节在前 - - - - - - - Integer 类型转 3 字节 byte数组,高字节在前 - - - - - - - 配置RCU模型设备存在数据 - - 模型节点 - - - - - 根据RCU模型的设备存在属性组,配置设备存在数据 - - 模型节点 - - - - - 在模型节点下查询指定名称的设备组节点 - - 模型节点 - - - - - 获取输入类型设备对象的回路设置 - - - - - - - 填充数据帧 - - 包含帧类型和帧参数 - - - - - CRC16校验 - - - - - - - - 获取设备对象下的所有动作编译数据(所有的设备对象动作数据) - - - - - - 从动作行节点获取动作数据 - - - - - - - 获取条件组节点下的条件编译数据 - - 条件组节点 - - - - - 客户名称 - - - - - - 客户索引 - - - - - - 客户索引 - - - - - - 列名 - - - - - 填充表 - - - - - 单独下载控制开关 和 separateMap 一起使用 - - - - - 文件同步线程 - - - - - 本地同步文件夹路径 - - - - - 数据库登录 - - - - - FTP同步标志 - - - - - FTP同步间隔 - - - - - - - 同步文件夹本地路径 - 同步云文件夹路径 - - - - 获取数据库文件数据 - - - - - - - - - - - - - - - 文件比对 - - - - - FTP下载 - - - - - 条件信息 - - - - - 执行方式 - - - - - 条件名 - - - - - 条件数据类型 - - - - - 条件数据范围 - - - - - 条件数据取值 - - - - - 条件数据默认值 - - - - - 条件描述 - - - - 输出信息打印 - - - - 场景编号,从1开始 - - - - - 动作编号,从1开始 - - - - - 便于索引的动作编号 - - - - - 事件键值对,用于保存事件编号和对应的节点 - - - - - 节点集合,表明该设备在哪些地方产生了调用 - - - - - 节点集合,表明该动作组被哪些地方调用 - - - - - 节点集合,表明该场景被哪些地方调用 - - - - - 所有已配置词条的小宝的集合 - - - - - 动作组集合,键为动作组别名,键位动作组节点 - - - - - 模型集合,键为设备对象别名,键为模型节点 - - - - - 模型集合,键为设备对象行号,键为模型节点 - - - - - 设备对象集合,键为设备对象别名,键为设备对象节点 - - - - - 场景模式集合,键为设备对象别名,键为设备对象节点 - - - - - 所有设备对象的集合 - - - - - 所有非设备事件的自定义场景集合 - - - - - 所有设备存在的集合 - - - - - 所有小宝的集合 - - - - - RCU模型节点 - - - - - 别名转换所使用的编码格式,默认方式GBK - - - - - 单条数据帧,最大动作数量,默认80 - - - - - 键为场景别名,值为场景编号 - g - - - - 键为场景编号,值为场景别名与设备动作编号 - - - - - 输出对应类型信息 - - - - - - - 输出执行信息 - - - - - - 输出警告信息 - - - - - - 输出错误信息 - - - - - - 填充编译所需要的必要索引信息 - - - - - 编译 - - - - - 下载 - - - - - 规则检测 - - - - - 填充数据帧 - - 包含帧类型和帧参数 - - - - - CRC16校验 - - - - - - - - 在模型节点下查询指定名称的设备组节点 - - 模型节点 - - - - - 在模型节点下查询属性集节点 - - 模型节点 - - - - - 在属性集节点下查询指定名称的属性组节点 - - 属性集合节点 - 属性组名称 - - - - - 在属性组节点下查询属性节点 - - - - - - - - 获取节点选择项对应的数值 - - - - - - - 在模型节点下查询指定组名下的指定名称属性节点 - - 模型节点 - - - - - 在模型节点下查询指定组名下的指定名称的属性节点值 - - 模型节点 - - - - - 在模型节点下查询指定组名下的指定名称的属性节点值 - - 模型节点 - - - - - 在属性组节点下查询指定属性名的属性节点值 - - 属性组节点 - 属性值 - - - - - 在模型节点下查询指定名称的设备组节点 - - 模型节点 - 设备组名 - - - - - 填充小宝数据 - - - - - - 获取小宝词条组的数据 - - 小宝词条组节点 - - - - - 填充配置信息 - 修改记录: - 2022-05-16 曹聪 - 1、下发的软件版本类型不对 - 已修改 - 2、下发的中文编码不对 - 已修改 - - - - - - 填充设备存在 - - - - - - 根据RCU模型的设备存在属性组,配置设备存在数据 - - 模型节点 - - - - - 根据RCU模型的设备存在属性组,配置设备存在数据 - - 模型节点 - - - - - 获取输入类型设备对象的回路设置 - - - - - - - 根据连接在485设备下的模型节点信息,配置设备存在数据 - - 模型节点 - - - - - 配置RCU模型设备存在数据 - - 模型节点 - - - - - 根据连接在485设备下的模型节点信息,配置设备存在数据 - - 模型节点 - - - - - 获取事件条件节点下的条件执行方式节点 - - 设备对象节点 - - - - - 在动作执行方式组节点下查询指定名称的动作执行方式节点 - - 模型节点 - 设备组名 - - - - - 获取事件条件下的编译数据 - - 条件组节点 - - - - - 获取设备对象的回路地址 - - - - - - - 获取执行方式组节点下的执行方式编译数据 - - - - - - - 获取条件组节点下的条件编译数据 - - 条件组节点 - - - - - 获取设备对象下的所有动作编译数据(所有的设备对象动作数据) - - - - - - 获取场景模式集下的所有编译数据(多个节点的场景数据) - - - - - - 获取设备节点下的所有编译数据(多个节点的事件数据) - - 设备对象节点 - - - - - 获取事件节点下的编译数据(多个事件的编译数据) - - 事件组节点 - - - - - 获取场景模式节点下的编译数据(多个条件的编译数据) - - 事件节点 - - - - - 获取事件节点下的编译数据(多个条件的编译数据) - - 事件节点 - - - - - 获取事件条件节点下的编译数据(单个条件的编译数据) - - - - - - - 通过设备对象别名,查找设备对象回路信息 - - - - - - - 获取场景节点的设备类型 - - - - - - 获取场景节点的设备地址 - - - - - - 获取指定名称设备对象的设备类型 - - 设备节点所在行 - - - - - 获取指定名称设备对象的设备类型 - - 设备对象别名 - - - - - 获取执行名称设备对象的设备地址 - - 设备节点所在行 - - - - - 获取执行名称设备对象的设备地址 - - 设备对象别名 - - - - - 获取节点组下所有动作的编译数据 - - - - - - - 从动作行节点获取动作数据 - - - - - - - 根据动作节点内容获取执行方式与执行内容 - - 设备类型 - 动作节点 - - - - - Integer 类型转 3 字节 byte数组,高字节在前 - - - - - - - Integer 类型转 4 字节 byte数组,高字节在前 - - - - - - - 获取延时时间 - - - - - - - 获取动作组节点下动作总数 - - - - - - - 执行条件转换为编译数据类 - 2022-05-10 曹聪 - 1、将变量类型从Integer改为Uint64 变量左移溢出导致条件参数不正确 - 2、条件参数中背光状态没有调用 - - - - 动作输出使能 - - - 房态 - - - 控制取电服务 - - - 取电状态 - - - 勿扰状态 - - - 清理状态 - - - 呼叫状态 - - - 洗衣状态 - - - 退房状态 - - - 稍后状态 - - - SOS状态 - - - 预约待租状态 - - - 开锁状态 - - - 行李状态 - - - 保险箱状态 - - - 门磁状态 - - - 提示音状态 - - - 背光状态 - - - 季节状态 - - - 时间状态 - - - 起夜状态 - - - 锁定状态 - - - 保留字段 - - - 配置信息协议位 - - - 配置发布作者 - - - 配置软件版本号 - - - 配置发布日期 - - - 用户名 - - - 项目编号 - - - 房型ID - - - 房型别名 - - - 配置数据版本 - - - - 设备存在协议位 - - - - 设备类型 - - - 设备地址 - - - 485端口 - - - 波特率 - - - 设备协议版本 - - - 通讯重发次数 - - - 通讯等待时间 - - - 保留 - - - 输入回路数 - - - 输出回路数 - - - 回路别名 - - - 设备动作协议位 - - - 设备类型 - - - 设备地址 - - - 设备动作编号 - - - 设备输入回路 - - - 设备输入类型 - - - 动作执行条件 - - - 动作执行方式 - - - 设备动作别名 - - - 保留参数 - - - 输出设备动作数 - - - 设备动作 - - - 设备动作参数协议位 - - - 设备类型,外接设备设备类型(主机特殊处理) - - - 设备地址,选择对象的设备拨码地址(主机特殊处理) - - - 设备回路,选择对象的回路地址,2位 - - - 执行方式,不同设备类型有不同方式 - - - 执行内容,不同设备类型有不同内容 - - - 延时时间,动作执行延时 - - - 延时单位,做东执行延时单位 - - - - 禁止 - - - - - 只读 - - - - - 读写 - - - - - 管理 - - - - - 允许 - - - - - 拒绝 - - - - - 发布项目 - - - - - 高级开发项 - - - - - 项目锁 - - - - - 提示信息 - - - - - - 调用窗口 - - - - - - - 串口刷新 - - - - - - - 串口句柄 - - - - - 打开串口 - - - - - - 重做命令 - - - - - 撤销命令 - - - - - 客户名称 - - - - - - 设备文件名 - - - - - 酒店名称 - - - - - - 酒店房型 - - - - - - 模型名称 - - - - - 模型说明 - - - - - 模型配置信息 - - - - - 模型子节点 - - - - - 设备名称 - - - - - - 设备商标 - - - - - - 设备模型 - - - - - - 协议 - - - - - - 协议数据 - - - - - - 协议版本 - - - - - - 设备接口 - - - - - - 设备类型数据 - - - - - - 设备数据模型版本 - - - - - - 设备说明 - - - - - - 设备说明 - - - - - - 引用基类的名称 - - - - - - 引用条件的名称 - - - - - - 设备对象类型可选对象类型集合 - - - - - - 枚举扩展类 - - - - - 获取枚举描述特性 - - 需要获取特性的枚举值 - 枚举描述特性 - - - - 获取当前枚举所有描述特性值,未填的枚举采用枚举名 - - 枚举类型 - - - - - 客户索引 - - - - - - 客户名称 - - - - - - 客户索引 - - - - - - 酒店四位数字代号,在TBL_HOTEL_BASIC_INFO 数据表中对应 “PROJECT_NUMBER”字段 - - - - - - 酒店名称 - - - - - - 账号权限 - - - - - - 酒店个数 - - - - - 酒店信息列表 - - - - - 当前选中的tree view节点信息 - - - - 当前选择的酒店组 - - - 是否记住密码 - - - 是否自动登录 - - - 是否正在登录中 - - - 产品索引 - - - 记住密码复选框状态修改触发事件 - - - 自动登录复选框状态修改触发事件 - - - 读取Setting中的缓存量 - - - 保存Setting中的缓存量 - - - - 配置信息,这些信息将会被编译到配置文件的0x01数据块 - - - - - 项目信息 - - - - - 模型表格 - - - - - 账号 - - - - - 账号 - - - - - 账号权限 - - - - - 基类信息 - - - - - 条件信息 - - - - - 当前编辑的酒店房型 node index,等同于在 _project.RoomType list列表中的位置 - - - - - 根据酒店组+酒店ID+酒店名称 确定XML文件存放目录 - - - - - 主文件夹路径 - - - - - 模型文件夹名称 - - - - - 配置文件夹名称 - - - - - 固件文件夹名称 - - - - - XML 临时文件文件名 - - - - - 添加项目设计窗体到分页控件中 - - - - - 点击登录 - - - - - - - 处理登录信息 - - - - - 下拉选择语言 - - - - - - - 获取云端数据 - - - - - - 获取云端数据版本 - - - - - 语言名称和版本信息 - - - - 初始化多语种 - - - - - 刷新编辑表 - - - - - '检测酒店发布权限,并载入酒店节点 - - - - - 获取权限ID 对应权限 - - 酒店权限集合 - 权限ID - - - - - 刷新配置文件信息,这些信息将会被编译到配置文件的0x01数据块 - - - - - 单文件下载 - - - - - - 单文件下载 - - - - - - 获取表数据 - - 表名 - 条件 - - - - - 固件上传 - - - - - - - 表格交互处理类对象 - - - - - 提示信息 - - - - - - 输出的类型 - - - - - - 输出的文本的内容 - - - - - - 普通信息 - - - - - 警告信息 - - - - - 错误信息 - - - - - 资源管理器对象 - - - - - 资源管理器treeview根节点 - - - - - 设备键值对(用于对应资源管理器TreeView Node与RowNode) - - - - - 动作键值对(用于对应资源管理器TreeView Node与RowNode) - - - - - 场景键值对(用于对应资源管理器TreeView Node与RowNode) - - - - - 小宝键值对(用于对应资源管理器TreeView Node与RowNode) - - - - 绘制表格图标API - - - 提示信息改变事件 - - - 输出信息打印 - - - TreeView 控件 - - - 进度条 控件 - - - 表格控件 - - - 树状目录跟节点,不参与显示 - - - 撤销重做管理器 - - - 表格编译器 - - - 已使用设备类型管理器 - - - 忽略鼠标移动事件 - - - 文件是否有修改,如果有修改,则在关闭时提示保存 - - - 当前是否按下Ctrl键 - - - 默认行高 - - - 默认字体大小 - - - 刷新锁计数 - - - 树状节点显示起始行 - - - 树状节点显示绘制列 - - - 当前放大倍数 - - - 动作参数最大数量 - - - 默认列宽 - - - 基类文件名 - - - 条件文件名 - - - - 树状节点绘制图标 - - - - - - 忽略单元格改变事件 - - - - - - 设备对象基类信息 - - - - - - 条件 - - - - - - 模型关联的treeView控件,用于资源管理器浏览 Momo 0422 - - - - - - 模型关联的表格控件 - - - - - - 添加酒店房型节点 - - 酒店房型模型信息 - - - - - 添加场景模式集合节点 - - - - - - 添加动作组集合节点 - - - - - - 添加设备模型节点 - - 设备模型的模型信息 - - - - - 添加设备模型属性组节点 - - 设备模型属性组模型 - - - - - 添加设备模型属性节点 - - 设备模型属性模型 - - - - - 添加设备对象组对象 - - 设备对象模型 - - - - - 添加设备对象节点 - - 设备对象模型 - 填充设备节点下的子节点 - - - - - 根据设备类型填充设备节点下内容 - - 设备节点 - - - - 填充设备属性组内容 - - 属性组节点 - 设备对象基类模型 - - - - 创建新的设备属性节点 - - 属性模型 - - - - - 填充设备事件组内容 - - 事件组节点 - 设备对象基类模型 - - - - 创建新的设备事件节点 - - 事件模型 - - - - - 添加执行方式节点 - - 执行方式模型 - - - - - 添加执行条件节点 - - 执行条件模型 - - - - - 添加已使用别名的节点 - - - - - - 当节点名被清空时,移除该节点 - - - - - - 初始化表格时,传入根节点初始化表格 - - - - - - 移除当前节点行 - - - - - - 移除节点的子行 - - - - - - 根据节点信息,添加表格行 - - 需要添加的行节点信息 - 是否包含当前节点的子节点 - - - - 添加当前节点的所有子节点的内容至表格行 - - 需要添加的行节点信息 - 是否包含当前节点的子节点 - - - - 根据行节点内容填充表格文本内容 - - - - - - 填充表格行的样式 - - - - - - 选择路径后更新基类 - - 基类文件完整路径 - 更新类型是否为外接设备 - - - - 更新模型节点内容 - - 模型节点 - 主机模型 - 是否为外接模型 - - - - 更新模型设备组节点 - - 主机模型节点 - 主机模型 - 被移除的原设备组节点集合 - - - - 更新模型属性组节点 - - 主机模型节点 - 主机模型 - 被移除的原属性组节点集合 - - - - 更新执行方式(与节点TAG为属性类型的变量处理方式有相似点,考虑整合封装) - - - - - - 更新执行条件 - - - - - - 选择路径后更新基类 - - 基类文件完整路径 - - - - 更新设备基类信息属性与事件 - - - - - - 更新设备对象属性组节点 - - 设备对象节点 - 设备对象类型 - - - - 更新设备事件集合 - - 设备对象节点 - 设备类型模型 - - - - 更新设备动作 - - - - - - treeview 双击事件,双击后导航至表格对应的节点 - - - - - - - 当前活动单元格变更到一个不同的单元格之前立即发生。 - Row 返回一个Integer值,标识单元格变更之前的行号。 - Col 返回一个Integer值, 标识单元格变更之前的列号。 - NewRow 返回或设置一个Integer值, 标识单元格变更之后的行号。NewRow属性的值可以改变,使活动单元格移动到此行。 - NewCol 返回或设置一个Integer值, 标识单元格变更之后的列号。NewCol属性的值可以改变,使活动单元格移动到此列。 - Cancel 设置一个Boolean值, 将Cancel属性设置为True, 可以防止活动单元格离开原来的位置。 - - - - - - - 表格下拉框点击事件 - - - - - - - 表格绘制事件 - - - - - - - 表格按键松开事件 - - - - - - - 表格按键按下事件 - - - - - - - 表格点击事件 - - - - - - - 表格双击事件 - - - - - - - 表格选择内容改变事件 - - - - - - - 表格下拉框显示事件 - - - - - - - 表格单元格内容改变事件 - - - - - - - 表格鼠标移动事件 - - - - - - - 表格鼠标轴滚动事件 - - - - - - - 表格放大至指定倍数 - - 放大倍数 - - - - 加载行节点 - - - - - - - 读取表格xml时,根据不同行节点类型,还原Tag属性 - - - - - - - - 保存模型信息至Xml文件 - - xml完整路径 - - - - - 写入行节点内容至Xml字段 - - xml写入流 - 行节点 - - - - 表格导出为Xls文件 - - - - - - 导出当前选择的行节点至外部模型文件 - - 导出文件的路径 - - - - 导入外部模型至指定节点下 - - 导入文件的路径 - - - - 在别名更改后,同步更改动作调用的名称,并返回修改的个数 - - - - - - - - - 填充表格选择单元格提示信息 - - 表格选择列 - 表格对应行节点信息 - - - - - 强制刷新同级的行数并显示出来,应对某些情况表格变更后没有及时刷新 - - - - - 循环嵌套调用,直到节点类型为对象组或级数小于=3 - - - - - - 获取节点下的动作数量,注意是节点下所有动作,如果有多级子节点,会全部统计到一起 - - 输入节点,只对部分节点有效 - - - - 获取对象的路径,一直溯源到第2级(RCU型号级),并将路径保存在 argStrPath 中供显示 - - - - - 禁用项视图 - - - - - 默认视图 - - - - - 指定节点向上溯源,所有的父节点都显示出来 - - 开始溯源的起点 - 溯源结束的目标级数 - - - - 指定节点,将其父系节点逐级展开 - - - - - - 指定节点和其同类节点显示或隐藏 - - 传入节点类型,函数会自动匹配同类节点并进行相应操作 - 显示状态 - - - - 仅显示对象节点,其余节点收缩起来 - - - - - 收缩行节点 - - - - - - 默认视图 - - - - - 展开行节点 - - - - - - 通过行号查找对应的行节点信息 - - - - - - - 添加行 - - 添加行的类型 - 添加行数 - - - - 添加设备行 - - 设备模型 - 添加行数 - - - - 校验当前行类型是否允许添加的指定父行类型下 - - - - - - - - 新增行时,创建对应类型行节点(可以考虑将所有节点的生成都集成在这个函数里) - - - - - - - 添加场景模式行 - - 添加数量 - - - - 添加动作组行 - - 添加数量 - - - - 添加设备对象 - - - - - 添加事件条件 - - - - - 添加动作行 - - - - - - 移除当前选中行 - - - - - 移除当前选中节点 - - - - - 插入行 - - - - - 删除行 - - - - - 上移行 - - - - - 下移行 - - - - - 复制行 - - - - - 剪切行 - - - - - 粘贴行 - - - - - 撤销 - - - - - 重做 - - - - - 启用行 - - - - - 禁用行 - - - - - 配置信息数据结构 - - - - - 配置信息,有些信息需要从App传过来 - - - - - 编译生成编译文件 - - - - - 向前导航 - - - - - 向后导航 - - - - - 清除栈数据 - - - - - 向后导航步骤数 - - - - - - 向前导航步骤数 - - - - - - 错误项的 node index - - - - - 错误项的列,与node index一起定位到具体的单元格 - - - - - 错误类型 - - - - - 错误信息 - - - - - 错误项的node信息 - - - - - 用于保存全局规则检测的错误项 - - - - - 规则检查结果 - 没问题 - - - - - 规则检查结果 - 警告:某些规则不太符合,可以编译但是可能会产生不确定的后果 - - - - - 规则检查结果 - 错误:严重错误,不可编译或确定会导致不正确的后果 - - - - - 错误列表的mouse move事件 - - - - - - - 将错误图标加入到ImageList中,程序启动时添加一次即可 - - - - - 启动一次全文规则检查,并返回错误数和告警数 - - 错误计数,错误计数为0则函数返回true - 告警计数,函数计数不影响函数返回 - - - - - 单行规则确认,主要确认单行数据填写的完整性,以及数据类型是否合法 - - 被确认的节点 - 返回该节点的错误类型 - 返回该节点详细的错误信息 - - - - - 为节点找到指定类型的父节点 - - - - - - - - - 刷新资源管理器的所有列表,暴力全局刷新,效率不咋地,而且有点闪,有空再做个单条刷新 - - - - - 展开资源管理器的treeview节点 - - - - - 通过节点返回图标,图标根据节点的DeviceType而定,当子节点非0时返回彩色图标,否则返回单色图标 - - 节点 - 该节点的子节点数(用于确定返回单色或彩色图标) - 返回一个节点类型枚举 - - - - - 编译打印 - - - - - - - 输出对应类型信息 - - - - - - - 输出执行信息 - - - - - - 输出警告信息 - - - - - - 输出错误信息 - - - - - - 错误信息表格列明枚举 - - - - 表格列对应枚举 - - - - 表格序号 - - - - - 是否启用 - - - - - 设备别名 - - - - - 树状节点 - - - - - 设备类型 - - - - - 设备名称 - - - - - 设备方法 - - - - - 执行延时 - - - - - 延时单位 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 参数说明 - - - - - 参数数值 - - - - - 最大列数,不作为表格列名 - - - - - Post请求 - - 目标接口网址 - 传输数据 - - - - - 初始化 - - - - - 登录数据 - - - - - 登录状态 - - - - - 登录提示 - - - - - 用户信息 - - - - - 酒店数据 - - - - - 初始化酒店权限 - - - - - 权限状态ID - - - - - 权限ID - - - - - 权限名称 - - - - - 初始化酒店组 - - - - - 酒店组ID - - - - - 酒店组名称 - - - - - 酒店 - - - - - 初始化酒店信息 - - - - - 酒店ID - - - - - 项目编码 - - - - - 酒店名称 - - - - - 酒店权限 - - - - - 用户头像 - - - - 可见节点总数 - - - 节点等级 - - - 动作是否执行 - - - - 事件编号 - - - - - - 节点类型 - - - - - - 节点名称 - - - - - - 节点接口属性,从XML读出来,仅对设备对象有效 - - - - - - 节点显示文本 - - - - - - 节点描述 - - - - - - 设备别名 - - - - - - 设备是否具有别名 - - - - - - 设备类型 - - - - - - 设备名称 - - - - - - 设备方法 - - - - - - 延时时间 - - - - - - DEV_TYPE_DATA - - - - - - PROTOCOL_VER - - - - - - 0.默认类型 - - - - - 1.小宝命令集 - - - - - 2.设备存在 - - - - - 0.根节点 - - - - - 1.酒店组 - - - - - 2.酒店项目 - - - - - 3.酒店户型 - - - - - 4.主机模型 - - - - - 5.主机模型属性集 - - - - - 6.主机模型属性分组 - - - - - 7.主机模型属性 - - - - - 8.模型外设组 - - - - - 9.模型外设对象 - - - - - 10.模型外设属性组 - - - - - 11.模型外设方法组 - - - - - 12.模型外设事件组 - - - - - 13.模型外设属性 - - - - - 14.模型外设方法 - - - - - 15.模型外设事件 - - - - - 16.模型外设事件动作执行方式组 - - - - - 17.模型外设事件动作执行方式 - - - - - 18.模型外设事件条件 - - - - - 19.模型外设事件条件 - - - - - 20.条件组节点 - - - - - 21.模型外设事件执行动作组集合 - - - - - 22.模型外设事件执行动作组 - - - - - 23.模型外设事件执行动作 - - - - - 24.情景模式组 - - - - - 25.情景模式 - - - - - 26.外设模型 - - - - - 27.属性集 = XiaoBaoCMD - - - - - 28.属性 = XiaoBaoCMD - - - - - 29.属性集 = 设备存在 - - - - - 30.属性 = 设备存在 - - - - - 延时单位 - - - - - - 动作执行参数 - - - - - 动作是否执行,仅代表表格上的勾选状态,参与编译属性参考Compile属性 - - - - - - 动作是否参与编译 - - - - - - 节点标签 - - - - - - 节点是否处于展开状态 - - - - - - 节点是否处于可见状态 - - - - - - 节点的级别,可见节点级别从0开始 - - - - - - 节点在父节点中的索引,可见节点级别从0开始 - - - - - - 下一级子节点总数 - - - - - - 所有子节点中,可见子节点总数 - - - - - - 所有子节点总数 - - - - - - 当前节点树的起始节点 - - - - - - 当前节点的父节点 - - - - - - 当前节点的同级上一节点,若当前节点为首节点则返回nothing - - - - - - 当前节点的同级下一节点,若当前节点为尾节点则返回nothing - - - - - - 节点所属节点数组的位置,从0开始,即头结点的的索引 - - - - - - 节点树的所有节点集合 - - - - - - 子节点集合 - - - - - - 更新节点参与编译属性 - - - - - 获取所有子节点 - - - - - 更新可见子节点总数 - - - - - - 更新子节点可见 - - - - - 展开节点 - - - - - 展开所有节点包括子节点 - - - - - 折叠节点 - - - - - 收缩所有节点包括子节点 - - - - - 展开或折叠节点 - - - - - 增加子节点 - - - - - 插入子节点 - - - - - 移除本身节点 - - - - - 清空节点所有子节点 - - - - - 节点上移 - - - - - 节点下移 - - - - - 节点左移 - - - - - 节点右移 - - - - - 节点深复制,创建一个完全相同信息的节点(功能待测试) - - - - - - 更新节点的上一节点指向 - - 需要更新的节点 - - - - 更新节点的下一节点指向 - - 需要更新的节点 - - - - 新增节点后,更新父节点的所有子节点计数 - - 新增的节点 - - - - 删除节点后,更新父节点的所有子节点计数 - - 被删除的节点 - 包含当前节点 - - - - 插入节点后,更新节点下方节点的索引 - - 需要更新下方节点索引的节点 - - - - 删除节点后,更新节点下方节点的索引 - - - - - - 获取新添加的节点的链状目录索引 - - - - - - - 更新节点的所有子节点的链式结合的指向 - - - - - - - 删除节点后,更新链状列表 - - - 包含当前节点 - - - - 插入节点后,更新链状目录中受影响节点的索引 - - - - - - 删除节点后,更新链状目录中受影响节点的索引 - - 删除的节点 - 是否保存该节点 - - - - 移除指定节点 - - - - - - 清空节点 - - - - - 创建已使用设备类型单例 - - - - - - 获取所有设备类型 - - - - - - 获取当前设备类型是否已使用 - - - - - - - 获取当前设备类型先所有行节点内容 - - - - - - - 添加行节点到已使用设备类型,设备类型为空则忽略添加 - - - - - - 移除行节点从已使用设备类型 - - - - - - 清空所有设备类型信息 - - - - - 获取类型 - - - - - 全部获取 - - - - - 动作相关 - - - - - 小宝相关 - - - - - 客户索引 - - - - - - 客户名称 - - - - - - 酒店ID - - - - - - 酒店名称 - - - - - - 户型链表 - - - - - 客户名称 - - - - - - 酒店名称 - - - - - - 酒店房型 - - - - - - 模块级别节点附带信息 - - - - - 属性级别节点附带信息 - - - - 当前选择参数索引 - - - 数值型参数下限 - - - 数值型参数上限 - - - 参数字符串 - - - 参数字符串集合 - - - 参数字符串对应数据集合 - - - - 参数名称 - - - - - - 当前参数类型 - - - - - - 当前参数字符串 - - - - - - 当前参数对应数据 - - - - - - 原限定范围字符串 - - - - - - 原范围对照值 - - - - - - 参数说明 - - - - - - 默认的参数值 - - - - - - 当前值是否在参数允许的范围内 - - - - - - 只允许出现真假结果 - - - - - 格式必须能够转换为时间 - - - - - 只允许出现数值结果 - - - - - 至允许出现列表范围中的数据 - - - - - 允许用户输入 - - - - - 允许用户输入 - - - - - 设备对象级别节点附带信息 - - - - - 设备对象事件节点附带信息 - - - - - 设备对象名称 - - - - - - 参与编译的事件编号 - - - - - - 设备对象说明信息 - - - - - - 设备对象事件条件节点附带信息 - - - - - 条件执行时间 - - - - - 条件执行条件 - - - - - 条件执行方式 - - - - - 设备对象事件动作节点附带信息 - - - - - 小宝输入类型 - - - - - - 小宝输入地址 - - - - - - 运行命令,并将命令添加至撤销堆栈 - - - - - - 将命令添加至撤销堆栈 - - - - - 清空撤销命令堆栈 - - - - - 清空重做命令堆栈 - - - - - 清空撤销与重做命令堆栈 - - - - - 执行撤销命令 - - - - - 执行重做命令 - - - - - 将类对象序列化为xml文件 - - - - - - - 将类对象序列化为xml文件 - - - - - - - 从Xml文件中反序列化成指定类 - - - - - - - diff --git a/BLV_Studio/publish/BLV_Studio.application b/BLV_Studio/publish/BLV_Studio.application deleted file mode 100644 index 0b4f97d..0000000 --- a/BLV_Studio/publish/BLV_Studio.application +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - HOeGFkhw5Tl0DB6eJ8xSqJpiEqVXFXqlbkM3+T76Obo= - - - - \ No newline at end of file diff --git a/BLV_Studio/publish/index.html b/BLV_Studio/publish/index.html deleted file mode 100644 index d20c040..0000000 --- a/BLV_Studio/publish/index.html +++ /dev/null @@ -1,163 +0,0 @@ - - - 宝易逻辑配置软件 - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
 
名称: 宝易逻辑配置软件
 
版本: 4.4.3.90
 
发行者: chenzhihao
 
- - - - -
以下系统必备组件是必需的:
 
    -
  • Microsoft .NET Framework 4.8 (x86 和 x64)
  • -
-如果已经安装了这些组件,您可以立即启动该应用程序。否则,请单击下面的按钮,安装系统必备组件并运行该应用程序。 -
 
- - - -
- -
安装
 
- -
ClickOnce 和 .NET Framework 资源 -
- -
- - \ No newline at end of file diff --git a/BLV_Studio/publish/setup.exe b/BLV_Studio/publish/setup.exe deleted file mode 100644 index 3c92dab83f9b5c1647d0f51b20e2f1358d46f267..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559616 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%0Dl|rpoE5 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�wzEw+=dw|4RrYbU3(ldqI& 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 z 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Μ!f}+{%kIy7ULrUy&-7V{c+1i^S4f|g_gqy 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