新增温控提示音版本控制分支和设备链表上传
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
<MinimumRequiredVersion>4.0.0.5</MinimumRequiredVersion>
|
||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||
<WebPage>index.html</WebPage>
|
||||
<ApplicationRevision>91</ApplicationRevision>
|
||||
<ApplicationRevision>95</ApplicationRevision>
|
||||
<ApplicationVersion>4.4.3.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||
|
||||
@@ -374,4 +374,81 @@ Public Class DbExecutor
|
||||
|
||||
GC.Collect() '对所有缓存垃圾进行回收
|
||||
End Sub
|
||||
|
||||
|
||||
''' <summary>
|
||||
''' 添加参数到命令(简化版本,自动推断参数类型)
|
||||
''' </summary>
|
||||
''' <param name="parameterName">参数名称(需包含@或:前缀)</param>
|
||||
''' <param name="value">参数值</param>
|
||||
''' <returns>创建的DbParameter对象</returns>
|
||||
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
|
||||
|
||||
''' <summary>
|
||||
''' 添加参数到命令(指定明确的类型)
|
||||
''' </summary>
|
||||
''' <param name="parameterName">参数名称</param>
|
||||
''' <param name="value">参数值</param>
|
||||
''' <param name="dbType">参数的数据类型</param>
|
||||
''' <returns>创建的DbParameter对象</returns>
|
||||
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
|
||||
|
||||
''' <summary>
|
||||
''' 添加参数到命令(包含方向)
|
||||
''' </summary>
|
||||
''' <param name="parameterName">参数名称</param>
|
||||
''' <param name="value">参数值</param>
|
||||
''' <param name="dbType">参数的数据类型</param>
|
||||
''' <param name="direction">参数方向(输入/输出)</param>
|
||||
''' <returns>创建的DbParameter对象</returns>
|
||||
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
|
||||
24
BLV_Studio/FrmMain.Designer.vb
generated
24
BLV_Studio/FrmMain.Designer.vb
generated
@@ -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
|
||||
|
||||
@@ -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 @@
|
||||
<value>17, 55</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>224</value>
|
||||
<value>82</value>
|
||||
</metadata>
|
||||
<metadata name="BackgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>188, 55</value>
|
||||
</metadata>
|
||||
<metadata name="CustomInstaller2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>361, 55</value>
|
||||
</metadata>
|
||||
<data name="PictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
@@ -702,6 +708,9 @@
|
||||
w4fXohzSfo/RpBT6//AY2YQM5nBRfAMSHREeGw8GSAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>973, 55</value>
|
||||
</metadata>
|
||||
<data name="Label3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||
@@ -720,6 +729,21 @@
|
||||
<metadata name="toopMax.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>868, 55</value>
|
||||
</metadata>
|
||||
<metadata name="ToolStrip4.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>512, 55</value>
|
||||
</metadata>
|
||||
<metadata name="ToolStrip3.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>685, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ToolStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>360, 17</value>
|
||||
</metadata>
|
||||
<metadata name="ToolStrip5.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>624, 55</value>
|
||||
</metadata>
|
||||
<metadata name="toopMax.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>868, 55</value>
|
||||
</metadata>
|
||||
<data name="ToolStripButton6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
@@ -1563,6 +1587,21 @@
|
||||
SUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="ToolStripButton23.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAE9SURBVDhPtVKva8NAGI2czL8wt8nJ2sDEBhOLW9wIEZWl
|
||||
svbUqCphIoSKwVUUMncThZspnBlkIhAz6OTJycq3+/JjqcgtndiD4+6+vPe+j9xz/gVyqxCOGXyzwgmD
|
||||
orvZm8/DICGZ0LkSk9n9HwwO0Yq9u18MyjcJsZyDJzPIjbAS83UKGfnVUk9pxyMxoKCLEN7lhdVARgH2
|
||||
yRR67IPdjDoeT1glFotTKqIs8l4TMiAxv/UwOjvvOOpVIDBF58QBX3HrBPkqBbvy4Lou+MOs431pDf25
|
||||
swoHkb+X1ZuXRXmUCXGbYw0q0FNdH/nWvZmg4tAE1EhsZH+ogohh/phh91GbiJcc04k2ZIXsuU5lO2mc
|
||||
9Pxo6k5paxNHYrUF4sUeYRT/GBxyetFOQJ0rsdnN1S6wgcZuOiNb2+LtON/B6OzDMC9GwAAAAABJRU5E
|
||||
rkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>82</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAMDAAAAEAIACoJQAAFgAAACgAAAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAA
|
||||
@@ -1729,10 +1768,4 @@
|
||||
AAA=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="BackgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>188, 55</value>
|
||||
</metadata>
|
||||
<metadata name="CustomInstaller2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>361, 55</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -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
|
||||
|
||||
<Serializable>
|
||||
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
|
||||
|
||||
|
||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
'通过使用 "*",如下所示:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("4.4.6.2")>
|
||||
<Assembly: AssemblyFileVersion("4.4.6.2")>
|
||||
<Assembly: AssemblyVersion("4.4.6.6")>
|
||||
<Assembly: AssemblyFileVersion("4.4.6.6")>
|
||||
|
||||
@@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
|
||||
<assemblyIdentity name="BLV_Studio.application" version="4.4.3.90" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" />
|
||||
<description asmv2:publisher="chenzhihao" asmv2:product="宝易逻辑配置软件" xmlns="urn:schemas-microsoft-com:asm.v1" />
|
||||
<deployment install="true" mapFileExtensions="true" minimumRequiredVersion="4.0.0.5" co.v1:createDesktopShortcut="true">
|
||||
<subscription>
|
||||
<update>
|
||||
<beforeApplicationStartup />
|
||||
</update>
|
||||
</subscription>
|
||||
<deploymentProvider codebase="http://auth.blv-oa.com/Apps/BLV_Studio/BLV_Studio.application" />
|
||||
</deployment>
|
||||
<compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2">
|
||||
<framework targetVersion="4.8" profile="Full" supportedRuntime="4.0.30319" />
|
||||
</compatibleFrameworks>
|
||||
<dependency>
|
||||
<dependentAssembly dependencyType="install" codebase="Application Files\BLV_Studio_4_4_3_90\BLV_Studio.exe.manifest" size="37870">
|
||||
<assemblyIdentity name="BLV_Studio.exe" version="4.4.3.90" publicKeyToken="0000000000000000" language="neutral" processorArchitecture="msil" type="win32" />
|
||||
<hash>
|
||||
<dsig:Transforms>
|
||||
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
|
||||
</dsig:Transforms>
|
||||
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
|
||||
<dsig:DigestValue>HOeGFkhw5Tl0DB6eJ8xSqJpiEqVXFXqlbkM3+T76Obo=</dsig:DigestValue>
|
||||
</hash>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
</asmv1:assembly>
|
||||
@@ -1,163 +0,0 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>宝易逻辑配置软件</TITLE>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" />
|
||||
<STYLE TYPE="text/css">
|
||||
<!--
|
||||
BODY{margin-top:20px; margin-left:20px; margin-right:20px; color:#000000; font-family:Tahoma; background-color:white}
|
||||
A:link {font-weight:normal; color:#000066; text-decoration:none}
|
||||
A:visited {font-weight:normal; color:#000066; text-decoration:none}
|
||||
A:active {font-weight:normal; text-decoration:none}
|
||||
A:hover {font-weight:normal; color:#FF6600; text-decoration:none}
|
||||
P {margin-top:0px; margin-bottom:12px; color:#000000; font-family:Tahoma}
|
||||
PRE {border-right:#f0f0e0 1px solid; padding-right:5px; border-top:#f0f0e0 1px solid; margin-top:-5px; padding-left:5px; font-size:x-small; padding-bottom:5px; border-left:#f0f0e0 1px solid; padding-top:5px; border-bottom:#f0f0e0 1px solid; font-family:Courier New; background-color:#e5e5cc}
|
||||
TD {font-size:12px; color:#000000; font-family:Tahoma}
|
||||
H2 {border-top: #003366 1px solid; margin-top:25px; font-weight:bold; font-size:1.5em; margin-bottom:10px; margin-left:-15px; color:#003366}
|
||||
H3 {margin-top:10px; font-size: 1.1em; margin-bottom: 10px; margin-left: -15px; color: #000000}
|
||||
UL {margin-top:10px; margin-left:20px}
|
||||
OL {margin-top:10px; margin-left:20px}
|
||||
LI {margin-top:10px; color: #000000}
|
||||
FONT.value {font-weight:bold; color:darkblue}
|
||||
FONT.key {font-weight: bold; color: darkgreen}
|
||||
.divTag {border:1px; border-style:solid; background-color:#FFFFFF; text-decoration:none; height:auto; width:auto; background-color:#cecece}
|
||||
.BannerColumn {background-color:#000000}
|
||||
.Banner {border:0; padding:0; height:8px; margin-top:0px; color:#ffffff; filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=1,StartColorStr='#1c5280',EndColorStr='#FFFFFF');}
|
||||
.BannerTextCompany {font:bold; font-size:18pt; color:#cecece; font-family:Tahoma; height:0px; margin-top:0; margin-left:8px; margin-bottom:0; padding:0px; white-space:nowrap; filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2,OffY=2,Color='black',Positive='true');}
|
||||
.BannerTextApplication {font:bold; font-size:18pt; font-family:Tahoma; height:0px; margin-top:0; margin-left:8px; margin-bottom:0; padding:0px; white-space:nowrap; filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2,OffY=2,Color='black',Positive='true');}
|
||||
.BannerText {font:bold; font-size:18pt; font-family:Tahoma; height:0px; margin-top:0; margin-left:8px; margin-bottom:0; padding:0px; filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2,OffY=2,Color='black',Positive='true');}
|
||||
.BannerSubhead {border:0; padding:0; height:16px; margin-top:0px; margin-left:10px; color:#ffffff; filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=1,StartColorStr='#4B3E1A',EndColorStr='#FFFFFF');}
|
||||
.BannerSubheadText {font:bold; height:11px; font-size:11px; font-family:Tahoma; margin-top:1; margin-left:10; filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=2,OffY=2,Color='black',Positive='true');}
|
||||
.FooterRule {border:0; padding:0; height:1px; margin:0px; color:#ffffff; filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=1,StartColorStr='#4B3E1A',EndColorStr='#FFFFFF');}
|
||||
.FooterText {font-size:11px; font-weight:normal; text-decoration:none; font-family:Tahoma; margin-top:10; margin-left:0px; margin-bottom:2; padding:0px; color:#999999; white-space:nowrap}
|
||||
.FooterText A:link {font-weight:normal; color:#999999; text-decoration:underline}
|
||||
.FooterText A:visited {font-weight:normal; color:#999999; text-decoration:underline}
|
||||
.FooterText A:active {font-weight:normal; color:#999999; text-decoration:underline}
|
||||
.FooterText A:hover {font-weight:normal; color:#FF6600; text-decoration:underline}
|
||||
.ClickOnceInfoText {font-size:11px; font-weight:normal; text-decoration:none; font-family:Tahoma; margin-top:0; margin-right:2px; margin-bottom:0; padding:0px; color:#000000}
|
||||
.InstallTextStyle {font:bold; font-size:14pt; font-family:Tahoma; a:#FF0000; text-decoration:None}
|
||||
.DetailsStyle {margin-left:30px}
|
||||
.ItemStyle {margin-left:-15px; font-weight:bold}
|
||||
.StartColorStr {background-color:#4B3E1A}
|
||||
.JustThisApp A:link {font-weight:normal; color:#000066; text-decoration:underline}
|
||||
.JustThisApp A:visited {font-weight:normal; color:#000066; text-decoration:underline}
|
||||
.JustThisApp A:active {font-weight:normal; text-decoration:underline}
|
||||
.JustThisApp A:hover {font-weight:normal; color:#FF6600; text-decoration:underline}
|
||||
-->
|
||||
|
||||
</STYLE>
|
||||
|
||||
<SCRIPT LANGUAGE="JavaScript">
|
||||
<!--
|
||||
runtimeVersion = "4.8.0";
|
||||
checkClient = false;
|
||||
directLink = "BLV_Studio.application";
|
||||
|
||||
|
||||
function Initialize()
|
||||
{
|
||||
if (HasRuntimeVersion(runtimeVersion, false) || (checkClient && HasRuntimeVersion(runtimeVersion, checkClient)))
|
||||
{
|
||||
InstallButton.href = directLink;
|
||||
BootstrapperSection.style.display = "none";
|
||||
}
|
||||
}
|
||||
function HasRuntimeVersion(v, c)
|
||||
{
|
||||
var va = GetVersion(v);
|
||||
var i;
|
||||
var a = navigator.userAgent.match(/\.NET CLR [0-9.]+/g);
|
||||
if(va[0]==4)
|
||||
a = navigator.userAgent.match(/\.NET[0-9.]+E/g);
|
||||
if (c)
|
||||
{
|
||||
a = navigator.userAgent.match(/\.NET Client [0-9.]+/g);
|
||||
if (va[0]==4)
|
||||
a = navigator.userAgent.match(/\.NET[0-9.]+C/g);
|
||||
}
|
||||
if (a != null)
|
||||
for (i = 0; i < a.length; ++i)
|
||||
if (CompareVersions(va, GetVersion(a[i])) <= 0)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
function GetVersion(v)
|
||||
{
|
||||
var a = v.match(/([0-9]+)\.([0-9]+)\.([0-9]+)/i);
|
||||
if(a==null)
|
||||
a = v.match(/([0-9]+)\.([0-9]+)/i);
|
||||
return a.slice(1);
|
||||
}
|
||||
function CompareVersions(v1, v2)
|
||||
{
|
||||
if(v1.length>v2.length)
|
||||
{
|
||||
v2[v2.length]=0;
|
||||
}
|
||||
else if(v1.length<v2.length)
|
||||
{
|
||||
v1[v1.length]=0;
|
||||
}
|
||||
|
||||
for (i = 0; i < v1.length; ++i)
|
||||
{
|
||||
var n1 = new Number(v1[i]);
|
||||
var n2 = new Number(v2[i]);
|
||||
if (n1 < n2)
|
||||
return -1;
|
||||
if (n1 > n2)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
-->
|
||||
</SCRIPT>
|
||||
|
||||
</HEAD>
|
||||
<BODY ONLOAD="Initialize()">
|
||||
<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="2" BORDER="0">
|
||||
|
||||
<!-- Begin Banner -->
|
||||
<TR><TD><TABLE CELLPADDING="2" CELLSPACING="0" BORDER="0" BGCOLOR="#cecece" WIDTH="100%"><TR><TD><TABLE BGCOLOR="#1c5280" WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0"><TR><TD CLASS="Banner" /></TR><TR><TD CLASS="Banner"><SPAN CLASS="BannerTextCompany">chenzhihao</SPAN></TD></TR><TR><TD CLASS="Banner"><SPAN CLASS="BannerTextApplication">宝易逻辑配置软件</SPAN></TD></TR><TR><TD CLASS="Banner" ALIGN="RIGHT" /></TR></TABLE></TD></TR></TABLE></TD></TR>
|
||||
<!-- End Banner -->
|
||||
|
||||
|
||||
<!-- Begin Dialog -->
|
||||
<TR><TD ALIGN="LEFT"><TABLE CELLPADDING="2" CELLSPACING="0" BORDER="0" WIDTH="540"><TR><TD WIDTH="496">
|
||||
|
||||
<!-- Begin AppInfo -->
|
||||
<TABLE><TR><TD COLSPAN="3"> </TD></TR><TR><TD><B>名称: </B></TD><TD WIDTH="5"><SPACER TYPE="block" WIDTH="10" /></TD><TD>宝易逻辑配置软件</TD></TR><TR><TD COLSPAN="3"> </TD></TR><TR><TD><B>版本: </B></TD><TD WIDTH="5"><SPACER TYPE="block" WIDTH="10" /></TD><TD>4.4.3.90</TD></TR><TR><TD COLSPAN="3"> </TD></TR><TR><TD><B>发行者: </B></TD><TD WIDTH="5"><SPACER TYPE="block" WIDTH="10" /></TD><TD>chenzhihao</TD></TR><tr><td colspan="3"> </td></tr></TABLE>
|
||||
<!-- End AppInfo -->
|
||||
|
||||
|
||||
<!-- Begin Prerequisites -->
|
||||
<TABLE ID="BootstrapperSection" BORDER="0"><TR><TD COLSPAN="2">以下系统必备组件是必需的: </TD></TR><TR><TD WIDTH="10"> </TD><TD><UL>
|
||||
<LI>Microsoft .NET Framework 4.8 (x86 和 x64)</LI>
|
||||
</UL></TD></TR><TR><TD COLSPAN="2">
|
||||
如果已经安装了这些组件,您可以立即<SPAN CLASS="JustThisApp"><A HREF="BLV_Studio.application">启动</A></SPAN>该应用程序。否则,请单击下面的按钮,安装系统必备组件并运行该应用程序。
|
||||
</TD></TR><TR><TD COLSPAN="2"> </TD></TR></TABLE>
|
||||
<!-- End Prerequisites -->
|
||||
|
||||
|
||||
</TD></TR></TABLE>
|
||||
<!-- Begin Buttons -->
|
||||
<TR><TD ALIGN="LEFT"><TABLE CELLPADDING="2" CELLSPACING="0" BORDER="0" WIDTH="540" STYLE="cursor:hand" ONCLICK="window.navigate(InstallButton.href)"><TR><TD ALIGN="LEFT"><TABLE CELLPADDING="1" BGCOLOR="#333333" CELLSPACING="0" BORDER="0"><TR><TD><TABLE CELLPADDING="1" BGCOLOR="#cecece" CELLSPACING="0" BORDER="0"><TR><TD><TABLE CELLPADDING="1" BGCOLOR="#efefef" CELLSPACING="0" BORDER="0"><TR><TD WIDTH="20"><SPACER TYPE="block" WIDTH="20" HEIGHT="1" /></TD><TD><A ID="InstallButton" HREF="setup.exe">安装</A></TD><TD width="20"><SPACER TYPE="block" WIDTH="20" HEIGHT="1" /></TD></TR></TABLE></TD></TR></TABLE></TD></TR></TABLE></TD><TD WIDTH="15%" ALIGN="right" /></TR></TABLE></TD></TR>
|
||||
<!-- End Buttons -->
|
||||
</TD></TR>
|
||||
<!-- End Dialog -->
|
||||
|
||||
|
||||
|
||||
<!-- Spacer Row -->
|
||||
<TR><TD> </TD></TR>
|
||||
|
||||
<TR><TD>
|
||||
<!-- Begin Footer -->
|
||||
<TABLE WIDTH="100%" CELLPADDING="0" CELLSPACING="0" BORDER="0" BGCOLOR="#ffffff"><TR><TD HEIGHT="5"><SPACER TYPE="block" HEIGHT="5" /></TD></TR><TR><TD CLASS="FooterText" ALIGN="center"><A HREF="https://go.microsoft.com/fwlink/?LinkId=154571">ClickOnce 和 .NET Framework 资源</A>
|
||||
</TD></TR><TR><TD HEIGHT="5"><SPACER TYPE="block" HEIGHT="5" /></TD></TR><TR><TD HEIGHT="1" bgcolor="#cecece"><SPACER TYPE="block" HEIGHT="1" /></TD></TR></TABLE>
|
||||
<!-- End Footer -->
|
||||
</TD></TR>
|
||||
|
||||
</TABLE>
|
||||
</BODY>
|
||||
</HTML>
|
||||
Binary file not shown.
Reference in New Issue
Block a user