初始化项目

This commit is contained in:
2025-12-11 14:22:51 +08:00
commit 4243e3e4d8
919 changed files with 840529 additions and 0 deletions

BIN
.vs/BLV_Studio/v16/.suo Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

25
BLV_Studio.sln Normal file
View File

@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32228.430
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "BLV_Studio", "BLV_Studio\BLV_Studio.vbproj", "{B56BE927-D34D-48A8-B360-6F96DBBFD1D5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B56BE927-D34D-48A8-B360-6F96DBBFD1D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B56BE927-D34D-48A8-B360-6F96DBBFD1D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B56BE927-D34D-48A8-B360-6F96DBBFD1D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B56BE927-D34D-48A8-B360-6F96DBBFD1D5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E038A379-3F97-47BC-A912-DAA0956932D9}
EndGlobalSection
EndGlobal

236
BLV_Studio/.Designer.vb generated Normal file
View File

@@ -0,0 +1,236 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class UCreatelabel
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.ColorDialog1 = New System.Windows.Forms.ColorDialog()
Me.Button1 = New System.Windows.Forms.Button()
Me.Button2 = New System.Windows.Forms.Button()
Me.Button3 = New System.Windows.Forms.Button()
Me.Button4 = New System.Windows.Forms.Button()
Me.Button5 = New System.Windows.Forms.Button()
Me.Button8 = New System.Windows.Forms.Button()
Me.Button6 = New System.Windows.Forms.Button()
Me.Button7 = New System.Windows.Forms.Button()
Me.Button9 = New System.Windows.Forms.Button()
Me.Button10 = New System.Windows.Forms.Button()
Me.Button11 = New System.Windows.Forms.Button()
Me.Button12 = New System.Windows.Forms.Button()
Me.Button13 = New System.Windows.Forms.Button()
Me.Button14 = New System.Windows.Forms.Button()
Me.Button15 = New System.Windows.Forms.Button()
Me.SuspendLayout
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(28, 24)
Me.TextBox1.Multiline = true
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(360, 41)
Me.TextBox1.TabIndex = 0
'
'Button1
'
Me.Button1.BackColor = System.Drawing.SystemColors.ControlLightLight
Me.Button1.Location = New System.Drawing.Point(28, 93)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(35, 36)
Me.Button1.TabIndex = 1
Me.Button1.UseVisualStyleBackColor = false
'
'Button2
'
Me.Button2.BackColor = System.Drawing.Color.Coral
Me.Button2.Location = New System.Drawing.Point(82, 93)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(35, 36)
Me.Button2.TabIndex = 2
Me.Button2.UseVisualStyleBackColor = false
'
'Button3
'
Me.Button3.BackColor = System.Drawing.SystemColors.ControlText
Me.Button3.Location = New System.Drawing.Point(190, 93)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(35, 36)
Me.Button3.TabIndex = 3
Me.Button3.UseVisualStyleBackColor = false
'
'Button4
'
Me.Button4.BackColor = System.Drawing.Color.Crimson
Me.Button4.Location = New System.Drawing.Point(244, 93)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(35, 36)
Me.Button4.TabIndex = 4
Me.Button4.UseVisualStyleBackColor = false
'
'Button5
'
Me.Button5.BackColor = System.Drawing.Color.Cornsilk
Me.Button5.Location = New System.Drawing.Point(298, 93)
Me.Button5.Name = "Button5"
Me.Button5.Size = New System.Drawing.Size(35, 36)
Me.Button5.TabIndex = 5
Me.Button5.UseVisualStyleBackColor = false
'
'Button8
'
Me.Button8.BackColor = System.Drawing.Color.CornflowerBlue
Me.Button8.Location = New System.Drawing.Point(136, 93)
Me.Button8.Name = "Button8"
Me.Button8.Size = New System.Drawing.Size(35, 36)
Me.Button8.TabIndex = 8
Me.Button8.UseVisualStyleBackColor = false
'
'Button6
'
Me.Button6.BackColor = System.Drawing.Color.Cyan
Me.Button6.Location = New System.Drawing.Point(352, 93)
Me.Button6.Name = "Button6"
Me.Button6.Size = New System.Drawing.Size(35, 36)
Me.Button6.TabIndex = 9
Me.Button6.UseVisualStyleBackColor = false
'
'Button7
'
Me.Button7.BackColor = System.Drawing.Color.Chartreuse
Me.Button7.Location = New System.Drawing.Point(352, 149)
Me.Button7.Name = "Button7"
Me.Button7.Size = New System.Drawing.Size(35, 36)
Me.Button7.TabIndex = 16
Me.Button7.UseVisualStyleBackColor = false
'
'Button9
'
Me.Button9.BackColor = System.Drawing.Color.DarkGreen
Me.Button9.Location = New System.Drawing.Point(136, 149)
Me.Button9.Name = "Button9"
Me.Button9.Size = New System.Drawing.Size(35, 36)
Me.Button9.TabIndex = 15
Me.Button9.UseVisualStyleBackColor = false
'
'Button10
'
Me.Button10.BackColor = System.Drawing.Color.NavajoWhite
Me.Button10.Location = New System.Drawing.Point(298, 149)
Me.Button10.Name = "Button10"
Me.Button10.Size = New System.Drawing.Size(35, 36)
Me.Button10.TabIndex = 14
Me.Button10.UseVisualStyleBackColor = false
'
'Button11
'
Me.Button11.BackColor = System.Drawing.Color.LightCoral
Me.Button11.Location = New System.Drawing.Point(244, 149)
Me.Button11.Name = "Button11"
Me.Button11.Size = New System.Drawing.Size(35, 36)
Me.Button11.TabIndex = 13
Me.Button11.UseVisualStyleBackColor = false
'
'Button12
'
Me.Button12.BackColor = System.Drawing.Color.DarkMagenta
Me.Button12.Location = New System.Drawing.Point(190, 149)
Me.Button12.Name = "Button12"
Me.Button12.Size = New System.Drawing.Size(35, 36)
Me.Button12.TabIndex = 12
Me.Button12.UseVisualStyleBackColor = false
'
'Button13
'
Me.Button13.BackColor = System.Drawing.Color.DarkCyan
Me.Button13.Location = New System.Drawing.Point(82, 149)
Me.Button13.Name = "Button13"
Me.Button13.Size = New System.Drawing.Size(35, 36)
Me.Button13.TabIndex = 11
Me.Button13.UseVisualStyleBackColor = false
'
'Button14
'
Me.Button14.BackColor = System.Drawing.Color.DarkBlue
Me.Button14.Location = New System.Drawing.Point(28, 149)
Me.Button14.Name = "Button14"
Me.Button14.Size = New System.Drawing.Size(35, 36)
Me.Button14.TabIndex = 10
Me.Button14.UseVisualStyleBackColor = false
'
'Button15
'
Me.Button15.Location = New System.Drawing.Point(28, 201)
Me.Button15.Name = "Button15"
Me.Button15.Size = New System.Drawing.Size(359, 51)
Me.Button15.TabIndex = 17
Me.Button15.Text = "创建标签"
Me.Button15.UseVisualStyleBackColor = true
'
'UCreatelabel
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 12!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(408, 264)
Me.Controls.Add(Me.Button15)
Me.Controls.Add(Me.Button7)
Me.Controls.Add(Me.Button9)
Me.Controls.Add(Me.Button10)
Me.Controls.Add(Me.Button11)
Me.Controls.Add(Me.Button12)
Me.Controls.Add(Me.Button13)
Me.Controls.Add(Me.Button14)
Me.Controls.Add(Me.Button6)
Me.Controls.Add(Me.Button8)
Me.Controls.Add(Me.Button5)
Me.Controls.Add(Me.Button4)
Me.Controls.Add(Me.Button3)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.TextBox1)
Me.MaximizeBox = false
Me.MinimizeBox = false
Me.Name = "UCreatelabel"
Me.ShowInTaskbar = false
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "创建标签"
Me.ResumeLayout(false)
Me.PerformLayout
End Sub
Friend WithEvents TextBox1 As TextBox
Friend WithEvents ColorDialog1 As ColorDialog
Friend WithEvents Button1 As Button
Friend WithEvents Button2 As Button
Friend WithEvents Button3 As Button
Friend WithEvents Button4 As Button
Friend WithEvents Button5 As Button
Friend WithEvents Button8 As Button
Friend WithEvents Button6 As Button
Friend WithEvents Button7 As Button
Friend WithEvents Button9 As Button
Friend WithEvents Button10 As Button
Friend WithEvents Button11 As Button
Friend WithEvents Button12 As Button
Friend WithEvents Button13 As Button
Friend WithEvents Button14 As Button
Friend WithEvents Button15 As Button
End Class

131
BLV_Studio/AddMember.Designer.vb generated Normal file
View File

@@ -0,0 +1,131 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class AddMember_frm
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.ComboBox1 = New System.Windows.Forms.ComboBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.ComboBox3 = New System.Windows.Forms.ComboBox()
Me.Label4 = New System.Windows.Forms.Label()
Me.ComboBox4 = New System.Windows.Forms.ComboBox()
Me.Button1 = New System.Windows.Forms.Button()
Me.SuspendLayout
'
'ComboBox1
'
Me.ComboBox1.Font = New System.Drawing.Font("宋体", 12!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134,Byte))
Me.ComboBox1.FormattingEnabled = true
Me.ComboBox1.Location = New System.Drawing.Point(142, 29)
Me.ComboBox1.Name = "ComboBox1"
Me.ComboBox1.Size = New System.Drawing.Size(216, 24)
Me.ComboBox1.TabIndex = 0
'
'Label1
'
Me.Label1.BackColor = System.Drawing.SystemColors.ControlLight
Me.Label1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134,Byte))
Me.Label1.Location = New System.Drawing.Point(10, 27)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(131, 26)
Me.Label1.TabIndex = 1
Me.Label1.Text = "添加到团队的成员:"
Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'Label3
'
Me.Label3.BackColor = System.Drawing.SystemColors.ControlLight
Me.Label3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134,Byte))
Me.Label3.Location = New System.Drawing.Point(10, 101)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(131, 26)
Me.Label3.TabIndex = 5
Me.Label3.Text = "添加到项目团队:"
Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'ComboBox3
'
Me.ComboBox3.Font = New System.Drawing.Font("宋体", 12!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134,Byte))
Me.ComboBox3.FormattingEnabled = true
Me.ComboBox3.Location = New System.Drawing.Point(142, 103)
Me.ComboBox3.Name = "ComboBox3"
Me.ComboBox3.Size = New System.Drawing.Size(216, 24)
Me.ComboBox3.TabIndex = 4
'
'Label4
'
Me.Label4.BackColor = System.Drawing.SystemColors.ControlLight
Me.Label4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134,Byte))
Me.Label4.Location = New System.Drawing.Point(10, 64)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(131, 26)
Me.Label4.TabIndex = 7
Me.Label4.Text = "成员权限:"
Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'ComboBox4
'
Me.ComboBox4.Font = New System.Drawing.Font("宋体", 12!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134,Byte))
Me.ComboBox4.FormattingEnabled = true
Me.ComboBox4.Location = New System.Drawing.Point(142, 66)
Me.ComboBox4.Name = "ComboBox4"
Me.ComboBox4.Size = New System.Drawing.Size(216, 24)
Me.ComboBox4.TabIndex = 6
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(239, 154)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(119, 41)
Me.Button1.TabIndex = 8
Me.Button1.Text = "确认添加"
Me.Button1.UseVisualStyleBackColor = true
'
'AddMember_frm
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 12!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(363, 217)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.Label4)
Me.Controls.Add(Me.ComboBox4)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.ComboBox3)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.ComboBox1)
Me.MaximizeBox = false
Me.MinimizeBox = false
Me.Name = "AddMember_frm"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
Me.Text = "添加成员"
Me.ResumeLayout(false)
End Sub
Friend WithEvents ComboBox1 As ComboBox
Friend WithEvents Label1 As Label
Friend WithEvents Label3 As Label
Friend WithEvents ComboBox3 As ComboBox
Friend WithEvents Label4 As Label
Friend WithEvents ComboBox4 As ComboBox
Friend WithEvents Button1 As Button
End Class

120
BLV_Studio/AddMember.resx Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

30
BLV_Studio/AddMember.vb Normal file
View File

@@ -0,0 +1,30 @@
Public Class AddMember_frm
Public AddUsercmb As List(Of Dictionary(Of String, String))
Public Limitscmb As List(Of Dictionary(Of String, String))
Public Pojercmb As List(Of Dictionary(Of String, String))
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If ComboBox1.Text.Length < 1 Then
MsgBox("未选择添加成员。")
Return
End If
If ComboBox4.Text.Length < 1 Then
MsgBox("未选择添加成员权限。")
Return
End If
If ComboBox3.Text.Length < 1 Then
MsgBox("未选择成员所属项目。")
Return
End If
Me.DialogResult = System.Windows.Forms.DialogResult.OK
End Sub
Private Sub AddMember_frm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
End Class

163
BLV_Studio/Aes128.vb Normal file
View File

@@ -0,0 +1,163 @@
Imports System.Security.Cryptography
Imports System.Text
Public Class Aes128
'todo解密秘钥不应出现明文考虑修改为十六进制数组
''' <summary>服务器密钥</summary>
Public Shared ReadOnly ServerAesKey As String = "^5GHo96tr5ff&*Hphg7665^fyu&uOhj0j[0[(#%$%%^#DDT#Y8h(*H&-987OygO8yg*yS$&G&aG9*&6g96*&7^RA65s76r*&&G(*(7(Gyg7#7Ff7F*&(*&&^"
''' <summary>
''' 加密文本为Base64编码
''' </summary>
''' <param name="source">需要加密字符串</param>
''' <param name="key">密钥</param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function EncryptStr(source As String, key As String) As String
Dim inBuff As Byte()
Dim crypt As ICryptoTransform
Dim msp As New MD5CryptoServiceProvider
Using encrypt As Aes = Aes.Create("AES")
Dim keyBytes() As Byte = msp.ComputeHash(Encoding.UTF8.GetBytes(key))
encrypt.BlockSize = keyBytes.Length * 8
encrypt.Key = keyBytes
encrypt.IV = keyBytes
encrypt.Mode = CipherMode.CBC
encrypt.Padding = PaddingMode.PKCS7
crypt = encrypt.CreateEncryptor()
End Using
inBuff = Encoding.UTF8.GetBytes(source)
msp.Dispose()
Return Convert.ToBase64String(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
End Function
''' <summary>
''' 加密文本为Base64编码
''' </summary>
''' <param name="source">需要加密字符串</param>
''' <param name="key">密钥</param>
''' <returns></returns>
Public Shared Function EncryptStr(ByVal source As String, key() As Byte) As String
Dim inBuff As Byte()
Dim crypt As ICryptoTransform
Dim msp As New MD5CryptoServiceProvider
Using encrypt As Aes = Aes.Create("AES")
Dim keyBytes() As Byte = msp.ComputeHash(key)
encrypt.BlockSize = keyBytes.Length * 8
encrypt.Key = keyBytes
encrypt.IV = keyBytes
encrypt.Mode = CipherMode.CBC
encrypt.Padding = PaddingMode.PKCS7
crypt = encrypt.CreateEncryptor()
End Using
inBuff = Encoding.UTF8.GetBytes(source)
msp.Dispose()
Return Convert.ToBase64String(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
End Function
''' <summary>
''' 加密文本为Base64编码
''' </summary>
''' <param name="source">需要加密字符串</param>
''' <param name="key">密钥</param>
''' <param name="encode">密钥转换字符编码</param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function EncryptStr(ByVal source As String, ByVal key As String, ByVal encode As Encoding) As String
Dim inBuff As Byte()
Dim crypt As ICryptoTransform
Dim msp As New MD5CryptoServiceProvider
Using encrypt As Aes = Aes.Create("AES")
Dim keyBytes() As Byte = msp.ComputeHash(encode.GetBytes(key))
encrypt.BlockSize = keyBytes.Length * 8
encrypt.Key = keyBytes
encrypt.IV = keyBytes
encrypt.Mode = CipherMode.CBC
encrypt.Padding = PaddingMode.PKCS7
crypt = encrypt.CreateEncryptor()
End Using
inBuff = encode.GetBytes(source)
msp.Dispose()
Return Convert.ToBase64String(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
End Function
''' <summary>
''' 解密Base64编码的字符串
''' </summary>
''' <param name="encodedStr">需要解密字符串</param>
''' <param name="key">密钥</param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function DecryptStr(ByVal encodedStr As String, ByVal key As String) As String
Dim inBuff As Byte()
Dim crypt As ICryptoTransform
Dim msp As New MD5CryptoServiceProvider
Using decrypt As Aes = Aes.Create("AES")
Dim keyBytes() As Byte = msp.ComputeHash(Encoding.UTF8.GetBytes(key)) '设置密钥
decrypt.BlockSize = keyBytes.Length * 8
decrypt.Key = keyBytes
decrypt.IV = keyBytes
decrypt.Mode = CipherMode.CBC
decrypt.Padding = PaddingMode.PKCS7
crypt = decrypt.CreateDecryptor()
End Using
inBuff = Convert.FromBase64String(encodedStr)
msp.Dispose()
Return Encoding.UTF8.GetString(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
End Function
''' <summary>
''' 解密Base64编码的字符串
''' </summary>
''' <param name="encodedStr">需要解密字符串</param>
''' <param name="key">密钥</param>
''' <returns></returns>
Public Shared Function DecryptStr(encodedStr As String, key() As Byte) As String
Dim inBuff As Byte()
Dim crypt As ICryptoTransform
Dim msp As New MD5CryptoServiceProvider
Using decrypt As Aes = Aes.Create("AES")
Dim keyBytes() As Byte = msp.ComputeHash(key)
decrypt.BlockSize = keyBytes.Length * 8
decrypt.Key = keyBytes
decrypt.IV = keyBytes
decrypt.Mode = CipherMode.CBC
decrypt.Padding = PaddingMode.PKCS7
crypt = decrypt.CreateDecryptor()
End Using
inBuff = Convert.FromBase64String(encodedStr)
msp.Dispose()
Return Encoding.UTF8.GetString(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
End Function
''' <summary>
''' 解密Base64编码的字符串
''' </summary>
''' <param name="encodedStr">需要解密字符串</param>
''' <param name="key">密钥</param>
''' <param name="encode">密钥转换字符编码</param>
''' <returns></returns>
''' <remarks></remarks>
Public Shared Function DecryptStr(ByVal encodedStr As String, ByVal key As String, ByVal encode As Encoding) As String
Dim inBuff As Byte()
Dim crypt As ICryptoTransform
Dim msp As New MD5CryptoServiceProvider
Using decrypt As Aes = Aes.Create("AES")
Dim keyBytes() As Byte = msp.ComputeHash(encode.GetBytes(key)) '设置密钥
decrypt.BlockSize = keyBytes.Length * 8
decrypt.Key = keyBytes
decrypt.IV = keyBytes
decrypt.Mode = CipherMode.CBC
decrypt.Padding = PaddingMode.PKCS7
crypt = decrypt.CreateDecryptor()
End Using
inBuff = Convert.FromBase64String(encodedStr)
msp.Dispose()
Return encode.GetString(crypt.TransformFinalBlock(inBuff, 0, inBuff.Length))
End Function
End Class

131
BLV_Studio/App.config Normal file
View File

@@ -0,0 +1,131 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="BLV_Studio.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<section name="宝易逻辑配置软件.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" /></DbProviderFactories>
</system.data>
<userSettings>
<BLV_Studio.My.MySettings>
<setting name="IsAutoLogin" serializeAs="String">
<value>True</value>
</setting>
<setting name="IsRecordPassWord" serializeAs="String">
<value>True</value>
</setting>
<setting name="UserAccount" serializeAs="String">
<value />
</setting>
<setting name="UserPassword" serializeAs="String">
<value>132146</value>
</setting>
<setting name="VerdorName" serializeAs="String">
<value />
</setting>
<setting name="HotelName" serializeAs="String">
<value />
</setting>
<setting name="HotelCode" serializeAs="String">
<value />
</setting>
<setting name="HotelId" serializeAs="String">
<value />
</setting>
<setting name="VenderIndex" serializeAs="String">
<value />
</setting>
<setting name="LastEditXmlFile" serializeAs="String">
<value />
</setting>
<setting name="HotelGroupId" serializeAs="String">
<value>5949984</value>
</setting>
<setting name="RemoteIP" serializeAs="String">
<value>192.168.0.23</value>
</setting>
<setting name="LocalPort1" serializeAs="String">
<value>5533</value>
</setting>
<setting name="User" serializeAs="String">
<value />
</setting>
<setting name="PassWord" serializeAs="String">
<value />
</setting>
<setting name="ProjectCode" serializeAs="String">
<value>项目编码</value>
</setting>
<setting name="UserName" serializeAs="String">
<value>酒店名称</value>
</setting>
<setting name="CHotelName" serializeAs="String">
<value>上一次登录的用户名</value>
</setting>
</BLV_Studio.My.MySettings>
<宝易逻辑配置软件.My.MySettings>
<setting name="IsAutoLogin" serializeAs="String">
<value>True</value>
</setting>
<setting name="IsRecordPassWord" serializeAs="String">
<value>True</value>
</setting>
<setting name="UserAccount" serializeAs="String">
<value />
</setting>
<setting name="UserPassword" serializeAs="String">
<value>132146</value>
</setting>
<setting name="VerdorName" serializeAs="String">
<value />
</setting>
<setting name="HotelName" serializeAs="String">
<value />
</setting>
<setting name="HotelCode" serializeAs="String">
<value />
</setting>
<setting name="HotelId" serializeAs="String">
<value />
</setting>
<setting name="VenderIndex" serializeAs="String">
<value />
</setting>
<setting name="LastEditXmlFile" serializeAs="String">
<value />
</setting>
<setting name="HotelGroupId" serializeAs="String">
<value>5949984</value>
</setting>
</宝易逻辑配置软件.My.MySettings>
</userSettings>
</configuration>

169
BLV_Studio/AppLog.vb Normal file
View File

@@ -0,0 +1,169 @@
Imports System.IO
Imports System.Text
Public NotInheritable Class AppLog
''' <summary>日志文件所在父文件夹路径</summary>
Private Shared _logPath As String = Application.StartupPath
''' <summary>日志文件名前缀</summary>
Private Shared _logFilePrefix As String = Application.ProductName
''' <summary>日志文件所在路径</summary>
Private Shared _logFilePath As String = $"{LogDirPath}{Path.DirectorySeparatorChar}{LogFilePrefix}_{Date.Now:yyyyMMdd}.Log"
''' <summary>
''' 保存日志的文件夹完整路径
''' </summary>
Public Shared Property LogDirPath As String
Get
If Equals(_logPath, String.Empty) Then
_logPath = Application.StartupPath
End If
Return _logPath
End Get
Set(value As String)
_logPath = value
_logFilePath = $"{LogDirPath}{Path.DirectorySeparatorChar}{LogFilePrefix}_{Date.Now:yyyyMMdd}.Log"
End Set
End Property
''' <summary>
''' 日志文件前缀
''' </summary>
Public Shared Property LogFilePrefix As String
Get
Return _logFilePrefix
End Get
Set(value As String)
_logFilePrefix = value
_logFilePath = $"{LogDirPath}{Path.DirectorySeparatorChar}{LogFilePrefix}_{Date.Now:yyyyMMdd}.Log"
End Set
End Property
Public Shared ReadOnly Property LogFilePath() As String
Get
Return _logFilePath
End Get
End Property
''' <summary>
''' 写入错误信息记录日志
''' </summary>
''' <param name="ex"></param>
Public Shared Sub WriteErrorLog(ex As Exception)
Dim msg As New StringBuilder
msg.Append($"{ex.StackTrace} {ex.Message}")
WriteLog(LogTypes.Error, msg.ToString())
End Sub
''' <summary>
''' 写入流程信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteDebugLog(msg As String)
WriteLog(LogTypes.Debug, msg.ToString())
End Sub
''' <summary>
''' 写入流程信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteInfoLog(msg As String)
WriteLog(LogTypes.Info, msg.ToString())
End Sub
''' <summary>
''' 写入警告信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteWarningLog(msg As String)
WriteLog(LogTypes.Warn, msg.ToString())
End Sub
''' <summary>
''' 写入错误信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteErrorLog(msg As String)
WriteLog(LogTypes.Error, msg.ToString())
End Sub
''' <summary>
''' 写入数据库信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteFatalLog(msg As String)
WriteLog(LogTypes.Fatal, msg.ToString())
End Sub
Private Shared ReadOnly LogLock As New Object() '日志锁,防止多线程同时写日志导致冲突
''' <summary>
''' 将信息入到日志
''' </summary>
''' <param name="logType">日志类型</param>
''' <param name="msg">日志内容</param>
Public Shared Sub WriteLog(logType As String, msg As String)
'写入记录入日志文件
SyncLock LogLock
Try
Dim logString As New StringBuilder
logString.Append($"[{Date.Now:yyyy-MM-dd HH:mm:ss:fff}]") '日志产生时间
logString.Append($"[{logType,-6}]") '日志类型
logString.Append($"[{Process.GetCurrentProcess.Id,-6}]") '日志的进程号
logString.Append($"[{Threading.Thread.CurrentThread.ManagedThreadId,-4}]") '日志的线程号
logString.Append(msg) '日志的消息主题
Using sw As StreamWriter = File.AppendText($"{LogDirPath}{Path.DirectorySeparatorChar}{LogFilePrefix}_{Date.Now:yyyyMMdd}.Log")
sw.WriteLine(logString.ToString())
End Using
Catch ex As Exception
Console.WriteLine($"Uts WriteLog Error:{ex.Message}")
End Try
End SyncLock
End Sub
''' <summary>
''' 写日志
''' </summary>
Public Shared Sub WriteLog(type As LogTypes, ByVal msg As String)
WriteLog(type.ToString(), msg)
End Sub
''' <summary>
''' 日志类型
''' </summary>
Public Enum LogTypes
''' <summary>调试信息</summary>
Debug
''' <summary>系统运行信息</summary>
Info
''' <summary>警告信息</summary>
Warn
''' <summary>错误信息应该包含对象名、发生错误点所在的方法名称、具体错误信息</summary>
[Error]
''' <summary>致命信息</summary>
Fatal
End Enum
End Class

View File

@@ -0,0 +1,826 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{B56BE927-D34D-48A8-B360-6F96DBBFD1D5}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>BLV_Studio.My.MyApplication</StartupObject>
<RootNamespace>BLV_Studio</RootNamespace>
<AssemblyName>BLV_Studio</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<TargetFrameworkProfile />
<IsWebBootstrapper>true</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Web</InstallFrom>
<UpdateEnabled>true</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>true</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<InstallUrl>http://auth.blv-oa.com/Apps/BLV_Studio/</InstallUrl>
<ProductName>宝易逻辑配置软件</ProductName>
<PublisherName>chenzhihao</PublisherName>
<MinimumRequiredVersion>4.0.0.5</MinimumRequiredVersion>
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
<WebPage>index.html</WebPage>
<ApplicationRevision>8</ApplicationRevision>
<ApplicationVersion>4.4.1.8</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<CreateDesktopShortcut>true</CreateDesktopShortcut>
<PublishWizardCompleted>true</PublishWizardCompleted>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>BLV_Studio.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>BLV_Studio.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Text</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>favicon.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<SignManifests>false</SignManifests>
</PropertyGroup>
<PropertyGroup>
<ManifestCertificateThumbprint>944D26C2C1C1EF3340757489D0CAFE62F0F56E66</ManifestCertificateThumbprint>
</PropertyGroup>
<PropertyGroup>
<GenerateManifests>true</GenerateManifests>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>My Project\app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="Alternet.Common.v5, Version=5.1.0.0, Culture=neutral, PublicKeyToken=8032721e70924a63">
<HintPath>..\..\..\SourceCode\BLV_Studio\bin\Debug\Alternet.Common.v5.dll</HintPath>
</Reference>
<Reference Include="Alternet.Syntax.Parsers.Advanced.v5, Version=5.1.0.0, Culture=neutral, PublicKeyToken=8032721e70924a63, processorArchitecture=MSIL">
<HintPath>..\..\..\SourceCode\BLV_Studio\bin\Debug\Alternet.Syntax.Parsers.Advanced.v5.dll</HintPath>
</Reference>
<Reference Include="Alternet.Syntax.v5, Version=5.1.0.0, Culture=neutral, PublicKeyToken=8032721e70924a63">
<HintPath>..\..\..\SourceCode\BLV_Studio\bin\Debug\Alternet.Syntax.v5.dll</HintPath>
</Reference>
<Reference Include="ARSoft.Tools.Net, Version=2.3.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ARSoft.Tools.Net.Dns.2.3.1\lib\netstandard2.0\ARSoft.Tools.Net.dll</HintPath>
</Reference>
<Reference Include="AutoFixture, Version=4.18.0.0, Culture=neutral, PublicKeyToken=b24654c590009d4f, processorArchitecture=MSIL">
<HintPath>..\packages\AutoFixture.4.18.1\lib\net452\AutoFixture.dll</HintPath>
</Reference>
<Reference Include="BouncyCastle.Crypto, Version=1.8.8.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\BouncyCastle.NetCore.1.8.10\lib\net20\BouncyCastle.Crypto.dll</HintPath>
</Reference>
<Reference Include="DevComponents.DotNetBar2">
<HintPath>..\..\..\SourceCode\BLV_Studio\bin\Debug\DevComponents.DotNetBar2.dll</HintPath>
</Reference>
<Reference Include="DnsClient, Version=1.7.0.0, Culture=neutral, PublicKeyToken=4574bb5573c51424, processorArchitecture=MSIL">
<HintPath>..\packages\DnsClient.1.7.0\lib\net471\DnsClient.dll</HintPath>
</Reference>
<Reference Include="DotNetProjects.DhcpServer, Version=2.0.26.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\DotNetProjects.DhcpServer.2.0.26\lib\net40\DotNetProjects.DhcpServer.dll</HintPath>
</Reference>
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.dll</HintPath>
</Reference>
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\EntityFramework.6.4.4\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference>
<Reference Include="Fare, Version=2.1.0.0, Culture=neutral, PublicKeyToken=ea68d375bf33a7c8, processorArchitecture=MSIL">
<HintPath>..\packages\Fare.2.1.1\lib\net35\Fare.dll</HintPath>
</Reference>
<Reference Include="FlexCell, Version=4.4.5.0, Culture=neutral, PublicKeyToken=6f86587eb70ee309, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\UTS_Studio\src\UTS_Core\bin\Debug\FlexCell.dll</HintPath>
</Reference>
<Reference Include="FluentFTP">
<HintPath>.\FluentFTP.dll</HintPath>
</Reference>
<Reference Include="Google.Protobuf, Version=3.14.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
<HintPath>..\packages\Google.Protobuf.3.14.0\lib\net45\Google.Protobuf.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4, Version=1.2.6.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Compression.LZ4.1.2.6\lib\net46\K4os.Compression.LZ4.dll</HintPath>
</Reference>
<Reference Include="K4os.Compression.LZ4.Streams, Version=1.2.6.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Compression.LZ4.Streams.1.2.6\lib\net46\K4os.Compression.LZ4.Streams.dll</HintPath>
</Reference>
<Reference Include="K4os.Hash.xxHash, Version=1.0.6.0, Culture=neutral, PublicKeyToken=32cd54395057cec3, processorArchitecture=MSIL">
<HintPath>..\packages\K4os.Hash.xxHash.1.0.6\lib\net46\K4os.Hash.xxHash.dll</HintPath>
</Reference>
<Reference Include="MD5, Version=2.0.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MD5.2.0.4\lib\netstandard2.0\MD5.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Office.Interop.Excel.15.0.4795.1001\lib\net20\Microsoft.Office.Interop.Excel.dll</HintPath>
<EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>
<Reference Include="Microsoft.Win32.Registry, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Win32.Registry.5.0.0\lib\net461\Microsoft.Win32.Registry.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=8.0.28.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.28\lib\net48\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Data" />
<Reference Include="System.Data.Linq" />
<Reference Include="System.Data.SQLite, Version=1.0.115.5, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\lib\net46\System.Data.SQLite.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.EF6, Version=1.0.115.5, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.EF6.1.0.115.5\lib\net46\System.Data.SQLite.EF6.dll</HintPath>
</Reference>
<Reference Include="System.Data.SQLite.Linq, Version=1.0.115.5, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SQLite.Linq.1.0.115.5\lib\net46\System.Data.SQLite.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Security.AccessControl, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.AccessControl.5.0.0\lib\net461\System.Security.AccessControl.dll</HintPath>
</Reference>
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
<Reference Include="Ubiety.Dns.Core, Version=4.2.2.0, Culture=neutral, PublicKeyToken=62d65a2efdde5827, processorArchitecture=MSIL">
<HintPath>..\packages\Ubiety.Dns.Core.4.2.2\lib\netstandard2.0\Ubiety.Dns.Core.dll</HintPath>
</Reference>
<Reference Include="Ubiety.Logging.Core, Version=1.2.2.0, Culture=neutral, PublicKeyToken=133e143470e66433, processorArchitecture=MSIL">
<HintPath>..\packages\Ubiety.Logging.Core.1.2.2\lib\net452\Ubiety.Logging.Core.dll</HintPath>
</Reference>
<Reference Include="UIAutomationProvider" />
<Reference Include="WindowsBase" />
<Reference Include="WindowsFormsIntegration" />
<Reference Include="ZstdNet, Version=1.4.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.8.0.28\lib\net48\ZstdNet.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="Aes128.vb" />
<Compile Include="AppLog.vb" />
<Compile Include="ColorCelect.Designer.vb">
<DependentUpon>ColorCelect.vb</DependentUpon>
</Compile>
<Compile Include="ColorCelect.vb">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="Control\BackstageDataSource\BackstageHostListBLL.vb" />
<Compile Include="Control\BackstageDataSource\BackstageHostListResultBLL.vb" />
<Compile Include="Control\BackstageDataSource\BackstageHotelListBLL.vb" />
<Compile Include="Control\BackstageDataSource\BackstageHotelListResultBLL.vb" />
<Compile Include="Control\BackstageDataSource\BackstageRoomTypeListBLL.vb" />
<Compile Include="Control\BackstageDataSource\BackstageRoomTypeListResultBLL.vb" />
<Compile Include="Control\BackstageDataSource\BackstageRoomTypeModalsListBLL.vb" />
<Compile Include="Control\BackstageDataSource\BackstageSetHostMACBLL.vb" />
<Compile Include="Control\DataClass\CommSocketBLL.vb" />
<Compile Include="Control\DataClass\SearchHostsListBLL.vb" />
<Compile Include="Control\DataClass\UpgradeBLL.vb" />
<Compile Include="Control\DHCP\CxDnsServer.vb" />
<Compile Include="Control\DHCP\DhcpServer.vb" />
<Compile Include="Control\DHCP\NetworkHelp.vb" />
<Compile Include="Control\FrmAboutDialog.Designer.vb">
<DependentUpon>FrmAboutDialog.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmAboutDialog.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmAddDevice.Designer.vb">
<DependentUpon>FrmAddDevice.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmAddDevice.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmCSeriesConfig.Designer.vb">
<DependentUpon>FrmCSeriesConfig.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmCSeriesConfig.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmHotelList.Designer.vb">
<DependentUpon>FrmHotelList.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmHotelList.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmMACBindingResults.Designer.vb">
<DependentUpon>FrmMACBindingResults.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmMACBindingResults.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmMACDialog.Designer.vb">
<DependentUpon>FrmMACDialog.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmMACDialog.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmSerialportSetting.Designer.vb">
<DependentUpon>FrmSerialportSetting.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmSerialportSetting.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmTest_BLV-V9.designer.vb">
<DependentUpon>FrmTest_BLV-V9.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmTest_BLV-V9.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmTest_C12.Designer.vb">
<DependentUpon>FrmTest_C12.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmTest_C12.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmTest_C12_Dimming.Designer.vb">
<DependentUpon>FrmTest_C12_Dimming.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmTest_C12_Dimming.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmTest_C5.Designer.vb">
<DependentUpon>FrmTest_C5.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmTest_C5.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FrmTest_C8.Designer.vb">
<DependentUpon>FrmTest_C8.vb</DependentUpon>
</Compile>
<Compile Include="Control\FrmTest_C8.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Control\FTP\UtsFtp.vb" />
<Compile Include="Control\HostConfig.vb" />
<Compile Include="Control\Interface\IFrmTest.vb" />
<Compile Include="Control\Language\MultiLanguageDAL.vb" />
<Compile Include="Control\Login\LoginBLL.vb" />
<Compile Include="Control\Login\LoginHotelBLL.vb" />
<Compile Include="Control\Login\LoginHotelsAuthBLL.vb" />
<Compile Include="Control\Login\LoginHotelsBLL.vb" />
<Compile Include="Control\Login\LoginHotelsInfoBLL.vb" />
<Compile Include="Control\Login\LoginReturnDataBLL.vb" />
<Compile Include="Control\Login\LoginUserInfoBLL.vb" />
<Compile Include="Control\ModelTest\C12Test_DimmingBLL.vb" />
<Compile Include="Control\Module\FunctionModule.vb" />
<Compile Include="Control\MsDataSource\BlvMySql.vb" />
<Compile Include="Control\MsDataSource\SqlServerDAL.vb" />
<Compile Include="Control\MsDataSource\UserInfoListDAL.vb" />
<Compile Include="Control\RoomControlSystemAPI.vb" />
<Compile Include="Database\MssqlCmdHelper.vb" />
<Compile Include="Database\SqliteDataParam.vb" />
<Compile Include="Database\MysqlDataParam.vb" />
<Compile Include="Database\DbCmdHelper.vb" />
<Compile Include="Database\DbExecutor.vb" />
<Compile Include="Database\MysqlCmdHelper.vb" />
<Compile Include="Database\SqliteCmdHelper.vb" />
<Compile Include="Downoading.Designer.vb">
<DependentUpon>Downoading.vb</DependentUpon>
</Compile>
<Compile Include="Downoading.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include=".Designer.vb">
<DependentUpon>UCreatelabel.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="AddMember.Designer.vb">
<DependentUpon>AddMember.vb</DependentUpon>
</Compile>
<Compile Include="AddMember.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form2.Designer.vb">
<DependentUpon>Form2.vb</DependentUpon>
</Compile>
<Compile Include="Form2.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="LinkFrm.Designer.vb">
<DependentUpon>LinkFrm.vb</DependentUpon>
</Compile>
<Compile Include="LinkFrm.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="LogicalTable.vb" />
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Test\DeepCopyHelper.vb" />
<Compile Include="Test\GeisControl\gridControl.vb" />
<Compile Include="Test\GridTest\ActionParameter.Designer.vb">
<DependentUpon>ActionParameter.vb</DependentUpon>
</Compile>
<Compile Include="Test\GridTest\ActionParameter.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\GridTest\AddDeviceForm\NormalDev.Designer.vb">
<DependentUpon>NormalDev.vb</DependentUpon>
</Compile>
<Compile Include="Test\GridTest\AddDeviceForm\NormalDev.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\GridTest\AddPeripherals.Designer.vb">
<DependentUpon>AddPeripherals.vb</DependentUpon>
</Compile>
<Compile Include="Test\GridTest\AddPeripherals.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\GridTest\ReportingScenario.vb" />
<Compile Include="Test\GridTest\CompileTable.vb" />
<Compile Include="Test\GridTest\CompositeForm.vb" />
<Compile Include="Test\GridTest\DeviceListFrom.Designer.vb">
<DependentUpon>DeviceListFrom.vb</DependentUpon>
</Compile>
<Compile Include="Test\GridTest\DeviceListFrom.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\GridTest\DrSeverGrid.vb" />
<Compile Include="Test\GridTest\DTableConfigie.vb" />
<Compile Include="Test\GridTest\ExecutionCondition.Designer.vb">
<DependentUpon>ExecutionCondition.vb</DependentUpon>
</Compile>
<Compile Include="Test\GridTest\ExecutionCondition.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\GridTest\PowerSupply.Designer.vb">
<DependentUpon>PowerSupply.vb</DependentUpon>
</Compile>
<Compile Include="Test\GridTest\PowerSupply.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\GridTest\MusicConfigt.Designer.vb">
<DependentUpon>MusicConfigt.vb</DependentUpon>
</Compile>
<Compile Include="Test\GridTest\MusicConfigt.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\GridTest\RuleDetection.vb" />
<Compile Include="Test\GridTest\ServiceAttribute.Designer.vb">
<DependentUpon>ServiceAttribute.vb</DependentUpon>
</Compile>
<Compile Include="Test\GridTest\ServiceAttribute.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\GridTest\RuleChecking.vb" />
<Compile Include="Test\GridTest\TableInteraction.vb" />
<Compile Include="Test\GridTest\MusicArrangement.Designer.vb">
<DependentUpon>MusicArrangement.vb</DependentUpon>
</Compile>
<Compile Include="Test\GridTest\MusicArrangement.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\GridTest\TableRowTag.vb" />
<Compile Include="Test\GridTest\TableServer.vb" />
<Compile Include="Test\ParameterTesting.vb" />
<Compile Include="Test\TestForm1.designer.vb">
<DependentUpon>TestForm1.vb</DependentUpon>
</Compile>
<Compile Include="Test\TestForm1.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Test\TableCompile.vb" />
<Compile Include="UserControl1.Designer.vb">
<DependentUpon>UserControl1.vb</DependentUpon>
</Compile>
<Compile Include="UserControl1.vb">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UserCreateProject.Designer.vb">
<DependentUpon>UserCreateProject.vb</DependentUpon>
</Compile>
<Compile Include="UserCreateProject.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="UCreatelabel.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmReleaseFirmware2.Designer.vb">
<DependentUpon>FrmReleaseFirmware2.vb</DependentUpon>
</Compile>
<Compile Include="FrmReleaseFirmware2.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmReleaseFirmware.Designer.vb">
<DependentUpon>FrmReleaseFirmware.vb</DependentUpon>
</Compile>
<Compile Include="FrmReleaseFirmware.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="VersionHistory.Designer.vb">
<DependentUpon>VersionHistory.vb</DependentUpon>
</Compile>
<Compile Include="VersionHistory.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frm_ProjectSync.Designer.vb">
<DependentUpon>frm_ProjectSync.vb</DependentUpon>
</Compile>
<Compile Include="frm_ProjectSync.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="FTP\blvFtpServer.vb" />
<Compile Include="FTP\UtsFtp.vb" />
<Compile Include="ModelGrid\Command\GridCommand.vb" />
<Compile Include="ModelGrid\Command\MoveUpCommand.vb" />
<Compile Include="ModelGrid\ConfigActionConcitons.vb" />
<Compile Include="ModelGrid\RowNodeCompile.vb" />
<Compile Include="ModelGrid\rsmTreeNode.vb" />
<Compile Include="PermissionTypes.vb" />
<Compile Include="UART\BLV_UartMdule.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="UART\Form1.Designer.vb">
<DependentUpon>Form1.vb</DependentUpon>
</Compile>
<Compile Include="UART\Form1.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="UART\UartServer.vb" />
<Compile Include="Undo\ICommand.vb" />
<Compile Include="ModelGrid\DeviceModelInfo.vb" />
<Compile Include="EnumExtender.vb" />
<Compile Include="FrmChangeHotel.Designer.vb">
<DependentUpon>FrmChangeHotel.vb</DependentUpon>
</Compile>
<Compile Include="FrmChangeHotel.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmLogin.Designer.vb">
<DependentUpon>FrmLogin.vb</DependentUpon>
</Compile>
<Compile Include="FrmLogin.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmMain.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmMain.Designer.vb">
<DependentUpon>FrmMain.vb</DependentUpon>
<SubType>Form</SubType>
</Compile>
<Compile Include="ModelGrid\DeviceObjectClasses.vb" />
<Compile Include="ModelGrid\DeviceEventModel.vb" />
<Compile Include="HttpMothod.vb" />
<Compile Include="LoginInfo\LoginReturn.vb" />
<Compile Include="LoginInfo\AccountAuth.vb" />
<Compile Include="LoginInfo\HotelAuth.vb" />
<Compile Include="LoginInfo\HotelGroup.vb" />
<Compile Include="LoginInfo\Hotel.vb" />
<Compile Include="LoginInfo\UserInfo.vb" />
<Compile Include="ModelGrid\RowNode.vb" />
<Compile Include="ModelGrid\RowNodes.vb" />
<Compile Include="ModelGrid\UsedDeviceTypes.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="ProjectInfo.vb" />
<Compile Include="ModelGrid\RowNodeTag.vb" />
<Compile Include="TreeViewEx.Designer.vb">
<DependentUpon>TreeViewEx.vb</DependentUpon>
</Compile>
<Compile Include="TreeViewEx.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="Undo\CommandManager.vb" />
<Compile Include="ReleaseControl.Designer.vb">
<DependentUpon>ReleaseControl.vb</DependentUpon>
</Compile>
<Compile Include="ReleaseControl.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="XmlSerializer.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ColorCelect.resx">
<DependentUpon>ColorCelect.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmAboutDialog.resx">
<DependentUpon>FrmAboutDialog.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmAddDevice.resx">
<DependentUpon>FrmAddDevice.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmCSeriesConfig.resx">
<DependentUpon>FrmCSeriesConfig.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmHotelList.resx">
<DependentUpon>FrmHotelList.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmMACBindingResults.resx">
<DependentUpon>FrmMACBindingResults.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmMACDialog.resx">
<DependentUpon>FrmMACDialog.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmSerialportSetting.resx">
<DependentUpon>FrmSerialportSetting.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmTest_BLV-V9.resx">
<DependentUpon>FrmTest_BLV-V9.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmTest_C12.resx">
<DependentUpon>FrmTest_C12.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmTest_C12_Dimming.resx">
<DependentUpon>FrmTest_C12_Dimming.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmTest_C5.resx">
<DependentUpon>FrmTest_C5.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Control\FrmTest_C8.resx">
<DependentUpon>FrmTest_C8.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Downoading.resx">
<DependentUpon>Downoading.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="AddMember.resx">
<DependentUpon>AddMember.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Form2.resx">
<DependentUpon>Form2.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="LinkFrm.resx">
<DependentUpon>LinkFrm.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\GridTest\ActionParameter.resx">
<DependentUpon>ActionParameter.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\GridTest\AddDeviceForm\NormalDev.resx">
<DependentUpon>NormalDev.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\GridTest\AddPeripherals.resx">
<DependentUpon>AddPeripherals.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\GridTest\DeviceListFrom.resx">
<DependentUpon>DeviceListFrom.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\GridTest\ExecutionCondition.resx">
<DependentUpon>ExecutionCondition.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\GridTest\PowerSupply.resx">
<DependentUpon>PowerSupply.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\GridTest\MusicConfigt.resx">
<DependentUpon>MusicConfigt.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\GridTest\ServiceAttribute.resx">
<DependentUpon>ServiceAttribute.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\GridTest\MusicArrangement.resx">
<DependentUpon>MusicArrangement.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Test\TestForm1.resx">
<DependentUpon>TestForm1.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UserControl1.resx">
<DependentUpon>UserControl1.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UserCreateProject.resx">
<DependentUpon>UserCreateProject.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmReleaseFirmware2.resx">
<DependentUpon>FrmReleaseFirmware2.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmReleaseFirmware.resx">
<DependentUpon>FrmReleaseFirmware.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UCreatelabel.resx">
<DependentUpon>UCreatelabel.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="VersionHistory.resx">
<DependentUpon>VersionHistory.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmChangeHotel.resx">
<DependentUpon>FrmChangeHotel.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="FrmLogin.resx">
<DependentUpon>FrmLogin.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="FrmMain.resx">
<DependentUpon>FrmMain.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frm_ProjectSync.resx">
<DependentUpon>frm_ProjectSync.vb</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="My Project\licenses.licx" />
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Include="UART\BLV_UartMdule.resx">
<DependentUpon>BLV_UartMdule.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UART\Form1.resx">
<DependentUpon>Form1.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ReleaseControl.resx">
<DependentUpon>ReleaseControl.vb</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="LICENSE" />
<None Include="My Project\app.manifest" />
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
<None Include="NOTICE" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\.editorconfig" />
<None Include="Resources\正确-绿色-64x64.png" />
<None Include="Resources\01664.ico" />
<None Include="Resources\01088.ico" />
<None Include="bin\Debug\Images\Syncerror.png" />
<None Include="bin\Debug\Images\Syncing.png" />
<None Include="bin\Debug\Images\SyncTrue.png" />
<Content Include="favicon.ico" />
<Content Include="Icon1.ico" />
<EmbeddedResource Include="Image1\Error.bmp">
<CustomToolNamespace>BLV_Studio</CustomToolNamespace>
</EmbeddedResource>
<EmbeddedResource Include="Image1\OK.bmp">
<CustomToolNamespace>BLV_Studio</CustomToolNamespace>
</EmbeddedResource>
<EmbeddedResource Include="Image1\Warning.bmp">
<CustomToolNamespace>BLV_Studio</CustomToolNamespace>
</EmbeddedResource>
<Content Include="imageres.dll%28114%29.ico" />
<None Include="Resources\0188.gif" />
<None Include="Resources\01881.gif" />
<None Include="Resources\1040.png" />
<None Include="Resources\1041.png" />
<None Include="Resources\10411.png" />
<Content Include="logo.ico" />
<None Include="Resources\6.png" />
<None Include="Resources\5.png" />
<Content Include="Resources\AlignmentCenterVertically_16x16.png" />
<Content Include="Resources\AlignmentLeft_16x16.png" />
<Content Include="Resources\AlignmentRight_16x16.png" />
<Content Include="Resources\AttachmentObject_16x16.png" />
<Content Include="Resources\Background_16x16.png" />
<Content Include="Resources\Error.bmp" />
<Content Include="Resources\FontBold_16.png" />
<Content Include="Resources\FontItalic_16.png" />
<Content Include="Resources\format_Bold_16xLG.png" />
<Content Include="Resources\format_Italics_16xLG.png" />
<Content Include="Resources\InsertImage_16x16.png" />
<Content Include="Resources\Label.png" />
<Content Include="Resources\ListBullets_16x16.png" />
<Content Include="Resources\ListNumbers_16x16.png" />
<None Include="Resources\login.png" />
<None Include="Resources\login6.png" />
<Content Include="Resources\OK.bmp" />
<Content Include="Resources\Save_6530.png" />
<Content Include="Resources\Strikeout_16x16.png" />
<None Include="Resources\Syncerror.png" />
<None Include="Resources\Syncing.png" />
<None Include="Resources\SyncTrue.png" />
<Content Include="Resources\VSO_FontColorPicker_withBar_16x.png" />
<Content Include="Resources\Warning.bmp" />
<None Include="宝易\1.png" />
<None Include="宝易\2.png" />
<None Include="宝易\3.png" />
<None Include="宝易\4.png" />
<None Include="宝易\5.png" />
<None Include="宝易\6.png" />
<None Include="宝易\LOGO图标.png" />
<None Include="Resources\微信图片_20231124154349.png" />
<Content Include="宝易\favicon.ico" />
<Content Include="版本说明.txt" />
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
<Visible>False</Visible>
<ProductName>Microsoft .NET Framework 4.8 %28x86 和 x64%29</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<Folder Include="gif\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.props'))" />
<Error Condition="!Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EntityFramework.6.4.4\build\EntityFramework.targets'))" />
<Error Condition="!Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets'))" />
<Error Condition="!Exists('..\packages\EmptyLicensesLicx.3.0.0\build\EmptyLicensesLicx.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\EmptyLicensesLicx.3.0.0\build\EmptyLicensesLicx.targets'))" />
</Target>
<Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.targets" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.targets')" />
<Import Project="..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets" Condition="Exists('..\packages\Stub.System.Data.SQLite.Core.NetFramework.1.0.115.5\build\net46\Stub.System.Data.SQLite.Core.NetFramework.targets')" />
<Import Project="..\packages\EmptyLicensesLicx.3.0.0\build\EmptyLicensesLicx.targets" Condition="Exists('..\packages\EmptyLicensesLicx.3.0.0\build\EmptyLicensesLicx.targets')" />
</Project>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>publish\</PublishUrlHistory>
<InstallUrlHistory>http://auth.blv-oa.com/Apps/BLV_Studio/</InstallUrlHistory>
<SupportUrlHistory />
<UpdateUrlHistory />
<BootstrapperUrlHistory />
<ErrorReportUrlHistory />
<FallbackCulture>zh-CN</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>
</PropertyGroup>
</Project>

Binary file not shown.

587
BLV_Studio/ColorCelect.Designer.vb generated Normal file
View File

@@ -0,0 +1,587 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class ColorCelect
Inherits System.Windows.Forms.UserControl
'UserControl 重写释放以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.Button1 = New System.Windows.Forms.Button()
Me.Button2 = New System.Windows.Forms.Button()
Me.Button3 = New System.Windows.Forms.Button()
Me.Button4 = New System.Windows.Forms.Button()
Me.Button5 = New System.Windows.Forms.Button()
Me.Button6 = New System.Windows.Forms.Button()
Me.Button10 = New System.Windows.Forms.Button()
Me.Button11 = New System.Windows.Forms.Button()
Me.Button12 = New System.Windows.Forms.Button()
Me.Button13 = New System.Windows.Forms.Button()
Me.Button14 = New System.Windows.Forms.Button()
Me.Button15 = New System.Windows.Forms.Button()
Me.Button16 = New System.Windows.Forms.Button()
Me.Button17 = New System.Windows.Forms.Button()
Me.Button18 = New System.Windows.Forms.Button()
Me.Button19 = New System.Windows.Forms.Button()
Me.Button20 = New System.Windows.Forms.Button()
Me.Button21 = New System.Windows.Forms.Button()
Me.Button7 = New System.Windows.Forms.Button()
Me.Button8 = New System.Windows.Forms.Button()
Me.Button9 = New System.Windows.Forms.Button()
Me.Button22 = New System.Windows.Forms.Button()
Me.Button23 = New System.Windows.Forms.Button()
Me.Button24 = New System.Windows.Forms.Button()
Me.Button25 = New System.Windows.Forms.Button()
Me.Button26 = New System.Windows.Forms.Button()
Me.Button27 = New System.Windows.Forms.Button()
Me.Button28 = New System.Windows.Forms.Button()
Me.Button29 = New System.Windows.Forms.Button()
Me.Button30 = New System.Windows.Forms.Button()
Me.Button31 = New System.Windows.Forms.Button()
Me.Button32 = New System.Windows.Forms.Button()
Me.Button33 = New System.Windows.Forms.Button()
Me.Button34 = New System.Windows.Forms.Button()
Me.Button35 = New System.Windows.Forms.Button()
Me.Button36 = New System.Windows.Forms.Button()
Me.R_num = New System.Windows.Forms.NumericUpDown()
Me.G_num = New System.Windows.Forms.NumericUpDown()
Me.B_num = New System.Windows.Forms.NumericUpDown()
Me.SelectColor = New System.Windows.Forms.Button()
Me.Button38 = New System.Windows.Forms.Button()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.Button37 = New System.Windows.Forms.Button()
CType(Me.R_num,System.ComponentModel.ISupportInitialize).BeginInit
CType(Me.G_num,System.ComponentModel.ISupportInitialize).BeginInit
CType(Me.B_num,System.ComponentModel.ISupportInitialize).BeginInit
Me.SuspendLayout
'
'Button1
'
Me.Button1.BackColor = System.Drawing.Color.White
Me.Button1.Location = New System.Drawing.Point(3, 3)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(25, 25)
Me.Button1.TabIndex = 0
Me.Button1.UseVisualStyleBackColor = false
'
'Button2
'
Me.Button2.BackColor = System.Drawing.Color.FromArgb(CType(CType(255,Byte),Integer), CType(CType(192,Byte),Integer), CType(CType(192,Byte),Integer))
Me.Button2.Location = New System.Drawing.Point(33, 3)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(25, 25)
Me.Button2.TabIndex = 1
Me.Button2.UseVisualStyleBackColor = false
'
'Button3
'
Me.Button3.BackColor = System.Drawing.Color.FromArgb(CType(CType(192,Byte),Integer), CType(CType(255,Byte),Integer), CType(CType(192,Byte),Integer))
Me.Button3.Location = New System.Drawing.Point(63, 3)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(25, 25)
Me.Button3.TabIndex = 2
Me.Button3.UseVisualStyleBackColor = false
'
'Button4
'
Me.Button4.BackColor = System.Drawing.Color.FromArgb(CType(CType(192,Byte),Integer), CType(CType(255,Byte),Integer), CType(CType(255,Byte),Integer))
Me.Button4.Location = New System.Drawing.Point(93, 3)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(25, 25)
Me.Button4.TabIndex = 3
Me.Button4.UseVisualStyleBackColor = false
'
'Button5
'
Me.Button5.BackColor = System.Drawing.Color.FromArgb(CType(CType(192,Byte),Integer), CType(CType(192,Byte),Integer), CType(CType(255,Byte),Integer))
Me.Button5.Location = New System.Drawing.Point(123, 3)
Me.Button5.Name = "Button5"
Me.Button5.Size = New System.Drawing.Size(25, 25)
Me.Button5.TabIndex = 4
Me.Button5.UseVisualStyleBackColor = false
'
'Button6
'
Me.Button6.BackColor = System.Drawing.Color.FromArgb(CType(CType(255,Byte),Integer), CType(CType(192,Byte),Integer), CType(CType(255,Byte),Integer))
Me.Button6.Location = New System.Drawing.Point(153, 3)
Me.Button6.Name = "Button6"
Me.Button6.Size = New System.Drawing.Size(25, 25)
Me.Button6.TabIndex = 5
Me.Button6.UseVisualStyleBackColor = false
'
'Button10
'
Me.Button10.BackColor = System.Drawing.Color.FromArgb(CType(CType(255,Byte),Integer), CType(CType(224,Byte),Integer), CType(CType(192,Byte),Integer))
Me.Button10.Location = New System.Drawing.Point(183, 3)
Me.Button10.Name = "Button10"
Me.Button10.Size = New System.Drawing.Size(25, 25)
Me.Button10.TabIndex = 9
Me.Button10.UseVisualStyleBackColor = false
'
'Button11
'
Me.Button11.BackColor = System.Drawing.Color.FromArgb(CType(CType(128,Byte),Integer), CType(CType(64,Byte),Integer), CType(CType(64,Byte),Integer))
Me.Button11.Location = New System.Drawing.Point(243, 3)
Me.Button11.Name = "Button11"
Me.Button11.Size = New System.Drawing.Size(25, 25)
Me.Button11.TabIndex = 10
Me.Button11.UseVisualStyleBackColor = false
'
'Button12
'
Me.Button12.BackColor = System.Drawing.Color.FromArgb(CType(CType(255,Byte),Integer), CType(CType(255,Byte),Integer), CType(CType(192,Byte),Integer))
Me.Button12.Location = New System.Drawing.Point(213, 3)
Me.Button12.Name = "Button12"
Me.Button12.Size = New System.Drawing.Size(25, 25)
Me.Button12.TabIndex = 11
Me.Button12.UseVisualStyleBackColor = false
'
'Button13
'
Me.Button13.BackColor = System.Drawing.Color.FromArgb(CType(CType(255,Byte),Integer), CType(CType(255,Byte),Integer), CType(CType(128,Byte),Integer))
Me.Button13.Location = New System.Drawing.Point(213, 34)
Me.Button13.Name = "Button13"
Me.Button13.Size = New System.Drawing.Size(25, 25)
Me.Button13.TabIndex = 20
Me.Button13.UseVisualStyleBackColor = false
'
'Button14
'
Me.Button14.BackColor = System.Drawing.Color.FromArgb(CType(CType(64,Byte),Integer), CType(CType(64,Byte),Integer), CType(CType(0,Byte),Integer))
Me.Button14.Location = New System.Drawing.Point(243, 34)
Me.Button14.Name = "Button14"
Me.Button14.Size = New System.Drawing.Size(25, 25)
Me.Button14.TabIndex = 19
Me.Button14.UseVisualStyleBackColor = false
'
'Button15
'
Me.Button15.BackColor = System.Drawing.Color.FromArgb(CType(CType(255,Byte),Integer), CType(CType(192,Byte),Integer), CType(CType(128,Byte),Integer))
Me.Button15.Location = New System.Drawing.Point(183, 34)
Me.Button15.Name = "Button15"
Me.Button15.Size = New System.Drawing.Size(25, 25)
Me.Button15.TabIndex = 18
Me.Button15.UseVisualStyleBackColor = false
'
'Button16
'
Me.Button16.BackColor = System.Drawing.Color.FromArgb(CType(CType(255,Byte),Integer), CType(CType(128,Byte),Integer), CType(CType(255,Byte),Integer))
Me.Button16.Location = New System.Drawing.Point(153, 34)
Me.Button16.Name = "Button16"
Me.Button16.Size = New System.Drawing.Size(25, 25)
Me.Button16.TabIndex = 17
Me.Button16.UseVisualStyleBackColor = false
'
'Button17
'
Me.Button17.BackColor = System.Drawing.Color.FromArgb(CType(CType(128,Byte),Integer), CType(CType(128,Byte),Integer), CType(CType(255,Byte),Integer))
Me.Button17.Location = New System.Drawing.Point(123, 34)
Me.Button17.Name = "Button17"
Me.Button17.Size = New System.Drawing.Size(25, 25)
Me.Button17.TabIndex = 16
Me.Button17.UseVisualStyleBackColor = false
'
'Button18
'
Me.Button18.BackColor = System.Drawing.Color.FromArgb(CType(CType(128,Byte),Integer), CType(CType(255,Byte),Integer), CType(CType(255,Byte),Integer))
Me.Button18.Location = New System.Drawing.Point(93, 34)
Me.Button18.Name = "Button18"
Me.Button18.Size = New System.Drawing.Size(25, 25)
Me.Button18.TabIndex = 15
Me.Button18.UseVisualStyleBackColor = false
'
'Button19
'
Me.Button19.BackColor = System.Drawing.Color.FromArgb(CType(CType(128,Byte),Integer), CType(CType(255,Byte),Integer), CType(CType(128,Byte),Integer))
Me.Button19.Location = New System.Drawing.Point(63, 34)
Me.Button19.Name = "Button19"
Me.Button19.Size = New System.Drawing.Size(25, 25)
Me.Button19.TabIndex = 14
Me.Button19.UseVisualStyleBackColor = false
'
'Button20
'
Me.Button20.BackColor = System.Drawing.Color.FromArgb(CType(CType(255,Byte),Integer), CType(CType(128,Byte),Integer), CType(CType(128,Byte),Integer))
Me.Button20.Location = New System.Drawing.Point(33, 34)
Me.Button20.Name = "Button20"
Me.Button20.Size = New System.Drawing.Size(25, 25)
Me.Button20.TabIndex = 13
Me.Button20.UseVisualStyleBackColor = false
'
'Button21
'
Me.Button21.BackColor = System.Drawing.Color.Silver
Me.Button21.Location = New System.Drawing.Point(3, 34)
Me.Button21.Name = "Button21"
Me.Button21.Size = New System.Drawing.Size(25, 25)
Me.Button21.TabIndex = 12
Me.Button21.UseVisualStyleBackColor = false
'
'Button7
'
Me.Button7.BackColor = System.Drawing.Color.Yellow
Me.Button7.Location = New System.Drawing.Point(213, 65)
Me.Button7.Name = "Button7"
Me.Button7.Size = New System.Drawing.Size(25, 25)
Me.Button7.TabIndex = 29
Me.Button7.UseVisualStyleBackColor = false
'
'Button8
'
Me.Button8.BackColor = System.Drawing.Color.FromArgb(CType(CType(0,Byte),Integer), CType(CType(64,Byte),Integer), CType(CType(0,Byte),Integer))
Me.Button8.Location = New System.Drawing.Point(243, 65)
Me.Button8.Name = "Button8"
Me.Button8.Size = New System.Drawing.Size(25, 25)
Me.Button8.TabIndex = 28
Me.Button8.UseVisualStyleBackColor = false
'
'Button9
'
Me.Button9.BackColor = System.Drawing.Color.FromArgb(CType(CType(255,Byte),Integer), CType(CType(128,Byte),Integer), CType(CType(0,Byte),Integer))
Me.Button9.Location = New System.Drawing.Point(183, 65)
Me.Button9.Name = "Button9"
Me.Button9.Size = New System.Drawing.Size(25, 25)
Me.Button9.TabIndex = 27
Me.Button9.UseVisualStyleBackColor = false
'
'Button22
'
Me.Button22.BackColor = System.Drawing.Color.Magenta
Me.Button22.Location = New System.Drawing.Point(153, 65)
Me.Button22.Name = "Button22"
Me.Button22.Size = New System.Drawing.Size(25, 25)
Me.Button22.TabIndex = 26
Me.Button22.UseVisualStyleBackColor = false
'
'Button23
'
Me.Button23.BackColor = System.Drawing.Color.Blue
Me.Button23.Location = New System.Drawing.Point(123, 65)
Me.Button23.Name = "Button23"
Me.Button23.Size = New System.Drawing.Size(25, 25)
Me.Button23.TabIndex = 25
Me.Button23.UseVisualStyleBackColor = false
'
'Button24
'
Me.Button24.BackColor = System.Drawing.Color.Aqua
Me.Button24.Location = New System.Drawing.Point(93, 65)
Me.Button24.Name = "Button24"
Me.Button24.Size = New System.Drawing.Size(25, 25)
Me.Button24.TabIndex = 24
Me.Button24.UseVisualStyleBackColor = false
'
'Button25
'
Me.Button25.BackColor = System.Drawing.Color.Lime
Me.Button25.Location = New System.Drawing.Point(63, 65)
Me.Button25.Name = "Button25"
Me.Button25.Size = New System.Drawing.Size(25, 25)
Me.Button25.TabIndex = 23
Me.Button25.UseVisualStyleBackColor = false
'
'Button26
'
Me.Button26.BackColor = System.Drawing.Color.Red
Me.Button26.Location = New System.Drawing.Point(33, 65)
Me.Button26.Name = "Button26"
Me.Button26.Size = New System.Drawing.Size(25, 25)
Me.Button26.TabIndex = 22
Me.Button26.UseVisualStyleBackColor = false
'
'Button27
'
Me.Button27.BackColor = System.Drawing.Color.FromArgb(CType(CType(64,Byte),Integer), CType(CType(64,Byte),Integer), CType(CType(64,Byte),Integer))
Me.Button27.Location = New System.Drawing.Point(3, 65)
Me.Button27.Name = "Button27"
Me.Button27.Size = New System.Drawing.Size(25, 25)
Me.Button27.TabIndex = 21
Me.Button27.UseVisualStyleBackColor = false
'
'Button28
'
Me.Button28.BackColor = System.Drawing.Color.FromArgb(CType(CType(192,Byte),Integer), CType(CType(192,Byte),Integer), CType(CType(0,Byte),Integer))
Me.Button28.Location = New System.Drawing.Point(213, 96)
Me.Button28.Name = "Button28"
Me.Button28.Size = New System.Drawing.Size(25, 25)
Me.Button28.TabIndex = 38
Me.Button28.UseVisualStyleBackColor = false
'
'Button29
'
Me.Button29.BackColor = System.Drawing.Color.FromArgb(CType(CType(0,Byte),Integer), CType(CType(64,Byte),Integer), CType(CType(64,Byte),Integer))
Me.Button29.Location = New System.Drawing.Point(243, 96)
Me.Button29.Name = "Button29"
Me.Button29.Size = New System.Drawing.Size(25, 25)
Me.Button29.TabIndex = 37
Me.Button29.UseVisualStyleBackColor = false
'
'Button30
'
Me.Button30.BackColor = System.Drawing.Color.FromArgb(CType(CType(192,Byte),Integer), CType(CType(64,Byte),Integer), CType(CType(0,Byte),Integer))
Me.Button30.Location = New System.Drawing.Point(183, 96)
Me.Button30.Name = "Button30"
Me.Button30.Size = New System.Drawing.Size(25, 25)
Me.Button30.TabIndex = 36
Me.Button30.UseVisualStyleBackColor = false
'
'Button31
'
Me.Button31.BackColor = System.Drawing.Color.FromArgb(CType(CType(192,Byte),Integer), CType(CType(0,Byte),Integer), CType(CType(192,Byte),Integer))
Me.Button31.Location = New System.Drawing.Point(153, 96)
Me.Button31.Name = "Button31"
Me.Button31.Size = New System.Drawing.Size(25, 25)
Me.Button31.TabIndex = 35
Me.Button31.UseVisualStyleBackColor = false
'
'Button32
'
Me.Button32.BackColor = System.Drawing.Color.FromArgb(CType(CType(0,Byte),Integer), CType(CType(0,Byte),Integer), CType(CType(192,Byte),Integer))
Me.Button32.Location = New System.Drawing.Point(123, 96)
Me.Button32.Name = "Button32"
Me.Button32.Size = New System.Drawing.Size(25, 25)
Me.Button32.TabIndex = 34
Me.Button32.UseVisualStyleBackColor = false
'
'Button33
'
Me.Button33.BackColor = System.Drawing.Color.FromArgb(CType(CType(0,Byte),Integer), CType(CType(192,Byte),Integer), CType(CType(192,Byte),Integer))
Me.Button33.Location = New System.Drawing.Point(93, 96)
Me.Button33.Name = "Button33"
Me.Button33.Size = New System.Drawing.Size(25, 25)
Me.Button33.TabIndex = 33
Me.Button33.UseVisualStyleBackColor = false
'
'Button34
'
Me.Button34.BackColor = System.Drawing.Color.FromArgb(CType(CType(0,Byte),Integer), CType(CType(192,Byte),Integer), CType(CType(0,Byte),Integer))
Me.Button34.Location = New System.Drawing.Point(63, 96)
Me.Button34.Name = "Button34"
Me.Button34.Size = New System.Drawing.Size(25, 25)
Me.Button34.TabIndex = 32
Me.Button34.UseVisualStyleBackColor = false
'
'Button35
'
Me.Button35.BackColor = System.Drawing.Color.FromArgb(CType(CType(192,Byte),Integer), CType(CType(0,Byte),Integer), CType(CType(0,Byte),Integer))
Me.Button35.Location = New System.Drawing.Point(33, 96)
Me.Button35.Name = "Button35"
Me.Button35.Size = New System.Drawing.Size(25, 25)
Me.Button35.TabIndex = 31
Me.Button35.UseVisualStyleBackColor = false
'
'Button36
'
Me.Button36.BackColor = System.Drawing.Color.Black
Me.Button36.Location = New System.Drawing.Point(3, 96)
Me.Button36.Name = "Button36"
Me.Button36.Size = New System.Drawing.Size(25, 25)
Me.Button36.TabIndex = 30
Me.Button36.UseVisualStyleBackColor = false
'
'R_num
'
Me.R_num.AutoSize = true
Me.R_num.Location = New System.Drawing.Point(64, 130)
Me.R_num.Maximum = New Decimal(New Integer() {255, 0, 0, 0})
Me.R_num.Name = "R_num"
Me.R_num.Size = New System.Drawing.Size(50, 21)
Me.R_num.TabIndex = 39
Me.R_num.Value = New Decimal(New Integer() {200, 0, 0, 0})
'
'G_num
'
Me.G_num.AutoSize = true
Me.G_num.Location = New System.Drawing.Point(137, 130)
Me.G_num.Maximum = New Decimal(New Integer() {255, 0, 0, 0})
Me.G_num.Name = "G_num"
Me.G_num.Size = New System.Drawing.Size(50, 21)
Me.G_num.TabIndex = 40
Me.G_num.Value = New Decimal(New Integer() {100, 0, 0, 0})
'
'B_num
'
Me.B_num.AutoSize = true
Me.B_num.Location = New System.Drawing.Point(210, 128)
Me.B_num.Maximum = New Decimal(New Integer() {255, 0, 0, 0})
Me.B_num.Name = "B_num"
Me.B_num.Size = New System.Drawing.Size(50, 21)
Me.B_num.TabIndex = 42
Me.B_num.Value = New Decimal(New Integer() {10, 0, 0, 0})
'
'SelectColor
'
Me.SelectColor.BackColor = System.Drawing.Color.Black
Me.SelectColor.Location = New System.Drawing.Point(3, 130)
Me.SelectColor.Name = "SelectColor"
Me.SelectColor.Size = New System.Drawing.Size(36, 40)
Me.SelectColor.TabIndex = 43
Me.SelectColor.UseVisualStyleBackColor = false
'
'Button38
'
Me.Button38.Location = New System.Drawing.Point(137, 155)
Me.Button38.Name = "Button38"
Me.Button38.Size = New System.Drawing.Size(59, 32)
Me.Button38.TabIndex = 44
Me.Button38.Text = "取色"
Me.Button38.UseVisualStyleBackColor = true
'
'Label1
'
Me.Label1.AutoSize = true
Me.Label1.Location = New System.Drawing.Point(44, 130)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(17, 12)
Me.Label1.TabIndex = 45
Me.Label1.Text = "R:"
'
'Label2
'
Me.Label2.AutoSize = true
Me.Label2.Location = New System.Drawing.Point(117, 130)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(17, 12)
Me.Label2.TabIndex = 46
Me.Label2.Text = "G:"
'
'Label3
'
Me.Label3.AutoSize = true
Me.Label3.Location = New System.Drawing.Point(190, 132)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(17, 12)
Me.Label3.TabIndex = 47
Me.Label3.Text = "B:"
'
'Button37
'
Me.Button37.Location = New System.Drawing.Point(210, 155)
Me.Button37.Name = "Button37"
Me.Button37.Size = New System.Drawing.Size(59, 32)
Me.Button37.TabIndex = 48
Me.Button37.Text = "确认"
Me.Button37.UseVisualStyleBackColor = true
'
'ColorCelect
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 12!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.Controls.Add(Me.Button37)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.Button38)
Me.Controls.Add(Me.SelectColor)
Me.Controls.Add(Me.B_num)
Me.Controls.Add(Me.G_num)
Me.Controls.Add(Me.R_num)
Me.Controls.Add(Me.Button28)
Me.Controls.Add(Me.Button29)
Me.Controls.Add(Me.Button30)
Me.Controls.Add(Me.Button31)
Me.Controls.Add(Me.Button32)
Me.Controls.Add(Me.Button33)
Me.Controls.Add(Me.Button34)
Me.Controls.Add(Me.Button35)
Me.Controls.Add(Me.Button36)
Me.Controls.Add(Me.Button7)
Me.Controls.Add(Me.Button8)
Me.Controls.Add(Me.Button9)
Me.Controls.Add(Me.Button22)
Me.Controls.Add(Me.Button23)
Me.Controls.Add(Me.Button24)
Me.Controls.Add(Me.Button25)
Me.Controls.Add(Me.Button26)
Me.Controls.Add(Me.Button27)
Me.Controls.Add(Me.Button13)
Me.Controls.Add(Me.Button14)
Me.Controls.Add(Me.Button15)
Me.Controls.Add(Me.Button16)
Me.Controls.Add(Me.Button17)
Me.Controls.Add(Me.Button18)
Me.Controls.Add(Me.Button19)
Me.Controls.Add(Me.Button20)
Me.Controls.Add(Me.Button21)
Me.Controls.Add(Me.Button12)
Me.Controls.Add(Me.Button11)
Me.Controls.Add(Me.Button10)
Me.Controls.Add(Me.Button6)
Me.Controls.Add(Me.Button5)
Me.Controls.Add(Me.Button4)
Me.Controls.Add(Me.Button3)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Button1)
Me.Name = "ColorCelect"
Me.Size = New System.Drawing.Size(273, 192)
CType(Me.R_num,System.ComponentModel.ISupportInitialize).EndInit
CType(Me.G_num,System.ComponentModel.ISupportInitialize).EndInit
CType(Me.B_num,System.ComponentModel.ISupportInitialize).EndInit
Me.ResumeLayout(false)
Me.PerformLayout
End Sub
Friend WithEvents Button1 As Button
Friend WithEvents Button2 As Button
Friend WithEvents Button3 As Button
Friend WithEvents Button4 As Button
Friend WithEvents Button5 As Button
Friend WithEvents Button6 As Button
Friend WithEvents Button10 As Button
Friend WithEvents Button11 As Button
Friend WithEvents Button12 As Button
Friend WithEvents Button13 As Button
Friend WithEvents Button14 As Button
Friend WithEvents Button15 As Button
Friend WithEvents Button16 As Button
Friend WithEvents Button17 As Button
Friend WithEvents Button18 As Button
Friend WithEvents Button19 As Button
Friend WithEvents Button20 As Button
Friend WithEvents Button21 As Button
Friend WithEvents Button7 As Button
Friend WithEvents Button8 As Button
Friend WithEvents Button9 As Button
Friend WithEvents Button22 As Button
Friend WithEvents Button23 As Button
Friend WithEvents Button24 As Button
Friend WithEvents Button25 As Button
Friend WithEvents Button26 As Button
Friend WithEvents Button27 As Button
Friend WithEvents Button28 As Button
Friend WithEvents Button29 As Button
Friend WithEvents Button30 As Button
Friend WithEvents Button31 As Button
Friend WithEvents Button32 As Button
Friend WithEvents Button33 As Button
Friend WithEvents Button34 As Button
Friend WithEvents Button35 As Button
Friend WithEvents Button36 As Button
Friend WithEvents R_num As NumericUpDown
Friend WithEvents G_num As NumericUpDown
Friend WithEvents B_num As NumericUpDown
Friend WithEvents SelectColor As Button
Friend WithEvents Button38 As Button
Friend WithEvents Label1 As Label
Friend WithEvents Label2 As Label
Friend WithEvents Label3 As Label
Friend WithEvents Button37 As Button
End Class

120
BLV_Studio/ColorCelect.resx Normal file
View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

52
BLV_Studio/ColorCelect.vb Normal file
View File

@@ -0,0 +1,52 @@
Public Class ColorCelect
Private Sub Button28_Click(sender As Object, e As EventArgs) Handles Button9.Click, Button8.Click, Button7.Click, Button6.Click, Button5.Click, Button4.Click, Button36.Click, Button35.Click, Button34.Click, Button33.Click, Button32.Click, Button31.Click, Button30.Click, Button3.Click, Button29.Click, Button28.Click, Button27.Click, Button26.Click, Button25.Click, Button24.Click, Button23.Click, Button22.Click, Button21.Click, Button20.Click, Button2.Click, Button19.Click, Button18.Click, Button17.Click, Button16.Click, Button15.Click, Button14.Click, Button13.Click, Button12.Click, Button11.Click, Button10.Click, Button1.Click
Dim btn As Button = sender
SelectColor.BackColor = btn.BackColor
'Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Visible = False
End Sub
Private Sub Button38_Click(sender As Object, e As EventArgs) Handles Button38.Click
SelectColor.BackColor = Color.FromArgb(R_num.Value, G_num.Value, B_num.Value)
'Me.dia = System.Windows.Forms.DialogResult.OK
End Sub
Private Sub ColorCelect_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Public Jflag As Boolean = False
Public LFlag As Boolean = False
Private Sub ColorCelect2_MouseEnter(sender As Object, e As EventArgs) Handles MyBase.MouseEnter
Jflag = True
End Sub
'离开
Private Sub ColorCelect2_MouseLeave(sender As Object, e As EventArgs) Handles MyBase.MouseLeave
'If Jflag And LFlag Then
' LFlag = False
' Jflag = False
' Me.Visible = False
' Else
LFlag = True
'End If
End Sub
Private Sub Button37_Click(sender As Object, e As EventArgs) Handles Button37.Click
Me.Visible = False
End Sub
'Private Sub ColorCelect2_Click(sender As Object, e As EventArgs) Handles MyBase.Click
' If Jflag Then
' If LFlag Then
' Me.Visible =False
' End If
' Else
' Me.Visible =False
' End If
'End Sub
End Class

View File

@@ -0,0 +1,85 @@
Public Class BackstageHostListBLL
Sub New()
End Sub
''' <summary>
''' 主机ID
''' </summary>
Public ID As String
''' <summary>
''' 所属酒店 ID
''' </summary>
Public HotelID As String
''' <summary>
''' 所属酒店名称
''' </summary>
Public HotelName As String
''' <summary>
''' 主机编号
''' </summary>
Public HostNumber As String
''' <summary>
''' 房号
''' </summary>
Public RoomNumber As String
''' <summary>
''' 状态0 离线1 在线
''' </summary>
Public Status As String
''' <summary>
''' 注册日期
''' </summary>
Public RegisterDate As String
''' <summary>
''' 房态 ID
''' </summary>
Public RoomStatusID As String
''' <summary>
''' 房态名称
''' </summary>
Public RoomStatusName As String
''' <summary>
''' 房型 ID
''' </summary>
Public RoomTypeID As String
''' <summary>
''' 房型名称
''' </summary>
Public RoomTypeName As String
''' <summary>
''' 主机 mac 地址
''' </summary>
Public MAC As String
''' <summary>
''' mac 绑定时间
''' </summary>
Public MACBindDate As String
''' <summary>
''' 主机 IP 地址
''' </summary>
Public IP As String
''' <summary>
''' 备注
''' </summary>
Public Remark As String
End Class

View File

@@ -0,0 +1,18 @@
Public Class BackstageHostListResultBLL
Sub New()
Result = New List(Of BackstageHostListBLL)
End Sub
''' <summary>
''' 请求结果
''' </summary>
Public IsSuccess As Boolean
''' <summary>
''' 后台主机列表
''' </summary>
Public Result As List(Of BackstageHostListBLL)
End Class

View File

@@ -0,0 +1,85 @@
Public Class BackstageHotelListBLL
Sub New()
End Sub
''' <summary>
''' 酒店 ID
''' </summary>
Public ID As String
''' <summary>
''' 酒店编号
''' </summary>
Public Code As String
''' <summary>
''' 酒店名称-中文
''' </summary>
Public Name As String
''' <summary>
''' 酒店名称-英文
''' </summary>
Public EName As String
''' <summary>
''' 繁体名称
''' </summary>
Public TWName As String
''' <summary>
''' 联系人
''' </summary>
Public Contact As String
''' <summary>
''' 联系电话
''' </summary>
Public Phone As String
''' <summary>
''' 地址
''' </summary>
Public Address As String
''' <summary>
''' 酒店授权有效期
''' </summary>
Public ValidateDate As String
''' <summary>
''' 酒店创建日期
''' </summary>
Public CreatDate As String
''' <summary>
''' 备注
''' </summary>
Public Remark As String
''' <summary>
''' 状态
''' </summary>
Public Status As String
''' <summary>
''' 审批
''' </summary>
Public IsApprove As String
''' <summary>
''' 酒店分组 ID
''' </summary>
Public SysHotelGroupID As String
''' <summary>
''' 酒店分组名称
''' </summary>
Public SysHotelGroupName As String
End Class

View File

@@ -0,0 +1,18 @@
Public Class BackstageHotelListResultBLL
Sub New()
Result = New List(Of BackstageHotelListBLL)
End Sub
''' <summary>
''' 请求结果
''' </summary>
Public IsSuccess As Boolean
''' <summary>
''' 后台酒店列表
''' </summary>
Public Result As List(Of BackstageHotelListBLL)
End Class

View File

@@ -0,0 +1,31 @@
Public Class BackstageRoomTypeListBLL
Sub New()
Modals = New List(Of BackstageRoomTypeModalsListBLL)
End Sub
''' <summary>
''' 房型ID
''' </summary>
Public ID As String
''' <summary>
''' 房型编号
''' </summary>
Public Code As String
''' <summary>
''' 房型名称
''' </summary>
Public Name As String
''' <summary>
''' 回路列表
''' </summary>
Public Modals As List(Of BackstageRoomTypeModalsListBLL)
End Class

View File

@@ -0,0 +1,20 @@
Public Class BackstageRoomTypeListResultBLL
Sub New()
Result = New List(Of BackstageRoomTypeListBLL)
End Sub
''' <summary>
''' 请求结果
''' </summary>
Public IsSuccess As Boolean
''' <summary>
''' 后台房型列表
''' </summary>
Public Result As List(Of BackstageRoomTypeListBLL)
End Class

View File

@@ -0,0 +1,37 @@
Public Class BackstageRoomTypeModalsListBLL
Sub New()
End Sub
''' <summary>
''' 回路地址
''' </summary>
Public ModalAddress As String
''' <summary>
''' 回路名称
''' </summary>
Public Name As String
''' <summary>
''' 英文名称
''' </summary>
Public EnglishName As String
''' <summary>
''' 繁体名称
''' </summary>
Public TWName As String
''' <summary>
''' 类型名称
''' </summary>
Public TypeName As String
End Class

View File

@@ -0,0 +1,18 @@
Public Class BackstageSetHostMACBLL
Sub New()
End Sub
''' <summary>
''' 请求结果
''' </summary>
Public IsSuccess As Boolean
''' <summary>
''' 操作返回
''' </summary>
Public Result As String
End Class

View File

@@ -0,0 +1,79 @@

Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports ARSoft.Tools.Net
Imports ARSoft.Tools.Net.Dns
Imports AutoFixture
Imports DnsClient
Public Class CxDnsServer
Public QUERY_TIMEOUT As Integer = 1000
Public dnsAddr As String
Public domain As String
Public G_DnsThread As Thread
Public Sub New()
' Dim dnsServer As DnsServer = New DnsServer
'G_DnsThread = New Thread(New ThreadStart(AddressOf runingDnsClient))
'G_DnsThread.Start()
End Sub
Public Sub runingDnsClient()
If String.IsNullOrEmpty(domain) Then
MsgBox("待解析的域名不可为空")
Return
End If
If String.IsNullOrEmpty(dnsAddr) Then
MessageBox.Show("DNS地址不可为空")
End If
Dim isDomainName As ARSoft.Tools.Net.DomainName = ARSoft.Tools.Net.DomainName.Parsedomain
Dim isdnsClient As ARSoft.Tools.Net.Dns.DnsClient = New ARSoft.Tools.Net.Dns.DnsClient(IPAddress.Parse(dnsAddr), QUERY_TIMEOUT)
Dim isDnsMessage As DnsMessage = isdnsClient.Resolve(isDomainName, RecordType.A)
If IsNothing(isDnsMessage) OrElse isDnsMessage.ReturnCode <> ReturnCode.NoError And isDnsMessage.ReturnCode <> ReturnCode.NxDomain Then
MsgBox("没有解析成功")
Else
For Each tdnsRecord In isDnsMessage.AnswerRecords
Dim taRecord As ARecord = TryCast(tdnsRecord, ARecord)
If IsNothing(taRecord) Then
MsgBox($"解析成功{taRecord.Address.ToString }{vbCrLf }")
Else
Continue For
End If
Next
End If
End Sub
Public dnsServer As DnsServer
Public Sub runingDnsServer(ipadd As IPAddress)
If Not IsNothing(dnsServer) Then
dnsServer.Stop()
End If
dnsServer = New DnsServer(ipadd, 50, 50)
dnsServer.Start()
End Sub
Private Function ProcessQuery(ByVal message As DnsMessageBase, ByVal clientAddress As IPAddress, ByVal protocol As ProtocolType) As DnsMessageBase
message.IsQuery = False
Dim query As DnsMessage = TryCast(message, DnsMessage)
If query Is Nothing OrElse query.Questions.Count <= 0 Then
message.ReturnCode = ReturnCode.ServerFailure
Else
If query.Questions(0).RecordType = RecordType.A Then
For Each dnsQuestion As ARSoft.Tools.Net.Dns.DnsQuestion In query.Questions
'Dim resolvedIp As String = Resolve(clientAddress.ToString(), dnsQuestion.Name)
'Dim aRecord As ARecord = New ARecord(query.Questions(0).Name, 36000, IPAddress)
'query.AnswerRecords.Add(aRecord)
Next
Else
End If
End If
Return message
End Function
End Class

View File

@@ -0,0 +1,440 @@
Imports System.Management
Imports System.Net
Imports System.Net.NetworkInformation
Imports System.Net.Sockets
Imports System.Text
Imports ARSoft.Tools.Net.Dns
Imports DotNetProjects.DhcpServer
Imports DotNetProjects.DhcpServer.DHCPRequest
Public Class DhcpServer
Public Event OupPrintfDHCPlogIPadd As String mac As String, msgtype As Integer
Public Event IsOpenwifiIswifi As Boolean
Enum IPStateType
NotAllocated = 1 ' 未分配
Assigned ' 待分配
TakeUp ' 占用
Overdue ' 过期
End Enum
Public test As DotNetProjects.DhcpServer.DHCPServer
Public _IndexIPDic As Dictionary(Of String, dhcpInfo)
Sub New(Optional IPPoolMax As Integer = 10)
_IndexIPDic = New Dictionary(Of String, dhcpInfo)
sendReply = New DHCPReplyOptions
iscnt = False
isnumber = 0
'GetMACAddress()
init(IPPoolMax)
End Sub
Public Sub init(Optional IPPoolMax As Integer = 10)
Dim isNetworkInterfaces As NetworkInterface() = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
Dim ipProperties As IPInterfaceProperties
Dim gateways As UnicastIPAddressInformationCollection
Dim loadip As IPAddress = IPAddress.Parse("192.168.1.10")
Dim mac As String = String.Empty
For Each inten In isNetworkInterfaces
If inten.NetworkInterfaceType = NetworkInterfaceType.Ethernet Then
'SetIPAddress({192, 168, 1, 10}, {255, 255, 255, 0}, {192, 168, 1, 1}, {8, 8, 8, 8}, inten)
'SetManagementBaseObject(inten)
ipProperties = inten.GetIPProperties
gateways = ipProperties.UnicastAddresses
For Each tmp In gateways
If tmp.Address.AddressFamily = AddressFamily.InterNetwork Then
'loadip = tmp.Address
mac = inten.GetPhysicalAddress.ToString
End If
Next
test = New DotNetProjects.DhcpServer.DHCPServer(loadip)
test.SendDhcpAnswerNetworkInterface = inten
test.BroadcastAddress = IPAddress.Parse("255.255.255.255")
SetsendReply(loadip.ToString)
InitIPPool(loadip.ToString, IPPoolMax, mac)
Try
DHCPRuning()
Catch ex As Exception
'MsgBox($"{loadip.ToString }_{inten.Name }{ex}")
init(IPPoolMax)
End Try
Exit For
End If
Next
End Sub
Public Function GetMACAddress() As String
Dim mac As String = String.Empty
For Each nic In NetworkInterface.GetAllNetworkInterfaces
Console.WriteLine(nic.GetPhysicalAddress.ToString)
Next
End Function
Public Sub DHCPRuning()
'InitIPPool(inten.GetIPProperties, IPPoolMax)
AddHandler test.OnDataReceived, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnDiscover, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnRequest, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnDecline, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnReleased, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnInform, AddressOf UserDHCPDataReceivedEventHandler
test.Start()
End Sub
Public Sub SetsendReply(txt_LoadIP As String)
sendReply.SubnetMask = IPAddress.Parse("255.255.0.0")
sendReply.ServerIpAddress = IPAddress.Parse(txt_LoadIP) '本机电脑iP
sendReply.IPAddressLeaseTime = 86400
sendReply.RenewalTimeValue_T1 = 86400
sendReply.RebindingTimeValue_T2 = 86400
sendReply.DomainName = "demo.pi"
sendReply.ServerIdentifier = IPAddress.Parse(txt_LoadIP) '本机电脑iP
sendReply.RouterIP = IPAddress.Parse("192.168.1.1")
sendReply.DomainNameServers = GetDomainNameServers("8.8.8.8,8.4.4.4")
'sendReply.LogServerIP = IPAddress.Parse(options_120.Text)
IPfile = "/pxelinux.0"
End Sub
Public Function GetDomainNameServers(theip As String) As IPAddress()
Dim ipstr2() As String = theip.Split(",")
Dim result As New List(Of IPAddress)
For Each index2 In ipstr2
result.Add(IPAddress.Parse(index2))
Next
Return result.ToArray
End Function
Public Function SetManagementBaseObject(isNetworkInterfaces As NetworkInterface) As ManagementBaseObject
Dim mos As ManagementObjectSearcher = New ManagementObjectSearcher("select * from Win32_NetworkAdapterConfiguration")
For Each mo As ManagementObject In mos.Get()
If mo("Description").ToString().Equals(isNetworkInterfaces.Description) Then
Dim newIP As ManagementBaseObject = mo.GetMethodParameters("EnableStatic")
Dim newGateway As ManagementBaseObject = mo.GetMethodParameters("SetGateways")
Dim newDNS As ManagementBaseObject = mo.GetMethodParameters("SetDNSServerSearchOrder")
newIP.Item("IPAddress") = New String() {192, 168, 1, 10}
newIP.Item("SubnetMask") = New String() {255, 255, 255, 0}
newGateway.Item"DefaultIPGateway" = New String() {192 168 1 1}
' newDNS.Item("DNSServerSearchOrder") = New String[] { info.DNS };
Dim setIP As ManagementBaseObject = mo.InvokeMethod("EnableStatic", newIP, Nothing)
Dim setGateways As ManagementBaseObject = mo.InvokeMethod("SetGateways", newGateway, Nothing)
Dim setDNS As ManagementBaseObject = mo.InvokeMethod("SetDNSServerSearchOrder", newDNS, Nothing)
'mo.InvokeMethod("SetDNSServerSearchOrder", Nothing);
'//DNS的地址清
' mo.InvokeMethod("EnableDHCP", Nothing)
'//开启DHCP
End If
Next
End Function
Public Shared Sub SetIPAddress(ByVal ip As String(), ByVal submask As String(), ByVal getway As String(), ByVal dns As String() isNetworkInterfaces As NetworkInterface)
Dim wmi As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim moc As ManagementObjectCollection = wmi.GetInstances()
Dim inPar As ManagementBaseObject = Nothing
Dim outPar As ManagementBaseObject = Nothing
For Each mo As ManagementObject In moc
'/如果没有启用IP设置的网络设备则跳过
Console.WriteLine($"{mo("Description").ToString()}")
If Not mo("Description").ToString().Equals(isNetworkInterfaces.Description) Then Continue For
' 设置IP地址和掩码
If ip IsNot Nothing AndAlso submask IsNot Nothing Then
inPar = mo.GetMethodParameters("EnableStatic")
inPar("IPAddress") = ip
inPar("SubnetMask") = submask
outPar = mo.InvokeMethod("EnableStatic", inPar, Nothing)
End If
' //设置网关地址
If getway IsNot Nothing Then
inPar = mo.GetMethodParameters("SetGateways")
inPar("DefaultIPGateway") = getway
outPar = mo.InvokeMethod("SetGateways", inPar, Nothing)
End If
' //设置DNS地址
If dns IsNot Nothing Then
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder")
inPar("DNSServerSearchOrder") = dns
outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, Nothing)
End If
Next
End Sub
Public Sub ClockDHCPServer()
If IsNothing(test) Then Return
test.BroadcastAddress = IPAddress.Parse("0.0.0.0")
test.Dispose()
' test.BroadcastAddress = IPAddress.Parse("0.0.0.0")
End Sub
Public Sub UserDHCPDataReceivedEventHandler(dhcpRequest As DHCPRequest)
AnalytischeGegevens(dhcpRequest) ' dhcpRequest.SendDHCPReply(,,)
End Sub
Public iscnt As Boolean
Public isnumber As Integer
Public Sub AnalytischeGegevens(dhcpRequest As DHCPRequest)
Select Case dhcpRequest.GetMsgType
Case DHCPMsgType.DHCPACK
Case DHCPMsgType.DHCPDECLINE
Case DHCPMsgType.DHCPDISCOVER '上线
'Dim ipinfo As NetworkInterface = test.SendDhcpAnswerNetworkInterface
'If iscnt Then
' RaiseEvent IsOpenwifi(False)
' iscnt = False
'End If
Dhcp_OFFER(dhcpRequest)
Case DHCPMsgType.DHCPINFORM
Case DHCPMsgType.DHCPNAK
Case DHCPMsgType.DHCPOFFER
Case DHCPMsgType.DHCPRELEASE '下线
Case DHCPMsgType.DHCPREQUEST
Dhcp_ACK(dhcpRequest)
End Select
End Sub
Public Function GetByteIPToString(buff() As Byte) As String
Dim result As String = ""
For Each index In buff
result = result & index & "."
Next
result = result.Substring(0, result.Length - 1)
Return result
End Function
Public Sub InitIPPool(startIP As String ipMax As Integer mac As String)
Dim ipstrbuff() As String
Dim number As Integer = 0
ipstrbuff = startIP.Split(".")
Dim cip As String = ""
Dim ClientIP(3) As Byte
_IndexIPDic.Clear()
For i = 0 To 3
Integer.TryParse(ipstrbuff(i), number)
ClientIP(i) = number
If i < 3 Then
cip = cip & ClientIP(i) & "."
End If
Next
If Not _IndexIPDic.ContainsKey(startIP) Then
Dim newinfo As New dhcpInfo(ClientIP)
newinfo.ChildState = IPStateType.Assigned
newinfo.ChildMac = GetMacStr(mac)
_IndexIPDic.Add(startIP, newinfo)
End If
For i As Integer = 1 To ipMax
If ClientIP(3) + i > 255 Then Return
Dim nClientIP(3) As Byte
Array.Copy(ClientIP, nClientIP, ClientIP.Length)
nClientIP(3) = ClientIP(3) + i
If _IndexIPDic.ContainsKey(cip & nClientIP(3).ToString) Then Continue For
_IndexIPDic.Add(cip & nClientIP(3).ToString, New dhcpInfo(nClientIP))
Next
End Sub
Public sendReply As DHCPReplyOptions
Public IPfile As String
Public Sub Dhcp_ACK(dhcpRequest As DHCPRequest)
Dim sda As DHCPPacket = dhcpRequest.GetRawPacket
Dim RequestedIP As IPAddress = dhcpRequest.GetRequestedIP
Dim cmac As String = GetMacStr(sda.chaddr)
Dim newinfo As dhcpInfo = CheckIsTakeUp(RequestedIP.ToString, cmac)
Try
If IsNothing(newinfo) Then
dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPNAK, IPAddress.Any, sendReply)
RaiseEvent OupPrintfDHCPlog(RequestedIP.ToString, cmac, 4)
Return
End If
Catch ex As Exception
Return
End Try
Dim IPstr As String = GetByteIPToString(newinfo.ChilIP)
Dim ip As IPAddress = IPAddress.Parse(IPstr)
sda.op = &H2
sda.htype = &H1
sda.hlen = &H6
sda.hops = &H0
sda.flags = {&H0, &H1}
sda.giaddr = {&H0, &H0, &H0, &H0}
sda.yiaddr = newinfo.ChilIP
sda.siaddr = newinfo.ChilIP
Dim filebuff() As Byte = Encoding.UTF8.GetBytes(IPfile)
Array.Copy(filebuff, sda.file, filebuff.Length)
Try
RaiseEvent OupPrintfDHCPlog(IPstr, cmac, 5)
dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPACK, ip, sendReply)
Catch ex As Exception
Console.WriteLine("发送异常:" & ex.ToString)
End Try
End Sub
Public Sub Dhcp_OFFER(dhcpRequest As DHCPRequest)
Dim sda As DHCPPacket = dhcpRequest.GetRawPacket
Dim cmac As String = GetMacStr(sda.chaddr)
RaiseEvent OupPrintfDHCPlog("", cmac, 1)
Dim newinfo As dhcpInfo = GetNewIPInfo(cmac)
Dim dic As New Dictionary(Of DHCPOption, Byte())
dic.Add(DHCPOption.NetBIOSoverTCPIPNameServer, {8, 8, 8, 8})
dic.Add(DHCPOption.NetworkTimeProtocolServers, {&H58, &HBF, &HE4, &H8A})
dic.Add(DHCPOption.TFTPServerName, {&H31, &H39, &H32, &H2E, &H31, &H36, &H38, &H2E, &H31, &H2E, &H31, &H30})
dic.Add(DHCPOption.DomainName, {&H64, &H65, &H6D, &H6F, &H2E, &H70, &H69})
dic.Add(DHCPOption.StaticRoutes, {&H78, &H30, &H42, &H41, &H43, &H31, &H30, &H43, &H30, &H41, &H38, &H30, &H31, &H46, &H45})
sendReply.OtherRequestedOptions = dic
If IsNothing(newinfo) Then
dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPNAK, IPAddress.Any, sendReply)
RaiseEvent OupPrintfDHCPlog("", cmac, 2)
Return
End If
'Dim IPstr As String = GetByteIPToString(newinfo.ChilIP)
'Dim ip As IPAddress = IPAddress.Parse(IPstr)
Dim IPstr As String = GetByteIPToString(newinfo.ChilIP)
Dim ip As IPAddress = IPAddress.Parse(IPstr)
newinfo.ChildMac = cmac
newinfo.ChildState = IPStateType.Assigned
sda.op = &H2
sda.htype = &H1
sda.hlen = &H6
sda.hops = &H0
sda.flags = {&H0, &H1}
sda.giaddr = {&H0, &H0, &H0, &H0}
sda.yiaddr = newinfo.ChilIP
sda.siaddr = newinfo.ChilIP
Dim filebuff() As Byte = Encoding.UTF8.GetBytes(IPfile)
Array.Copy(filebuff, sda.file, filebuff.Length)
Try
dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPOFFER, ip, sendReply, dic)
RaiseEvent OupPrintfDHCPlog(IPstr, cmac, 3)
Catch ex As Exception
Console.WriteLine("发送异常:" & ex.ToString)
End Try
End Sub
Public Function GetMacStr(duff As String) As String
Dim sresult As String = ""
For i As Integer = 0 To 5
sresult = sresult & duff.Substring(i * 2, 2) & ":"
Next
Return sresult.Substring(0, sresult.Length - 1)
End Function
Public Function GetMacStr(duff() As Byte) As String
Dim sresult As String = ""
Dim locadMac(5) As Byte
Array.Copy(duff, locadMac, locadMac.Length)
For Each index In locadMac
sresult = sresult & Hex(index) & ":"
Next
Return sresult.Substring(0, sresult.Length - 1)
End Function
Public Function GetNewIPInfo(mac As String) As dhcpInfo
Dim newdhcpInfo As dhcpInfo
Dim olddhcpInfo As dhcpInfo
For Each index In _IndexIPDic.Values
If mac.Equals(index.ChildMac) Then Return index
If IsNothing(newdhcpInfo) AndAlso index.ChildState = IPStateType.NotAllocated Then
newdhcpInfo = index
Exit For
End If
If IsNothing(olddhcpInfo) AndAlso index.ChildState = IPStateType.Overdue Then
olddhcpInfo = index
End If
Next
If Not IsNothing(newdhcpInfo) Then
Return newdhcpInfo
ElseIf Not IsNothing(olddhcpInfo) Then
Return olddhcpInfo
Else
Return Nothing
End If
End Function
Public Function CheckIsTakeUp(name As String, mac As String) As dhcpInfo
If _IndexIPDic.ContainsKey(name) Then
Dim Index = _IndexIPDic.Item(name)
'ip 被占用 且用户 Mac 地址一致
If Index.ChildState <> IPStateType.NotAllocated AndAlso Index.ChildMac.Equals(mac) Then
Index.ChildState = IPStateType.Assigned
Return Index
Else
Return Nothing
End If
End If
Return Nothing
End Function
End Class
Public Class dhcpInfo
Public ChilIP() As Byte
Public ChildMac As String = ""
Public ChildTime As Long = 0
Public ChildState As Integer = 1
Sub New(ip() As Byte)
ChilIP = ip
ChildMac = ""
ChildTime = 0
ChildState = 1
End Sub
End Class

View File

@@ -0,0 +1,423 @@
Imports System.Management
Imports System.Net
Imports System.Net.NetworkInformation
Imports System.Net.Sockets
Imports System.Text
Imports DotNetProjects.DhcpServer
Imports DotNetProjects.DhcpServer.DHCPRequest
Public Class DhcpServer
Public Event OupPrintfDHCPlogIPadd As String mac As String, msgtype As Integer
Public Event IsOpenwifiIswifi As Boolean
Enum IPStateType
NotAllocated = 1 ' 未分配
Assigned ' 待分配
TakeUp ' 占用
Overdue ' 过期
End Enum
Public test As DotNetProjects.DhcpServer.DHCPServer
Public _IndexIPDic As Dictionary(Of String, dhcpInfo)
Sub New(Optional IPPoolMax As Integer = 10)
_IndexIPDic = New Dictionary(Of String, dhcpInfo)
sendReply = New DHCPReplyOptions
iscnt = False
isnumber = 0
'GetMACAddress()
Dim isNetworkInterfaces As NetworkInterface() = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
Dim ipProperties As IPInterfaceProperties
Dim gateways As UnicastIPAddressInformationCollection
Dim loadip As IPAddress = IPAddress.Parse("192.168.1.10")
Dim mac As String = String.Empty
For Each inten In isNetworkInterfaces
If inten.NetworkInterfaceType = NetworkInterfaceType.Ethernet Then
'SetIPAddress({192, 168, 1, 10}, {255, 255, 255, 0}, {192, 168, 1, 1}, {8, 8, 8, 8}, inten)
'SetManagementBaseObject(inten)
ipProperties = inten.GetIPProperties
gateways = ipProperties.UnicastAddresses
For Each tmp In gateways
If tmp.Address.AddressFamily = AddressFamily.InterNetwork Then
loadip = tmp.Address
mac = inten.GetPhysicalAddress.ToString
End If
Next
test = New DotNetProjects.DhcpServer.DHCPServer(loadip)
test.SendDhcpAnswerNetworkInterface = inten
test.BroadcastAddress = IPAddress.Parse("255.255.255.255")
SetsendReply(loadip.ToString)
InitIPPool(loadip.ToString, IPPoolMax, mac)
DHCPRuning()
End If
Next
End Sub
Public Function GetMACAddress() As String
Dim mac As String = String.Empty
For Each nic In NetworkInterface.GetAllNetworkInterfaces
Console.WriteLine(nic.GetPhysicalAddress.ToString)
Next
End Function
Public Sub DHCPRuning()
'InitIPPool(inten.GetIPProperties, IPPoolMax)
AddHandler test.OnDataReceived, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnDiscover, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnRequest, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnDecline, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnReleased, AddressOf UserDHCPDataReceivedEventHandler
AddHandler test.OnInform, AddressOf UserDHCPDataReceivedEventHandler
test.Start()
End Sub
Public Sub SetsendReply(txt_LoadIP As String)
sendReply.SubnetMask = IPAddress.Parse("255.255.255.0")
sendReply.ServerIpAddress = IPAddress.Parse(txt_LoadIP) '本机电脑iP
sendReply.IPAddressLeaseTime = 86400
sendReply.RenewalTimeValue_T1 = 86400
sendReply.RebindingTimeValue_T2 = 86400
sendReply.DomainName = "demo.pi"
sendReply.ServerIdentifier = IPAddress.Parse(txt_LoadIP) '本机电脑iP
sendReply.RouterIP = IPAddress.Parse("192.168.1.1")
sendReply.DomainNameServers = GetDomainNameServers("8.8.8.8,8.4.4.4")
'sendReply.LogServerIP = IPAddress.Parse(options_120.Text)
IPfile = "/pxelinux.0"
End Sub
Public Function GetDomainNameServers(theip As String) As IPAddress()
Dim ipstr2() As String = theip.Split(",")
Dim result As New List(Of IPAddress)
For Each index2 In ipstr2
result.Add(IPAddress.Parse(index2))
Next
Return result.ToArray
End Function
Public Function SetManagementBaseObject(isNetworkInterfaces As NetworkInterface) As ManagementBaseObject
Dim mos As ManagementObjectSearcher = New ManagementObjectSearcher("select * from Win32_NetworkAdapterConfiguration")
For Each mo As ManagementObject In mos.Get()
If mo("Description").ToString().Equals(isNetworkInterfaces.Description) Then
Dim newIP As ManagementBaseObject = mo.GetMethodParameters("EnableStatic")
Dim newGateway As ManagementBaseObject = mo.GetMethodParameters("SetGateways")
Dim newDNS As ManagementBaseObject = mo.GetMethodParameters("SetDNSServerSearchOrder")
newIP.Item("IPAddress") = New String() {192, 168, 1, 10}
newIP.Item("SubnetMask") = New String() {255, 255, 255, 0}
newGateway.Item"DefaultIPGateway" = New String() {192 168 1 1}
' newDNS.Item("DNSServerSearchOrder") = New String[] { info.DNS };
Dim setIP As ManagementBaseObject = mo.InvokeMethod("EnableStatic", newIP, Nothing)
Dim setGateways As ManagementBaseObject = mo.InvokeMethod("SetGateways", newGateway, Nothing)
Dim setDNS As ManagementBaseObject = mo.InvokeMethod("SetDNSServerSearchOrder", newDNS, Nothing)
'mo.InvokeMethod("SetDNSServerSearchOrder", Nothing);
'//DNS的地址清
' mo.InvokeMethod("EnableDHCP", Nothing)
'//开启DHCP
End If
Next
End Function
Public Shared Sub SetIPAddress(ByVal ip As String(), ByVal submask As String(), ByVal getway As String(), ByVal dns As String() isNetworkInterfaces As NetworkInterface)
Dim wmi As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim moc As ManagementObjectCollection = wmi.GetInstances()
Dim inPar As ManagementBaseObject = Nothing
Dim outPar As ManagementBaseObject = Nothing
For Each mo As ManagementObject In moc
'/如果没有启用IP设置的网络设备则跳过
Console.WriteLine($"{mo("Description").ToString()}")
If Not mo("Description").ToString().Equals(isNetworkInterfaces.Description) Then Continue For
' 设置IP地址和掩码
If ip IsNot Nothing AndAlso submask IsNot Nothing Then
inPar = mo.GetMethodParameters("EnableStatic")
inPar("IPAddress") = ip
inPar("SubnetMask") = submask
outPar = mo.InvokeMethod("EnableStatic", inPar, Nothing)
End If
' //设置网关地址
If getway IsNot Nothing Then
inPar = mo.GetMethodParameters("SetGateways")
inPar("DefaultIPGateway") = getway
outPar = mo.InvokeMethod("SetGateways", inPar, Nothing)
End If
' //设置DNS地址
If dns IsNot Nothing Then
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder")
inPar("DNSServerSearchOrder") = dns
outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, Nothing)
End If
Next
End Sub
Public Sub ClockDHCPServer()
If IsNothing(test) Then Return
test.BroadcastAddress = IPAddress.Parse("0.0.0.0")
test.Dispose()
' test.BroadcastAddress = IPAddress.Parse("0.0.0.0")
End Sub
Public Sub UserDHCPDataReceivedEventHandler(dhcpRequest As DHCPRequest)
AnalytischeGegevens(dhcpRequest) ' dhcpRequest.SendDHCPReply(,,)
End Sub
Public iscnt As Boolean
Public isnumber As Integer
Public Sub AnalytischeGegevens(dhcpRequest As DHCPRequest)
Select Case dhcpRequest.GetMsgType
Case DHCPMsgType.DHCPACK
Case DHCPMsgType.DHCPDECLINE
Case DHCPMsgType.DHCPDISCOVER '上线
'Dim ipinfo As NetworkInterface = test.SendDhcpAnswerNetworkInterface
'If iscnt Then
' RaiseEvent IsOpenwifi(False)
' iscnt = False
'End If
Dhcp_OFFER(dhcpRequest)
Case DHCPMsgType.DHCPINFORM
Case DHCPMsgType.DHCPNAK
Case DHCPMsgType.DHCPOFFER
Case DHCPMsgType.DHCPRELEASE '下线
Case DHCPMsgType.DHCPREQUEST
Dhcp_ACK(dhcpRequest)
End Select
End Sub
Public Function GetByteIPToString(buff() As Byte) As String
Dim result As String = ""
For Each index In buff
result = result & index & "."
Next
result = result.Substring(0, result.Length - 1)
Return result
End Function
Public Sub InitIPPool(startIP As String ipMax As Integer mac As String)
Dim ipstrbuff() As String
Dim number As Integer = 0
ipstrbuff = startIP.Split(".")
Dim cip As String = ""
Dim ClientIP(3) As Byte
_IndexIPDic.Clear()
For i = 0 To 3
Integer.TryParse(ipstrbuff(i), number)
ClientIP(i) = number
If i < 3 Then
cip = cip & ClientIP(i) & "."
End If
Next
If Not _IndexIPDic.ContainsKey(startIP) Then
Dim newinfo As New dhcpInfo(ClientIP)
newinfo.ChildState = IPStateType.Assigned
newinfo.ChildMac = GetMacStr(mac)
_IndexIPDic.Add(startIP, New dhcpInfo(ClientIP))
End If
For i As Integer = 1 To ipMax
If ClientIP(3) + i > 255 Then Return
Dim nClientIP(3) As Byte
Array.Copy(ClientIP, nClientIP, ClientIP.Length)
nClientIP(3) = ClientIP(3) + i
If _IndexIPDic.ContainsKey(cip & nClientIP(3).ToString) Then Continue For
_IndexIPDic.Add(cip & nClientIP(3).ToString, New dhcpInfo(nClientIP))
Next
End Sub
Public sendReply As DHCPReplyOptions
Public IPfile As String
Public Sub Dhcp_ACK(dhcpRequest As DHCPRequest)
Dim sda As DHCPPacket = dhcpRequest.GetRawPacket
Dim RequestedIP As IPAddress = dhcpRequest.GetRequestedIP
Dim cmac As String = GetMacStr(sda.chaddr)
Dim newinfo As dhcpInfo = CheckIsTakeUp(RequestedIP.ToString, cmac)
Try
If IsNothing(newinfo) Then
dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPNAK, IPAddress.Any, sendReply)
RaiseEvent OupPrintfDHCPlog(RequestedIP.ToString, cmac, 4)
Return
End If
Catch ex As Exception
Return
End Try
Dim IPstr As String = GetByteIPToString(newinfo.ChilIP)
Dim ip As IPAddress = IPAddress.Parse(IPstr)
sda.op = &H2
sda.htype = &H1
sda.hlen = &H6
sda.hops = &H0
sda.flags = {&H0, &H1}
sda.giaddr = {&H0, &H0, &H0, &H0}
sda.yiaddr = newinfo.ChilIP
sda.siaddr = newinfo.ChilIP
Dim filebuff() As Byte = Encoding.UTF8.GetBytes(IPfile)
Array.Copy(filebuff, sda.file, filebuff.Length)
Try
RaiseEvent OupPrintfDHCPlog(IPstr, cmac, 5)
dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPACK, ip, sendReply)
Catch ex As Exception
Console.WriteLine("发送异常:" & ex.ToString)
End Try
End Sub
Public Sub Dhcp_OFFER(dhcpRequest As DHCPRequest)
Dim sda As DHCPPacket = dhcpRequest.GetRawPacket
Dim cmac As String = GetMacStr(sda.chaddr)
RaiseEvent OupPrintfDHCPlog("", cmac, 1)
Dim newinfo As dhcpInfo = GetNewIPInfo(cmac)
Dim dic As New Dictionary(Of DHCPOption, Byte())
dic.Add(DHCPOption.NetBIOSoverTCPIPNameServer, {8, 8, 8, 8})
dic.Add(DHCPOption.NetworkTimeProtocolServers, {&H58, &HBF, &HE4, &H8A})
dic.Add(DHCPOption.TFTPServerName, {&H31, &H39, &H32, &H2E, &H31, &H36, &H38, &H2E, &H31, &H2E, &H31, &H30})
dic.Add(DHCPOption.DomainName, {&H64, &H65, &H6D, &H6F, &H2E, &H70, &H69})
dic.Add(DHCPOption.StaticRoutes, {&H78, &H30, &H42, &H41, &H43, &H31, &H30, &H43, &H30, &H41, &H38, &H30, &H31, &H46, &H45})
sendReply.OtherRequestedOptions = dic
If IsNothing(newinfo) Then
dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPNAK, IPAddress.Any, sendReply)
RaiseEvent OupPrintfDHCPlog("", cmac, 2)
Return
End If
'Dim IPstr As String = GetByteIPToString(newinfo.ChilIP)
'Dim ip As IPAddress = IPAddress.Parse(IPstr)
Dim IPstr As String = GetByteIPToString(newinfo.ChilIP)
Dim ip As IPAddress = IPAddress.Parse(IPstr)
newinfo.ChildMac = cmac
newinfo.ChildState = IPStateType.Assigned
sda.op = &H2
sda.htype = &H1
sda.hlen = &H6
sda.hops = &H0
sda.flags = {&H0, &H1}
sda.giaddr = {&H0, &H0, &H0, &H0}
sda.yiaddr = newinfo.ChilIP
sda.siaddr = newinfo.ChilIP
Dim filebuff() As Byte = Encoding.UTF8.GetBytes(IPfile)
Array.Copy(filebuff, sda.file, filebuff.Length)
Try
dhcpRequest.SendDHCPReply(DHCPMsgType.DHCPOFFER, ip, sendReply, dic)
raiseEvent OupPrintfDHCPlog(IPstr, cmac, 3)
Catch ex As Exception
Console.WriteLine("发送异常:" & ex.ToString)
End Try
End Sub
Public Function GetMacStr(duff As String) As String
Dim sresult As String = ""
For i As Integer = 0 To 4
sresult = sresult & duff.Substring(i * 2, 2) & ":"
Next
Return sresult.Substring(0, sresult.Length - 1)
End Function
Public Function GetMacStr(duff() As Byte) As String
Dim sresult As String = ""
Dim locadMac(5) As Byte
Array.Copy(duff, locadMac, locadMac.Length)
For Each index In locadMac
sresult = sresult & Hex(index) & ":"
Next
Return sresult.Substring(0, sresult.Length - 1)
End Function
Public Function GetNewIPInfo(mac As String) As dhcpInfo
Dim newdhcpInfo As dhcpInfo
Dim olddhcpInfo As dhcpInfo
For Each index In _IndexIPDic.Values
If mac.Equals(index.ChildMac) Then Return index
If IsNothing(newdhcpInfo) AndAlso index.ChildState = IPStateType.NotAllocated Then
newdhcpInfo = index
Exit For
End If
If IsNothing(olddhcpInfo) AndAlso index.ChildState = IPStateType.Overdue Then
olddhcpInfo = index
End If
Next
If Not IsNothing(newdhcpInfo) Then
Return newdhcpInfo
ElseIf Not IsNothing(olddhcpInfo) Then
Return olddhcpInfo
Else
Return Nothing
End If
End Function
Public Function CheckIsTakeUp(name As String, mac As String) As dhcpInfo
If _IndexIPDic.ContainsKey(name) Then
Dim Index = _IndexIPDic.Item(name)
'ip 被占用 且用户 Mac 地址一致
If Index.ChildState <> IPStateType.NotAllocated AndAlso Index.ChildMac.Equals(mac) Then
Index.ChildState = IPStateType.Assigned
Return Index
Else
Return Nothing
End If
End If
Return Nothing
End Function
End Class
Public Class dhcpInfo
Public ChilIP() As Byte
Public ChildMac As String = ""
Public ChildTime As Long = 0
Public ChildState As Integer = 1
Sub New(ip() As Byte)
ChilIP = ip
ChildMac = ""
ChildTime = 0
ChildState = 1
End Sub
End Class

View File

@@ -0,0 +1,91 @@
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Imports System.Management
Imports System.Net.NetworkInformation
Imports System.Net.Sockets
Imports System.Threading
Public Class NetworkHelp
Public Shared Function SetNetworkAdapter() As Boolean
Dim inPar As ManagementBaseObject = Nothing
Dim outPar As ManagementBaseObject = Nothing
Dim mc As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim moc As ManagementObjectCollection = mc.GetInstances()
Dim isNetworkInterfaces As NetworkInterface() = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
Dim ipstr As String = String.Empty
Dim ipProperties As IPInterfaceProperties
Dim gateways As UnicastIPAddressInformationCollection
For Each inten In isNetworkInterfaces
If inten.NetworkInterfaceType = NetworkInterfaceType.Ethernet Then
ipProperties = inten.GetIPProperties
gateways = ipProperties.UnicastAddresses
For Each tmp In gateways
If tmp.Address.AddressFamily = AddressFamily.InterNetwork Then
ipstr = tmp.Address.ToString
End If
Next
End If
Next
If String.IsNullOrEmpty(ipstr) Then
MsgBox("以太网连接中断")
Return False
End If
Dim ipaddstr() As String
Dim isflag As Boolean = True
For Each mo As ManagementObject In moc
ipaddstr = mo("IPAddress")
If IsNothing(ipaddstr) Then Continue For
For Each cipstr In ipaddstr
If cipstr.Equals(ipstr) Then
isflag = False
End If
Next
If isflag Then Continue For
'If Not CBool(mo("IPEnabled")) And isflag Then Continue For
inPar = mo.GetMethodParameters("EnableStatic")
inPar("IPAddress") = New String() {"192.168.1.10"}
inPar("SubnetMask") = New String() {"255.255.0.0"}
outPar = mo.InvokeMethod("EnableStatic", inPar, Nothing)
inPar = mo.GetMethodParameters("SetGateways")
inPar("DefaultIPGateway") = New String() {"192.168.1.1"}
outPar = mo.InvokeMethod("SetGateways", inPar, Nothing)
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder")
inPar("DNSServerSearchOrder") = New String() {"114.114.114.114", "223.5.5.5"}
outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, Nothing)
Return True
Exit For
Next
Thread.Sleep(100)
Return False
End Function
Public Shared Sub SetNetworkAdapterDHCP()
Dim mc As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim moc As ManagementObjectCollection = mc.GetInstances()
For Each mo As ManagementObject In moc
If Not CBool(mo("IPEnabled")) Then Continue For
mo.InvokeMethod("SetDNSServerSearchOrder", Nothing)
mo.InvokeMethod("EnableStatic", Nothing)
mo.InvokeMethod("SetGateways", Nothing)
mo.InvokeMethod("EnableDHCP", Nothing)
Exit For
Next
End Sub
End Class

View File

@@ -0,0 +1,92 @@
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Imports System.Management
Imports System.Net.NetworkInformation
Imports System.Net.Sockets
Imports System.Threading
Public Class NetworkHelp
Public Shared Function SetNetworkAdapter() As Boolean
Dim inPar As ManagementBaseObject = Nothing
Dim outPar As ManagementBaseObject = Nothing
Dim mc As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim moc As ManagementObjectCollection = mc.GetInstances()
Dim isNetworkInterfaces As NetworkInterface() = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
Dim ipstr As String = String.Empty
Dim ipProperties As IPInterfaceProperties
Dim gateways As UnicastIPAddressInformationCollection
For Each inten In isNetworkInterfaces
If inten.NetworkInterfaceType = NetworkInterfaceType.Ethernet Then
ipProperties = inten.GetIPProperties
gateways = ipProperties.UnicastAddresses
For Each tmp In gateways
If tmp.Address.AddressFamily = AddressFamily.InterNetwork Then
ipstr = tmp.Address.ToString
End If
Next
End If
Next
If String.IsNullOrEmpty(ipstr) Then
MsgBox("以太网连接中断")
Return False
End If
If ipstr.Equals("192.168.1.10") Then
Return True
Else
Dim ipaddstr() As String
Dim isflag As Boolean = True
For Each mo As ManagementObject In moc
ipaddstr = mo("IPAddress")
If IsNothing(ipaddstr) Then Continue For
For Each cipstr In ipaddstr
If cipstr.Equals(ipstr) Then
isflag = False
End If
Next
If isflag Then Continue For
'If Not CBool(mo("IPEnabled")) And isflag Then Continue For
inPar = mo.GetMethodParameters("EnableStatic")
inPar("IPAddress") = New String() {"192.168.1.10"}
inPar("SubnetMask") = New String() {"255.255.0.0"}
outPar = mo.InvokeMethod("EnableStatic", inPar, Nothing)
inPar = mo.GetMethodParameters("SetGateways")
inPar("DefaultIPGateway") = New String() {"172.17.123.254"}
outPar = mo.InvokeMethod("SetGateways", inPar, Nothing)
inPar = mo.GetMethodParameters("SetDNSServerSearchOrder")
inPar("DNSServerSearchOrder") = New String() {"114.114.114.114", "202.97.224.69"}
outPar = mo.InvokeMethod("SetDNSServerSearchOrder", inPar, Nothing)
Exit For
Next
Thread.Sleep(10)
Return False
End If
End Function
Public Shared Sub SetNetworkAdapterDHCP()
Dim mc As ManagementClass = New ManagementClass("Win32_NetworkAdapterConfiguration")
Dim moc As ManagementObjectCollection = mc.GetInstances()
For Each mo As ManagementObject In moc
If Not CBool(mo("IPEnabled")) Then Continue For
mo.InvokeMethod("SetDNSServerSearchOrder", Nothing)
mo.InvokeMethod("EnableStatic", Nothing)
mo.InvokeMethod("SetGateways", Nothing)
mo.InvokeMethod("EnableDHCP", Nothing)
Exit For
Next
End Sub
End Class

View File

@@ -0,0 +1,169 @@
Imports System.IO
Imports System.Text
Public NotInheritable Class AppLog
''' <summary>日志文件所在父文件夹路径</summary>
Private Shared _logPath As String = Application.StartupPath
''' <summary>日志文件名前缀</summary>
Private Shared _logFilePrefix As String = Application.ProductName
''' <summary>日志文件所在路径</summary>
Private Shared _logFilePath As String = $"{LogDirPath}{Path.DirectorySeparatorChar}{LogFilePrefix}_{Date.Now:yyyyMMdd}.Log"
''' <summary>
''' 保存日志的文件夹完整路径
''' </summary>
Public Shared Property LogDirPath As String
Get
If Equals(_logPath, String.Empty) Then
_logPath = Application.StartupPath
End If
Return _logPath
End Get
Set(value As String)
_logPath = value
_logFilePath = $"{LogDirPath}{Path.DirectorySeparatorChar}{LogFilePrefix}_{Date.Now:yyyyMMdd}.Log"
End Set
End Property
''' <summary>
''' 日志文件前缀
''' </summary>
Public Shared Property LogFilePrefix As String
Get
Return _logFilePrefix
End Get
Set(value As String)
_logFilePrefix = value
_logFilePath = $"{LogDirPath}{Path.DirectorySeparatorChar}{LogFilePrefix}_{Date.Now:yyyyMMdd}.Log"
End Set
End Property
Public Shared ReadOnly Property LogFilePath() As String
Get
Return _logFilePath
End Get
End Property
''' <summary>
''' 写入错误信息记录日志
''' </summary>
''' <param name="ex"></param>
Public Shared Sub WriteErrorLog(ex As Exception)
Dim msg As New StringBuilder
msg.Append($"{ex.StackTrace} {ex.Message}")
WriteLog(LogTypes.Error, msg.ToString())
End Sub
''' <summary>
''' 写入流程信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteDebugLog(msg As String)
WriteLog(LogTypes.Debug, msg.ToString())
End Sub
''' <summary>
''' 写入流程信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteInfoLog(msg As String)
WriteLog(LogTypes.Info, msg.ToString())
End Sub
''' <summary>
''' 写入警告信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteWarningLog(msg As String)
WriteLog(LogTypes.Warn, msg.ToString())
End Sub
''' <summary>
''' 写入错误信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteErrorLog(msg As String)
WriteLog(LogTypes.Error, msg.ToString())
End Sub
''' <summary>
''' 写入数据库信息记录日志
''' </summary>
''' <param name="msg"></param>
Public Shared Sub WriteFatalLog(msg As String)
WriteLog(LogTypes.Fatal, msg.ToString())
End Sub
Private Shared ReadOnly LogLock As New Object() '日志锁,防止多线程同时写日志导致冲突
''' <summary>
''' 将信息入到日志
''' </summary>
''' <param name="logType">日志类型</param>
''' <param name="msg">日志内容</param>
Public Shared Sub WriteLog(logType As String, msg As String)
'写入记录入日志文件
SyncLock LogLock
Try
Dim logString As New StringBuilder
logString.Append($"[{Date.Now:yyyy-MM-dd HH:mm:ss:fff}]") '日志产生时间
logString.Append($"[{logType,-6}]") '日志类型
logString.Append($"[{Process.GetCurrentProcess.Id,-6}]") '日志的进程号
logString.Append($"[{Threading.Thread.CurrentThread.ManagedThreadId,-4}]") '日志的线程号
logString.Append(msg) '日志的消息主题
Using sw As StreamWriter = File.AppendText($"{LogDirPath}{Path.DirectorySeparatorChar}{LogFilePrefix}_{Date.Now:yyyyMMdd}.Log")
sw.WriteLine(logString.ToString())
End Using
Catch ex As Exception
Console.WriteLine($"Uts WriteLog Error:{ex.Message}")
End Try
End SyncLock
End Sub
''' <summary>
''' 写日志
''' </summary>
Public Shared Sub WriteLog(type As LogTypes, ByVal msg As String)
WriteLog(type.ToString(), msg)
End Sub
''' <summary>
''' 日志类型
''' </summary>
Public Enum LogTypes
''' <summary>调试信息</summary>
Debug
''' <summary>系统运行信息</summary>
Info
''' <summary>警告信息</summary>
Warn
''' <summary>错误信息应该包含对象名、发生错误点所在的方法名称、具体错误信息</summary>
[Error]
''' <summary>致命信息</summary>
Fatal
End Enum
End Class

View File

@@ -0,0 +1,33 @@
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Public Class CommSocketBLL
''' <summary>
''' 需要升级的IP和端口
''' </summary>
''' <returns></returns>
Public Property Sockets As Socket
''' <summary>
''' 本地IP和端口
''' </summary>
''' <returns></returns>
Public Property LocalEP As IPEndPoint
''' <summary>
''' 远程IP和端口
''' </summary>
''' <returns></returns>
Public Property ReomteEP As IPEndPoint
''' <summary>
''' Socket连接状态默认非连接
''' </summary>
''' <returns></returns>
Public Property ConnSocket As Boolean = False
End Class

View File

@@ -0,0 +1,273 @@
Public Class SearchHostsListBLL
''' <summary>
''' 本机按键状态
''' </summary>
''' <returns></returns>
Public Property BtnSatae As String
''' <summary>
''' 机型编号
''' </summary>
''' <returns></returns>
Public Property ModelNumber As String
''' <summary>
''' IP地址
''' </summary>
''' <returns></returns>
Public Property IPAddress As String
''' <summary>
''' 服务器地址
''' </summary>
''' <returns></returns>
Public Property ServiceAddress As String
''' <summary>
''' 子网掩码
''' </summary>
''' <returns></returns>
Public Property Subnet As String
''' <summary>
''' 网关
''' </summary>
''' <returns></returns>
Public Property Gateway As String
''' <summary>
''' 端口
''' </summary>
''' <returns></returns>
Public Property Port As String
''' <summary>
''' DNS
''' </summary>
''' <returns></returns>
Public Property DNS As String
''' <summary>
''' 软件版本号
''' </summary>
''' <returns></returns>
Public Property SoftwareVersion As String
''' <summary>
''' 主机时间
''' </summary>
''' <returns></returns>
Public Property HostsTime As String
''' <summary>
''' MAC
''' </summary>
''' <returns></returns>
Public Property MAC As String
''' <summary>
''' 项目编号
''' </summary>
''' <returns></returns>
Public Property ProjectCode As String
''' <summary>
''' 房号ID
''' </summary>
''' <returns></returns>
Public Property RoomNumberId As String
''' <summary>
''' 房号备注
''' </summary>
''' <returns></returns>
Public Property RoomNumber As String
''' <summary>
''' 房型ID
''' </summary>
''' <returns></returns>
Public Property RoomTypeId As String
''' <summary>
''' 房型备注
''' </summary>
''' <returns></returns>
Public Property RoomType As String
''' <summary>
''' 配置版本号
''' </summary>
''' <returns></returns>
Public Property ConfigVersion As String
''' <summary>
''' 房态
''' </summary>
''' <returns></returns>
Public Property RoomState As String
''' <summary>
''' 季节
''' </summary>
''' <returns></returns>
Public Property Season As String
''' <summary>
''' 锁定
''' </summary>
''' <returns></returns>
Public Property Lock As String
''' <summary>
''' 授权时间
''' </summary>
''' <returns></returns>
Public Property PrivilegedTime As String
''' <summary>
''' 授权到期时间
''' </summary>
''' <returns></returns>
Public Property PrivilegedDays As String
''' <summary>
''' 房间备注
''' </summary>
''' <returns></returns>
Public Property RoomRemarks As String
''' <summary>
''' MCU机型名称
''' </summary>
''' <returns></returns>
Public Property MCUName As String
''' <summary>
''' 中控机型名称
''' </summary>
''' <returns></returns>
Public Property CentralName As String
Public Property Launcher As String
Public Property pzholtename As String
Public Property pzroomname As String
''' <summary>
''' 初始化
''' </summary>
Sub New()
BtnSatae = "" '本机按键状态
ModelNumber = "" '机型编号
IPAddress = "" 'IP地址
ServiceAddress = "" '服务器地址
Subnet = "" '子网掩码
Gateway = "" '网关
Port = "" '端口
DNS = "" 'DNS
SoftwareVersion = "" '软件版本号
HostsTime = "" '主机时间
MAC = "" 'MAC
ProjectCode = "" '项目编号
RoomNumberId = "" '房号ID
RoomNumber = "" '房号备注
RoomTypeId = "" '房型ID
RoomType = "" '房型备注
ConfigVersion = "" '配置版本号
RoomState = "" '房态
Season = "" '季节
Lock = "" '锁定
PrivilegedTime = "" '授权时间
PrivilegedDays = "" '授权到期时间
RoomRemarks = "" '房间备注
MCUName = "" 'MCU机型名称
CentralName = "" '中控机型名称
Launcher = ""
pzholtename = ""
pzroomname = ""
End Sub
''' <summary>
''' 初始化
''' </summary>
Sub New(btnSatae As String,
modelNumber As String,
iPAddress As String,
serviceAddr As String,
subnet As String,
gateway As String,
port As String,
dns As String,
softwareVer As String,
hostsTime As String,
mac As String,
projectCode As String,
roomNumberId As String,
roomNumber As String,
roomTypeId As String,
roomType As String,
configVer As String,
roomState As String,
season As String,
lock As String,
privilegedTime As String,
privilegedDays As String,
roomRemarks As String,
mcu As String,
central As String,
Launcher As String,
pzholtename As String,
pzroomname As String)
Me.BtnSatae = btnSatae '本机按键状态
Me.ModelNumber = modelNumber '机型编号
Me.IPAddress = iPAddress 'IP地址
Me.ServiceAddress = serviceAddr '服务器地址
Me.Subnet = subnet '子网掩码
Me.Gateway = gateway '网关
Me.Port = port '端口
Me.DNS = dns 'DNS
Me.SoftwareVersion = softwareVer '软件版本号
Me.HostsTime = hostsTime '主机时间
Me.MAC = mac 'MAC
Me.ProjectCode = projectCode '项目编号
Me.RoomNumberId = roomNumberId '房号ID
Me.RoomNumber = roomNumber '房号备注
Me.RoomTypeId = roomTypeId '房型ID
Me.RoomType = roomType '房型备注
Me.ConfigVersion = configVer '配置版本号
Me.RoomState = roomState '房态
Me.Season = season '季节
Me.Lock = lock '锁定
Me.PrivilegedTime = privilegedTime '授权时间
Me.PrivilegedDays = privilegedDays '授权到期时间
Me.RoomRemarks = roomRemarks '房间备注
Me.MCUName = mcu 'MCU机型名称
Me.CentralName = central '中控机型名称
Me.Launcher = Launcher
Me.pzholtename = pzholtename
Me.pzroomname = pzroomname
End Sub
''' <summary>
''' 获取设备名称
''' </summary>
''' <param name="mac">设备类型</param>
''' <param name="ipAddr">设备地址</param>
''' <returns></returns>
Public Shared Function GetHostInfo(mac As String, ipAddr As String) As String
Return $"{mac}_{ipAddr}"
End Function
End Class

View File

@@ -0,0 +1,31 @@
Imports System.Net
Imports System.Net.Sockets
Public Class UpgradeBLL
''' <summary>
''' 升级序号
''' </summary>
''' <returns></returns>
Public Property Index As Integer
''' <summary>
''' 需要升级的IP和端口
''' </summary>
''' <returns></returns>
Public Property ReomteEP As IPEndPoint
''' <summary>
''' 主机端口
''' </summary>
''' <returns></returns>
Public Property port As Integer
''' <summary>
''' 主机soket
''' </summary>
''' <returns></returns>
Public Property socket As Socket
End Class

View File

@@ -0,0 +1,203 @@
Imports System.IO
Imports System.Threading
Imports FluentFTP
Namespace UTSModule
Public Class CUtsFtp
''' <summary>测试器句柄,全局唯一</summary>
Private Shared _object As CUtsFtp
''' <summary>初始化测试器线程锁</summary>
Private Shared ReadOnly InitLock As New Object()
Private Shared FtpPort As Integer
Private Shared FtpUser As String
Private Shared FtpPwd As String
Private _ftpUser As String
Private _ftpPwd As String
Private _ftpPort As Integer
Private _ftpHost As String
Private Default_FTP_Host As String = "blv-oa.com"
''' <summary>
''' 初始化FTP连接参数
''' </summary>
''' <param name="port">端口号</param>
''' <param name="user">用户名</param>
''' <param name="pwd">用户密码</param>
Public Shared Sub InitConnectParams(port As Integer, user As String, pwd As String)
FtpPort = port
FtpUser = user
FtpPwd = pwd
End Sub
''' <summary>
''' 创建类单例对象
''' </summary>
''' <returns></returns>
Public Shared Function CreateObject() As CUtsFtp
If _object Is Nothing Then
SyncLock InitLock
Thread.MemoryBarrier()
If _object Is Nothing Then
_object = New CUtsFtp("blv-oa.com", FtpPort, FtpUser, FtpPwd)
End If
End SyncLock
End If
Return _object
End Function
Public Function DownloadDir(loaddir As String, ftpDir As String) As Boolean
Dim result As FtpListItem()
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
Try
DownloadFtpDirectory(ftpClient, ftpDir, loaddir)
Catch ex As Exception
ftpClient.Disconnect()
Return False
End Try
ftpClient.Disconnect()
End Using
Return True
End Function
Private Shared Sub DownloadFtpDirectory(ByVal ftpClient As FtpClient, ByVal remotePath As String, ByVal localPath As String)
For Each item In ftpClient.GetListing(remotePath)
Dim localItemPath As String = Path.Combine(localPath, item.Name)
Dim remoteimtePath As String = Path.Combine(remotePath, item.Name)
If item.Type = FtpFileSystemObjectType.File Then
Dim state As FtpStatus = ftpClient.DownloadFile(localItemPath, remoteimtePath, FtpLocalExists.Overwrite)
If Not state = FtpStatus.Success Then
MsgBox($"download failed{vbCrLf }{localItemPath}")
End If
ElseIf item.Type = FtpFileSystemObjectType.Directory Then
If Not Directory.Exists(localItemPath) Then
Directory.CreateDirectory(localItemPath)
End If
DownloadFtpDirectory(ftpClient, remoteimtePath, localItemPath)
End If
Next
End Sub
Private Sub New(host As String, port As Integer, user As String, pwd As String)
_ftpHost = host
_ftpPort = port
_ftpUser = user
_ftpPwd = pwd
End Sub
''' <summary>
''' Ftp服务器地址
''' </summary>
''' <returns></returns>
Public Property FtpHost As String
Get
Return _ftpHost
End Get
Set(value As String)
_ftpHost = value
End Set
End Property
Private Sub OnValidateCertificate(control As FtpClient, e As FtpSslValidationEventArgs)
e.Accept = True
End Sub
''' <summary>
''' 判断FTP文件是否存在
''' </summary>
''' <param name="path"></param>
''' <returns></returns>
Public Function FtpFileExists(path As String) As Boolean
Dim result As Boolean
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
result = ftpClient.FileExists(path)
ftpClient.Disconnect()
End Using
Return result
End Function
''' <summary>
''' 创建Ftp文件夹
''' </summary>
''' <param name="remoteDir">Ftp文件夹路径</param>
''' <param name="force">创建所有不存在的文件夹路径</param>
Public Sub CreateDir(remoteDir As String, Optional force As Boolean = False)
Using ftpClient As FtpClient = New FtpClient(FtpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
ftpClient.CreateDirectory(remoteDir, force)
ftpClient.Disconnect()
End Using
End Sub
''' <summary>
''' 上传本地文件至Ftp
''' 将本地指定路径压缩包上传到FTP服务器上manager文件夹下
''' </summary>
Public Sub FtpUpload(remotePath As String, loadPath As String)
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
ftpClient.UploadFile(loadPath, remotePath, FtpRemoteExists.Overwrite, True)
ftpClient.Disconnect()
End Using
End Sub
''' <summary>
''' 从Ftp下载文件至本地
''' 从FTP下载压缩包到本地指定路径
''' </summary>
Public Overloads Function FtpDownload(remotePath As String, loadPath As String, Optional existMode As FtpLocalExists = FtpLocalExists.Overwrite) As FtpStatus
Dim state As FtpStatus
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.None
ftpClient.ConnectAsync()
state = ftpClient.DownloadFile(loadPath, remotePath, existMode)
ftpClient.Disconnect()
End Using
Return state
End Function
Public Overloads Sub FtpDownload(FtpDownloadfile As Dictionary(Of String, String), Optional existMode As FtpLocalExists = FtpLocalExists.Overwrite)
Using ftpClient As FtpClient = New FtpClient(_ftpHost, _ftpPort, _ftpUser, _ftpPwd)
AddHandler ftpClient.ValidateCertificate, AddressOf OnValidateCertificate
ftpClient.EncryptionMode = FtpEncryptionMode.Auto
ftpClient.AutoConnect()
For Each loadfile In FtpDownloadfile
ftpClient.DownloadFile(loadfile.Value, loadfile.Key, existMode)
Next
ftpClient.Disconnect()
End Using
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,352 @@

Imports BLV_Studio.UTSModule
Imports FluentFTP
Imports MD5Hash
Imports System.IO
Imports System.Security.Cryptography
Imports System.Threading
Public Class CblvFtpServer
'Public password As String = MD5Hash.Hash.Content("123")
''' <summary>
''' 文件同步线程
''' </summary>
Public _syn_thread As Thread
''' <summary>
''' 本地同步文件夹路径
''' </summary>
Public _SyncLoadDirPath As String
''' <summary>
''' 数据库登录
''' </summary>
Public _dbLoginStr As String
''' <summary>
''' 数据库同步文件集 所在文件夹路径 *文件名
''' </summary>
''' <summary>
''' 需要下载的文件集 相对路径文件名
''' </summary>
''' <summary>
''' FTP同步标志
''' </summary>
Private _startFlag As Integer = 0
''' <summary>
''' FTP同步间隔
''' </summary>
Private num As Integer = 30
''' <summary>
'''
''' </summary>
''' <param name="loadpath">同步文件夹本地路径</param>
''' <param name="serverpath">同步云文件夹路径</param>
Sub New(loadpath As String, dbLoginStr As String)
_dbLoginStr = dbLoginStr
If loadpath.Substring(loadpath.Length - 1, 1).Equals("\") Then
_SyncLoadDirPath = loadpath
Else
_SyncLoadDirPath = loadpath & "\"
End If
End Sub
Sub New()
End Sub
Public Sub FtpfileMain()
'开启线程
FtpfileThread()
End Sub
Public Sub FtpfileThread()
Dim cnt As Integer = 50
Dim _FilePath_li As List(Of String)
Dim loadFilerow As List(Of Dictionary(Of String, String))
Dim FileMysqlRow As List(Of Dictionary(Of String, String))
Dim SyncToLoadFile As Dictionary(Of String, String)
_startFlag = 0
While True
If cnt > num Then
cnt = 0
_startFlag = 0
RaiseEvent ParseUdpData(0)
num = 30
_FilePath_li = Enumerationdirectory(_SyncLoadDirPath)
'本地文件信息储存
loadFilerow = filetosqlfunction(_FilePath_li)
' 获取数据库文件数据
FileMysqlRow = GetMysqlfiledata(_dbLoginStr)
' 文件比对
SyncToLoadFile = Proofreadfile(loadFilerow, FileMysqlRow)
' FTP下载
FTPDownloadFile(SyncToLoadFile)
End If
cnt += 1
Thread.Sleep(60000)
End While
End Sub
Public Function FtpfileDownload(dirpath As String, filename As String, md5 As String) As Boolean
CUtsFtp.InitConnectParams(FtpPort, FtpUser, FtpPwd)
Dim ftp As CUtsFtp = CUtsFtp.CreateObject()
ftp.FtpHost = FtpHost
If ftp.FtpDownload(dirpath, filename) = FtpStatus.Success Then
If VerifyFileMD5filename, md5 Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
Public Function VerifyFileMD5(filePath As String, fileMd5 As String) As Boolean
If IO.File.Exists(filePath) Then
Dim loadMD5 As String = GetStringMd5(filePath)
fileMd5 = fileMd5.ToUpper
loadMD5 = loadMD5.ToUpper
If fileMd5.Equals(loadMD5) Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
Public Function GetStringMd5(filePath As String) As String
Dim dataFile() As Byte = File.ReadAllBytes(filePath)
Dim databuff As Byte() = MD5.Create().ComputeHash(dataFile)
Dim MD5str As String = BitConverter.ToString(databuff)
Return MD5str.Replace("-", "")
'Console.WriteLine($"md5-1:{MD5str.Replace("-", "")}")
End Function
'''' <summary>
'''' 获取指定文件夹下所有文件
'''' 获取同步文件夹文件
'''' </summary>
'''' <param name="dirpath"></param>
'Public Function Enumerationdirectory(dirpath As String) As List(Of String)
' If IO.Directory.Exists(dirpath) Then
' Dim filebufF() As String = IO.Directory.GetFiles(dirpath)
' If filebufF.Length > 0 Then
' _FilePath_li.AddRange(filebufF)
' End If
' Dim dirbuff As String = IO.Directory.GetDirectories(dirpath)
' _DirPah_li.AddRange(dirbuff)
' For Each partdir In dirbuff
' Enumerationdirectory(partdir)
' Next
' Else
' MessageBox.Show("同步文件夹不存在")
' End If
'End Function
Public Function Enumerationdirectory(dirpath As String) As List(Of String)
Dim filelist As New List(Of String)
Dim dirlist As New List(Of String)
If IO.Directory.Exists(dirpath) Then
Dim filebufF() As String = IO.Directory.GetFiles(dirpath)
If filebufF.Length > 0 Then
filelist.AddRange(filebufF)
End If
Dim dirbuff As String = IO.Directory.GetDirectories(dirpath)
dirlist.AddRange(dirbuff)
For Each partdir In dirbuff
filelist.AddRange(Enumerationdirectory(partdir))
Next
Else
MessageBox.Show("同步文件夹不存在")
End If
Return filelist
End Function
Public Function filetosqlfunction(_FilePath_li As List(Of String)) As List(Of Dictionary(Of String, String))
Dim loadFilerow As New List(Of Dictionary(Of String, String))
For Each filestr In _FilePath_li
' Dim filedata As New FileToSqlVariable
Dim clunm As New Dictionary(Of String, String)
Dim md5 As String = Hash.Content(IO.File.ReadAllText(filestr))
Dim filedir As String = filestr.Substring(0, filestr.LastIndexOf"\" + 1)
Dim filename As String = filestr.Substring(filedir.Length, filestr.Length - filedir.Length)
clunm.Add("Directory", filedir)
clunm.Add("Available", 1)
clunm.Add("FileName", filename)
clunm.Add("UploadDateTime", Now.ToString("yyyy-MM-dd HH:mm:ss.fff"))
clunm.Add("MD5", md5)
loadFilerow.Add(clunm)
'filedata_li.Addfiledata
Next
Return loadFilerow
End Function
''' <summary>
''' 获取数据库文件数据
''' </summary>
''' <param name="DbConnString"></param>
''' <returns></returns>
Public Function GetMysqlfiledata(DbConnString As String) As List(Of Dictionary(Of String, String))
'Dim sqlfile As New Dictionary(Of Integer, List(Of String))
Dim FileMysqlRow As New List(Of Dictionary(Of String, String))
Try
Dim dt As DataTable
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
db.Open()
dt = db.ExecuteDataTable(db.CmdHelper.SearchAll("tbl_model_file_data", $"Available = '1'"))
db.Close()
End Using
For Each dtrow As DataRow In dt.Rows
Dim clunm As New Dictionary(Of String, String)
For i As Integer = 0 To dt.Columns.Count - 1
'Console.WriteLine("argRoomTypeNodeIdx = " & dtrow.Item(i))
'If dtrow.Item(i).GetType = "DbNull" Then
' clunm.Add(dt.Columns(i).ColumnName, "")
' Continue For
'End If
clunm.Add(dt.Columns(i).ColumnName, dtrow.Item(i).ToString)
Next
FileMysqlRow.Add(clunm)
Next
Catch ex As Exception
End Try
Return FileMysqlRow
End Function
''' <summary>
''' 文件比对
''' </summary>
Public Function Proofreadfile(loadFilerow As List(Of Dictionary(Of String, String)), FileMysqlRow As List(Of Dictionary(Of String, String)))
'下载标记 False 下载
Dim SyncToLoadFile As New Dictionary(Of String, String)
For i As Integer = 0 To FileMysqlRow.Count - 1
Dim download_flag As Boolean = False
Dim serverRow As Dictionary(Of String, String) = FileMysqlRow.Item(i)
For j As Integer = 0 To loadFilerow.Count - 1
Dim loadRow As Dictionary(Of String, String) = loadFilerow.Item(j)
If FilecomparisonserverRow, loadRow Then
loadFilerow.RemoveAt(j)
download_flag = True
Exit For
Else
download_flag = False
Continue For
End If
Next
If download_flag Then
Continue For
Else
'Dim syncfile As New Dictionary(Of String, String)
''云文件完整路径
'Dim Syncpath = _FileMysqlRow.Item(i).Item("Directory") & "\" & _FileMysqlRow.Item(i).Item("FileName")
'云文件相对路径
Dim filepath = FileMysqlRow.Item(i).Item("Directory") & "\" & FileMysqlRow.Item(i).Item("XML_FileName")
'syncfile.Add(Syncpath, RelativePath)
Dim Loadfilepath As String = filepath.Replace("\Data\Model\", "")
SyncToLoadFile.Addfilepath, _SyncLoadDirPath & Loadfilepath
End If
Next
loadFilerow.Clear()
FileMysqlRow.Clear()
Return SyncToLoadFile
End Function
Public Function Filecomparison(sqlfile As Dictionary(Of String, String), loadfile As Dictionary(Of String, String)) As Boolean
Dim loadpath = loadfile.Item("Directory").Replace(_SyncLoadDirPath, "_\") & loadfile.Item("FileName")
Dim serverpath = sqlfile.Item("Directory").Replace("\Data\Model", "_") & "\" & sqlfile.Item("XML_FileName")
If loadpath.Equals(serverpath) AndAlso loadfile.Item("MD5").Equals(sqlfile.Item("XLM_MD5")) Then
Return True
End If
Return False
End Function
Public FtpHost As String = "blv-oa.com"
Public FtpPort As Integer = 50
Public FtpUser As String = "BLV_Studio"
Public FtpPwd As String = "37f5675t6R&5*"
''' <summary>
''' FTP下载
''' </summary>
Public Sub FTPDownloadFile(SyncToLoadFile As Dictionary(Of String, String))
Try
CUtsFtp.InitConnectParams(FtpPort, FtpUser, FtpPwd)
Dim ftp As CUtsFtp = CUtsFtp.CreateObject()
ftp.FtpHost = FtpHost
'For Each filepath In _SyncToLoadFile
'ftp.FtpDownload("/Data/Model/485Model/3.txt", _SyncLoadDirPath & "3.txt")
ftp.FtpDownload(SyncToLoadFile)
SyncToLoadFile.Clear()
' Next
Catch ex As Exception
_startFlag = 1
num = 10
RaiseEvent ParseUdpData(1)
'AdminLog.ApplicationLog.WriteErrorLog(ex)
End Try
_startFlag = 2
num = 60
RaiseEvent ParseUdpData(2)
End Sub
Public Function Utf8ToGB2312(utf8str As String) As String
Dim temp() As Byte
temp = Text.Encoding.Default.GetBytes(utf8str)
Text.Encoding.Convert(Text.Encoding.GetEncoding("utf-8"), Text.Encoding.GetEncoding("gb2312"), temp)
Return Text.Encoding.Default.GetString(temp)
End Function
Public Event ParseUdpData(ftpflag As Integer)
End Class

View File

@@ -0,0 +1,170 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmAboutDialog
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FrmAboutDialog))
Me.LogoPictureBox = New System.Windows.Forms.PictureBox()
Me.TableLayoutPanel = New System.Windows.Forms.TableLayoutPanel()
Me.LabelCompanyName = New System.Windows.Forms.Label()
Me.LabelVersion = New System.Windows.Forms.Label()
Me.LabelCopyright = New System.Windows.Forms.Label()
Me.LabelProductName = New System.Windows.Forms.Label()
Me.OKButton = New System.Windows.Forms.Button()
CType(Me.LogoPictureBox,System.ComponentModel.ISupportInitialize).BeginInit
Me.TableLayoutPanel.SuspendLayout
Me.SuspendLayout
'
'LogoPictureBox
'
Me.LogoPictureBox.BackColor = System.Drawing.Color.Transparent
Me.LogoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill
Me.LogoPictureBox.Location = New System.Drawing.Point(3, 3)
Me.LogoPictureBox.Name = "LogoPictureBox"
Me.TableLayoutPanel.SetRowSpan(Me.LogoPictureBox, 6)
Me.LogoPictureBox.Size = New System.Drawing.Size(63, 189)
Me.LogoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage
Me.LogoPictureBox.TabIndex = 0
Me.LogoPictureBox.TabStop = false
'
'TableLayoutPanel
'
Me.TableLayoutPanel.BackColor = System.Drawing.Color.Transparent
Me.TableLayoutPanel.ColumnCount = 3
Me.TableLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 21.83544!))
Me.TableLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 78.16456!))
Me.TableLayoutPanel.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 79!))
Me.TableLayoutPanel.Controls.Add(Me.LabelCompanyName, 0, 5)
Me.TableLayoutPanel.Controls.Add(Me.LogoPictureBox, 0, 0)
Me.TableLayoutPanel.Controls.Add(Me.LabelVersion, 1, 3)
Me.TableLayoutPanel.Controls.Add(Me.LabelCopyright, 1, 4)
Me.TableLayoutPanel.Controls.Add(Me.LabelProductName, 1, 1)
Me.TableLayoutPanel.Controls.Add(Me.OKButton, 2, 6)
Me.TableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill
Me.TableLayoutPanel.Location = New System.Drawing.Point(9, 8)
Me.TableLayoutPanel.Name = "TableLayoutPanel"
Me.TableLayoutPanel.RowCount = 7
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 21.93878!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 53!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 11.02941!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.32258!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 27.09678!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 29.67742!))
Me.TableLayoutPanel.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 41!))
Me.TableLayoutPanel.Size = New System.Drawing.Size(396, 239)
Me.TableLayoutPanel.TabIndex = 0
'
'LabelCompanyName
'
Me.LabelCompanyName.BackColor = System.Drawing.Color.Transparent
Me.LabelCompanyName.Dock = System.Windows.Forms.DockStyle.Fill
Me.LabelCompanyName.ForeColor = System.Drawing.Color.Aqua
Me.LabelCompanyName.Location = New System.Drawing.Point(75, 152)
Me.LabelCompanyName.Margin = New System.Windows.Forms.Padding(6, 0, 3, 0)
Me.LabelCompanyName.MaximumSize = New System.Drawing.Size(0, 16)
Me.LabelCompanyName.Name = "LabelCompanyName"
Me.LabelCompanyName.Size = New System.Drawing.Size(238, 16)
Me.LabelCompanyName.TabIndex = 4
Me.LabelCompanyName.Text = "公司名称"
Me.LabelCompanyName.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'LabelVersion
'
Me.LabelVersion.BackColor = System.Drawing.Color.Transparent
Me.LabelVersion.Dock = System.Windows.Forms.DockStyle.Fill
Me.LabelVersion.ForeColor = System.Drawing.Color.Aqua
Me.LabelVersion.Location = New System.Drawing.Point(75, 99)
Me.LabelVersion.Margin = New System.Windows.Forms.Padding(6, 0, 3, 0)
Me.LabelVersion.MaximumSize = New System.Drawing.Size(0, 16)
Me.LabelVersion.Name = "LabelVersion"
Me.LabelVersion.Size = New System.Drawing.Size(238, 14)
Me.LabelVersion.TabIndex = 0
Me.LabelVersion.Text = "版本 v2.2.10.25"
Me.LabelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'LabelCopyright
'
Me.LabelCopyright.Dock = System.Windows.Forms.DockStyle.Fill
Me.LabelCopyright.ForeColor = System.Drawing.Color.Aqua
Me.LabelCopyright.Location = New System.Drawing.Point(72, 113)
Me.LabelCopyright.Name = "LabelCopyright"
Me.LabelCopyright.Size = New System.Drawing.Size(241, 39)
Me.LabelCopyright.TabIndex = 5
Me.LabelCopyright.Text = "版权 BY"
Me.LabelCopyright.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'LabelProductName
'
Me.LabelProductName.Dock = System.Windows.Forms.DockStyle.Fill
Me.LabelProductName.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134,Byte))
Me.LabelProductName.ForeColor = System.Drawing.Color.Aqua
Me.LabelProductName.Location = New System.Drawing.Point(72, 31)
Me.LabelProductName.Name = "LabelProductName"
Me.LabelProductName.Size = New System.Drawing.Size(241, 53)
Me.LabelProductName.TabIndex = 6
Me.LabelProductName.Text = "C系列配置工具"
Me.LabelProductName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'OKButton
'
Me.OKButton.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles)
Me.OKButton.BackColor = System.Drawing.Color.FromArgb(CType(CType(192,Byte),Integer), CType(CType(192,Byte),Integer), CType(CType(255,Byte),Integer))
Me.OKButton.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.OKButton.ForeColor = System.Drawing.SystemColors.Control
Me.OKButton.Location = New System.Drawing.Point(319, 206)
Me.OKButton.Name = "OKButton"
Me.OKButton.Size = New System.Drawing.Size(74, 30)
Me.OKButton.TabIndex = 0
Me.OKButton.Text = "确定(&O)"
Me.OKButton.UseVisualStyleBackColor = false
'
'FrmAboutDialog
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 12!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackgroundImage = CType(resources.GetObject("$this.BackgroundImage"),System.Drawing.Image)
Me.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.CancelButton = Me.OKButton
Me.ClientSize = New System.Drawing.Size(414, 255)
Me.Controls.Add(Me.TableLayoutPanel)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = false
Me.MinimizeBox = false
Me.Name = "FrmAboutDialog"
Me.Padding = New System.Windows.Forms.Padding(9, 8, 9, 8)
Me.ShowInTaskbar = false
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "关于C系列配置工具"
Me.TopMost = true
CType(Me.LogoPictureBox,System.ComponentModel.ISupportInitialize).EndInit
Me.TableLayoutPanel.ResumeLayout(false)
Me.ResumeLayout(false)
End Sub
Friend WithEvents LogoPictureBox As PictureBox
Friend WithEvents TableLayoutPanel As TableLayoutPanel
Friend WithEvents LabelCompanyName As Label
Friend WithEvents LabelVersion As Label
Friend WithEvents LabelCopyright As Label
Friend WithEvents OKButton As Button
Friend WithEvents LabelProductName As Label
End Class

View File

@@ -0,0 +1,608 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
/9j/4AAQSkZJRgABAQEAAAAAAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwg
JC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wgARCAGQAoADASIAAhEBAxEB/8QA
GwAAAwEBAQEBAAAAAAAAAAAAAQIDAAQFBgf/xAAZAQEBAQEBAQAAAAAAAAAAAAABAAIDBAX/2gAMAwEA
AhADEAAAAfh9t1xttW2zbbVsdAO1bY1jtQxDbbFsdQOLDdnux8s/3/eX511ffzT4tvsFj4+H2y18DD9E
lX56ftPNn53dfKu2NA7JmBokFCcWzBkLYoSCmBEgHEMdQJNAlkDFoVy6K7PC0ekJV7WZ2r0Yo9F+nF+Q
7bn7dtmwOgHattq2xrEFttqGOrbGgfQ+yj5T6n1+Yz0LySrs5p8rdUZyroHGtdx4Y16K8RbubztHp8k3
rxvM+wlPym7uJccWxxQkGC6sxYFDhkI2oE4gSWDEwGZmV2eFd6WUq9onWt8kui3Tih036eW49FX5d/wr
EdtbbVttW2NbZmG2o4attqINaT6j0vZsmU+Oy8Jc7dQ4gPZyNM06Jq2VKpo5mm0Y6BAtd+No7G4ynp8S
dFfP76TwFmcWxxTMDDFSxOMA4sCxoFmRXLwrtSFo9bM7UuEr26cUOm/Vy1DptXl2nQ8eevanhed1x+eB
hrS46hjm2xrbattqxGo7Uhvvk7bLc04Q3JHkW/KFnGBHp0p10pOdXyLVdBqaWSleTJVlesVCXbndurq8
6kcEvoPDZGBbMChONZsyBi0Bi6KzvCUesJSlzMr16M0em/Vzefqvfj1lZubHbp5PH83vz7uEW7cJdXQM
dPzDbZ7jbVtjQO1bbVsdG2NH7Tyvr7Kec/n6yeNJyrJPOqucMHCqgDQ0nk1JmVVntDYPQDKzsqVYTKUy
tTsuS/Vw3rzd6XAgJZAxZAxdldnsq70hKvaJ2r0ZI9FurnQ6r9HLpHopDn3vyeTw9ufp+SK9eUa34Z70
82udNbm89flgdjsMdQx1DHJttWx1bp5vsi9rk6vPsc3m342LDkNvWHSWBeedbIkxkZg0qR1CUwalzhF2
NDHMCDRZGh2Rkd0au7zrdSecxdFcugdqWUq9onWt8kr36cUOq/Ty3HorTl3XQ8TV1ef083fhHep2Z35v
PXxleMl6YpOmFAnLPh47HUA6hjqGOoEmhiK6v0P5z3DM/PfiqPO05EaSnpfnYaCQRkBpY1kjbK22KF0L
Pl1EY1tjAJzbExmJQuGQ9XPSp7rm5Sj1hK0uZle3Tih09HVz1z9Vrce06R8636vk8ydeRry+X0z9BT5D
GvovCk2hTY1KUoTWYWWXavIDDHQA6hiaBJYbCAy+kP2M68BmXDbllYtKVQmnO1ZDJqTUQQc22KA7Vjs2
2MY4tiTAYlAxZgxeFdnRamtna7hK9egI9N+rkw6r35dZXny56dnm8y9ecn7OFG8rn5ugVa2yZvTG43Xy
svd50W1HYUUOJXZh8M421LaASKy5aI2rfS/NfYl0cl+COaDwkK+EIFalIPQVlRCdWIyNhmOOrYlASYVi
WxLIGLwrmiK7UhKvazO9OjJK3R04ufq6Onj0h0vDn2v50Z9MO1PG0dvJ4i9c0m99HM3d0Y3x35+TOuiS
cKPHNqLMmWeJbUlAezmmxeeTl2AbKQQ2NA41vtvjPtY4/N6/PhVdDU8L1AEUzKrAHJgdWxzbFoUktsWQ
EtAYsis7IHakJR7ROtbmZXt1YodPR08tx6a7l2M5eczc3V6nTHn9z/D46V8+l/Vx5+qtueloOPG+vgnN
gi828nMksYsVFMhqsWpVtqm1WHxxl3EDVtjQO1bHVT7P4368PM4e7mqTiY6NVZAyxhs2xLYEwCSwJMAl
kDFmVmeFdqOUo9YnWlwlevTkj036uWodVm5dduDmayLfeJdd059+nh8/yGKdo68xKXXnS9vH52dWnTh0
U54c+y05FG2wnTFMVcmJqIq1caSj1w/Hg704B1KTr+k88vCXu5GXYw313yP1ZcXN0QrmTI1UZaUNqUnI
Di2JMDMWDZkDM8I7Oiu9bKUpaJ2r0ZI9N+rm8/Xfo49Y3l5hv0vKe+8heHj0d/bx8ud9fmS281lwc+j0
t5Vp7MvRjWbzfLHt4HGwFQllTDmVqVmcloWzo0Fcpstsaaq8+H5XbezlvV8rtjv8xoyQQi7Gt9N817xL
zdXPUI3WpEhCpNLmyAlmBLICzQrs6K7VhKUrZnWvRkj0X6cUOro6ePSHTRefd+NTo4LbwuvOk/QLOvnc
Zroh5p6YeRZZNfoy83RHiy9vAFVVKtlJpcWJSxIPqCKTA3aD5eqvPbDVppnWkTo+cxPq5bE1RVFMNqx2
rer5dY9bn9DgKU6oyZgyklBnMKxdFZnRWekI9KxO1LmZXt04odV+rlqHTbk59u1PG59nrR8OHTHrcsvV
HnvHmx0hT0Pn9DcVOnZybsmPPbecPrcnmrV9J2WTrQbPWRnGbVYpNZssT0Nl5W6yPM92GT0fLLXcYnob
N8Q2P0OGBFbEwMTQONY417XMtw5pWRgGLLnKKzPCO7uUo9ISlahO9enJDpv1c2HVenHsqeZ5ezr5ZD0c
acbdc83p37eHc+S9Oe+Xr8/n1RV03npHk8NevDytqdcUxL0DhlQ0aZtV8s3rTLGtaZZPemNcz9TZeZ+h
h5x0Yuduhi5mthkXjXxJx+n5QTqBOoEmgSYBLMPY8nqgp1RqZcopoyI70spSlolavRkj0X6udz9d+jj1
j0Dyzp3+BDn9HGiSfpjV7O3l1nNOvj24OPtZDLn8du2PmQ2ejxRCMuLAk0GziHauWLdLZYVvTGuZ+t8v
LW75Y1rTOovZssnps085mTU1JmQtLmTRQF2+LJb6fkXMaUsaXPqUsYBYsGZk7JT7g5TVkSj1sztToySv
foxQ6ejp5bj0V3LufOPP0wnmz5/RxKdHda5ulE5dGf0O7j15U5/hl9/k8Y9ufVxMmhdtWINZg1FjXKj0
pnS33Tz0lK3xqNOqnPXLS7ZYm7FztXShYEMdS4rRUToctU0Rdi2YEvkMT9XxqWNDNqUsYVmZldnhXelm
dWrBZ+jNG9+jJDpv1ctQ6bPy7Deeq2J+c3n1PGhDvzqeboal+r2fP28/1fJ+X59PsPl/A3XFZbdckYER
jWx1AlhzGmXXXoxo2fo56ha9MaF9bnoVzZRnBLitYESAUohUhllHVRQ0bbSAdS46vlC2+v4RiaBY0rM8
I7vC0ekJWlzMbXvmh036ubDqtbj2nXz+RvQ5t0tO9Pn89Ofz4L6/Pnp6edcvt9Q8venxvl8nQ2G7YO2r
bYsG1A5hDMwo7UzJfWzrXa/PTdU+rlvUd8am74iVwkYVhkplSdOi8qdcZOwC8SegfNDenvMJelvONehP
zuFpEn6viBZoVnaFd6QlXtE7Vvkl026ubDpv0cekbvwZ69fkzr15D0OTrx06OL5zytPfwno9HGPb1rx6
dvb8LwY6fT/Mz3XA22jbYjtqxzTs5zI5oIobY1N7PlStK41rjp56XoFMad1OYjacN5sejx+DPpn1I+e2
zoQPVa8vIPqef5UmtELsymaYw2ipktErk+hZn9flR3pCUesTrW+SPRbpxQ6ejp5bj00PLufP5+Lrzqpt
05x6u1uPoT4vs8/tidbenrPN6PofJ+buvz43fBw2g4attiOJoHOKuaZRRrZeelK50nQejnqdLUwwu9c6
nZqZVZtmxwkrLxk6/DkO+C8xopXh4i9rl8vT0c4GhjQCoWKPIroG2Qbatia+po9fX451pcJWt0Yo9F+r
nqHVavHtOu806dvlcs+/n1eSHTPtU8vm5dr80uveePq9Hv5dOPu8L5XO+zySPRy22bbati4pgSzrUhQ1
zpaUvhnetue+WtK5Vst8pdmxpXzFmBE6fFHdHx+Loeh4GPbCOOfR0cSQoLhoY6hVO2NGLSZRhoxu48mr
NFDtUjUV9tavR6fDHov082HVbo5dZWHmZ6ejweXPtyrLnj25Uk/aa5PUr5HLt2eenXXT6vO3n7dvxXBw
9cAMnfGG1bYkDsK4Gi2qK01crdG6+ekvq89Ubn4cvo08ZtXt28a2H1F+a8xPrZ/Hvs+wh8zOunmEeuem
nB2F0LPlxqqRdjsaUnUKaYsFRDMqgtPqF1pPGsY5Kzimi8p5P1Xpt068seii8+7+dx8nbmduDtxtzJRl
6On1OXbm6fL8LG/TTk9DWad3F8lz6fT/AC0x1xjhs22oY4swiNkAGlJrl6NDD0twivT3kivWPkOXo08s
z7d/J3PXo+RCe8kg7NmBNQHKvP0RFlUC+QVTKKYz1UaWpsJ066TOo6Y1wmN7jw1kYDQSNRZWr9vpDxTH
oePyw9Pn6YQO857d+N8fXweVnf0Pm8Fan1W9TLzy5/ms7tJd1w6g0DtWxIjNImk0RcIJdkYgmDYgxiDO
OoS1xF4hRUuqPkxE7Z0ypATLbRlIQ4ansdjWA1PkcZ2VKqESuh+BU7YQNXSYZ5sEG2rEav/EACoQAAMA
AgIBBAICAwEBAQEAAAABAgMRBBIQICEwMQUTIkAUMkEVIzNQ/9oACAEBAAEFAv7aimTxstC/H52f+XnP
/Kzn/l5x/j86Hxssjlr/APiaNGjQkKRSKRT/AGcfGyZDF+HtmP8AF4IFhwYzukPIfsO53P2H7BrHRfD4
9l/jGZONkx/39GjRoSEhSKRSKBR/WS2cf8flzmH8ZhxC6wnY6HWxsbOyOyOwmmbOwrO53MnGwZTNwsmM
1r+3o0aEhIUikUigUCgU/wBXj8TJnrjfjcWFO0h2dh2Ozt7K0OtjuRM77GxWdjsdjudicmjJhxZzNxrw
v+vo0aNCQpFIpFIoFApEv6iTb4f4x0SoxS72VR+w/Yd0k7Ptto+1o+j/AL437v2EdjZs7E5PbNxFSa0/
6ejRo0JCkUikUigUCkU+XSlf0YxvJXD/AB84VVe2yr92za32N+4/DZs7HY2zYzsb8bNmxMnI07xRyVcO
K/oaNGjQkJCkUikUCgUCk0fRXKxSXzq3eW8n9HHjrJXD4c8abyaO2y7O8l2OzsxUdjsjt7tmzZ7edmzf
sn52J+FQ1PJm4eOvm0aNGhIUikUigUCgUmvGbkTiMvIrIb2Kdk4v6EQ7rh8SeNjqxvY7W81tLs6d1/Lu
mPbW0xj7I9+uzZs2dxvyvVs2JjS5MVLmvj0aNGhIUikUigUCgUiXjLnnEZOVdDrfiY2KNDyL5/s/HcNY
5uysm3WV67ezbZ7nuPHpa9xv39xv2Rs2b8L3N+P+mzfp2JmSf8jH8WjRo0JCkUigUEwKBSfRfJxwZOZT
HTZrYoJiSuSkfzs/hj+f8dxP23VaKoux09b2P7Xu0lJVbK9hDTP+Ot+jQ/rzvw2L1xbiuTjXwaNGjQkK
RSKRQTAoFJoyZoxGbM8xtI+xY9n8Il5afhOEVydH2/lw4nlyRCwYboyUUxkdd09uPC32vbY2z28V9iaN
r0v48VJlQ4v0aNGhISFIpFIoJgUCk0NqVk5dNsb2KGRgbM1abO/v3341s3M/N+M4/SKZlosZob917vxt
GvFG/fY/v+nl/wDpiNGjRoSEhSKRSKBQKBQJeMuecZVXlfTS6u3j4xSx4pzc6Gnl96t2aNH8ZKy+3y8f
F+3NpY4dbMjHTYxvxj9h/brw68Px76/qYmuzlzWjRoSEhSKRSKCYFAp8VSky8l0KDsdUf5HHxmX8my8l
ZKNGirSP2U/Hb5vxeLSuim95G6N+PYb909Dexeh/2Mn8jQkJCkUikUEwTApNF5ZgvlMbrIbUl31V57v0
aFHs0pMmTt4+vnlbrDH6uO2W/Z+H9f8APsUn16Nn3/XSEv4pCkUikUEwTApNFXMGTO2b2+uh/wCuTkjp
tmjqTDNTJeZSVkdvzv5uFj/ZyMtezf8ABsdnf2+xi8vxv+voSEhIUikUEwTAoFJWSYHnbKonG6NTCycn
FjMma8rEhQaNaHk0ryN+NeNn2aNH0vj/ABcGR7q2Uzfsz/vnY/6uvGjQkJCkUigUEwKBSe0q87o0kdXR
+yIL56Rd1kejQkTDKShdmx3ou+z8v3NeNDpIp7fx8FdeI373RRo2aG/Oh/09GjRoSEhSKRSKBQTApNFZ
5kvI6JmrNLHOblIqnbFIoFj2dJxq8psb0VW/TvxtI7N/Ni/jxrY2V7nbXnXnY/6WjRo0JCQpFIpJgmBS
JGTIsayZaoW6IwDSieTyHlsSJx7Oik2kv2ovJ79R2pHTp68a8+yNj+af9n7Y8j9m/FSSjZ/3+no0aEhI
SFIpFIoJgUCkdzJWcbducO3ONSZLWLHlz5M9dScez+MiplfxGtFVs9yr8ujbEzaQ68IaNGjr8cf739ZP
G/Y2P+lo0aNGhISFIpFIoJgUCkq5gvNVCRvu4wsSUrPy4xGXLkzucez9ahO2yMTZ1jFNZOz0x6kq2zsj
ubfr0I0dTr8cf75S/pfbSP8Ai9j/AJ/S0aNCQpFIpFBMEwKSqWNXyG0k2P2cYHb/APnhX79mXlQJVbUT
CrkSl/PI5UyXyupusjUGXNJ3RT2/O9m/QhCR1NGvT9n+Ln05c+if9sn0zZTEL+ho0aNCQkKRSKRQTBMC
kSMmacZVVkqMDM+XHgUcrHJ/lVatziMme8woUp5WVe32xo/e2btk4jLkx8dZeTWReUN/AkIQvTEPJeNR
xMebPVDybH9+F9v3wj9nQv6GjRo0JCQpFIoFBMCgUl5Zxl57txhdDy4MCy828hOKrawzjWTktroPNjlV
m2fsrwkTI7jEZebbX2b147ed+jRo0aEIXisuvRwGpy5MzHW/D9GN74jH4182jRo0aEhSKRSKCYFAp8ZO
R1FFZKqsXGWbkXnJxtmPj6V8qILr+T5Kl3kqn4SFIkkXlP8Ar+TaExaNeNpFXv08etZL+/D9HEe+PXh/
Lo0aNCQkKRSKRQTBMCk0OtFU7FilGXmTjSmrc8dJPkY8ZdXmrLk6edGhQKCsiRVU/H0b869GvO/GjQvL
Op19Pdterg1rNSGP3+PRo0aNCQpFIpFBMEwKBIrLEFck/YzJzT92azHxnRmtcZN3lropWTMaNGj7FJ3x
SZc/Y34deV50aNGjRo6mjRo0a8dTqdfkh9bz/wCzH418GjRo0JCQpFIpJgmBQJGTkzJea8g2oHnrbbpx
idE4pxTk5Ns6OycSmc+X9mRSLGVKk6Nl3OIrJVHY2b8ey9GjRo0aOpo6nU6nU6mjRo0aNfLjf7OK/i0a
NGhIUikUigmCYFJlyLFOTPVHdlZGl9tTsxcZs1GFXtuPd5MkYIyZ8ucnGLqh5YkfIndcuh0/Qj69GjRo
0aOp1Op1Op1Op1Op1NGvn4uTplyT0vzrzo0aNGhISFIpFAoJgUjaicnKdDvxT0a2RhbIWOG8mlWTs5wt
lczq8lXnpaKyyZM+x3v1a86NGjRo0dTqaNHU6nU140aNGjXhv5t/uwenRo0aEhIUikUEwTAoFJkzxiWX
PWVs3o7NkYnRHHUy8u1v9S75MlQ/1rkcp5I/jK/bNFZx3v4dGhI6nU6nUUik6nU0aNedGvRVaN7+fBk/
XeSOledGjQkJCkUikUEwKBSVcwZMzZV7brQ3sUtmPj7Flw4xu89Tj6q8feus4lkejJkTdZOxsb38GhI6
nUUik6nQ6nU0aNGjXrb0qyUxf0cT/ZGjRo0aEhSKRSKCYJgUn0ZMzof8Vkvs2zRGFs74sRVXmJxmPEzP
yMeBVz53XO0Zc1ZR/Do0JCkSEhQdRSdTqdTRr4XQ/fxr59GvH/6LRoSFIpFIoFBMCkSKpSU6yu7nGZMr
p+7JxtixzjLztrHibJw6JxJHM5ywzeSsj+JGjR1EhIUikUnU6mjRo18LfnXz6NGjRO09bOopFIoFBMCg
UlVMDy1R00s/KiVWSrNpH7RZMjJhsx8cnFo5H5Dj8Yz/AJXPmLyVkfjfwoSEjqKRSSjQl40a+LY63/R0
aNGjRoSEhSKRQKBQKT2lZMzpxidF6wxlz1ke0ir34mNmPBsx4UjlfksXGrkfkeRn+VGhIlCQpFIpEhGv
h342Oj7/AKOjRoSEhIUikUigmBQKT2RXISH2yGNSneRY4y8isidpeFJjxbMXHLvFxsfM/J5M/wA2hISE
hIlCQkaNfDvyx/E/g0aNGhIUikUigUCgUntKrk+7dW5xnTY3GKeRyXSquz0TGzHgMeHRyOXi4k8jPefJ
8mjQkaEhISJQhL4dmzY6SHlYsjOxVKU+ZhR/m4T/ADsJ/n4D/Own+bhP83CVzsKK/I+rRo0aEhIUikUi
gUCgUl3ONZMrykY3RMKfGXmYcDz8zLmr7FJGLZiwDyYME5/y9su6uvk0aNCQkJCQkJC9beiuTjkvltn+
RRWWrELw6mC+WXfdtn2PRs7M7Hb2N+jRo0aNCQpFIpFBMCgUnslk5KNVb3jg/ZVndYcefn5MvhIUGLAZ
+Vj4tZ+Zlzm/k0aNCQkKTqJGiUJGvXl5XUu3b35RvR3L5ZTpts2f9G/Gzfq0aNCQkKRSKRSKCYFJoy8g
bqjaR3dEYHRkqONizZrz2KSMROJJcj8lT+ZI0aEhISOp1EhISEvXyM/tVPx9G/Dyyh5ir2djbOvhsbG/
g0aNGhSKRSKRQKBSJFNROXO6NmnQsfYjCoVZEjmZXky6JxmLATiUr8jzZy/Frzo0JGjQkKRIUmhSaEvV
V9VlzsrL2E0N+KzTI8zodt+F/I+60MqjZr4NGjQkKRSKRQKBQKTReWYMmbsMkl4t1yVKy8yrP25ElBGI
x4SnHHx8vnZOTXr16tCQkaOopFIkJGvW2OzPnmSqdsRVqC8jY342fY/aZWk3ob142b2a9ehIUikUigUC
gUmh6SycpDvsbSKzLbq8hjxNmalTSIxE4ScWjk/lJxvNmvNXq0a0b8pGhISFIpOprwkJGvVVKVXMwSX+
Rxl8y7Xt4bSHkZ7sf346sUteN+hLYoGmjqdWaZo6nQUikUikUCgUiReSMZXLKyXkG0lWRs+ycbZGFSsv
KXWY2Y8aJxj645535Cs9fBvwvCEJCQkJCQ/CE0JnZFZphPnYUf8ApYRfkMLMv5KEsme8r2b90/FUN+PY
6I6yL2Ps142jfmUL289GONL2O6HQpFIoFApFJVTCycvY3sb0Oz7FOzHh2PpgnJmvK/8AsJsxwcjlY+Jj
5HLy8hnt6v8Ar8pbOpoSJQp8IrKpHm7HZi2IdqZycyh29tiHry2IlaTsdGjRrykb0e/nfhfaXjZ2e+9D
ZvyoFAoFJoy8rqVVW9aHlGxEw2Y8BkucEXlV19kYTeLBOb8skruslev6Ox2YqPs/54/YkLPofMFzaP8A
KbOyYmhe4kVnmDLl/Y/T7DEtnbRvZo0ex7+nflm/EyL3LsdepaFApNF3ONZeTWQ0Opxq8rt/YpMeJsnG
oXI/IaHVU52zHBmzLj4sua81fF7vx7I3vx2Ox3N+dmxNoVMrI2qfo14R9j0NnY7HY2bR2Rvx/Lz2PvzE
bPt5L6o160vGXlqSqdt5EO2/CnZOPZrHhX/oRJn5eTMJEwY8Rn5ePjmXLea/ZHY362ey8/bN/ClrxVeN
bNaN+dpDHRv0pCnRtI2bPZHvQsZ+uTpJqB5El+1KUuz66bSNLXpy5ZxLJnvIVem78JEY9nRTOXl6HVUx
SRjMeI5vL6/H3KttfIjfh149jfn68tmvUp16OqPY7pH7GzZ3Z2fnZv4P/8QAJxEAAgIABQQCAwEBAAAA
AAAAAAECEQMQEiExIDBAUTJBIlJxE1D/2gAIAQMBAT8B7tlllll+LXcvOuq/CUSOH2m/LUSOGbRHjL67
LflJEcMpR5JY36m7FD32G/JojAUUuSWN+o25cmmhP0cf8BRI4ZKajsh6pckcJ/Y6Wyyrz1EjhjlGJLEc
uBbCnXA5N8leekRwz8YkpylsjRXOdHHRXlxgaVHklNvaJprk1ejkUTjuPw1GxQrklNL4iw3Ldj04ZuxR
OC/OSFD2PES2iJOTFBLklP6Rp9iRsuzXhXnRHDG4wHc+dkWltETaW5eaL9ebGAoJcjbe0TaPG7NN7yLr
gvKvOUTSo8n+v6mt/YtUjZcDVcnJWV9NFFFFZ14CRHDHiJfE5ErIYa+znguuD+ll9VFFFFeFRHDHpgSx
HIojh+xL0UN9dFFFFeDeahYoVySl6yUbEvQoexyrgt9VFFFeDZeaiRwzX9RJbfIbbEiMGWojm32KK8VI
jA1xXBUp8nwWSjZGCRKXZruXlfWkKBUY8kpOX8MOKJYvo3YoezUlwN32KK6tRed9F9aiRhRPF+oii2Rw
/ZOV7IUbNKiN310UUV02N5321Ejhj0wJTchGppG7I4ZqS4HvnXRRRXVqQ3fYrOskiOGfjDkeM3xkotlK
JyJUSnfHRXQlnZZqNZqeS7C6LIwFCuSeL9RP7lHDs1JbIW5aiNt9myy8m+iu9KcYEpOXOShZsjU2RgN1
x4KXasvp/8QAJxEAAgIABgEEAwEBAAAAAAAAAAECEQMQEiAhMVETMEBBUFJhIjL/2gAIAQIBAT8B/DNj
l+FschzHL8HY5DmORTYsF/f4JschyOWRwfJxEc/H4CxyHM5ZHB8iSiXfQ15Kb+dY5DmORGDZHSuh4q6R
HU+XlfzbGxzHIUHIjBIps9K+2KMY9Gr5zY5DmU2KCXLNV9Cj5LNRyyqzv5LY5DmcsUEuWK5dHpr7Locz
llZX8qxyHMuyMPI5qPRFPEOIoczsS3WXufv2NjmOViw/JaSHJvojh/bNX1Eb8lN9i/hWV52Njed5v3mx
yHMUXIVR6NL7kUm+BKiih/w0t9i42WWNjZ3ufuWOQ5l2JJdiTl30a/qJpvs05OR3uvN/CschzOZdCwvJ
6Q9MTl8yE9XRaRqOzTtsss1Flll++2OY5EcJvsSSLSJ4j+hcdmm+z+I0+TSsrysssss1Flll+82OQ5iT
kQw1HKWJ4G/JqQo27KK2WahyNRqLL217ljkOZdkYiQ5pDf7DxPBDD1cs0IWyyxsbNRZZfwXIcxyNH3Ij
HV0RikMniJdGmUyOFFbrGxschvfXt2WOQ5Cw2+z/ADHoS1sSolNIliOXCIYdcvdZY2NjZe6isqZpZTFF
7mxyHISchRUSbZHA/Y4iSxPpHpuXZGKXW6xssbGx5pWLDNKyoUc6K22OQ5l2Rw/tjaQ8T9TDhStkp0an
N0hRS3WNljZY2XmlZGNZUaSiyt1jY5DkJORGCWWlNn+USxRQlLsSrrO82xschsb2U2LDZGNZLYsrLysb
HIchRciOEihySLcz/lcEm2+DDwq5ey8rLGxsps0jiLCPRQsKIkS4O97eVMoocy7I4X3IR0TxKFCUuZD4
FFzIwUevYo0I0I0lCjWy/Y6OxLZGDkRgo5SnRTkaIrkliURjq5fwW9t58nJpK2//xAA4EAABAwEGAwYE
BQQDAQAAAAABABEhAhASICIxUQNAYTAyQVCBkRNCUnEjYKGx0TNiksFTcrLx/9oACAEBAAY/Aub0UUld
wrRaLRdwqaStPyLlpKzllMqKAoC1xZqKVoy/DqBWan8gaQnrzFNSAO2YyOq0uFOJp3HnmUJ68xTDHrHa
fRUpEecQr/FgK7QGtlbp7JWluuHVeFmtrGadir/C9lPkbnkmCv8AEmrbBNjvykRxP3THyDvP9llCk8jd
Cc9+x1rCnFGKO0u1d/wO6unnd6tlJjYWueQYK9V3zZ0TeKZawuiZlJKcqF0T8ldP9TwO6Y81udlqw2GD
RajkPi1ifDAZs/2rq1TqLdeTvD+pTr15hnc9Fly4M1QCbhD1KzElZ6gO3v1d0YCn2UwosjRXVray15IV
BDi0d2r9OVnXZbU7YNQTstVKlNwx6lOde2FIQoCfA9Xhg6cyeHV3av0RpOo5Jzomogbpzgu0mP3T2RyP
xT6WN42ytOeHE+anLVyO9WylObJT1kUhXeF7rfBJTUhT2opQpHgmthdbDzrHu1QUaTqO2lNRCcpqAh8S
qmlQb32TcKgeqvcSpzgiSteQPFKbDpZrz1Ne+vadV/C6KJKes/YJu7TsMT1QmGnIgKmn1tI8jI9eykqC
wsepXqstKbhwN05nDKhTbKjtqRabYPlMrKGUSbPBf8lSzH0wytkw5Sqvy1ymohSZ2UwE/wCpWSlPUXOK
IC35Z9yj5XElZj6BbBdVrfP6JycL1L6RZOFzyXDGJ/JOqn2UKVqKRuiKYo/fBKlgso9StzupW5xTyIVA
/twOnUeRSQsqda2VVnQJ6j6bW7qIUd5OZK/1Yw5gIfa2LGbyGU2gTlgFAJWayM1Sz1RtY9SywLHqKizq
unMheg8kcpqQ1jUyU9Sksso9SjmNdXTSx6lkpncp6i6kpqApsYacs/wa/ZSGwBU/9RYfIetkq78/RRwy
moobqVe4pvV7JtKdgnqWWPspqTu6ila2T3vpTaDpyopp1KbhgX/HieKkkpjIw8M/2+QzrsogJzotbx6J
uHlFj8QgBXeELvXxV6orJJWr4cxnZNRk/dOeSanBVX9NMLXHR0PkDUyU6zTVsmMU7Cx6oHVXeCLx+pPx
a8yy0v1Keo4spYb8o2Ej6g3YV07Tz8K9WjTwxmTmU9RAHVfhi+d/BPWfRXaNfE44lT2sdtOO6dKoTc3J
TUBPWQB1TcMepTXvawU0h6/2T1F09RZNRpvbNvef7JtAoU+RAq99QfmWpzFTosxWWAnJc2Xq01GQfqnK
clgPFR3RphbWpSot6+R9aOX3OyzVemLqr1ZXdT1iToExLU/SLN1r6BOQsgAxdfI57tUFGnblL1Wiy5Qo
wsZPRfSFkHqnqKbhUg9Sr1bKA6/hbDy0V/NTFXJ7nZTptbFl6qAm4anXZSnqICuUi7T4lahd5MNPL57p
ghN4eB5CVMDbFGY9Fm02UaqNFOuyv8RPV7Jhpz8qIHJfCPeHc/jt2pgJ6sP1FTFOy0Uo061fstS39qyU
+6za+a3/AJvm/ntJXRRJW9r1lldoF2n9cDUe6eo+cOE47GSssBPWrtNsBd7Az3q9qU1P4dOwT1H8guU1
EBOVGq1NkYblAv1+OwTXrtO1P5ClZQpWjo1VIuwCjDf4lTBXeG/D4f6n8hOVkHupLqbHMKYp23xTNfhS
Ffrqc/t5HEWvUWC8fZfN7L5vZan2Xzey+b2Wp9l4lZaeTlbDazrZdJzDwC1ujwAwvXXSE3AAoG51RNRc
nx52Vq/2WWF3itcElZB6lPUSV1NkBeHLSmo906mU1IYK9xKgArtGSjprhuCm9X99Fmqy/SNOfaiSnrqU
Ymo909RXTmmo91JUSmT1I1n/AOq9X6DbA5gBGjgZafq8fILtJ+5UYJs0Um1zzDlbCyYCYaWNTJTO4pw/
B4JyDvHfyDMY2wxNsrpzXVSfQJ1p7rNxAsojcrKu+cBrrLAIh2o8Kexjl21qTm3qv9Y+vLOU1JtgOpsu
jQKMFzgAVH6jonrqNR516iB91/U9llpqKYNT9sGjJzg0snF1TYtR2MlQFmOF6oCucL1OA1VEADxK+Hwi
Rwv/AFy+tr1EAdVqfZaVL5vZfhA1HrCeouex1WqgWStlGHqn1NutsY3JTURjmTsp02wPV3vCndZ6o8Kf
ActqVrY9RYJqMo3K3O+OFmqUdhCnG9uqlz2LUe6kupUYfB13nWWy9XUAE3Apn6qlerqNR3PYa2yow6KA
u6LNcESU5OM2QtMWvYuV07CcD1FMIFm52waJyrnB/wAk9RJNrnXwCvVl+2jBp2GsdnpyEK6NezaiSr1R
ULXA/ELLLwifuVsNhgujNXtsr1Zc8y5sblJt1s0TJgE61WuOddlsNgmC1wOYCu8L/JOS5w/B4Jn5qh2j
YZ7CVCnldcGrrXtf/8QAKRAAAwABAwMEAgMBAQEAAAAAAAERITFBURBhcSAwgZGhscHR4UDw8f/aAAgB
AQABPyH/AKoaCx/AI/rwTT/4MaT/AFZ0has//EvahCEIQSEhBBBf9tD0mxnGvgltS9zc7ijHNMhGUMfE
fieZni3ya2vg0Vn7ZNd2UZxiJPcQvahCEIJCQgggv+2pdMaJDZNOuTFqAwDOx3BKVtOF+ehwMSOSmjdJ
3E2SdulPRbWDgyP0ByhLIhs0a9lC9qEIQgkJCCC/7ih1acmzkQpfhEOiuxrZ6UNiI1SVsv5NWy7YFsVs
T8DVPBuiJ/Q7ymTMnmLl0N0sRZS5Foa8NjX/ABQhBIgkIIIL2qH1s9qE9iaSsk+B5EJFOw6oTucE6YD2
rAUAqx72yXLibMNuEhhodwxkOEtNpWHkDTf5CR9mKeRIpNFpwPmWa70NgkfvQhCCQkIIIL2qH1iXSwYv
+JUXWxVStjgT/gO8vI9s8we1kRhtNDt7CUQnaOobUn5ZLnYbXyJ5yTaPLTA2lSQpV7GY6uBT/o5k8l33
E+pcvREUmnGiwRfiLcuNe5CEEhIQQQXtVDqEG0lbiP4AUawkh5Xff/CtpbbE1ab/AIEIXkNtzuFLOYx3
FJ4eNhs4ROtDUstJ8jjemKau5rarYohMkRuM6OhvnA849DUZwYRPgvYoQJkDEFf/ACmPqY17UIQSEhBB
BezQ6tdKKfEP6KQ2DBg2P+BCXWxSV/AJzWayYGFMUhrUaZvSmo7Jq7GNGFXg+kSExVsStTgbZfIiLeon
bMjuZaZl5EPdobwMQSRhIZSiK6DYWX9TyMSo164JCQkJCCCC9qh1bBSk8uiC5oQwJNj9CF8z/Avik40X
vpNotRDyOhmTUYzhFusTYtmWiQnru2aFNsYFjdUOY2iXYWq25NKtTHLUsl3t8QalSbGxeuzMR7rgzf8A
Q3uQnc1cC3wZCojgVMhGIVEc3It6sWPDknSdIJCQkJCQggivZp0RhKx/k4gsxjnVj21+XqUw97CH55n4
kX6RG/aMkPC7+/iXdFJFhaJE6OeFEZAlBM8JTkMngoR1bXYgZyXyn2EfBqyFFhVlIU0dNKiQhMCRBxit
0MXkQJCa2Er2Z3IqhkGuvT5E+qHE5RhvnXLghCEEhISEEEV7NDiVAszvBqNpIaB94ZDg203oGRvAarrm
tBaYYNt7G21fvKctZty692cqEtVGVqZCg1UJL8jIa0VqvIo3aNB3A0OP+BPKqq7jlWxcL+DLd2JhYK04
IYnUzNDyjQ2PquiaE+tEztT/AC2YpeMjIJCQkIIL2ihxakeXpJqxm8sWSm21t8sbgsIezDbcCNKcVBZl
odz6KbDXdjxgTh7hN8L3rC86C7dFqTqwjLWkN4+x4J6SWo0Yt1GmnhruLWyIwYIyOD/R3IhRp8GWoeTy
IyTgehCdGvQhCEIQv9+HDEhBBBe2UOqYI54Bfu3wtkJXNVWwzGPI8v5Nsz1dCcpXceZ+hMxcNR924HPA
dypavhe65UtWLQUkHJwuBdkc2Y4Q6WGz2HN1v5CTjVfwKlrU3HgpgTNgTHq1HnAog+ei1F2KN9O/ohp6
EhdEKNpn+4kDJGIIL2qnzCUE+Q+vHI58HLMFk9zYY9E3DR0dohgO+ZbnuDKmRcDC+QNCX8YNNWPgjXL9
meiZNMIs4M5sTbrOB5c4KtIluPJt/YY2pI9F3Gph/XQ3z0ia6FljfrvTfpBEEQSIJCQkJCdwk8l/kF7V
S4NQYF54IZ0wgzdwNEnc2FZ+9ncU5AUuBN7CZshQgpAxtH9x4LBlsag9vYno7kMR2KijbM5LWjuw01Jv
vBknTrvA4IuwQslDaXSymJWNC9Jn2kiEEiCRBIS6FPiPZQ4NScscDN+AWo25CfxFuzFmx5GNx7zVlENu
WasWF3KeRgTkfPA3yRYM2VbKHcfIrs6JP1QnS9eNKJWAxM92YGZk8fQ4bR43G9Dtd2JzidhlMLJVCbnP
A33H1wgjIidYTrCEIJCQkJC9oucNA1vnhFfC5YtVZO5r30K+35N4Hzj8Oi+S0rwmi+BjWOehjhE5P8C8
eHJdwLfuQTEm5K0VG2+RBB+hhCdG/RB8aGISHrC0Q9qDTKobj8CS2D4ycZXwVGS7DZGmybi9OvonRIhC
EIJCCQgvTU8npmG6BJIZ6TndizrcGo0Lg7bLyZEKLtixqz74RUxn4OQg17DxkLg3PvGstDMjb6LwPCyU
3RBDcl4Qy23WE6Uvp7sDIFnHoNmcjwo2vDXAluuTbE7qQsp4Lx119idITpBIQQQXtFLs1Bi/hHHmwNJ8
CG+iT4/2UfXWgz1Mgxj34OMZU8Ldj2ovgHeme7EpX+CkSb0EpwaKj1B1ooRDUHqDIkT0t+lLKE8JTXjJ
t5MCKxnkb1xGh16CGtqTMFrobhs6C9UEvRCEIQSEEEF7NTw4mWZbRGGaLgI6ZG/m+CjajXRB6DS4l+zI
NY/YaPJ8Ia60kt9hZo7ai3n8jHpBZMSfI84WEKPI+CchvsEvRYNmCEJ7aXyHiiGafUhJpZZsNOihxR3H
qhvk0UK5PRBEIQnSEIISIIIL2gp80DQkLSw+WOtfLNawF2EaFDRxem2wKhuwSbNXYfcjwGiJW52FZ9tr
km0iCTdiW73JRRKCNs9JhJqcKMs0Pgo8aCKK9t+eY9hf0YVjRaVBZTpGjDeCZ4E3qXo+ek6TrOsIJEEE
EEF7RT5hTlngcx4EOSr3BEEH0NZb4Rs5ISzwFovJcsexNEN2Cu8Q5ngGojdLKbF7VSy7j6zT4CTgNY60
RZQSbKkZ8DnIoJYEUEEF032fzx8L/wAYM2FHIyh3SYMobeOTTUevrhOsIJCQkJCCC9mhyf1UR8sHc3/5
GUoNiPA2nL9mYW8K7KJo2CMCpe5UCXkg/wD0NjUBuWb0dkafJ8joO2TVeEaj/sJr1SQ22xCGEXswY6Fb
EhIToQIIr0kmySVb0SNsF3gdRzcNej84ycDr6NSI0DBQZ5yLHk16r0wgiEIIIIL2ihw8RFLeKK55HMnM
FbbYhzG+9RqjclgttZpWX/QjtL/1UpCdiiYRyF3Yl6twh4H5BcF4LbGQ7tTX/COeAZEmadxk+yOEr3G8
EEhISEugnUXSdETV8SK5N9lvHCHTiDlEVLDTrgg/cIN2R3RXdDUV2D4IQnWdIQhBISEEEF7VRpjW/gHJ
M+NG3HJmnvBmMofvZQOtvVs83q3E1tfu/oWLiW7ZB1zzCGM7QblFhdhLk4EWF30OpBcc0Os2eWzAobnY
jXc036K+iQgggggggkkXQr59DDat8G8G17x+p0omPRSciMGy2PkjU7o1fqhCCRBIQQQRXs0ObiQrFX4B
+atvVmaONTQhGmkPdBNtcjQqdyNP9EvV3OpCeeFUG+OCtsnU0FbSXc2+YTcuTWfJCya+BuP1JCQkJEBO
6KbiQiW/SZaYQ3j0KcuL7GxsNE9Tw8GAxTYaSfXYnSEIQggggvaKHJqReOrGcTH4MwKlomzGEZSM9Wzv
LJoI53RgfE8miP8A4oEbdNBOzgixHLMbLfgc5fBlrH2YXO5k9CkKIQnQkJDBXkQQUWBZOK9Y4Wfc+Sz0
o2A/Icm21WOjFgyWo06whBISEEEEF7NDhojOLvBV/ZY0LucMH/qdiTb7IZhoRBcrnQUSYxIRbsu3j+5i
o7DTRHowiarwu5LlG4yIJX7h0NuRlwOsgg547v0C6mxBFFFBCCC9BCexP9mJVXT/AG9DQtGJ0S6QSEhB
BBeyU8ZKR/hoII04IXWHbdj+X9xTLkY40Kbi2W7Fv0moT2Vt7sYFlq22KWekv8jWOECuvAmaYh4ODOvj
gxFN5yJh/kNM5ZliQ8aCCCKKKCKC9HIrpor3ny/+H0NUk6akJCCQkIIIL2aHJ12G6UV1Ts0MmIiIuRt0
eWPEmo1uY4QzTj7v+CseHcSuAOrHGqMaA8TAlXYxrW+U/mUQT8ixp5y+TLIQwyPDu6JCEUUUUUEEUUF1
S6lCEJ7iFog1hu1GhonRCCCCCC9mp07syJqLmvJ3Y538hIhi1EzDlYMpNxJTQV+wfOncfK6vYRFi+f4E
qaKYwkMjgF3nM2D8Uuwh2jHpSF2ZLNNeSXXoRRRRRQQRRQQXRnQvQjwcfWE9MIQgh/4dtmNEIQggggva
KcMZo+wON2i6IajTUNjYhhoUCkati4bS5Gr27fAZDRxsQFjiajDYamr7FsscQh2cH5Ppqn6EQSMtQXXU
UUF1AggighCdSdU4rLG2pk6TrOs6whDJpUd0irV1ciIQSEEF7RQ5hDlnjcXuuyNKPIYzo1+TWC2mh8Ps
UnoaJojSN/BDJ5JvyzIZbAmnThFVRbIcYGL5G+lBISF0KC60RQRQRRXWQhCdV2bB/wDZHQuk6TrCEIQh
CEPJg3PPUIIL2abJxLXhDCr5d2Rbl+2bhg20J2ybgSkSa+NPsbOuNdBCaSpjGxLg2MGUnPkyli4J/JZh
8vT9MFXPqQkJCC6ogV26C6RegUITpCdWyeFqO8mQQXSEIQhCEIQSIIIJR1ajz7GjnoL2aHRxEdb4NMxN
jCz+NGuK5Mg90E0XZuM/fG4e6YMRJZ6SxOV07n2/sfWPAs5bFrgfn6H6khBBFdTU9MSK6ieljY2bKGhr
0p0hCdIQhBIQQQQhYGiUhFuuBesdFAS6XYxv8gS0p51NQPZGul2a/BS015yYO0nssGl/ZvMUK2O708se
YPKt+WVtb6WDZl9SQkJ1legSukS6k9VKNjRLJpFoLrPTCEJ0hCCCCCKK6WZb1dQ3QJLuXA+Rasb/AJWP
ZK5PYiEhc7sepGYYISo/YP2CXQYlVbHPIyq1naXtpEEF7AMQToXrbGKNVucI22yJexCeiEEhBBe2VDi8
NZJdx5Kd2M+tjvoYIzcmNFLZITyuCSZvky3ljGNbQ0qh7SX9vwVfGH9ntwgkL2AOaigkL1UYb6N0PrfU
3ohBISEEEF7NBq4wxJLdj8MXKFQxh6jTOyE7Zz22RQqQck/HvD7PC2QqGsOewtNDMNFyn/SHv9K7EX1z
qkJC6gvTlF6CRPWwzPK+xDWxxg3qkzLYj/zNjTXt6QadX0Bd8E4cAtFfwQ4n5z0hCCQgggvaqfUVj+Fu
x1JHQeGMcs8hJJ9x0r2OlHg+AOtXljmMbQ3Wh7nNrX9Dt+ab+iGhWK2db9mEEhIQQXrqyKJepCVklyzF
Z+MzBJPOrO6eTFNpwUM+RCiqQ9VKQOrHuRyynKDXK92RdEPgXYsvCFGIQgggggvZpcQ8pklyzKTWFTNt
8sWTl7CGJ90Ke5Y/YHllb1Kj2ymxMCWVgvIayGzD/ox0MvX2UhLoQXoCLo11ggkL0pZq7hlIYwgkIRrM
VcJdxywVhuzfIrFFvLU4RLT15H9eTDFpybiZelBIQQXtFD40iQlXXGq7XdlmFmiZXC0HC0BPOmi5cD27
9CdhIex72Hp6Qrb2Ih2ubxwNtuvX24JdSvQdXqFRIgurYlNlPQ2GOzkVKkE/YTxYSEGHfBuwvI962bIv
bFHvCZglv+SCNSjGZY/SkIIIr2IfXEaNJGD+EnyxKWA073PkpHDCi/EjicO1FYxlHoWDiS3FlFPL/r2Y
OFyQSEF0S9WmLpF0iXobFUY4m48AjlBjb8nCLls/YGw60vk3YrSuX8GRt4C1tkJFlpYGS114OX6KeStf
UiIQRXs0OoUGJ14IdpnAa5C7pJyLDZa2o2YF1wGD0bUTTXfcYxr2OyJrLfYyDXwvHzz7JuBCV4QkJC6n
RXQIEdSkJEF0pBHANXXY4HVgkIIs54CrMQY3l0pQrhTQUlGmWf0PnGdWYDYLgPDL6EL2aHVoM0xJLdjv
D3W47sXc3U+TSBvwh5ljhaEhJCo3mfLKYQa9Ttig5JDXSeOTu3hv1pnoNF5ZTZqJDReoNlmSDHr00J0X
WOLy0NeR+DZR9hgZIj31HyIaj9Ilx9g6MGvUm6MNNVSLDavgeeNRj1tG+ghENUJfI3HxE9hPuZ6Vsv2A
PricpcLU15rhvJrC1xSuqYwxhGWHJcyRq2KsnXDf4GZNnkClsaqzNmEOSDw9vl27ClyN1+qPgTPFGoxK
RLQpFcst6d+Ei5wJycM+hLc7lKYSWy7Bo0Z8ISVpRG8pSEf1XxT1FoXJ3BOZo3bHdnKxtPSP4GmeRN3f
Q1asRoF3ZncSll8Iw945GrAfbR3VkJZMF3aCSVmm7MuRV8wtsvszzOO6fwNOM/Bwp+fX9ZgeQxGjyeox
m3W2I1a8G3+DLZGMNbQlNa6DiRomiFFG43whyLDraWv+CrdlgwDyNJvfUq4jJWyXk8GRwraCf0HKI78C
/XI5uEN+n3Dtq3yx30EBzCuTyxqm77sjG8skaNR500IWYjbiNvsM0zshk0pclN3krgp7sTkJNmV1IuDL
LYH9Da0hjhLBc6FDF+xYX8hr5HmX6Yuw+SjyZ3HX+dPn01CgU2JsUDm7kJWiM0Ua3liUamnSzqtpWMzd
Hqzgk7nMh95aYy3/AAF8D+4dWdLt6qkzHZHkzvj1yGo3CU1/Bq9RNLVnG+zVQhqwg4H3o9Tfhjcr6JIQ
Yr4Wg7KeEtEX0JC+Zog1WiIWQhttMneLsfRGHcraIy96YWrITT2bKl00zuU9kkSnyN0ktgzdg5OKfYzk
pUXqm4/jraOGhfsxD+9iZl43wIWDxwkZ6nVMwReUeR9MQGam/N87KEttwhJvpj1bFeooaXuQUqziTuzH
LZ2YXLPudiDp9VA2ZojaNczJHDm9eqV0MOmSI2ivggp+ROgkSqTyzXEkV2+zPVkuEPyGS1LvPsyEuWWL
Cx0WMt+BwxwYrJgWiLmRG03TRqjTrSiS36Mgzau9sh1qfLEFvfIozY3dB4Y0SGjRrRbs0yjmAnabTyqX
OyWUr63kfwPiQn3OivVCmhrUyyt9Kwb+h/Ibb39aP1BFuuEWw6JmiRM3I1n9HwJGhuRtqXY660pRiEsv
c4grdGi1eRa0+ERqUgh4+2f+a6OI5IS2iH90mOd9mx4DmHd2PQOv1V+baJqyuqZpxjVjHrQ3So19BXlI
1bFVhX2fgY3mbt0SHsvsdkY+Bo/QQ9fYnSLhU0QXgpeiGv8ACHr61Wv0OKFmQx6CS3Y13laLC6zcNucI
kVg7IqJ6Za9R+Rol3FTZ8GP9szZl9zRLA5moNAbHlst6J0p0UXhD9P8A/9oADAMBAAIAAwAAABD77z7O
N+LQ7KClZTVWu90r2scL1U1TrWb0On+Y3rEIBGM/8xjQhVP5DJ79h+E1UTU+qJ02eWfT7eBYD1MUM/tj
wr5YxGQvp4pE9De3mWxXc6OzZS74ekLoPdwLPFjBa5+rtQjYllUn+OPVjFmy16CIlepubDMOxeSiwiIb
NtvhU5Mwc0Qcf3YUZXBNsMiNegB+3A3Z7/hrILEHUruv5MpWy7yIG+zxeVJko4el/IZpd5IyvNclHHGM
On/5mYU5fX2w7pMw8cX5E4PLCt6diZctuIlJv4ynJ0rxx3BdKG+hNQOfDqCWKTZW0yt9kBXjJfuCUNc2
4TabyqHo8zR2vx2sg62dHOtYpleD4N5dnSvKzPutEF4/fWkLSvxhu3ULhVlQH8i9SsH7HA98lUZS3kzQ
lq9EN+x9hPuD7uKpw4mPNz5GSQoCYJ0/0B9WpnZ/Y1GFaewNaypxtwyCD17WKFUiWvQk2n2YAhcbvg04
IB61rMhhfBoFtWKYG6bAuxu9CQxpM/Q7eoFcr6a7/dEDRMsFNKEKdQBIf71qgLpDZnAVc/8AMSwvgURZ
sO3fYcaxmWC8yvpbMzo+pUyFbE2ctGmQJbq/j+m+/wCFSFdP/KE7tEcyVrrRm4o/OvRqz6HN7IE48KWw
ks1hNfAT112gePHe8PSdrreUCnKmi7BbeWfbEQfVv/JAyZsexwhpJk668NmgcHnqVFjRx4lo4E+qilfR
OthuQIQozuhjo7zABk/pG5QRtMTABBtshza+RrHd/qFID8rQoqIsIfPhmAwzjZGop+G2xc4GBNRJIa4z
OosjntTECXvjDPhSKqWKqyEN8H6Mg0gTNSbeda6VnBvi6ZkXTNcFHKn8u+uufNWK8MlbVkw9dPJEhPNi
G6qY/KvS4GGtZeAiQb4OY+ruH5bexTja/sswfSwBIF4IF1jsBP8Ak2bL1ENQJexYs5GWkVGGQcx9aYCD
iAzBsfxpq55dN79SurNl4LOq1xEVpErYaHZz367/xAAiEQEBAQACAwEBAQADAQAAAAABABEQISAxQVEw
YXGh0ZH/2gAIAQMBAT8Q/ppwbvnB4vC+Wy2yyyy8Cf5rPFLFllnB1HifHZbZZZbYNnbD3/L8OA7gssss
ksLJIf4bbLLLbe5m/S6u2P67/H4QX2yDxeXz22WWWXhWRg2zrwXbr2xHf8Hysggs8Nt523nZbZZZZZbY
TKwuzFwS/bbHtfDpdf6fNck3uyDI8dt423jbbbZZZZbbNnbD3ffG2bVG9LNOfkTM81vkfz222WW2WWW9
yN+l077ui6ECfAvZouZxnme/Ft43w2W2WWWWXhWRt617lPQQRqlPkCxcJq8f8Rw23l9RH8dtttlllltg
WVgWqV+FgzZ1AVKxnQ49wWXqXf4DnfDbbbZZZZbbNnhjYJnZn9ZBgdzrrF9s+JT1erI4GyzyYOd8Nttt
llll4VjDZ0Drax7Zj9WMnbXadFvQds/rbwF64CCOXzwLZeNttttllmLwJkbpHtvapix1/bszJT/haHqG
C+5B1HX3YchBBBeuV89ttttllllgWRidnxn/AGRobWtkYctWLDbot3wyDgjjvnfDbbbZZZZZbeHYJrkn
QlnVsOxcIAw9/tj32seHA92syJgvceAECzxbzvGy2yyy2yt9GIz/AOpVay9CB3E9PSAM7Nmuq6erXARZ
BEIcBMss8tttllllllhMjL2dt1XojV9Ot8Rhbf8AiUMIt4yCCIQpCZZZZwvG8bbbbLbLM2yaGNjpnQ/Z
x9Twxyp7hdZtPOQRCEIFlni2c7bbbLMYvCNh22Nx1lvez/1M634Tu29I8QyyCCIQPPfPZZZbeFb6s9Ua
x/i/k5ie5VdZlA6yvR45ZBBECzyW3bbSxaSLbZZZeNJ2w6rpzqD7/wC4DqqutkbD0Evt4ZZBBEIEHKhM
1e4Zm7Ntq22WW2DZ2Ea3/oSuwnddfAnVg1k9vDLIIhCECDlxac4tsll8Ft4Rv2kGt1/yAMaAZG236T0Y
la8nAIIhCBZyoe5hIE9cA8Lxr7I2WuEZGUP1dV0Ltde71Ee523b7iGt6HgOAQcAShxIktTSr7htgW2Wc
bMONJSVIxDZ/6tn32g2bsyP6w1YOvd7zwOruz9sui38h2IS165C/1bdeGyxrHRKvJdB9v8dBNN9PbJsk
YOs37bxkFgWxLyEEtlv5frdF28hnPV1f5u3u0nn/xAAhEQADAAIDAQEBAQEBAAAAAAAAAREQISAxQVFh
MHGhkf/aAAgBAgEBPxD+tRs2b5oQuUJiZbI/07DbIIrLmUhRCyuMITLYxDEx/wAqJYZSlxcok6E7lfwo
xDE9i6Ko/wDH8e8eFHiYglwhBO8plsjjuKsQ7spIiHPX8SQxvgiEIQhMwWyEJmjE8VbEW2U+iwT3sLsa
XN6EUbvBYhCExCEILTJmjEMTGb16WCWfYIwfNjQ2+bIPEJhEEJZhBISINC6wxHE9m6RtXt4LQHWBod94
vzhM/vGEIThCEIQmLMMywt8VhbRSQaIeClDP9HhCZfXCEFwhCEIQmG8E8VbEKRZgXZsNEglaJsYqNIdF
NsSnJkzCCRCEIQhCYoxDE36DG71E0QbVvQtBDvC+mJWxK9l8Q6bGjoPmeZSIQmIQhCYYjiY0Qx7cfwkI
PCLfE6wIb2Z29EbOBDSH8Yo+JavFCYmIQmJhsiTxb7wTQtYnOs/B67f1iem2W+xr9GS0gtgxokVnuGHk
EfTD6EspoWIQgkQhMUYnibNo2H/kQXUQlETvvX/wj0qSghGwkkbNIpRh7HMJRRZmWqhYRCYmWIYq6D6x
IvwfWlWOlNfC6dEQxG5X0EqdYxDZ0MMssMsP+DNiQkJcGyOJrcRsDpENGsa0PVtjZk9EWKMFeUw9jDDL
LLDxPF3zaETLZAnifG09HrsjpayO3rEhXtiqMFhRsYeAwwyy2UuF9lmZiEISYo8ibtEKT3tk9s1Ho5q6
CloM+EiQtLLYw81YeZS4SFouZiEJhjcyTH0KFSDvihLEMktmkC3npH6LIl1mjY+IQbLwguC8qMPHe+jZ
aDYHV8EpEIRwC/Q+FGxh8AzDfCCZlISb6PyPxPyG/OLeCeNlEbztjev+DnthSiGN+o95zpXBsbHgPNGy
xohHpI0tIp9H1EoJYQTLYxDE3aLGpBz0gr2mLQXnApi4NjY8F4rxWLh4jGin0L6EiPwJntiSzSjyd7Hm
javsabXw1LdHGQ+ZvdUJWZNEf6N8hEbG8LoIZ7QgtiUg2kXwRYa9ISFRGGeN1oR72JEp0KR9bSNQEVsU
+vB+MMPLFuDf7gY+yK2UUQtIZBNiJF+Mb+nYkJElj4Cb1iRYmzREgS6XRoJ0XY06ESowreuFKPYohtXR
SmfQfih6DdsXtijZ8ojIyMhBISG1sNthCyzbeCzREhOiPdpCd02KDfhEklERFGxsrZBiWW4NtiU2y/Cf
TxQk2+xJLLroiNDroSb027NehJiz/8QAKBABAAICAgIBAwUBAQEAAAAAAQARITFBYVFxECCBkaGxwdHw
4TDx/9oACAEBAAE/EP8A1CB8VmPwfNQ+GCdDGKd6JRWrgoQoOyz3KeH4TVX9Tdp6Uu6VdRfF+0pNn1Hw
ECECHwECBBA+hj8VKhBBBBB9dQ7onROqdE6//UhLhma+K+D5QoFYfsHiAlNws/iACzfYhAouUt/WUKVx
RU0EnFQB2J5GN9KlGwcbiDFxiMxwyGz9YZVxzi/kgDZvIEzPALU/hiejdRSpEe/ivipUIECBAgQQQh8r
H4qVCCCCD6yh3ROmdU6ZpxNWJrx9dfNfIfFTUZUr5CKV8TmgPERoaeDUdTbFAJgyTuLQqRno/siUi55P
E9YNW8xPK3YuooA1ucRFM/X9y3IHxeIhtjkuyWHGfMoOffUC4fepuRcVP1gqiTnZ/c/WLBcSWS6ITh+Q
gQIEIQfAgQ+H4qVKhBBBB9NS650S3idUv4mnE1YnXOqUcf8ApUCBKlyvkLcREpbpgggByjp/cKmBgBQQ
2hfzLguq5gEvu2KvqqiiWq5Gyv3SpVYc3L+qWlYIXFeXXUUmG2aLslWW3C9/rEEDo1TVxbyi+UTMqNIy
tAtOVpPvBqOHisQGi6+blwHNESty9nD7OYtVOizeziZeLnKE8jKzAhAgQgQhA+mpUCEEHwD6qHdE6p1z
omvE14nVBKxBOIA+uvktCK+Li3K+Mw0xOCC3t4twFAnDftg/ASrbu4WVlFvPDObQ26r0S4NNCykQW46m
Y4bUp3CCUC/71MO6PBmLIrWEgIuz2bgnMi+HDL80+7mQF14/5BlDDlYEAMJV/rUobq0JIbbfIXHGBbiK
tiCxlV67h33g1ezw9kV1At/9p3EzA8wIECBAhCEPmpUIIIPrKHdE6J1TRidc1YmvEr4hHEE+H4e7mJ/4
BCPw4gLNTcqNTRWCKpJaa9oDOLMHCXm/oGCWQp0Dz1DCKBdVj7vE4NJw7moWoGAL/wCSwlm/cddl3ZEW
Qqaf9uLb4F7/AElorVw3+8ESTPUHQPCWFEdy0AimTg0k5lXOZqVdlIoydacOovbbxBonJFAm7NQ4uH1F
5MUPpI0kdcLhj0eHr8REaKyQJUIQhCECBAhBB9JQt+LonTOqX8TpmrE14lVYhnEAIlEBarQSyq04b9Wo
sp7iy19v9EQtXxCRPqC5qXNzUC5c38O7CsEAwlqn+3Hzb78xCgBwczNlZauUbTLC1cuf2iJdT9lRqyJi
oWAg6xR95YnXAuz3HqVthdXBUlqsqgeopKwDQrPMwQZ1ABmv2Yq2L8niJVZi9kBdb8nmb7UvfiX0VOZu
pKgAsqN2M0ls7hK6neocaF+PML8qxAXd8PEUemNTMDIMpsdOzw8xdaKyQgQhCBAgQIQQfSUOv4umdEv4
nTNWJrxNWIBxCIARUelte3iNoZsYB78/ebRvwESlDwDLGPxXyS5cr5v4I1hFYgi0rLNf7gxt4I+4aL29
wzco9hALi4UNEpxCxxsMwFQWUzZrPMqaFrA8foREEXyZ/HEpUKKArjmMF66ow9zhbbDG+YkQy07j3Ouo
sF7coSlIAbobinQL+jDaYHniMNo7gNQz3yQZsK/aEgrUvGoFjC61UVjQ48cQtluXHzArrTOR158xR3iD
VDONk5fs8xZSqRgQIECBAh/4gUO6J1TrllYmrE14nXBOIIagCDC9gV5fBGyU6Wu3cSbcLxBKrETBPcZy
y3bQ+8sLThl6K2xYx+mvpqBDJWmggHnKb9Y6nS+Yx40HccVjxmBejJ2Oi5fo0Ea9+oOYsLsZ/PqWnE8H
OeWKMvA/uHTz6pa0wBi5MiJ7lhOBkt/XEGoUrYGJZwbI09RA06I5G21qUdiliTBB1wh5A1dRFoonm7gh
UtHTKZYC0twBDF3jogNH5uUXj1DC0yjpz3AuZcP5jbRkBAbEaYeYsAfa/wA955lhpKYEICH/AIgVO6pb
xOqWcTViasTTiVViEcSrAAbXEUgLY2D71E4NeV/gi3KW1LX3hy2ZTtnqZsM4MqBprMcz/HP4hbW7dMn4
1DLEliyvsZ+qvoqVKr5yl3O+pWAAoTEoUli4phOcWsNXKRQNrWfV/wBS2omDJa1BNAbrWJh2MOkIVm9q
7/MWjRlcPyzRCLYSkYKW3AN9+IuFBMKa6+8EYJS23XrwxEEHHcEmCX94SwlncsPBlBUnJ4ZbbL/ECrzV
bqo3AB2Y3NJDo5lxRnhuOSCxMh/O55BYJeHMLYr3LLxDkvcSOZRAe6dJyPTqaEfzCv8AePMIIIPqKl1T
qnTOidc04mrE04lVYhHEATc11Wr+iHFZWDdvl8wirscHEp7bVjRYr4lzS0Fm++o3QxorB9iVNN4NsdLy
uKL/AHjK68dv2NfmPvW0bVj8VK+KlSpUr4qVGrIDENAxtngzGQxbrJATcBdvMZoFTCx0hu6PCyjAsl56
V/MPDBaq2Fy5VYrfH9RJXlgYWjooKxCFBeTtxKcCYKahpCjI1sggxgBpXANXNqg/2JRrE44jVkA7gh4M
vMUSxFy5xHKhVJy7mOVrhYVZ7liEWoAQKvZFeI2rKhnc47mklM28wpIKVTC/wENo7L/l4evUvpFA/wDA
qWdM6pfxLeJ1TTia8QTiENQMK2miEgaSw/4InKMq2sOz/qsByVGi6Q+oJZcrnPgmw1wI7hej/MVcL7EG
Wy7TmcB+JjOL2V7iSvipX1BcqoZaIYHfb+8EGhgO2C+gF/n8QIyfY3FQ3ulaIlgFqswniAiItBb/AL7T
UhWLD9XqPcQBDzqGrsmytPcU4jUTNGzdVLav7sPDl5Vj7wYG1fOYgUcXlE0W6Za10p1Cr/hBZQXTYyk5
pzGjgH8wjYMyyZgdO4AtXKSV5gJklcxgTaZGIIH7fCms0eUc/wCz2fSgdc6J0zonXLOJqxNeJrxCKxBO
IAjpuCx/nwTYW4cegh+QX/1MCMXggAOIKDHC6t68vqKRaqaL6D+4xFcjhLYcGAaJsHEcwb8vEIWR4MsZ
OLvlX8SpoHglSpVfNSvioEr4snUXKRSs7eWKnYsps7lhQdtnjPOpjSl53cbrreGBl2CxLyT8S5MmdP8A
bixs5u8RGNZ2H+9QEDjm+IYmvvEBG/cpbX7wrNjwT/4I1Jc+WLkUepvI58VA5MVVlBXu5lfNTZfmOCj7
IOYbzuY8EuwKf3E4IGcQF38FxgVBFbp/UOvsaftKkSS7Gvk+qdEv4nXLKxNeJqxNGJVWIZxBiwVXoMr9
ooRpTt+8uXq1q7gAQn8omp0x5/CxzafYflolgg1dh9jERo+bWjwGg9TIod8QKuBupfpRyxfH5Gj+48ND
sH8JYLbPBLMYfDKU5rcrKj8VK+KlQionwOcBa+X/AJE2D4hCqRorcpPgWaHglTdtqqU6SrEuyAeVUVyS
klemvUNCmvZ9S3oDh8u4Kbtszd/pKNrPF5ll5qZC9wb1LYOP1jpXHqZ0upX2hmATEvOZhqCt9y0oQy5l
B5ngTswXiFYtQco3Enm+Otst3rL+9n5+LolvE6ppxNeJqxNOJTWIBxDg6zute/EwAu0bfli0lN28dvMp
vhyxGPsL2/Q49x5QnNV+3bG7aK+VitmjwSxjUyjL5iIBvywKHhvbFSJ6NPZmDWXjmWDy5laSrwS3S+41
PA0eIxPmvirhARQIsUgzRKxUlXyv/Jje/GYihklf0jSewZIgoLsGsFO4Kxra8fzHlbRq1S3x+kUJVDa5
ZQNA4K1E0ALuAZu2NDs9MQLeIpYWuCLN+5SzLfklE1mDdtQW0rPEuuJdnxdEFqFvUrxA8zJ5lLthaYIW
lBBv0OWfwnsMP6P6TpnVL+JbWJqxNOJpxBOIXCEUZTByv2gImobL2yjAvzwQKIq9noiTz7N0VyxigNmP
q8Ryg7W1hcCoFgRYr3EKDHmpVib0LY8uJocr9uJeseXg6JmsOFuZhbZfEKF1DG7YeeYC7tjMWxjKlSoQ
RUaajGXYWAvqMCmdHWiZVWV+YQhYgFSlg5XO17hUqHiz9q1FBgbAXJhTzDFvfCjhCUqLduf3iFHCFpA0
YpsllbU8ww2UiOH9Yl14hRr8VMmyU85gjTWJk/eZEqpV7hBlAqAXDLUIII8Pw9P0qFSYnXLOJqxNOJox
COIA1KMytFbKoXk7TvxFLG62JmYeBKdCcIH3Y+XvDzd/wJY/TxvX/jLqF2m4pOwOPUDy3l4lE9CmWYRP
N2+pdC9037MGxXEqLQTzF5dS8fgfBhusTPbo47fipUIIIcfAvzcRvB7cTOA0FQlMovPMz0YmUNdNJVSh
5eHkQJq2sP2jM0Rd3VOtNSjYbNj94eXG29rFWDXhN0s9wBpIVyLicy75+6S15qAjYCO4tNwtQhkgfCsT
JULQgsQkhWUcfS0ZdTqnRPEmvE0YldYhnEa7DLGgOmuj+JYdibT34iMA1l67FzEIs2Wo+jcUszs/9H9I
wWF5cdA4PUEngRHJgqPYw9Rgw/iYpYcbZWCBlW/vKSrnLzLxQYKwSuvzD7PE3uXHLNgVWiFdwJyQns/E
DpZNZMxc9NZlQIfBgjDC/Rb0r9EH/ZQ0pOepbqldDBsKDIOD7xBKs6pv1FUA2Hh1N0KX1eIwYF7ssuUg
GDjxNBuvJcATFH5iyMU8xRo9svjhn3uOB8BeJdNJZL8FkC+oECtfACHnCAh9EDqjvE6J0y51PKTViasT
ViacQCsQBGPtTwe2UHMv/L9WZYs+5HYtpuu1wEHgOBE/v+35ityP2Og4gmI4Mwc2AzKIYnfMRKVliX6P
7i+peFlO2WLr+BDIw4Bv7RnS64I9tERauoDjb1FguDQRHVTrcLKVfUdpS8Hc3Y/ELcvwkAHwsWoj9Nxe
WU7i2/u/8jAqHS1EEq1tSMyMl4YAsDCJNdygocBqBKoPL5lAWsCXKKE8cwWDAXP/ACBoVrDNjlnUbfP/
ACO+YKShMQsb4m5k+PhMMMwIZQzhBeH0Eur4uiX8S/iaMTXiacTTiCViDwgKnEXPt8EtUp0h78wkD7GI
9guzhGOQzJR7Yt0g3/oX9IWiuooQLP1G+/iICTQ/62U2r1J7r+4n3og/36QRdl5UTaBo4I42PBweIABz
bLwRaP8ALAw3wIm6NvngiVMHuDYQeajcWobYRNFGF2wkkcv4WLFv4qVAlVKl5EwDX9n+Yi4U8nmLjGDB
FdFCYG7v+ZTkpDEVwoabcETrHm8zJBVvGIDflctXT1DMFMSr2pBzmIwBORDLUMqxDpBSrh4Q6fATywvx
8h1TplnEt4nXLOJrxL6xNGJVWIHCYJTxeYkyVs6Je0q5L9Dqcfcr5hYIfMwZrfdce3UZutZuLwH87jZV
GzKpjtPZofeWgHrb+YGP270ty+YSvVRkX9EYB8IZmhKeZfbFy/4/uDVsvU0+a4mnI80seDmiCCi+2Aqo
vliLbuBoMrfUDboAWRYvidE1FuLUX5qBW56+DfoR0P8AMS6sq1JjstZSRu3/ABCJSjh7lGj+R3GFZtkh
FpniK0+dwujwaYLW2Za8oTbEKd/AMxIQVAhAPECHzDo+f6J0zqlnE04mrE0YldYhnEtovE5WffwW/bzF
R1yf4hTtOCsvbKyuXZiCYYA2sfuKWN9xfxuV8JvC9B/ccMqgInGcvolCXWDb7f4jIaeokCFicv2iKulb
WCPcMAcQNfGjf5icx4w3Gm8t5qOqMO4pJw77hlg154girV8EXlQ8XEnT0EuZbhmJdzyw4SahrFI/QrzN
alSoENJ0gU8P7SWqcahZut1AOKaPCR7KcjwnuZlC61qMSFTWXcSxkdk4ODUGrxAXzA9wOoFalSkO0CyB
C0IwfSKXzqnTOqdc65qxLKxNOIBxMl/AbXqPjWw2sRkWgu02kFKb/PHrcHMnDgR4stG/QGWVWwruoPL/
AIgxclPJ9Xh+1xEjavzBQnjy9eYic6gAHZy+8wfLhr+oaJr2MZIxh2T76I1vDddx0agtXQQzdOaNP9SZ
YZxTHVk4EEvmHeWef+xBWA8sVhh3NBZb8NEAxEJj8RziL8EqOWVQLV6IZ+hu/wBgz0v5SpR8On6R+JU/
Sv4jBEtF7lHFpqOK4yPUTcWnOXcCh4Vbye4ssk05W7jh8/Gk9wMwlTh5giCEkn1QM6Z0S/idE1YmnE6I
ZxB4RRVXjNXvxBCK0FVXqIhfaJLQ0hb/ABQoJrYm/UcqM/gBWY+4gp/qQEQtltPizuVgCrOT6Iwmhwsv
t/qBYYChvQisPGDbLAAcDh+m4zlh2YxkQkCYtmXb4e5ihyavv5+8RKtrFF4DytQe3oQRvBxywroX7ijc
JjiFvqaxSFI2XfjtPUrr75y/xHtRYGDsP+OY6EHFiP8AvzEKcOSz/epnW3kuVcCO14ZTXB+CzAKDebhw
diW+SHiJAeIIsk16h5WVzBe/jVlV6+C0qoYQgghHj4ej6Zi3idU1YmrEvrE0YhFYhBqBgiiwLX+okMYN
77Z7AnBAF6nG/wB6JdCXN3/ERTelotXuDN1F6fQ2xwT2kQ6/xiHJhe3+WKA4Kr2Z3LUNi3R+ZcobwqXN
tv8AWXVY+5eLMwPm45V9uPvHFtwgP5cfaWgKto29sdZzkEH7y7q3VXS/vFUgBLYFbJfEVxj1LIF8S/6F
W8RfgGAWzC8t8CYNTLKgLGYvILfhfzBjhtwvnzNmZWZoPtFpVzA9/FQKZz+s/cH+Gfko63k8RYy/MQVC
eAhYmzcNlSyIrbKiMDEFCDKBD6aFdOqdM65rxL6xL6xNGJXxAKxAttAbWe6CdP7gdo2kYV13tdX4PcWF
SsVfd5hIFXqUY7YB+WFB6aaL0b/QRyV8uwejR1EgQaUX9iWcrQwehxBZcqY8EE4NReD7xdsoOG1UTlo+
C9D+41Qs5/6gR4eXmNs/AmVMvfEVVVy7lSoED6V5HsXwMXtDyZlbEcRhtCe4xWmjb56iCrjEqp6lS4Md
/Fh/UV940TimqSpRVzKAojwHMPipdeViemn9GZFhLW+ZSLyZgCL41L0EDNkSoHCYblQgggMPog38TpnT
LOJ1zTiasTRiacQSsQhMWOnx7ZfInr/GOKSy3HEiUnI7/qPkbtFqwx4QA/WYhzoP5f0gIjWpR+AlppBp
z6HfcEEqrarljnQWxC2A0X3UsalKjEHq/RP7lzdeOB6I0yym1+xKtu3gcxCNPvmKvv8AaW5nV9pYhBJF
TDjJWHcD2vEWNzcpqNBWZSyYZZvk2wUsypUqGHGISRRymKyPzEaNsbW2BK+LzUh/ZUxGIr2QUNbgfQzE
BWceY7ENLmdsDEFWcwtDz+gCj5PqnRLOJ1TonVNOJoxCKxBEYFHjljXhLz/FEbG7qXo5fsRbUj83qKtI
6KXyoXGhmd3LsFmwcKcrwRg16vg8BoPUEt0loJmhqWV6PB+sQYMc3F6w8sCWqO4OAP7kyyBtVBC/9p0x
ybZdo7iaH3Bzbr1cqRTwBoiW1WEGvF8XqYMV+Q+iOXGoJh8U6w6xCqnTOn4eiV/AIvGGXTDqb6gQIQRq
bgQJUCBHQVRmBrMHtx+oYMowBemOWm54Y+dteZVjAqAQgfh6PoD6J0zqlnEv4lvE0YlXEtTQG1mFS3KO
P35+0XXR8Z67lV3ht6Ca4WgBXtl/G5LYFBQOXxFr4DmDCeMd+x49H5lh3rUtWXIIJQPcLfB4FeXb/wAj
JYsRgPdTb1aBdy5hrg8QxA/D9v6iFJ4UoPRLvgwcaJ5SU648S1UX+xK9n9Al2FteJehKYn8xFtnX8HRO
mdE6ZZxMGodYU4hXiBOiHSVcfCDxAgQIvxUCVKgQIExt3ffxP60w5hYLFKu5aGpXpM8QuqE2n0sfVOiX
cTrmnE1YmjEprEA4mMkKwPu9QBAPX+B/MV0HqUplMB/MQOptY2AMZWCbermu89+CKFQr+AceiIzf5bR1
iDdtT9A7jraWAfF+XtiExHLgbdPzMunsPuy6brBhR4l8ArDX7mCIFWZVlYuxWEEG1jPHuJdt/YiLVxYE
GjLz8XVE8fFfxOudM6J0TqgeIHxHPVTph0hHTCSD5VAlSpUCBAgTM0SfkcRf7aDyOH7lMtsi3UsHm5k4
mBVQvv5DonX8XROmdctrE1YmvE0YgnECye0x+zW2v73H2lCsXt7fgQNkv0S0UqynHmHlH4J7dTws+Sx2
8QAGr5T7HPuJrkBSUDnoIjeVAP4Cse5cUGQ0DP8AMs6py4JmV+1H3grU+bftlsYfBFXawU1AgfBgKyZt
4InA35IJWlhdnROmdU65fxOuN4lfEPxA8Tpg+IV4jwCF3U6fgzhAC3BHqse+fkgipUCBCCCCBTcpTNYc
v+B9z4m7Zub5g718yz4+udE6Z1RGsS7iW1iaMQisQDiItbjKvvxM0Umb+TyzDHRwSvLW+CUC2juFKTE5
3tdBGWpMKX28HRDiovUdX4l0xZxXD7QeM7lfQ2zSW7QH9h5gvcnA3LmSDgf6iDIMPgjKjBwXFls5lQII
fEr/AAXF8Qm3iXcTonXG8TonROqdUrnTB8ToRcJJKyohHvtPBG7R6+IQiqlfCoEICBCCCDO53lO/uRzb
QG0+mbxmyNr5fonXOmdcv4mrE0YhlYhnEap0MHK+0SsthKv28xlcu4eB6PEFCqDgihhY2UhlXiKuH4ZM
NnWvV/27YFA8T/i4hsTb+UwYA41yvfggIlsDz0E8VpmUdf3AwUPKF+5xMDg1ELcfIQIfI75kl5gnTOid
EuNTonTK+J1TqnRDrCWhD5tVGJCAiyZfjb3LPNwwIUIF/CpUIPgIIIIJJo13o+77uzvHMacS0zTx/F0z
qnRNeJ1zRiU1iAcS1cAtXRHphhOP6CVzBoMXuw8dB1LR/PPMoGr7gBqZHQ/zxCJbMugd+Y9UONfmAFPA
E24lUC3k163KEa4w69quA9/whP2P7Ybd1VhqvFcEXY8eJf0j4Lfl7dkt4lbJMPlMWp0yniF4h1h0h1lM
PiqZfCotfAVwuG7V9wv95VBUCDh8BBB8gg+CfMGBEDYmEYwQA8f6Hvnw55h1+DpiPE65fWJqxHaxNOIJ
xBino8DK+iEg4K+PbKAK9q/4Zl1Xa19ptLb5g6k3A5TjZejcvY2Hg/weoI09IeRc14mYQvaw/bOjL4PX
nhHgrVywP+5gpYr3E6faf3BV7viDXOfoCB8Fsv4l3E6pU6hy0NYlNYhpqHSFOJQ6+Cs9PjUqVKiJ4fgP
KZ8zklu5hAqEuFJUIJIr4EEn00Hpl2+E1+j5Jtkfd/14mbU650TqmrE04hFYhcIdQTrk/aNouqzKjhvJ
VamEvmm/b/Eab78RrkhukPtypaIq2rAr7R2hvaMszg3KDFHiIrrGtL8B+/Udrl6PZD9glXTKHVHgDBG2
AGS3xAKXHiWr4qBKgZ+Vzy3idc6oniJidPx1cQXj5sfhjE+GkfgXJAdxVkP3fAiDGElfFQtD5lQgk+mF
dU6p0xVZPAnTNeJrxOqGcRsNbVK/zvF/SS3yDtMsVpVtPTlipF2n/wCB0TuO6NwUBLdO/cdx8hwuDF5T
DEcWnxkt6ICvjNre3b936BzccvyEqVLIfN8s0S6sTonRKOJXK4QKhGMWMYBCI23Dv2EWsK7ZcEvv4A+L
i/FRoLdQkpKlQIQfRQv4+DonTOiX8TpmrEsrErrEA4jjxcqiITV6j7EsXDlVQnSHUoZcAOyxXB+sUs+X
Npd1axID52iKtS3LzcZMQNAAoYoGF5XwNr6iSSqVWPY0dH3v/wAKgQIQTllkyS+dcoTE1zpnROmUfGPi
4sWLGnwX8xtcuIlUcwZlrzKhZBS/ipUUIjKr4q4QfSUOudUs4nVNeJfxNGJrxNeIJWIgs1uAI0CDvc9E
GcOf88SwNWnbBdcNF/yxmD4vlfB5YS90RpqyL/qJRynTo/7EghRGRYLKJV80faS/uP2uJ4daLxeHg/eK
SqPqJlKgX9Ap1lkzTXOudcpSChA+XVTUuLFiwCeKKab7JUGHAZWVQ087WYb7RUqdh9xsSbpEBC97CyeZ
3f79zSj7P7h/wH9zXTX4/wC5pH/XuWWovz/3CGy8U/cwG/vk/wBCVcIIPqod0S3idU6JrxNeJrxCOIBx
KHxqx/QIfVhYN32+Y6Yrmsqx7Bf4I8OW+WOoJmyHwuh+8t2yfCPl2sTUU2raxUxBEYiAgMdSvQMrNa0F
bnkP7JY04pHb9dQIQ5fQ9jlvEpdS01KnUxmJ1TTiUTFAr4fhi8q2lEw7qn7tSxD5n/wIAZ+1T7MVg/Sd
kKVaWYZtuh2+iViBv+I1+8RcNW/bwRns4Dg8EUGxbl0RX3QNsQ0hxuUGbTwxEcCv3gToM3FLnfmKgYx5
hBJ9MP6pbxOiW8TrmrE0YlVYhnEsiLaUEAKaL6PRzFqntJmBPjW/f9SnH0RiJbKleDyy2jc4SD/jB+sU
qlVtWMtQkVEYsUMO3qEWW+jUxjbsB9trtuX8P2ioqVfrCB9YjemdEozUwanTMkvJVKvjcv4WoWEMX0ej
mJU+O7r+oCUqPNZmT59/FlxHCVvgzG0we1QWuvI/UP7iKlNps+/HqVrXnnljiAXp1Cw55Lgibowq1Gfx
Bt7S5irGtq/MWtu/JFt38n1UMR4nRL+JoxNeI7WJRWIBxLE0BL1Xo+Pr+5X0byIQAPIZoIhpfRf9zFwN
GiDAo0WHgEvo8A+gP55irGTENGHzEXoBtXxCN4Wa/Phfz6iBFTarav0P0VAxcCHw7JpqZZZOia8TqhY1
K3Uw6mXUr+EgfC1KYDRCkYHi/MxABb5MFsxNXK6OWWc06qU2AbVqJhPKv8xcgVYVcNuZP9Bwdykuw5cs
RSiwxej7Ru5fCwRQZ8t11AwIeCYLKHg2+5gNHBACoK/8U7qnROqWVidM14mvEr4gwglBb31CUvVcvvzK
HAp5g5Q+cH/WOBotpn+hKoitrxG/CNP5H+o/WYw+7XrX5jrUZMRCWENYWpoDysFpXQwFoPI3214+m5cu
FsHeaPeItlg5qCd/QlbLeIVdTrmrE6Zg1OmdHxAQSBAl1KY+S3g8zxUvAP8AcWoOgxKDSez7ZdWnyrBm
9jCv8ubw8OH4gdOB4iS1l06i+NG3zM8W4BYLgNLhhmrQlWB9jf5YubU8VKi2/HMSnczxKXhjiXALS1OI
V+e6p0zqnXOmasTXiVcQziBAFtd/3eJQeAaD2x1bQtAbiaIbeorMyRauiv4j9X/IejcTuwdGD0ee2eIo
oczqRUgyliymRXfQOXqcGvmBxht7x4jv4v4fkSXVHlxNJe3VxJvPTCe8HogDW5fx8dnE14lZqWOp1whb
8UWHSVwIfI0g3LiNWH5lZdGS49nj1HJq/pFPg5pDB3/yHhgtg0e/MUqrzL8s4holkye4Cvg5ANzKTLn2
x6CeTj1lDOX52y1hFNXxKZDmONuO4jyXmHA7JkNqyhiV8KnM6p0zqnXNGJqxNeJqxAOIYQQLWpQSypmx
Z6EvKz7Vle2XxSDyoYC4DBePRPsBlX4SzGvxLBSvh6uiKj2mU6FmgYKtAAtWYDnKtOn7te5Zv+kdBoPX
16l95fVx3jRG4ouXTRvgjLQTCsJS18fTLKxMepgalWUAdZ4IpalEqIKBBKg1MtJqgL+8sbfx+0kcil01
P8sNDAWrX26/EBWt1dsLwnJXwWsNRulLmGJi8s1Vq+IlOd/GdoPLiHX0jNS1TLQ0sbC1tpweCWBaDrxC
5HfnxDTA0eYizgPEChlcGafEByFf5uWlu+xJZwmaiz7RSFD9ZUUOgURNDJ03U6JfxOia8TXia8QCsQOE
Eozjm/CKVK5FvxqMOW3bCWL6jgnCpgaz9vEXEX83BBS3FhjtdARsuCFTXgce2P0q8cRyUX6hAoIwCeEB
2whYWGXbkeH3PgRs76Jcv0VAiBenlxKK3q3UTJLW6PMaAlZxGoMf3IiLzOmdcy6mLM5ADywLhXtJRl12
yxQjpuBV6I8Q+o2MuGf/AGWR2iX+aiaUXNH8xoBPJf2YnQ+V23l9Rz4JbgeA4PUt5Wy7C6S0twIQ1QbV
L+x+0AWkOy7mmeiM4V6ill3gh/J8BWYCUn3MFtm873AFauOSFy7FWysAzoO9QFcqcaJc25eI2aD9JQFv
YeO2OrNyh2HliCbKjH/yOELFtH6Ynj2LY0mvFbgZmr/nMeao7kG9fhW33nROmXVidcMrEINRCI/O315l
EM43f0IoKVquX3Gd1l0jLRvpqJcdvfEwQYeuHWYWbS9vghcea8T7H8uYeSHguoBEo8wQv9CA6Vys38eT
Lnxsn7I5e22WfGYLlKtH0hbKwVLVh/MCt+8tha0PwTSmKY4gxaUJsmbUtqdECUZiaugi8T02yvD+9HqI
eSErT7GD8xUUuV368sXdM/oI4/ePib1tPVxOgrtIbN1flhqZPgcEWg/hKBa67iXC14gdA4FsAFUtXtfb
LgAOTbGSXOwOX3BG7eLYYVh4uoHSntjTC3Xi2Iyse8QGoV9yoLE53FdpeF5YNWV/WJG3Hj+Y8T6cyzai
y3DHdSsL7t+3qARF3t5f8huB3lcEHjHVMHaIcYzPeAqiLcAL4ikxZKB/dNWJqxOqGcQBEnGl5D0c+9Tt
fiupgZ5GUKh3zHCtu63EWBftCBV9EakceIWTKqQHfcS+ywLv/kpKy21v7eJdTR7ldwx5HweX1G+qUVHY
bv3/ABEtndgvw1KB7rcu/oCDlidJllktI8bIAqVviCUKPjDDNbZyXqUQmuRy+4tA2xxgIHY+htnBs9v4
jixjlUhVn7WalTwUWCgez9plxzzMOvzBqf5hixHutRJoLyoe2LlMwag6luGoLnuVC5bjGNq4IAUtjkNR
DUoqvzEdsLv+pZP5c5fbKAPRl9WbswLizkrFxaqroZmqIbtf4i4PtB/UwWB7mBAeaYnbo/WKa4DXEsdL
m7/iJghvnOY6AOxu5YLS8xa058EYVrgefc2NbMbYlCobcn1/vMRgw9Sl3+ZkwJPSC01RMb3H5IXwudUA
rEIjM/Ec9A5gq7nL/I/xM6lHKwgJNkX2+CYSAxwIGiwl7nfiUGhMZw6jgRVStD15969xilc2RIKAgQT+
kxDbDm/qOWJ9MDQ+A4INYNSnfEEcXK+KlQJVJ8QBo0vJEqwPLH6wY0p+ZyAeX+CLSUvJDK2j4wEwzicl
xat4+ogyB8VFuczHj4YFNQUtWMX6xhQZvjzEw0bFwynuHg4lSqiKgr1F7IPiBCCujFdxIRF4FY/EtTaX
nymkcGMaJagOcEu/YQzgsdRQ0NPARCUj+rK1WrxC5dOjNQZgBdUl6BA5qoA4liUQBzj+IgXn+YlLTeRq
ZKBr3uGHlAI2l1aUf9haxHLweYAUhl8EsjN88xFlCtFkS3xfwBWSXbVEEIAQJR4Xu/meWKYAPB4IyMTa
MEsTB8sTDCMagTAeZu1qi/QELoKYBb7AzA3rLk8LuoiCOjEvpYOHeEObt56M+ossJRivCDgiGh+XUU8C
+orz+kr4C5UqEBoWrCS3QajuWHBFAbp+8LDx+hESho6rmZ9/wIpan6QgQW4LhCjMLZr+SYFoDvmZW2XA
LFlK09FwFeXjAIo/9SyUMKuDZCoSK4vjuYG8HBqXKFrxNirRxLrnMtVXiCMGO4pFb8z8sCcQXMsc8TCL
bjmILNMBbEco4PEwGqNvnwRz231hA9Kn3gGDe7CaqGxf2xE78ucN/Yi76UYuZooOnFwA0OexJqTp4+m3
zBCP+ENHctm7jyHbtjt2Bw+Ijnf6ETk14iLUGUo+2+dBFbAYa/gOjtzOdl2X6x1MWxDUVkZSH9MvYHdx
2/iXySpiu/ioEqVA+FBliCBpysEYN3Rom1rLeZcLWBV8Sly1J3oHRK+ghB8waHMywfRKZpfA5iaCMqg9
bgsiqxTiY7Ml0S1229wGUpjbol40fqf79oLUP6xhRy7ZYxqszDLvxEoL5+TKVPK4/Epeg+YF3a+VLlFm
gcuJtCHdxY5Q44PsbY1Bs5X9RYOW6lFFh3WvvLirPAMeWjwsbrcsW9zMeLuLqgA65noV6izf5IS7Kzwc
fT//2Q==
</value>
</data>
</root>

View File

@@ -0,0 +1,29 @@
Public NotInheritable Class FrmAboutDialog
Private Sub FrmAboutDialog_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' 设置此窗体的标题。
Dim ApplicationTitle As String
If My.Application.Info.Title <> "" Then
ApplicationTitle = My.Application.Info.Title
Else
ApplicationTitle = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName)
End If
Me.Text = String.Format("关于 {0}", $"C系列配置工具")
' 初始化“关于”对话框显示的所有文字。
' 在项目的“应用程序”窗格中自定义此应用程序的程序集信息
' 属性对话框(在“项目”菜单下)。
Me.LabelProductName.Text = $"C系列配置工具" 'My.Application.Info.ProductName
Me.LabelVersion.Text = String.Format(" 版本 v{0}", My.Application.Info.Version.ToString)
Me.LabelCopyright.Text = $" 版权所属 白羽"
Me.LabelCompanyName.Text = $"公司名称 深圳市宝来威智能科技有限公司"
'Me.TextBoxDescription.Text = My.Application.Info.Description
End Sub
Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click
Me.Close()
End Sub
Private Sub TableLayoutPanel_Paint(sender As Object, e As PaintEventArgs) Handles TableLayoutPanel.Paint
End Sub
End Class

View File

@@ -0,0 +1,233 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class FrmAddDevice
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.TextBox2 = New System.Windows.Forms.TextBox()
Me.Label3 = New System.Windows.Forms.Label()
Me.TextBox3 = New System.Windows.Forms.TextBox()
Me.Label4 = New System.Windows.Forms.Label()
Me.TextBox4 = New System.Windows.Forms.TextBox()
Me.Label5 = New System.Windows.Forms.Label()
Me.TextBox5 = New System.Windows.Forms.TextBox()
Me.Label6 = New System.Windows.Forms.Label()
Me.TextBox6 = New System.Windows.Forms.TextBox()
Me.Label7 = New System.Windows.Forms.Label()
Me.TextBox7 = New System.Windows.Forms.TextBox()
Me.Label8 = New System.Windows.Forms.Label()
Me.Button1 = New System.Windows.Forms.Button()
Me.Button2 = New System.Windows.Forms.Button()
Me.SuspendLayout()
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label1.Location = New System.Drawing.Point(121, 23)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(123, 19)
Me.Label1.TabIndex = 0
Me.Label1.Text = "新增设备信息"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(75, 72)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(53, 12)
Me.Label2.TabIndex = 1
Me.Label2.Text = "设备型号"
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(134, 69)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(159, 21)
Me.TextBox1.TabIndex = 2
'
'TextBox2
'
Me.TextBox2.Location = New System.Drawing.Point(134, 96)
Me.TextBox2.Name = "TextBox2"
Me.TextBox2.Size = New System.Drawing.Size(159, 21)
Me.TextBox2.TabIndex = 4
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(75, 99)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(53, 12)
Me.Label3.TabIndex = 3
Me.Label3.Text = "设备类型"
'
'TextBox3
'
Me.TextBox3.Location = New System.Drawing.Point(134, 123)
Me.TextBox3.Name = "TextBox3"
Me.TextBox3.Size = New System.Drawing.Size(159, 21)
Me.TextBox3.TabIndex = 6
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.Location = New System.Drawing.Point(75, 126)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(53, 12)
Me.Label4.TabIndex = 5
Me.Label4.Text = "设备名称"
'
'TextBox4
'
Me.TextBox4.Location = New System.Drawing.Point(134, 150)
Me.TextBox4.Name = "TextBox4"
Me.TextBox4.Size = New System.Drawing.Size(159, 21)
Me.TextBox4.TabIndex = 8
'
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.Location = New System.Drawing.Point(75, 153)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(53, 12)
Me.Label5.TabIndex = 7
Me.Label5.Text = "协议编号"
'
'TextBox5
'
Me.TextBox5.Location = New System.Drawing.Point(134, 177)
Me.TextBox5.Name = "TextBox5"
Me.TextBox5.Size = New System.Drawing.Size(159, 21)
Me.TextBox5.TabIndex = 10
'
'Label6
'
Me.Label6.AutoSize = True
Me.Label6.Location = New System.Drawing.Point(75, 180)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(41, 12)
Me.Label6.TabIndex = 9
Me.Label6.Text = "波特率"
'
'TextBox6
'
Me.TextBox6.Location = New System.Drawing.Point(134, 204)
Me.TextBox6.Name = "TextBox6"
Me.TextBox6.Size = New System.Drawing.Size(159, 21)
Me.TextBox6.TabIndex = 12
'
'Label7
'
Me.Label7.AutoSize = True
Me.Label7.Location = New System.Drawing.Point(75, 207)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(53, 12)
Me.Label7.TabIndex = 11
Me.Label7.Text = "功能说明"
'
'TextBox7
'
Me.TextBox7.Location = New System.Drawing.Point(134, 231)
Me.TextBox7.Multiline = True
Me.TextBox7.Name = "TextBox7"
Me.TextBox7.Size = New System.Drawing.Size(159, 54)
Me.TextBox7.TabIndex = 14
'
'Label8
'
Me.Label8.AutoSize = True
Me.Label8.Location = New System.Drawing.Point(75, 234)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(29, 12)
Me.Label8.TabIndex = 13
Me.Label8.Text = "备注"
'
'Button1
'
Me.Button1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button1.Location = New System.Drawing.Point(174, 313)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(78, 37)
Me.Button1.TabIndex = 15
Me.Button1.Text = "保存"
Me.Button1.UseVisualStyleBackColor = True
'
'Button2
'
Me.Button2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button2.Location = New System.Drawing.Point(277, 313)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(78, 37)
Me.Button2.TabIndex = 16
Me.Button2.Text = "取消"
Me.Button2.UseVisualStyleBackColor = True
'
'FrmAddDevice
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(371, 358)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.TextBox7)
Me.Controls.Add(Me.Label8)
Me.Controls.Add(Me.TextBox6)
Me.Controls.Add(Me.Label7)
Me.Controls.Add(Me.TextBox5)
Me.Controls.Add(Me.Label6)
Me.Controls.Add(Me.TextBox4)
Me.Controls.Add(Me.Label5)
Me.Controls.Add(Me.TextBox3)
Me.Controls.Add(Me.Label4)
Me.Controls.Add(Me.TextBox2)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.TextBox1)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Name = "FrmAddDevice"
Me.Text = "新增设备"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Label1 As Label
Friend WithEvents Label2 As Label
Friend WithEvents TextBox1 As TextBox
Friend WithEvents TextBox2 As TextBox
Friend WithEvents Label3 As Label
Friend WithEvents TextBox3 As TextBox
Friend WithEvents Label4 As Label
Friend WithEvents TextBox4 As TextBox
Friend WithEvents Label5 As Label
Friend WithEvents TextBox5 As TextBox
Friend WithEvents Label6 As Label
Friend WithEvents TextBox6 As TextBox
Friend WithEvents Label7 As Label
Friend WithEvents TextBox7 As TextBox
Friend WithEvents Label8 As Label
Friend WithEvents Button1 As Button
Friend WithEvents Button2 As Button
End Class

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,49 @@
Public Class FrmAddDevice
''' <summary>
''' 设备列表表名
''' </summary>
Private _DevLists As String = $"CSeries_DevLists"
''' <summary>
''' 保存按键
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If TextIsNull(TextBox1, "设备型号") = False Then Exit Sub
If TextIsNull(TextBox2, "设备类型") = False Then Exit Sub
If TextIsNull(TextBox3, "设备名称") = False Then Exit Sub
If TextIsNull(TextBox4, "协议编号") = False Then Exit Sub
If TextIsNull(TextBox5, "波特率") = False Then Exit Sub
If TextIsNull(TextBox6, "功能说明") = False Then Exit Sub
Dim devTypeNumber As String = TextBox1.Text '设备型号
Dim devType As String = TextBox2.Text '设备类型
Dim devName As String = TextBox3.Text '设备名称
Dim devxieyi As String = TextBox4.Text '协议编号
Dim devBaud As String = TextBox5.Text '波特率
Dim functionExplain As String = TextBox5.Text '功能说明
Dim remarks As String = TextBox6.Text '备注
Dim conditions As String = $"(DevTypeNumber, DevType, DevName, DevProtocol, DevBaud, FunctionalExplain, Remarks) Values('{devTypeNumber}', '{devType}', '{devName}', '{devxieyi}', '{devBaud}', '{functionExplain}', '{remarks}')"
_SqlServer.Add(_DevLists, conditions)
MsgBox($"新增完成")
End Sub
''' <summary>
''' 关闭窗体按键
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Close()
End Sub
End Class

View File

@@ -0,0 +1,114 @@
Imports System.ComponentModel
Public Class FrmAdvancedSettings
#Region "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
Private Sub MultiLanguageInfo()
Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.NetworkSettings)
LblPort1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LocalPort)
LblLongIP.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RemoteIP)
LbllongPort1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RemotePort)
BtnNetworkConnect.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.CloseConnection)
End Sub
#End Region
#Region "初始化"
''' <summary>
''' 初始化上一次关闭窗体前保存的配置数据
''' </summary>
Private Sub InitLastTimeConfig()
CboLongIP.Text = My.Settings.RemoteIP
If NudLocalPort.Value = 0 Then
NudLocalPort.Value = GetRandomPort()
End If
'NudLocalPort.Value = My.Settings.LocalPort
End Sub
'''' <summary> Ip次数 </summary>
'Private _ipCount As Integer = 0
'''' <summary>
'''' 初始化网络信息
'''' </summary>
'Private Sub InitNetWorkInfo()
' _ipCount += 1
' FrmCSeriesConfig.CboLocalIPInfo.Items.Clear()
' FrmCSeriesConfig.CboLocalIPInfo.Items.AddRange(GetLocalIp().ToArray)
' If _ipCount > 1 Then Return
' If FrmCSeriesConfig.CboLocalIPInfo.Items.Count > 0 Then FrmCSeriesConfig.CboLocalIPInfo.SelectedIndex = 0
'End Sub
''' <summary>
''' 窗体加载事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmAdvancedSettings_Load(sender As Object, e As EventArgs) Handles Me.Load
InitLastTimeConfig()
'InitNetWorkInfo()
MultiLanguageInfo()
End Sub
''' <summary>
''' 点击连接
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnNetworkConnect_Click(sender As Object, e As EventArgs) Handles BtnNetworkConnect.Click
NetworkConnect()
End Sub
''' <summary>
''' 网络连接
''' </summary>
Public Sub NetworkConnect()
_localIP = FrmCSeriesConfig.CboLocalIPInfo.Text
_localPort = GetRandomPort()
NudLocalPort.Value = _localPort
If BtnNetworkConnect.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.OpenConnection)}" Then
BtnNetworkConnect.ForeColor = Color.Red
BtnNetworkConnect.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CloseConnection)}"
'FrmCSeriesConfig.NetworkConnectChange()
'FrmCSeriesConfig.CboLocalIPInfo.Enabled = False
NudLocalPort.Enabled = False
ElseIf BtnNetworkConnect.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CloseConnection)}" Then
BtnNetworkConnect.ForeColor = Color.Green
BtnNetworkConnect.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.OpenConnection)}"
'FrmCSeriesConfig.NetworkConnectChange()
'FrmCSeriesConfig.CboLocalIPInfo.Enabled = True
NudLocalPort.Enabled = True
End If
End Sub
''' <summary>
''' 窗体关闭事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmAdvancedSettings_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
My.Settings.RemoteIP = CboLongIP.Text
My.Settings.LocalPort = NudLocalPort.Value
My.Settings.Save()
End Sub
#End Region
End Class

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,156 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmHotelList
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.Panel3 = New System.Windows.Forms.Panel()
Me.Button2 = New System.Windows.Forms.Button()
Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.Button1 = New System.Windows.Forms.Button()
Me.Button5 = New System.Windows.Forms.Button()
Me.Grid5 = New FlexCell.Grid()
Me.TreeView1 = New System.Windows.Forms.TreeView()
Me.LblUserInfo = New System.Windows.Forms.Label()
Me.Panel3.SuspendLayout()
Me.SuspendLayout()
'
'Panel3
'
Me.Panel3.Controls.Add(Me.Button2)
Me.Panel3.Controls.Add(Me.TextBox1)
Me.Panel3.Controls.Add(Me.Button1)
Me.Panel3.Controls.Add(Me.Button5)
Me.Panel3.Controls.Add(Me.Grid5)
Me.Panel3.Controls.Add(Me.TreeView1)
Me.Panel3.Controls.Add(Me.LblUserInfo)
Me.Panel3.Dock = System.Windows.Forms.DockStyle.Fill
Me.Panel3.Location = New System.Drawing.Point(0, 0)
Me.Panel3.Name = "Panel3"
Me.Panel3.Size = New System.Drawing.Size(718, 476)
Me.Panel3.TabIndex = 1
'
'Button2
'
Me.Button2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button2.ForeColor = System.Drawing.SystemColors.ControlText
Me.Button2.Location = New System.Drawing.Point(556, 18)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(76, 26)
Me.Button2.TabIndex = 12
Me.Button2.Text = "Search"
Me.Button2.UseVisualStyleBackColor = True
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(316, 20)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(219, 21)
Me.TextBox1.TabIndex = 11
'
'Button1
'
Me.Button1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button1.ForeColor = System.Drawing.SystemColors.ControlText
Me.Button1.Location = New System.Drawing.Point(556, 111)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(76, 40)
Me.Button1.TabIndex = 8
Me.Button1.Text = "退出"
Me.Button1.UseVisualStyleBackColor = True
'
'Button5
'
Me.Button5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button5.ForeColor = System.Drawing.Color.Green
Me.Button5.Location = New System.Drawing.Point(556, 50)
Me.Button5.Name = "Button5"
Me.Button5.Size = New System.Drawing.Size(76, 40)
Me.Button5.TabIndex = 5
Me.Button5.Text = "选中"
Me.Button5.UseVisualStyleBackColor = True
'
'Grid5
'
Me.Grid5.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.Grid5.BackColorActiveCellSel = System.Drawing.Color.FromArgb(CType(CType(128, Byte), Integer), CType(CType(128, Byte), Integer), CType(CType(255, Byte), Integer))
Me.Grid5.BackColorBkg = System.Drawing.SystemColors.Control
Me.Grid5.BorderColor = System.Drawing.SystemColors.ScrollBar
Me.Grid5.BorderStyle = FlexCell.BorderStyleEnum.Light3D
Me.Grid5.CheckedImage = Nothing
Me.Grid5.DefaultFont = New System.Drawing.Font("宋体", 12.0!)
Me.Grid5.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Grid5.GridColor = System.Drawing.SystemColors.ActiveBorder
Me.Grid5.Location = New System.Drawing.Point(280, 50)
Me.Grid5.Name = "Grid5"
Me.Grid5.ScrollBars = FlexCell.ScrollBarsEnum.Vertical
Me.Grid5.Size = New System.Drawing.Size(255, 414)
Me.Grid5.TabIndex = 7
Me.Grid5.UncheckedImage = Nothing
'
'TreeView1
'
Me.TreeView1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.TreeView1.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.TreeView1.ForeColor = System.Drawing.Color.DarkCyan
Me.TreeView1.LineColor = System.Drawing.Color.Gray
Me.TreeView1.Location = New System.Drawing.Point(97, 50)
Me.TreeView1.Name = "TreeView1"
Me.TreeView1.Size = New System.Drawing.Size(184, 414)
Me.TreeView1.TabIndex = 6
'
'LblUserInfo
'
Me.LblUserInfo.AutoSize = True
Me.LblUserInfo.Font = New System.Drawing.Font("宋体", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblUserInfo.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
Me.LblUserInfo.Location = New System.Drawing.Point(55, 22)
Me.LblUserInfo.Name = "LblUserInfo"
Me.LblUserInfo.Size = New System.Drawing.Size(89, 19)
Me.LblUserInfo.TabIndex = 0
Me.LblUserInfo.Text = "欢迎您!"
'
'FrmHotelList
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(718, 476)
Me.Controls.Add(Me.Panel3)
Me.Name = "FrmHotelList"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "酒店列表"
Me.Panel3.ResumeLayout(False)
Me.Panel3.PerformLayout()
Me.ResumeLayout(False)
End Sub
Friend WithEvents Panel3 As Panel
Friend WithEvents Button5 As Button
Friend WithEvents Grid5 As FlexCell.Grid
Friend WithEvents TreeView1 As TreeView
Friend WithEvents LblUserInfo As Label
Friend WithEvents Button1 As Button
Friend WithEvents Button2 As Button
Friend WithEvents TextBox1 As TextBox
End Class

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,456 @@
Imports System.ComponentModel
Public Class FrmHotelList
#Region "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
Private Sub MultiLanguageInfo()
Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HotelList)
Button5.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Checked)
Button1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.HomeExit)
End Sub
#End Region
#Region "初始化信息"
Private _count As Integer = 0
Public FCsConfig As FrmCSeriesConfig
''' <summary>
''' 初始化酒店列表
''' </summary>
''' <param name="match"></param>
Public Sub InitHotelList(match As Boolean, mainfrom As FrmCSeriesConfig)
FCsConfig = mainfrom
If match = False Then
TreeView1.Nodes.Clear()
Grid5.NewFile()
InitHotelTable()
_count = 0
Button5.ForeColor = Color.Green
Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Checked)}"
TreeView1.Enabled = True
Grid5.Enabled = True
End If
LblUserInfo.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeYou)}{_userNames} {LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectYourHotel)}"
_count += 1
If _count = 1 Then
MultiLanguageInfo()
InitHotelInfo()
End If
InitLoadHotelInfo()
End Sub
#End Region
#Region "权限管理_酒店管理"
''' <summary>
''' 权限列表
''' </summary>
Enum EnAuthInfo
''' <summary> 空 </summary>
Null
''' <summary> 锁定权限 </summary>
Lock
''' <summary> 授权时间 </summary>
AuthorizedTime
Auth3
Auth4
Auth5
Auth6
Auth7
Auth8
Auth9
''' <summary> 升级/房态/季节 </summary>
UpdateAndRoomStateAndSeason
Auth11
Auth12
Auth13
Auth14
Auth15
Auth16
''' <summary> 研发管理 </summary>
ResearchManage
Auth18
''' <summary> 批量下发 </summary>
BatchIssued
End Enum
Private Sub Grid5_Click(Sender As Object, e As EventArgs) Handles Grid5.Click
If Grid5.ActiveCell.Row > 0 Then
_projectNumber = Grid5.Cell(Grid5.ActiveCell.Row, HotelDataCol.ProjectNumber).Text
_HotelName = Grid5.Cell(Grid5.ActiveCell.Row, HotelDataCol.HotelName).Text
End If
End Sub
''' <summary>
''' 选择酒店事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
Buttin5click()
End Sub
Public Sub Buttin5click()
FCsConfig.NoAuthority()
If Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Checked)}" Then
If TipInfo() = False Then Return
AddAuthorityInfo()
Button5.ForeColor = Color.Red
Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Loosen)}"
TreeView1.Enabled = False
Grid5.Enabled = False
ElseIf Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Loosen)}" Then
Button5.ForeColor = Color.Green
Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Checked)}"
TreeView1.Enabled = True
Grid5.Enabled = True
End If
FCsConfig.LblUserNames.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.TheCurrentHotel)}{_projectNumber}-{_HotelName} | {_userNames} {LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeYou)} "
FCsConfig.TextBox9.Text = _projectNumber
'FCsConfig.ComboBox16.Text = ""
FCsConfig.ComboBox16.Items.Clear()
FCsConfig.ComboBox17.Text = ""
FCsConfig.ComboBox17.Items.Clear()
FCsConfig.CBoRoomTpRemark.Checked = False
FCsConfig.CBoRoomNuRemark.Checked = False
FCsConfig.CheckBox37.Checked = False
FCsConfig.Network_cke.Checked = False
FCsConfig.Iptype_txt.Text = ""
FCsConfig.Loadip_txt.Text = ""
FCsConfig.IPMask_txt.Text = ""
FCsConfig.IPGateway_txt.Text = ""
FCsConfig.ServerIP_txt.Text = ""
FCsConfig.ipconfig_txt.Text = ""
FCsConfig.IpDns_txt.Text = ""
FCsConfig.IpPort_txt.Text = ""
FCsConfig.TextBox25.Text = ""
FCsConfig.TextBox21.Text = ""
AuthorityInfo(FCsConfig)
End Sub
''' <summary>
''' 提示信息
''' </summary>
''' <returns></returns>
Private Function TipInfo() As Boolean
If Grid5.Cell(Grid5.ActiveCell.Row, HotelDataCol.ProjectNumber).Text = Nothing Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}")
Return False
End If
If _projectNumber = $"" Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}")
Return False
End If
If _HotelName = $"" Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}")
Return False
End If
Return True
End Function
''' <summary>
''' 添加权限
''' </summary>
Public Sub AddAuthorityInfo()
_authorityInfo.Clear()
For index = 0 To _loginData.Values.Count - 1
If _HotelName = _loginData.Values(index).HotelName AndAlso _projectNumber = _loginData.Values(index).Code Then
_authorityInfo.Add(_loginData.Values(index).AuthorityId, _loginData.Values(index).AuthotypeId)
End If
Next
End Sub
''' <summary>
''' 添加上一次保存的酒店权限
''' </summary>
Public Sub AddLastTimeAuthorityInfo()
_authorityInfo.Clear()
For index = 0 To _loginData.Values.Count - 1
If My.Settings.HotelName = _loginData.Values(index).HotelName AndAlso My.Settings.ProjectCode = _loginData.Values(index).Code Then
_authorityInfo.Add(_loginData.Values(index).AuthorityId, _loginData.Values(index).AuthotypeId)
End If
Next
End Sub
''' <summary>
''' 权限管理_权限信息
''' </summary>
Public Sub AuthorityInfo(Config As FrmCSeriesConfig)
FCsConfig = Config
For index = 0 To _authorityInfo.Count - 1
Select Case _authorityInfo.Keys(index)
Case EnAuthInfo.Lock '锁定
FCsConfig.LockAuth(_authorityInfo.Values(index))
Case EnAuthInfo.AuthorizedTime '授权时间
FCsConfig.AuthorizedTimeAuth(_authorityInfo.Values(index))
Case EnAuthInfo.UpdateAndRoomStateAndSeason '升级&房态&季节
FCsConfig.UpdateRoomStateSeasonAuth(_authorityInfo.Values(index))
Case EnAuthInfo.ResearchManage '研发管理
FCsConfig.UpdateResearchManageAuth(_authorityInfo.Values(index))
Case EnAuthInfo.BatchIssued '批量下发
FCsConfig.UpdateBatchIssuedAuth(_authorityInfo.Values(index))
End Select
Next
End Sub
'''' <summary>
'''' 选择页面
'''' </summary>
'''' <param name="sender"></param>
'''' <param name="e"></param>
'Private Sub TabControl1_Selecting(sender As Object, e As TabControlCancelEventArgs) Handles TabControl1.Selecting
' If Button5.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Checked)}" Then
' MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseSelectTheHotelUnderYourName)}")
' e.Cancel = True
' End If
'End Sub
''' <summary>
''' 初始化酒店区域信息
''' </summary>
Public Sub InitHotelInfo()
InitHotelTable()
Dim nodeOne As TreeNode = TreeView1.Nodes.Add($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.AllHotel)}")
Dim dic As Dictionary(Of String, Integer) = AddHotelInfo()
For index = 0 To dic.Count - 1
nodeOne.Nodes.Add(dic.ElementAt(index).Key & "-(" & dic.ElementAt(index).Value & ")")
Next
End Sub
Public Function AddHotelInfo()
Dim dic As New Dictionary(Of String, Integer)
dic.Clear()
Dim txt As String
For index = 0 To _loginData.Count - 1
txt = _loginData.Values(index).HotelGroupsName
If dic.ContainsKey(txt) Then
dic(txt) += 1
Else
dic.Add(txt, 1)
'nodeOne.Nodes.Add(txt)
End If
Next
Return dic
End Function
''' <summary>
''' 树状目录点击事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
'Console.WriteLine(e.Node.Text & " " & e.Node.Index & " " & e.Node.Level & " " & e.Node.FullPath)
'Grid5.DisplayRowNumber = True
Dim str As String() = e.Node.Text.Split($"-")
'Console.WriteLine($"点击酒店:" & str(0))
Grid5.NewFile()
InitHotelTable()
Dim rowCount As Integer = 0
Dim dic As New Dictionary(Of String, Integer)
For index = 0 To _loginData.Values.Count - 1
If str(0) = _loginData.Values(index).HotelGroupsName Then
'HotelGroupsName = _loginData.Values(index).HotelGroupsName
If dic.ContainsKey(_loginData.Values(index).Code) = False Then
dic.Add(_loginData.Values(index).Code, 1)
Grid5.Rows += 1
rowCount += 1
Grid5.Cell(rowCount, 1).Text = _loginData.Values(index).Code
Grid5.Cell(rowCount, 2).Text = _loginData.Values(index).HotelName
'Grid5.Cell(rowCount, 1).Text = _loginData.Values(_loginData.Values.Count - 1 - index).Code
'Grid5.Cell(rowCount, 2).Text = _loginData.Values(_loginData.Values.Count - 1 - index).HotelName
End If
ElseIf str(0) = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.AllHotel)}" Then
'HotelGroupsName = _loginData.Values(index).HotelGroupsName
If dic.ContainsKey(_loginData.Values(index).Code) = False Then
dic.Add(_loginData.Values(index).Code, 1)
Grid5.Rows += 1
rowCount += 1
Grid5.Cell(rowCount, 1).Text = _loginData.Values(index).Code
Grid5.Cell(rowCount, 2).Text = _loginData.Values(index).HotelName
'Grid5.Cell(rowCount, 1).Text = _loginData.Values(_loginData.Values.Count - 1 - index).Code
'Grid5.Cell(rowCount, 2).Text = _loginData.Values(_loginData.Values.Count - 1 - index).HotelName
End If
End If
Next
End Sub
''' <summary>
''' 酒店区域表列名_枚举
''' </summary>
Enum HotelDataCol
''' <summary> 空 </summary>
Null
''' <summary> 项目编码 </summary>
ProjectNumber
''' <summary> 酒店名称 </summary>
HotelName
End Enum
''' <summary>
''' 酒店区域表列名
''' </summary>
Private _hotelTable() As String = {$"0", $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.ProjectCode)}", $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.HotelName)}"}
''' <summary>
''' 初始化酒店表格
''' </summary>
Private Sub InitHotelTable()
Grid5.Column(0).Width = 0
Grid5.Cols = _hotelTable.Length
Grid5.Rows = 1
For index = 1 To Grid5.Cols - 1
With Grid5.Cell(0, index)
.ForeColor = Color.Blue
.Text = _hotelTable(index)
.ForeColor = Color.DarkCyan
End With
With Grid5.Column(index)
.Alignment = FlexCell.AlignmentEnum.CenterCenter
If index = HotelDataCol.ProjectNumber Then
.Width = 75
Else
.Width = 180
End If
End With
Next
Grid5.SelectionMode = FlexCell.SelectionModeEnum.ByRow '设置选中行
Grid5.AllowUserSort = True
End Sub
Private Sub InitLoadHotelInfo()
Dim amountGrpByDates = From row In _userData
Group row By dateGroup = New With {
Key .Code = row.Field(Of Integer)(_userData.Columns(8).ColumnName),
Key .Name = row.Field(Of String)(_userData.Columns(7).ColumnName)
} Into Group
Select New With {
Key .Code = dateGroup.Code,
.Name = dateGroup.Name}
Dim lst = amountGrpByDates.ToList
For index = 0 To lst.Count - 1
Grid5.Rows += 1
Grid5.Cell(index + 1, 1).Text = lst(index).Code '项目编码
Grid5.Cell(index + 1, 2).Text = lst(index).Name '酒店名称
Next
End Sub
''' <summary>
''' 关闭窗体
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
My.Settings.ProjectCode = _projectNumber
My.Settings.HotelName = _HotelName
My.Settings.UserName = _userNames
My.Settings.Save()
Close()
End Sub
#End Region
#Region "窗体关闭事件"
''' <summary>
''' 窗体关闭事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmHotelList_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
My.Settings.ProjectCode = _projectNumber
My.Settings.HotelName = _HotelName
My.Settings.UserName = _userNames
My.Settings.Save()
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
If IsNothing(Grid5) AndAlso Grid5.Rows < 1 AndAlso String.IsNullOrEmptyTextBox1.Text.Trim Then Return
Dim tabstr As String
For index As Integer = 1 To Grid5.Rows - 1
tabstr = Grid5.Cell(index, 1).Text.Trim & Grid5.Cell(index, 2).Text.Trim
If tabstr.Contains(TextBox1.Text.Trim) Then
Grid5.Row(index).Position = 1
End If
Next
End Sub
#End Region
End Class

198
BLV_Studio/Control/FrmLogin.Designer.vb generated Normal file
View File

@@ -0,0 +1,198 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
<Global.System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1726")> _
Partial Class FrmLogin
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
Friend WithEvents UsernameLabel As System.Windows.Forms.Label
Friend WithEvents PasswordLabel As System.Windows.Forms.Label
Friend WithEvents UsernameTextBox As System.Windows.Forms.TextBox
Friend WithEvents PasswordTextBox As System.Windows.Forms.TextBox
Friend WithEvents OK As System.Windows.Forms.Button
Friend WithEvents Cancel As System.Windows.Forms.Button
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FrmLogin))
Me.UsernameLabel = New System.Windows.Forms.Label()
Me.PasswordLabel = New System.Windows.Forms.Label()
Me.UsernameTextBox = New System.Windows.Forms.TextBox()
Me.PasswordTextBox = New System.Windows.Forms.TextBox()
Me.OK = New System.Windows.Forms.Button()
Me.Cancel = New System.Windows.Forms.Button()
Me.CheckBox1 = New System.Windows.Forms.CheckBox()
Me.CheckBox2 = New System.Windows.Forms.CheckBox()
Me.LblLanguage = New System.Windows.Forms.Label()
Me.ComboBox1 = New System.Windows.Forms.ComboBox()
Me.SuspendLayout()
'
'UsernameLabel
'
Me.UsernameLabel.BackColor = System.Drawing.Color.Transparent
Me.UsernameLabel.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.UsernameLabel.ForeColor = System.Drawing.Color.White
Me.UsernameLabel.Location = New System.Drawing.Point(259, 54)
Me.UsernameLabel.Name = "UsernameLabel"
Me.UsernameLabel.Size = New System.Drawing.Size(74, 21)
Me.UsernameLabel.TabIndex = 0
Me.UsernameLabel.Text = "用户名"
Me.UsernameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'PasswordLabel
'
Me.PasswordLabel.BackColor = System.Drawing.Color.Transparent
Me.PasswordLabel.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.PasswordLabel.ForeColor = System.Drawing.Color.White
Me.PasswordLabel.Location = New System.Drawing.Point(259, 82)
Me.PasswordLabel.Name = "PasswordLabel"
Me.PasswordLabel.Size = New System.Drawing.Size(74, 23)
Me.PasswordLabel.TabIndex = 2
Me.PasswordLabel.Text = "密 码"
Me.PasswordLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'UsernameTextBox
'
Me.UsernameTextBox.BackColor = System.Drawing.SystemColors.ActiveCaption
Me.UsernameTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.UsernameTextBox.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.UsernameTextBox.Location = New System.Drawing.Point(332, 54)
Me.UsernameTextBox.Name = "UsernameTextBox"
Me.UsernameTextBox.Size = New System.Drawing.Size(158, 23)
Me.UsernameTextBox.TabIndex = 1
'
'PasswordTextBox
'
Me.PasswordTextBox.BackColor = System.Drawing.SystemColors.ActiveCaption
Me.PasswordTextBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.PasswordTextBox.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.PasswordTextBox.Location = New System.Drawing.Point(332, 83)
Me.PasswordTextBox.Name = "PasswordTextBox"
Me.PasswordTextBox.PasswordChar = Global.Microsoft.VisualBasic.ChrW(42)
Me.PasswordTextBox.Size = New System.Drawing.Size(158, 23)
Me.PasswordTextBox.TabIndex = 3
'
'OK
'
Me.OK.BackColor = System.Drawing.SystemColors.ActiveCaption
Me.OK.Location = New System.Drawing.Point(279, 184)
Me.OK.Name = "OK"
Me.OK.Size = New System.Drawing.Size(94, 30)
Me.OK.TabIndex = 4
Me.OK.Text = "确定(&O)"
Me.OK.UseVisualStyleBackColor = False
'
'Cancel
'
Me.Cancel.BackColor = System.Drawing.SystemColors.ActiveCaption
Me.Cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Cancel.Location = New System.Drawing.Point(396, 184)
Me.Cancel.Name = "Cancel"
Me.Cancel.Size = New System.Drawing.Size(94, 30)
Me.Cancel.TabIndex = 5
Me.Cancel.Text = "取消(&C)"
Me.Cancel.UseVisualStyleBackColor = False
'
'CheckBox1
'
Me.CheckBox1.AutoSize = True
Me.CheckBox1.Checked = True
Me.CheckBox1.CheckState = System.Windows.Forms.CheckState.Checked
Me.CheckBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup
Me.CheckBox1.ForeColor = System.Drawing.Color.White
Me.CheckBox1.Location = New System.Drawing.Point(289, 155)
Me.CheckBox1.Name = "CheckBox1"
Me.CheckBox1.Size = New System.Drawing.Size(70, 16)
Me.CheckBox1.TabIndex = 31
Me.CheckBox1.Text = "自动登录"
Me.CheckBox1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
Me.CheckBox1.UseVisualStyleBackColor = False
'
'CheckBox2
'
Me.CheckBox2.AutoSize = True
Me.CheckBox2.Checked = True
Me.CheckBox2.CheckState = System.Windows.Forms.CheckState.Checked
Me.CheckBox2.FlatStyle = System.Windows.Forms.FlatStyle.Popup
Me.CheckBox2.ForeColor = System.Drawing.Color.White
Me.CheckBox2.Location = New System.Drawing.Point(396, 155)
Me.CheckBox2.Name = "CheckBox2"
Me.CheckBox2.Size = New System.Drawing.Size(70, 16)
Me.CheckBox2.TabIndex = 32
Me.CheckBox2.Text = "记住密码"
Me.CheckBox2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
Me.CheckBox2.UseVisualStyleBackColor = True
'
'LblLanguage
'
Me.LblLanguage.BackColor = System.Drawing.Color.Transparent
Me.LblLanguage.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblLanguage.ForeColor = System.Drawing.Color.White
Me.LblLanguage.Location = New System.Drawing.Point(260, 122)
Me.LblLanguage.Name = "LblLanguage"
Me.LblLanguage.Size = New System.Drawing.Size(74, 21)
Me.LblLanguage.TabIndex = 34
Me.LblLanguage.Text = "语 言"
Me.LblLanguage.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'ComboBox1
'
Me.ComboBox1.BackColor = System.Drawing.SystemColors.ActiveCaption
Me.ComboBox1.FormattingEnabled = True
Me.ComboBox1.Location = New System.Drawing.Point(332, 123)
Me.ComboBox1.Name = "ComboBox1"
Me.ComboBox1.Size = New System.Drawing.Size(158, 20)
Me.ComboBox1.TabIndex = 35
'
'FrmLogin
'
Me.AcceptButton = Me.OK
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(24, Byte), Integer), CType(CType(16, Byte), Integer), CType(CType(14, Byte), Integer))
Me.BackgroundImage = CType(resources.GetObject("$this.BackgroundImage"), System.Drawing.Image)
Me.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.CancelButton = Me.Cancel
Me.ClientSize = New System.Drawing.Size(515, 272)
Me.Controls.Add(Me.ComboBox1)
Me.Controls.Add(Me.LblLanguage)
Me.Controls.Add(Me.CheckBox2)
Me.Controls.Add(Me.CheckBox1)
Me.Controls.Add(Me.Cancel)
Me.Controls.Add(Me.OK)
Me.Controls.Add(Me.PasswordTextBox)
Me.Controls.Add(Me.UsernameTextBox)
Me.Controls.Add(Me.PasswordLabel)
Me.Controls.Add(Me.UsernameLabel)
Me.DoubleBuffered = True
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "FrmLogin"
Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "登录"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents CheckBox1 As CheckBox
Friend WithEvents CheckBox2 As CheckBox
Friend WithEvents LblLanguage As Label
Friend WithEvents ComboBox1 As ComboBox
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,453 @@
Imports System.Data.Common
Imports System.Drawing.Drawing2D
Imports System.IO
Imports System.Net
Imports System.Text
Imports Newtonsoft.Json
Public Class FrmLogin
#Region "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
''' <summary> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺͰ汾<CDB0><E6B1BE>Ϣ </summary>
Public dicNC As New Dictionary(Of String, Integer)
''' <summary>
''' <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
''' </summary>
Private Sub InitmultiLanguage()
Dim lag As DataTable = GetCloudVersionInfo()
For index = 0 To lag.Rows.Count - 1
dicNC.Add(lag(index)(0), lag(index)(1))
Next
ComboBox1.Items.AddRange(dicNC.Keys.ToArray)
If ComboBox1.Items.Count > 0 Then ComboBox1.SelectedIndex = 0
End Sub
''' <summary>
''' <20><>ȡ<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>ݰ汾
''' </summary>
''' <returns></returns>
Private Function GetCloudVersionInfo() As DataTable
Dim dtVer As DataTable = _SqlLogin.GetCloudVersionInfo()
Return dtVer
End Function
''' <summary>
''' <20><>ȡ<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
''' </summary>
''' <returns></returns>
Private Function GetCloudDataInfo(languageName As String) As DataTable
Dim dtData As DataTable = _SqlLogin.GetCloudDataInfo(languageName)
Return dtData
End Function
''' <summary>
''' <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC>ı<EFBFBD>
''' </summary>
Private Sub InitMultiLanguageInfo()
'If IsNothing(LanguageData) Then Return
Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Login) & $" v{Application.ProductVersion}"
UsernameLabel.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.UserName)
PasswordLabel.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PassWord)
CheckBox1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.AutomaticLogin)
LblLanguage.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Language)
CheckBox2.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RememberPassWord)
OK.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginDetermine)
Cancel.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginCancel)
End Sub
#End Region
#Region "<22><>¼<EFBFBD>ӿ<EFBFBD>"
Public _countIndex As Integer = 0
''' <summary>
''' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>Ϣ
''' </summary>
Private Function DealLoginInfo() As Boolean
Dim user As String = UsernameTextBox.Text
Dim pwd As String = PasswordTextBox.Text
user = user.Trim()
pwd = pwd.Trim()
' MsgBox("1.1")
Dim jsonString As String = String.Empty
Try
jsonString = PostData("http://auth.blv-oa.com/OTApi/Login", $"Uid={user}&Pwd={pwd}&appid=1")
'jsonString = PostData("http://47.119.147.104:90/OTApi/Login", $"Uid={user}&Pwd={pwd}&appid=1")
' MsgBox("1.2")
Catch ex As Exception
MsgBox($"{ex.Message}<7D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Ա")
' MsgBox("1.3")
End Try
Console.WriteLine(jsonString)
If jsonString = Nothing Then
Return False
End If
'MsgBox("1.4")
Dim login As LoginBLL = JsonConvert.DeserializeObject(Of LoginBLL)(jsonString)
If login Is Nothing Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginFailed)}<7D><>{LanguageData.StringList(MultiLanguageDAL.StringEnum.NoLoginInformationIsDisplayed)}<7D><>")
Return False
End If
'MsgBox("1.5")
Console.WriteLine($"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>{login.Status} {login.Message}")
If login.Status <> 200 Then
MsgBox($"<EFBFBD><EFBFBD>½<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{login.Status}-" & login.Message)
Return False
End If
' MsgBox("1.6")
<><C8A1><EFBFBD><EFBFBD>
Dim index As Integer = 0
_loginData.Clear()
_countIndex = 0
'MsgBox("1.7")
For i = 0 To login.Data.HotelData.Count - 1
'<27><>ID, <20><><EFBFBD><EFBFBD>
For j = 0 To login.Data.HotelData.Item(i).Hotels.Count - 1
'<27>Ƶ<EFBFBD>ID, <20>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>, <20>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD>
For k = 0 To login.Data.HotelData.Item(i).Hotels.Item(j).Auth.Count - 1
<><C8A8>״̬<D7B4><CCAC>Ȩ<EFBFBD><C8A8>ID, Ȩ<><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
index += 1
Dim data As New LoginReturnDataBLL
data.HotelGroupsId = login.Data.HotelData.Item(i).HotelGroupsId
data.HotelGroupsName = login.Data.HotelData.Item(i).HotelGroupsName
data.HotelId = login.Data.HotelData.Item(i).Hotels.Item(j).HotelId
data.Code = login.Data.HotelData.Item(i).Hotels.Item(j).Code
data.HotelName = login.Data.HotelData.Item(i).Hotels.Item(j).HotelName
data.AuthotypeId = login.Data.HotelData.Item(i).Hotels.Item(j).Auth(k).AuthotypeId
data.AuthorityId = login.Data.HotelData.Item(i).Hotels.Item(j).Auth(k).AuthorityId
data.AuthorityName = login.Data.HotelData.Item(i).Hotels.Item(j).Auth(k).AuthorityName
_countIndex += 1
Dim key As String = $"{login.Data.HotelData.Item(i).Hotels.Item(j).HotelName}{login.Data.HotelData.Item(i).Hotels.Item(j).Code}-{_countIndex}"
_loginData.Add(key, data)
Next
Next
' MsgBox("1.8")
Next
'MsgBox("1.9")
Return True
End Function
''' <summary>
''' Post<73><74><EFBFBD><EFBFBD>
''' </summary>
''' <param name="url"></param>
''' <param name="data"></param>
''' <returns></returns>
Public Shared Function PostData(ByVal url As String, ByVal data As String) As String
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest = WebRequest.Create(url)
'//Post<73><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
request.Method = "POST"
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
request.ContentType = "application/x-www-form-urlencoded"
'<27><>URL<52><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>ֽ<EFBFBD>
Dim encoding As New UTF8Encoding()
Dim bys As Byte() = encoding.GetBytes(data)
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ContentLength
request.ContentLength = bys.Length
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
Dim newStream As Stream = request.GetRequestStream()
newStream.Write(bys, 0, bys.Length)
newStream.Close()
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>
Dim sr As StreamReader = New StreamReader(request.GetResponse().GetResponseStream)
Return sr.ReadToEnd
End Function
'Public Shared Function GetData(url As String) As String
' Dim str As String = $"http://47.119.147.104:90/OTApi/Login?Uid=AdminBlv&Pwd=123456&appid=1"
' Dim request As HttpWebRequest = CType(WebRequest.Create(str), HttpWebRequest)
' request.Accept = "text/html,application/xhtml+xml,*/*"
' request.ContentType = "application/json"
' request.Method = "Post"
' Dim sr As StreamReader = New StreamReader(request.GetResponse().GetResponseStream)
' Return sr.ReadToEnd
'End Function
'Public Shared Function GetData(ByVal url As String, ByVal data As String) As String
' Dim request As HttpWebRequest = WebRequest.Create(url + "?" + data)
' request.Method = "GET"
' Dim sr As StreamReader = New StreamReader(request.GetResponse().GetResponseStream)
' Return sr.ReadToEnd
'End Function
#End Region
#Region "<22><>¼"
''' <summary> <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڵ<EFBFBD>¼ </summary>
Private _isLogging As Boolean
''' <summary>
''' <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmLogin_Load(sender As Object, e As EventArgs) Handles Me.Load
If ConnLoginDataSourse() = False Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DatabaseConnectionFailed)}<7D><>{LanguageData.StringList(MultiLanguageDAL.StringEnum.CheckWhetherTheNetworkConnectionIsSuccessful)}<7D><>")
Return
End If
'<27><><EFBFBD>ӵ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ݿ<EFBFBD>
InitmultiLanguage() '<27><><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD>ʼ<EFBFBD><CABC>
InitMultiLanguageInfo()
UsernameTextBox.Text = My.Settings.User
PasswordTextBox.Text = My.Settings.PassWord
'asdfghjkl()
End Sub
''' <summary>
''' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
'MsgBox("0")
DealHotelListInterfaceInfo()
'DealHostListInterfaceInfo()
'DealSetHostMACInterfaceInfo()
'MsgBox("1")
Static time As Date = Now
While True
If DealLoginInfo() = False Then
Return
Else
Exit While
End If
If (Now - time).TotalMilliseconds > 2000 Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginTimeout)}<7D><>")
Return
End If
Threading.Thread.Sleep(100)
End While
'MsgBox("2")
Try
_userNames = UsernameTextBox.Text
'If AccountLogin() = False Then '<27><><EFBFBD>ƶ˻<C6B6>ȡ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>Ϣ
' Exit Sub
'End If
DialogResult = DialogResult.OK
FrmCSeriesConfig.Show()
Me.Close() '<27><>¼<EFBFBD><C2BC><EFBFBD>ɹرյ<D8B1>¼ҳ<C2BC><D2B3>
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.OkOnly, $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.LoginFailed)}") ''<27><>¼ʧ<C2BC><CAA7>
End Try
'MsgBox("3")
_isLogging = False
End Sub
'''' <summary>
'''' ʹ<><CAB9><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
'''' </summary>
'Private Function AccountLogin() As Boolean
' Dim userAccount As String = UsernameTextBox.Text
' Dim userPassword As String = PasswordTextBox.Text
' CheckUserAccount(userAccount)
' CheckUserPassword(userPassword)
' Dim dtUser As DataTable = _SqlLogin.GetUserInfo(userAccount, userPassword)
' If dtUser.Rows.Count = 0 Then
' MessageBox.Show($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.NoSuchUser)}<7D><>") ''<27>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
' Return False
' ElseIf dtUser.Rows.Count > 0 Then
' Dim createTime As String = dtUser(0)(3)
' createTime = createTime.Replace("/", "-")
' Dim userPass As String = $"{userAccount.ToUpper()}{userPassword}{createTime}"
' Dim pwd As String = GetStringMd5(userPass)
' Dim pwdcloud As String = dtUser(0)(2) '<27><>ȡ<EFBFBD><C8A1>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>
' _userNames = dtUser(0)(1) '<27><>ȡ<EFBFBD>û<EFBFBD><C3BB><EFBFBD>
' 'Console.WriteLine($"<22>û<EFBFBD><C3BB><EFBFBD>{_userNames}")
' 'Console.WriteLine($"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룺{pwd}")
' 'Console.WriteLine($"<22><>ѯ<EFBFBD><D1AF><EFBFBD>룺{pwdcloud}")
' _userData = dtUser
' If GetPassWordCheck(pwd, pwdcloud) = True Then
' MessageBox.Show($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.IncorrectPasswordPleaseTryAgain)}<7D><>") '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
' Return False
' End If
' End If
' Return True
'End Function
'''' <summary>
'''' <20>û<EFBFBD>У<EFBFBD><D0A3>
'''' </summary>
'''' <param name="userAccount"></param>
'Private Sub CheckUserAccount(userAccount As String)
' If String.IsNullOrWhiteSpace(userAccount) Then
' Throw New Exception($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseEnterYourUserAccount)}<7D><>") '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>˺ţ<CBBA>
' End If
'End Sub
'''' <summary>
'''' <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
'''' </summary>
'''' <param name="userPassword"></param>
'Private Sub CheckUserPassword(userPassword As String)
' If String.IsNullOrWhiteSpace(userPassword) Then
' Throw New Exception($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseEnterYourPassword)}<7D><>") '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
' End If
'End Sub
'''' <summary>
'''' <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
'''' </summary>
'''' <param name="pwd"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></param>
'''' <param name="pwdcloud"><3E>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD></param>
'''' <returns></returns>
'Private Function GetPassWordCheck(pwd As String, pwdcloud As String) As Boolean
' If String.IsNullOrWhiteSpace(pwd) OrElse String.IsNullOrWhiteSpace(pwdcloud) Then Return False
' If String.Compare(pwd, pwdcloud) = 0 Then Return False
' Return True
'End Function
''' <summary>
''' ȡ<><C8A1><EFBFBD><EFBFBD>¼
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
Me.Close()
End Sub
''' <summary>
''' <20><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1>¼<EFBFBD>
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmLogin_Closed(sender As Object, e As EventArgs) Handles Me.Closed
If CheckBox2.Checked = True Then
My.Settings.User = UsernameTextBox.Text
My.Settings.PassWord = PasswordTextBox.Text
My.Settings.Save()
End If
End Sub
''' <summary>
''' <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim SName As String = ComboBox1.Text
Dim path As String = $"{ComboBox1.Text}.xml"
If String.IsNullOrEmpty(SName) Then Return
If IO.File.Exists(path) Then
LanguageData = MultiLanguageDAL.DeserializeFormXml(Of MultiLanguageDAL)(path)
If LanguageData.Version <> dicNC(SName) Then
LanguageData.Version = dicNC(SName)
LanguageData.InitializeByDataTable(GetCloudDataInfo(SName))
MultiLanguageDAL.SerializeToXml(Of MultiLanguageDAL)($"{SName}.xml", LanguageData)
End If
Else
LanguageData = New MultiLanguageDAL
LanguageData.Name = SName
LanguageData.Version = dicNC(SName)
LanguageData.InitializeByDataTable(GetCloudDataInfo(SName))
MultiLanguageDAL.SerializeToXml(Of MultiLanguageDAL)($"{SName}.xml", LanguageData)
End If
'<27><><EFBFBD>õ<EFBFBD><C3B5>ؼ<EFBFBD><D8BC><EFBFBD>
InitMultiLanguageInfo()
End Sub
#End Region
Private Sub asdfghjkl()
''<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
'Dim picture As Image
'If My.Computer.Clipboard.ContainsImage() Then
' picture = My.Computer.Clipboard.GetImage
'End If
''<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
'My.Computer.Audio.Play("SoundFile.wav", AudioPlayMode.BackgroundLoop)
''<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
'Dim italicFont As New Font("Courier New", 12, FontStyle.Italic)
''<27>ؼ<EFBFBD>&<26><><EFBFBD><EFBFBD>
'' For more information on the rich text format characters, see: http://www.microsoft.com/downloads/details.aspx?FamilyID=e5b8ebc2-6ad6-49f0-8c90-e4f763e3f04f&DisplayLang=en
'RichTextBox1.Rtf = "{\rtf1\ansi This is in \b bold\b0.}"
''<27><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
'Dim tooltip As New ToolTip()
'tooltip.SetToolTip(OK, "<22><><EFBFBD><EFBFBD>")
'With ProgressBar1
' .Minimum = 1
' .Maximum = 100000
' .Value = 1
' .Step = 1
' For i As Integer = .Minimum To .Maximum
' ' Perform one step of the action being tracked.
' .PerformStep()
' Next i
'End With
''<27><>ͼ
'Dim path As New GraphicsPath()
'Dim points() As Point = {
' New Point(0, 0),
' New Point(100, 0),
' New Point(100, 100),
' New Point(0, 0)}
'path.AddLines(points)
'Dim surface As Graphics = PictureBox1.CreateGraphics
'surface.DrawPath(Pens.Black, path)
End Sub
End Class

View File

@@ -0,0 +1,130 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmMACBindingResults
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel()
Me.Button1 = New System.Windows.Forms.Button()
Me.Cancel_Button = New System.Windows.Forms.Button()
Me.OK_Button = New System.Windows.Forms.Button()
Me.Label1 = New System.Windows.Forms.Label()
Me.TBoBindingTxt = New System.Windows.Forms.TextBox()
Me.TableLayoutPanel1.SuspendLayout()
Me.SuspendLayout()
'
'TableLayoutPanel1
'
Me.TableLayoutPanel1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.TableLayoutPanel1.ColumnCount = 3
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle())
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.TableLayoutPanel1.Controls.Add(Me.Button1, 0, 0)
Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 2, 0)
Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 1, 0)
Me.TableLayoutPanel1.Location = New System.Drawing.Point(226, 212)
Me.TableLayoutPanel1.Name = "TableLayoutPanel1"
Me.TableLayoutPanel1.RowCount = 1
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.TableLayoutPanel1.Size = New System.Drawing.Size(224, 37)
Me.TableLayoutPanel1.TabIndex = 0
'
'Button1
'
Me.Button1.Anchor = System.Windows.Forms.AnchorStyles.None
Me.Button1.Location = New System.Drawing.Point(3, 4)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(67, 28)
Me.Button1.TabIndex = 1
Me.Button1.Text = "重试"
Me.Button1.Visible = False
'
'Cancel_Button
'
Me.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None
Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Cancel_Button.Location = New System.Drawing.Point(151, 4)
Me.Cancel_Button.Name = "Cancel_Button"
Me.Cancel_Button.Size = New System.Drawing.Size(67, 28)
Me.Cancel_Button.TabIndex = 1
Me.Cancel_Button.Text = "取消"
'
'OK_Button
'
Me.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None
Me.OK_Button.Enabled = False
Me.OK_Button.Location = New System.Drawing.Point(76, 4)
Me.OK_Button.Name = "OK_Button"
Me.OK_Button.Size = New System.Drawing.Size(67, 28)
Me.OK_Button.TabIndex = 0
Me.OK_Button.Text = "解绑"
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label1.ForeColor = System.Drawing.Color.Red
Me.Label1.Location = New System.Drawing.Point(36, 46)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(77, 14)
Me.Label1.TabIndex = 1
Me.Label1.Text = "绑定失败:"
'
'TBoBindingTxt
'
Me.TBoBindingTxt.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.TBoBindingTxt.ForeColor = System.Drawing.Color.Red
Me.TBoBindingTxt.Location = New System.Drawing.Point(65, 74)
Me.TBoBindingTxt.Multiline = True
Me.TBoBindingTxt.Name = "TBoBindingTxt"
Me.TBoBindingTxt.Size = New System.Drawing.Size(304, 132)
Me.TBoBindingTxt.TabIndex = 3
'
'FrmMACBindingResults
'
Me.AcceptButton = Me.OK_Button
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.CancelButton = Me.Cancel_Button
Me.ClientSize = New System.Drawing.Size(462, 261)
Me.Controls.Add(Me.TBoBindingTxt)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.TableLayoutPanel1)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "FrmMACBindingResults"
Me.ShowInTaskbar = False
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "绑定MAC"
Me.TableLayoutPanel1.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel
Friend WithEvents OK_Button As System.Windows.Forms.Button
Friend WithEvents Cancel_Button As System.Windows.Forms.Button
Friend WithEvents Button1 As Button
Friend WithEvents Label1 As Label
Friend WithEvents TBoBindingTxt As TextBox
End Class

View File

@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="TableLayoutPanel1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Cancel_Button.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="OK_Button.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="TBoBindingTxt.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@@ -0,0 +1,44 @@
Imports System.Windows.Forms
Public Class FrmMACBindingResults
''' <summary>
''' 重试按键
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
_isMACRetry = True
Me.Close()
End Sub
''' <summary>
''' 解绑
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
_isMACUnbundle = True
Me.DialogResult = System.Windows.Forms.DialogResult.OK
Me.Close()
End Sub
''' <summary>
''' 取消
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Close()
End Sub
End Class

View File

@@ -0,0 +1,112 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmMACDialog
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel()
Me.OK_Button = New System.Windows.Forms.Button()
Me.Cancel_Button = New System.Windows.Forms.Button()
Me.TextBox5 = New System.Windows.Forms.TextBox()
Me.Label49 = New System.Windows.Forms.Label()
Me.TableLayoutPanel1.SuspendLayout()
Me.SuspendLayout()
'
'TableLayoutPanel1
'
Me.TableLayoutPanel1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.TableLayoutPanel1.ColumnCount = 2
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0)
Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0)
Me.TableLayoutPanel1.Location = New System.Drawing.Point(232, 178)
Me.TableLayoutPanel1.Name = "TableLayoutPanel1"
Me.TableLayoutPanel1.RowCount = 1
Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
Me.TableLayoutPanel1.Size = New System.Drawing.Size(167, 41)
Me.TableLayoutPanel1.TabIndex = 0
'
'OK_Button
'
Me.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None
Me.OK_Button.Location = New System.Drawing.Point(3, 5)
Me.OK_Button.Name = "OK_Button"
Me.OK_Button.Size = New System.Drawing.Size(77, 30)
Me.OK_Button.TabIndex = 0
Me.OK_Button.Text = "确定"
'
'Cancel_Button
'
Me.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None
Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel
Me.Cancel_Button.Location = New System.Drawing.Point(87, 5)
Me.Cancel_Button.Name = "Cancel_Button"
Me.Cancel_Button.Size = New System.Drawing.Size(76, 30)
Me.Cancel_Button.TabIndex = 1
Me.Cancel_Button.Text = "取消"
'
'TextBox5
'
Me.TextBox5.Font = New System.Drawing.Font("宋体", 15.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.TextBox5.Location = New System.Drawing.Point(150, 76)
Me.TextBox5.Name = "TextBox5"
Me.TextBox5.Size = New System.Drawing.Size(201, 30)
Me.TextBox5.TabIndex = 21
'
'Label49
'
Me.Label49.AutoSize = True
Me.Label49.Font = New System.Drawing.Font("宋体", 15.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label49.Location = New System.Drawing.Point(65, 79)
Me.Label49.Name = "Label49"
Me.Label49.Size = New System.Drawing.Size(79, 20)
Me.Label49.TabIndex = 20
Me.Label49.Text = "MAC地址"
'
'FrmMACDialog
'
Me.AcceptButton = Me.OK_Button
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.CancelButton = Me.Cancel_Button
Me.ClientSize = New System.Drawing.Size(411, 230)
Me.Controls.Add(Me.TextBox5)
Me.Controls.Add(Me.Label49)
Me.Controls.Add(Me.TableLayoutPanel1)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
Me.MaximizeBox = False
Me.MinimizeBox = False
Me.Name = "FrmMACDialog"
Me.ShowInTaskbar = False
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
Me.Text = "MAC"
Me.TableLayoutPanel1.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel
Friend WithEvents OK_Button As System.Windows.Forms.Button
Friend WithEvents Cancel_Button As System.Windows.Forms.Button
Friend WithEvents TextBox5 As TextBox
Friend WithEvents Label49 As Label
End Class

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,102 @@
Imports System.Windows.Forms
Public Class FrmMACDialog
Public FCsConfig As FrmCSeriesConfig
Sub New(pathme As FrmCSeriesConfig)
' 此调用是设计器所必需的。
InitializeComponent()
FCsConfig = pathme
' 在 InitializeComponent() 调用之后添加任何初始化。
End Sub
Private Sub FrmMACDialog_Load(sender As Object, e As EventArgs) Handles Me.Load
Label49.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.MAC)
End Sub
Private Sub FrmMACDialog_Shown(sender As Object, e As EventArgs) Handles Me.Shown
TextBox5.Text = Nothing
TextBox5.Focus() '设置焦点
End Sub
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
Dim mac As String = TextBox5.Text
If mac = Nothing Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.PleaseScanTheMACAddress)}")
Exit Sub
End If
mac = mac.Replace(" ", "").Replace("-", "").Replace("_", "").Replace(" ", "")
If mac.Length <> 12 Then
MsgBox($"MAC数据长度不匹配")
Return
End If
For index = 0 To mac.Length - 1 Step 2
Try
Dim b1 As Byte = $"&H{mac.Substring(index, 2)}"
Catch ex As Exception
MsgBox($"MAC数据不合法")
Return
End Try
Next
Me.DialogResult = System.Windows.Forms.DialogResult.OK
FCsConfig._IsOK = True
Me.Close()
End Sub
''' <summary>
''' 显示窗体
''' </summary>
Public Sub ShowMyDialog()
ShowDialog()
End Sub
''' <summary>
''' 获取MAC地址
''' </summary>
''' <returns></returns>
Public Function GetMACAddress() As Byte()
Dim data As String = TextBox5.Text
data = data.Replace(" ", "").Replace("-", "").Replace("_", "").Replace(" ", "")
Dim databuff As Byte() = GetStringToDataByte(data)
Dim dbyte(3) As Byte
Array.Copy(databuff, databuff.Length - 4, dbyte, 0, dbyte.Length)
'Console.WriteLine($"MAC取出来的数据{ByteToString(dbyte)}")
Return dbyte
End Function
''' <summary>
''' 字符串转换Byte数组
''' </summary>
''' <param name="data"></param>
''' <returns></returns>
Public Function GetStringToDataByte(data As String) As Byte()
Dim dataList As New List(Of Byte)
For index As Integer = 0 To data.Length - 1 Step 2
dataList.Add($"&H{data.Substring(index, 2)}")
Next
Console.WriteLine($"取位: {ByteToString(dataList.ToArray)}")
Return dataList.ToArray
End Function
Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
FCsConfig._IsOK = False
Me.Close()
End Sub
End Class

View File

@@ -0,0 +1,106 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmSerialportSetting
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.LblSerialPortName = New System.Windows.Forms.Label()
Me.LblSerialPortBaud = New System.Windows.Forms.Label()
Me.ComboBox8 = New System.Windows.Forms.ComboBox()
Me.ComboBox9 = New System.Windows.Forms.ComboBox()
Me.Button19 = New System.Windows.Forms.Button()
Me.SuspendLayout()
'
'LblSerialPortName
'
Me.LblSerialPortName.AutoSize = True
Me.LblSerialPortName.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblSerialPortName.Location = New System.Drawing.Point(19, 48)
Me.LblSerialPortName.Name = "LblSerialPortName"
Me.LblSerialPortName.Size = New System.Drawing.Size(63, 14)
Me.LblSerialPortName.TabIndex = 7
Me.LblSerialPortName.Text = "串口名称"
Me.LblSerialPortName.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'LblSerialPortBaud
'
Me.LblSerialPortBaud.AutoSize = True
Me.LblSerialPortBaud.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblSerialPortBaud.Location = New System.Drawing.Point(232, 48)
Me.LblSerialPortBaud.Name = "LblSerialPortBaud"
Me.LblSerialPortBaud.Size = New System.Drawing.Size(49, 14)
Me.LblSerialPortBaud.TabIndex = 8
Me.LblSerialPortBaud.Text = "波特率"
Me.LblSerialPortBaud.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'ComboBox8
'
Me.ComboBox8.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.ComboBox8.FormattingEnabled = True
Me.ComboBox8.Location = New System.Drawing.Point(84, 45)
Me.ComboBox8.Name = "ComboBox8"
Me.ComboBox8.Size = New System.Drawing.Size(121, 22)
Me.ComboBox8.TabIndex = 9
'
'ComboBox9
'
Me.ComboBox9.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.ComboBox9.FormattingEnabled = True
Me.ComboBox9.Location = New System.Drawing.Point(284, 44)
Me.ComboBox9.Name = "ComboBox9"
Me.ComboBox9.Size = New System.Drawing.Size(121, 22)
Me.ComboBox9.TabIndex = 11
'
'Button19
'
Me.Button19.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button19.ForeColor = System.Drawing.Color.Green
Me.Button19.Location = New System.Drawing.Point(446, 39)
Me.Button19.Name = "Button19"
Me.Button19.Size = New System.Drawing.Size(81, 33)
Me.Button19.TabIndex = 10
Me.Button19.Text = "打开串口"
Me.Button19.UseVisualStyleBackColor = True
'
'FrmSerialportSetting
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(569, 127)
Me.Controls.Add(Me.LblSerialPortName)
Me.Controls.Add(Me.LblSerialPortBaud)
Me.Controls.Add(Me.ComboBox8)
Me.Controls.Add(Me.ComboBox9)
Me.Controls.Add(Me.Button19)
Me.Name = "FrmSerialportSetting"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
Me.Text = "串口设置"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents LblSerialPortName As Label
Friend WithEvents LblSerialPortBaud As Label
Friend WithEvents ComboBox8 As ComboBox
Friend WithEvents ComboBox9 As ComboBox
Friend WithEvents Button19 As Button
End Class

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,171 @@
Imports System.ComponentModel
Imports System.IO
Public Class FrmSerialportSetting
Public FCsConfig As FrmCSeriesConfig
Sub New(pathme As FrmCSeriesConfig)
' 此调用是设计器所必需的。
InitializeComponent()
FCsConfig = pathme
' 在 InitializeComponent() 调用之后添加任何初始化。
End Sub
#Region "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
Private Sub MultiLanguageInfo()
''LblIP.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.LocalIP)
Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialportSettings)
LblSerialPortName.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortName)
LblSerialPortBaud.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Baud)
Button19.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.OpenTheSerialPort)
End Sub
#End Region
#Region "初始化"
''' <summary>
''' 串口波特率
''' </summary>
Private _baudItme() As String = {"4800", "9600", "14400", "19200", "38400", "56000", "57600", "115200", "256000", "512000", "600000", "750000"}
''' <summary>
''' 窗体加载事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmSerialportSetting_Load(sender As Object, e As EventArgs) Handles Me.Load
MultiLanguageInfo()
GetSerialPort()
InitSerialPortBaud()
End Sub
''' <summary>
''' 获取可用串口
''' </summary>
Private Sub GetSerialPort()
Dim portNames As String() = Ports.SerialPort.GetPortNames '获得可用串口
Array.Sort(portNames)
ComboBox8.Items.Clear()
ComboBox8.Items.AddRange(portNames)
End Sub
''' <summary> port次数 </summary>
Private _portCount As Integer = 0
''' <summary>
''' 初始化串口波特率
''' </summary>
Private Sub InitSerialPortBaud()
_portCount += 1
ComboBox9.Items.Clear()
ComboBox9.Items.AddRange(_baudItme)
If _portCount > 1 Then Return
If ComboBox9.Items.Count > 1 Then ComboBox9.SelectedIndex = 1
End Sub
''' <summary>
''' 串口点击按键
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click
If String.IsNullOrWhiteSpace(ComboBox8.Text) Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectAValidSerialPortFirst)}!")
Exit Sub
End If
If String.IsNullOrWhiteSpace(ComboBox9.Text) Then
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SelectTheValidBaudRateFirst)}!")
Exit Sub
End If
SerialPortCommSwitch(ComboBox8.Text, ComboBox9.Text)
End Sub
''' <summary>
''' 串口通讯开关
''' </summary>
''' <param name="portName"></param>
''' <param name="portBaud"></param>
Private Sub SerialPortCommSwitch(portName As String, portBaud As String)
If FCsConfig.SerialPort.IsOpen Then
FCsConfig.SerialPort.Close()
CloseSerialPort()
Else
ConfigSerialPort(portName, portBaud)
Try
FCsConfig.SerialPort.Open()
_isSerialPort = True
OpenSerialPort()
Catch ex As Exception
Console.WriteLine($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortOpenTheFailedReason)}:{ex.Message}" & vbCrLf, Color.Red)
MsgBox($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SerialPortOpenTheFailedReason)}:{ex.Message}")
FCsConfig.SerialPort.Close()
_isSerialPort = False
CloseSerialPort()
End Try
End If
End Sub
''' <summary>
''' 关闭串口
''' </summary>
Private Sub CloseSerialPort()
ComboBox8.Enabled = True
ComboBox9.Enabled = True
Button19.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.OpenTheSerialPort)}"
Button19.ForeColor = Color.Green
End Sub
''' <summary>
''' 打开串口
''' </summary>
Private Sub OpenSerialPort()
ComboBox8.Enabled = False
ComboBox9.Enabled = False
Button19.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.CloseTheSerialPort)}"
Button19.ForeColor = Color.Red
End Sub
''' <summary>
''' 配置串口
''' </summary>
''' <param name="portName">串口名</param>
''' <param name="portBaud">串口波特率</param>
Public Sub ConfigSerialPort(portName As String, portBaud As String)
With FCsConfig.SerialPort
.PortName = portName '串口名
.BaudRate = CInt(portBaud) '波特率
.DataBits = 8 '数据位
.StopBits = Ports.StopBits.One '停止位
.Parity = Ports.Parity.None '偶校验
.RtsEnable = True
.ReceivedBytesThreshold = 1
End With
End Sub
#End Region
End Class

View File

@@ -0,0 +1,663 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmTest_BLV_V9
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.BtnDimming = New System.Windows.Forms.Button()
Me.Label7 = New System.Windows.Forms.Label()
Me.LblInput13 = New System.Windows.Forms.Label()
Me.LblInput12 = New System.Windows.Forms.Label()
Me.LblInput11 = New System.Windows.Forms.Label()
Me.LblInput10 = New System.Windows.Forms.Label()
Me.LblInput9 = New System.Windows.Forms.Label()
Me.LblInput8 = New System.Windows.Forms.Label()
Me.Label48 = New System.Windows.Forms.Label()
Me.LblInput7 = New System.Windows.Forms.Label()
Me.LblInput6 = New System.Windows.Forms.Label()
Me.LblInput5 = New System.Windows.Forms.Label()
Me.LblInput4 = New System.Windows.Forms.Label()
Me.LblInput3 = New System.Windows.Forms.Label()
Me.LblInput2 = New System.Windows.Forms.Label()
Me.LblInput1 = New System.Windows.Forms.Label()
Me.Label40 = New System.Windows.Forms.Label()
Me.Button23 = New System.Windows.Forms.Button()
Me.BtnInputTest = New System.Windows.Forms.Button()
Me.Button21 = New System.Windows.Forms.Button()
Me.Label39 = New System.Windows.Forms.Label()
Me.NumericUpDown1 = New System.Windows.Forms.NumericUpDown()
Me.Label38 = New System.Windows.Forms.Label()
Me.ComboBox10 = New System.Windows.Forms.ComboBox()
Me.Label37 = New System.Windows.Forms.Label()
Me.Label36 = New System.Windows.Forms.Label()
Me.BtnOutput5 = New System.Windows.Forms.Button()
Me.BtnOutput4 = New System.Windows.Forms.Button()
Me.BtnOutput3 = New System.Windows.Forms.Button()
Me.BtnOutput2 = New System.Windows.Forms.Button()
Me.BtnOutput1 = New System.Windows.Forms.Button()
Me.Label35 = New System.Windows.Forms.Label()
Me.BtnRelay13 = New System.Windows.Forms.Button()
Me.BtnRelay12 = New System.Windows.Forms.Button()
Me.BtnRelay11 = New System.Windows.Forms.Button()
Me.Label34 = New System.Windows.Forms.Label()
Me.BtnRelay10 = New System.Windows.Forms.Button()
Me.BtnRelay9 = New System.Windows.Forms.Button()
Me.BtnRelay7 = New System.Windows.Forms.Button()
Me.BtnRelay6 = New System.Windows.Forms.Button()
Me.BtnRelay8 = New System.Windows.Forms.Button()
Me.BtnRelay5 = New System.Windows.Forms.Button()
Me.BtnRelay4 = New System.Windows.Forms.Button()
Me.BtnRelay3 = New System.Windows.Forms.Button()
Me.BtnRelay2 = New System.Windows.Forms.Button()
Me.BtnRelay1 = New System.Windows.Forms.Button()
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'BtnDimming
'
Me.BtnDimming.Location = New System.Drawing.Point(99, 10)
Me.BtnDimming.Name = "BtnDimming"
Me.BtnDimming.Size = New System.Drawing.Size(62, 24)
Me.BtnDimming.TabIndex = 180
Me.BtnDimming.Text = "调光测试"
Me.BtnDimming.UseVisualStyleBackColor = True
'
'Label7
'
Me.Label7.AutoSize = True
Me.Label7.Location = New System.Drawing.Point(20, 10)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(47, 12)
Me.Label7.TabIndex = 179
Me.Label7.Text = "V9 调光"
'
'LblInput13
'
Me.LblInput13.AutoSize = True
Me.LblInput13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput13.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput13.Location = New System.Drawing.Point(510, 145)
Me.LblInput13.Name = "LblInput13"
Me.LblInput13.Size = New System.Drawing.Size(37, 16)
Me.LblInput13.TabIndex = 178
Me.LblInput13.Text = " 13 "
'
'LblInput12
'
Me.LblInput12.AutoSize = True
Me.LblInput12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput12.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput12.Location = New System.Drawing.Point(465, 145)
Me.LblInput12.Name = "LblInput12"
Me.LblInput12.Size = New System.Drawing.Size(37, 16)
Me.LblInput12.TabIndex = 177
Me.LblInput12.Text = " 12 "
'
'LblInput11
'
Me.LblInput11.AutoSize = True
Me.LblInput11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput11.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput11.Location = New System.Drawing.Point(420, 145)
Me.LblInput11.Name = "LblInput11"
Me.LblInput11.Size = New System.Drawing.Size(37, 16)
Me.LblInput11.TabIndex = 176
Me.LblInput11.Text = " 11 "
'
'LblInput10
'
Me.LblInput10.AutoSize = True
Me.LblInput10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput10.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput10.Location = New System.Drawing.Point(375, 145)
Me.LblInput10.Name = "LblInput10"
Me.LblInput10.Size = New System.Drawing.Size(37, 16)
Me.LblInput10.TabIndex = 175
Me.LblInput10.Text = " 10 "
'
'LblInput9
'
Me.LblInput9.AutoSize = True
Me.LblInput9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput9.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput9.Location = New System.Drawing.Point(337, 145)
Me.LblInput9.Name = "LblInput9"
Me.LblInput9.Size = New System.Drawing.Size(30, 16)
Me.LblInput9.TabIndex = 174
Me.LblInput9.Text = " 9 "
'
'LblInput8
'
Me.LblInput8.AutoSize = True
Me.LblInput8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput8.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput8.Location = New System.Drawing.Point(299, 145)
Me.LblInput8.Name = "LblInput8"
Me.LblInput8.Size = New System.Drawing.Size(30, 16)
Me.LblInput8.TabIndex = 173
Me.LblInput8.Text = " 8 "
'
'Label48
'
Me.Label48.AutoSize = True
Me.Label48.Font = New System.Drawing.Font("宋体", 21.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label48.Location = New System.Drawing.Point(204, 217)
Me.Label48.Name = "Label48"
Me.Label48.Size = New System.Drawing.Size(125, 29)
Me.Label48.TabIndex = 172
Me.Label48.Text = "Test..."
'
'LblInput7
'
Me.LblInput7.AutoSize = True
Me.LblInput7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput7.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput7.Location = New System.Drawing.Point(261, 145)
Me.LblInput7.Name = "LblInput7"
Me.LblInput7.Size = New System.Drawing.Size(30, 16)
Me.LblInput7.TabIndex = 171
Me.LblInput7.Text = " 7 "
'
'LblInput6
'
Me.LblInput6.AutoSize = True
Me.LblInput6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput6.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput6.Location = New System.Drawing.Point(223, 145)
Me.LblInput6.Name = "LblInput6"
Me.LblInput6.Size = New System.Drawing.Size(30, 16)
Me.LblInput6.TabIndex = 170
Me.LblInput6.Text = " 6 "
'
'LblInput5
'
Me.LblInput5.AutoSize = True
Me.LblInput5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput5.Location = New System.Drawing.Point(185, 145)
Me.LblInput5.Name = "LblInput5"
Me.LblInput5.Size = New System.Drawing.Size(30, 16)
Me.LblInput5.TabIndex = 169
Me.LblInput5.Text = " 5 "
'
'LblInput4
'
Me.LblInput4.AutoSize = True
Me.LblInput4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput4.Location = New System.Drawing.Point(147, 145)
Me.LblInput4.Name = "LblInput4"
Me.LblInput4.Size = New System.Drawing.Size(30, 16)
Me.LblInput4.TabIndex = 168
Me.LblInput4.Text = " 4 "
'
'LblInput3
'
Me.LblInput3.AutoSize = True
Me.LblInput3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput3.Location = New System.Drawing.Point(109, 145)
Me.LblInput3.Name = "LblInput3"
Me.LblInput3.Size = New System.Drawing.Size(30, 16)
Me.LblInput3.TabIndex = 167
Me.LblInput3.Text = " 3 "
'
'LblInput2
'
Me.LblInput2.AutoSize = True
Me.LblInput2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput2.Location = New System.Drawing.Point(71, 145)
Me.LblInput2.Name = "LblInput2"
Me.LblInput2.Size = New System.Drawing.Size(30, 16)
Me.LblInput2.TabIndex = 166
Me.LblInput2.Text = " 2 "
'
'LblInput1
'
Me.LblInput1.AutoSize = True
Me.LblInput1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput1.Location = New System.Drawing.Point(33, 145)
Me.LblInput1.Name = "LblInput1"
Me.LblInput1.Size = New System.Drawing.Size(30, 16)
Me.LblInput1.TabIndex = 165
Me.LblInput1.Text = " 1 "
'
'Label40
'
Me.Label40.AutoSize = True
Me.Label40.Location = New System.Drawing.Point(20, 217)
Me.Label40.Name = "Label40"
Me.Label40.Size = New System.Drawing.Size(71, 12)
Me.Label40.TabIndex = 164
Me.Label40.Text = "V9 巡回测试"
'
'Button23
'
Me.Button23.Location = New System.Drawing.Point(116, 217)
Me.Button23.Name = "Button23"
Me.Button23.Size = New System.Drawing.Size(68, 25)
Me.Button23.TabIndex = 163
Me.Button23.Text = "巡回测试"
Me.Button23.UseVisualStyleBackColor = True
'
'BtnInputTest
'
Me.BtnInputTest.Location = New System.Drawing.Point(577, 141)
Me.BtnInputTest.Name = "BtnInputTest"
Me.BtnInputTest.Size = New System.Drawing.Size(62, 24)
Me.BtnInputTest.TabIndex = 162
Me.BtnInputTest.Text = "输入检测"
Me.BtnInputTest.UseVisualStyleBackColor = True
'
'Button21
'
Me.Button21.Location = New System.Drawing.Point(575, 190)
Me.Button21.Name = "Button21"
Me.Button21.Size = New System.Drawing.Size(62, 21)
Me.Button21.TabIndex = 161
Me.Button21.Text = "播放"
Me.Button21.UseVisualStyleBackColor = True
'
'Label39
'
Me.Label39.AutoSize = True
Me.Label39.BackColor = System.Drawing.SystemColors.Control
Me.Label39.Location = New System.Drawing.Point(278, 194)
Me.Label39.Name = "Label39"
Me.Label39.Size = New System.Drawing.Size(77, 12)
Me.Label39.TabIndex = 160
Me.Label39.Text = "播放文件序号"
Me.Label39.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'NumericUpDown1
'
Me.NumericUpDown1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.NumericUpDown1.Location = New System.Drawing.Point(361, 190)
Me.NumericUpDown1.Maximum = New Decimal(New Integer() {10, 0, 0, 0})
Me.NumericUpDown1.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
Me.NumericUpDown1.Name = "NumericUpDown1"
Me.NumericUpDown1.Size = New System.Drawing.Size(86, 23)
Me.NumericUpDown1.TabIndex = 159
Me.NumericUpDown1.Value = New Decimal(New Integer() {1, 0, 0, 0})
'
'Label38
'
Me.Label38.AutoSize = True
Me.Label38.Location = New System.Drawing.Point(45, 194)
Me.Label38.Name = "Label38"
Me.Label38.Size = New System.Drawing.Size(65, 12)
Me.Label38.TabIndex = 158
Me.Label38.Text = "播放文件夹"
Me.Label38.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'ComboBox10
'
Me.ComboBox10.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox10.FormattingEnabled = True
Me.ComboBox10.Location = New System.Drawing.Point(116, 191)
Me.ComboBox10.Name = "ComboBox10"
Me.ComboBox10.Size = New System.Drawing.Size(138, 20)
Me.ComboBox10.TabIndex = 157
'
'Label37
'
Me.Label37.AutoSize = True
Me.Label37.Location = New System.Drawing.Point(20, 171)
Me.Label37.Name = "Label37"
Me.Label37.Size = New System.Drawing.Size(53, 12)
Me.Label37.TabIndex = 156
Me.Label37.Text = "V9 MUSIC"
'
'Label36
'
Me.Label36.AutoSize = True
Me.Label36.Location = New System.Drawing.Point(20, 85)
Me.Label36.Name = "Label36"
Me.Label36.Size = New System.Drawing.Size(65, 12)
Me.Label36.TabIndex = 155
Me.Label36.Text = "V9 IO 输出"
'
'BtnOutput5
'
Me.BtnOutput5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput5.Location = New System.Drawing.Point(189, 100)
Me.BtnOutput5.Name = "BtnOutput5"
Me.BtnOutput5.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput5.TabIndex = 154
Me.BtnOutput5.Tag = "4"
Me.BtnOutput5.Text = "5"
Me.BtnOutput5.UseVisualStyleBackColor = True
'
'BtnOutput4
'
Me.BtnOutput4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput4.Location = New System.Drawing.Point(150, 100)
Me.BtnOutput4.Name = "BtnOutput4"
Me.BtnOutput4.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput4.TabIndex = 153
Me.BtnOutput4.Tag = "3"
Me.BtnOutput4.Text = "4"
Me.BtnOutput4.UseVisualStyleBackColor = True
'
'BtnOutput3
'
Me.BtnOutput3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput3.Location = New System.Drawing.Point(111, 100)
Me.BtnOutput3.Name = "BtnOutput3"
Me.BtnOutput3.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput3.TabIndex = 152
Me.BtnOutput3.Tag = "2"
Me.BtnOutput3.Text = "3"
Me.BtnOutput3.UseVisualStyleBackColor = True
'
'BtnOutput2
'
Me.BtnOutput2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput2.Location = New System.Drawing.Point(72, 100)
Me.BtnOutput2.Name = "BtnOutput2"
Me.BtnOutput2.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput2.TabIndex = 151
Me.BtnOutput2.Tag = "1"
Me.BtnOutput2.Text = "2"
Me.BtnOutput2.UseVisualStyleBackColor = True
'
'BtnOutput1
'
Me.BtnOutput1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput1.Location = New System.Drawing.Point(33, 100)
Me.BtnOutput1.Name = "BtnOutput1"
Me.BtnOutput1.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput1.TabIndex = 150
Me.BtnOutput1.Tag = "0"
Me.BtnOutput1.Text = "1"
Me.BtnOutput1.UseVisualStyleBackColor = True
'
'Label35
'
Me.Label35.AutoSize = True
Me.Label35.Location = New System.Drawing.Point(20, 129)
Me.Label35.Name = "Label35"
Me.Label35.Size = New System.Drawing.Size(65, 12)
Me.Label35.TabIndex = 149
Me.Label35.Text = "V9 IO 输入"
'
'BtnRelay13
'
Me.BtnRelay13.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay13.Location = New System.Drawing.Point(501, 55)
Me.BtnRelay13.Name = "BtnRelay13"
Me.BtnRelay13.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay13.TabIndex = 148
Me.BtnRelay13.Tag = "12"
Me.BtnRelay13.Text = "13"
Me.BtnRelay13.UseVisualStyleBackColor = True
Me.BtnRelay13.Visible = False
'
'BtnRelay12
'
Me.BtnRelay12.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay12.Location = New System.Drawing.Point(462, 55)
Me.BtnRelay12.Name = "BtnRelay12"
Me.BtnRelay12.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay12.TabIndex = 146
Me.BtnRelay12.Tag = "11"
Me.BtnRelay12.Text = "12"
Me.BtnRelay12.UseVisualStyleBackColor = True
'
'BtnRelay11
'
Me.BtnRelay11.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay11.Location = New System.Drawing.Point(423, 55)
Me.BtnRelay11.Name = "BtnRelay11"
Me.BtnRelay11.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay11.TabIndex = 147
Me.BtnRelay11.Tag = "10"
Me.BtnRelay11.Text = "11"
Me.BtnRelay11.UseVisualStyleBackColor = True
'
'Label34
'
Me.Label34.AutoSize = True
Me.Label34.Location = New System.Drawing.Point(20, 40)
Me.Label34.Name = "Label34"
Me.Label34.Size = New System.Drawing.Size(101, 12)
Me.Label34.TabIndex = 145
Me.Label34.Text = "V9 IO 继电器控制"
'
'BtnRelay10
'
Me.BtnRelay10.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay10.Location = New System.Drawing.Point(384, 55)
Me.BtnRelay10.Name = "BtnRelay10"
Me.BtnRelay10.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay10.TabIndex = 144
Me.BtnRelay10.Tag = "9"
Me.BtnRelay10.Text = "10"
Me.BtnRelay10.UseVisualStyleBackColor = True
'
'BtnRelay9
'
Me.BtnRelay9.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay9.Location = New System.Drawing.Point(345, 55)
Me.BtnRelay9.Name = "BtnRelay9"
Me.BtnRelay9.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay9.TabIndex = 143
Me.BtnRelay9.Tag = "8"
Me.BtnRelay9.Text = "9"
Me.BtnRelay9.UseVisualStyleBackColor = True
'
'BtnRelay7
'
Me.BtnRelay7.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay7.Location = New System.Drawing.Point(267, 55)
Me.BtnRelay7.Name = "BtnRelay7"
Me.BtnRelay7.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay7.TabIndex = 142
Me.BtnRelay7.Tag = "6"
Me.BtnRelay7.Text = "7"
Me.BtnRelay7.UseVisualStyleBackColor = True
'
'BtnRelay6
'
Me.BtnRelay6.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay6.Location = New System.Drawing.Point(228, 55)
Me.BtnRelay6.Name = "BtnRelay6"
Me.BtnRelay6.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay6.TabIndex = 141
Me.BtnRelay6.Tag = "5"
Me.BtnRelay6.Text = "6"
Me.BtnRelay6.UseVisualStyleBackColor = True
'
'BtnRelay8
'
Me.BtnRelay8.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay8.Location = New System.Drawing.Point(306, 55)
Me.BtnRelay8.Name = "BtnRelay8"
Me.BtnRelay8.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay8.TabIndex = 140
Me.BtnRelay8.Tag = "7"
Me.BtnRelay8.Text = "8"
Me.BtnRelay8.UseVisualStyleBackColor = True
'
'BtnRelay5
'
Me.BtnRelay5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay5.Location = New System.Drawing.Point(189, 55)
Me.BtnRelay5.Name = "BtnRelay5"
Me.BtnRelay5.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay5.TabIndex = 139
Me.BtnRelay5.Tag = "4"
Me.BtnRelay5.Text = "5"
Me.BtnRelay5.UseVisualStyleBackColor = True
'
'BtnRelay4
'
Me.BtnRelay4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay4.Location = New System.Drawing.Point(150, 55)
Me.BtnRelay4.Name = "BtnRelay4"
Me.BtnRelay4.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay4.TabIndex = 138
Me.BtnRelay4.Tag = "3"
Me.BtnRelay4.Text = "4"
Me.BtnRelay4.UseVisualStyleBackColor = True
'
'BtnRelay3
'
Me.BtnRelay3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay3.Location = New System.Drawing.Point(111, 55)
Me.BtnRelay3.Name = "BtnRelay3"
Me.BtnRelay3.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay3.TabIndex = 137
Me.BtnRelay3.Tag = "2"
Me.BtnRelay3.Text = "3"
Me.BtnRelay3.UseVisualStyleBackColor = True
'
'BtnRelay2
'
Me.BtnRelay2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay2.Location = New System.Drawing.Point(72, 55)
Me.BtnRelay2.Name = "BtnRelay2"
Me.BtnRelay2.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay2.TabIndex = 136
Me.BtnRelay2.Tag = "1"
Me.BtnRelay2.Text = "2"
Me.BtnRelay2.UseVisualStyleBackColor = True
'
'BtnRelay1
'
Me.BtnRelay1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay1.Location = New System.Drawing.Point(33, 55)
Me.BtnRelay1.Name = "BtnRelay1"
Me.BtnRelay1.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay1.TabIndex = 135
Me.BtnRelay1.Tag = "0"
Me.BtnRelay1.Text = "1"
Me.BtnRelay1.UseVisualStyleBackColor = True
'
'FrmTest_BLV_V9
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(658, 256)
Me.Controls.Add(Me.BtnDimming)
Me.Controls.Add(Me.Label7)
Me.Controls.Add(Me.LblInput13)
Me.Controls.Add(Me.LblInput12)
Me.Controls.Add(Me.LblInput11)
Me.Controls.Add(Me.LblInput10)
Me.Controls.Add(Me.LblInput9)
Me.Controls.Add(Me.LblInput8)
Me.Controls.Add(Me.Label48)
Me.Controls.Add(Me.LblInput7)
Me.Controls.Add(Me.LblInput6)
Me.Controls.Add(Me.LblInput5)
Me.Controls.Add(Me.LblInput4)
Me.Controls.Add(Me.LblInput3)
Me.Controls.Add(Me.LblInput2)
Me.Controls.Add(Me.LblInput1)
Me.Controls.Add(Me.Label40)
Me.Controls.Add(Me.Button23)
Me.Controls.Add(Me.BtnInputTest)
Me.Controls.Add(Me.Button21)
Me.Controls.Add(Me.Label39)
Me.Controls.Add(Me.NumericUpDown1)
Me.Controls.Add(Me.Label38)
Me.Controls.Add(Me.ComboBox10)
Me.Controls.Add(Me.Label37)
Me.Controls.Add(Me.Label36)
Me.Controls.Add(Me.BtnOutput5)
Me.Controls.Add(Me.BtnOutput4)
Me.Controls.Add(Me.BtnOutput3)
Me.Controls.Add(Me.BtnOutput2)
Me.Controls.Add(Me.BtnOutput1)
Me.Controls.Add(Me.Label35)
Me.Controls.Add(Me.BtnRelay13)
Me.Controls.Add(Me.BtnRelay12)
Me.Controls.Add(Me.BtnRelay11)
Me.Controls.Add(Me.Label34)
Me.Controls.Add(Me.BtnRelay10)
Me.Controls.Add(Me.BtnRelay9)
Me.Controls.Add(Me.BtnRelay7)
Me.Controls.Add(Me.BtnRelay6)
Me.Controls.Add(Me.BtnRelay8)
Me.Controls.Add(Me.BtnRelay5)
Me.Controls.Add(Me.BtnRelay4)
Me.Controls.Add(Me.BtnRelay3)
Me.Controls.Add(Me.BtnRelay2)
Me.Controls.Add(Me.BtnRelay1)
Me.ForeColor = System.Drawing.SystemColors.ControlText
Me.Name = "FrmTest_BLV_V9"
Me.Text = "FrmTest_BLV_V9"
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents BtnDimming As Button
Friend WithEvents Label7 As Label
Friend WithEvents LblInput13 As Label
Friend WithEvents LblInput12 As Label
Friend WithEvents LblInput11 As Label
Friend WithEvents LblInput10 As Label
Friend WithEvents LblInput9 As Label
Friend WithEvents LblInput8 As Label
Friend WithEvents Label48 As Label
Friend WithEvents LblInput7 As Label
Friend WithEvents LblInput6 As Label
Friend WithEvents LblInput5 As Label
Friend WithEvents LblInput4 As Label
Friend WithEvents LblInput3 As Label
Friend WithEvents LblInput2 As Label
Friend WithEvents LblInput1 As Label
Friend WithEvents Label40 As Label
Friend WithEvents Button23 As Button
Friend WithEvents BtnInputTest As Button
Friend WithEvents Button21 As Button
Friend WithEvents Label39 As Label
Friend WithEvents NumericUpDown1 As NumericUpDown
Friend WithEvents Label38 As Label
Friend WithEvents ComboBox10 As ComboBox
Friend WithEvents Label37 As Label
Friend WithEvents Label36 As Label
Friend WithEvents BtnOutput5 As Button
Friend WithEvents BtnOutput4 As Button
Friend WithEvents BtnOutput3 As Button
Friend WithEvents BtnOutput2 As Button
Friend WithEvents BtnOutput1 As Button
Friend WithEvents Label35 As Label
Friend WithEvents BtnRelay13 As Button
Friend WithEvents BtnRelay12 As Button
Friend WithEvents BtnRelay11 As Button
Friend WithEvents Label34 As Label
Friend WithEvents BtnRelay10 As Button
Friend WithEvents BtnRelay9 As Button
Friend WithEvents BtnRelay7 As Button
Friend WithEvents BtnRelay6 As Button
Friend WithEvents BtnRelay8 As Button
Friend WithEvents BtnRelay5 As Button
Friend WithEvents BtnRelay4 As Button
Friend WithEvents BtnRelay3 As Button
Friend WithEvents BtnRelay2 As Button
Friend WithEvents BtnRelay1 As Button
End Class

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,392 @@
Public Class FrmTest_BLV_V9
Implements IFrmTest
Public FCsConfig As FrmCSeriesConfig
Sub New(pathme As FrmCSeriesConfig)
' 此调用是设计器所必需的。
InitializeComponent()
FCsConfig = pathme
' 在 InitializeComponent() 调用之后添加任何初始化。
End Sub
#Region "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
Private Sub MultiLanguageInfo()
'控件.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
Label7.Text = "V9" & LanguageData.StringList(MultiLanguageDAL.StringEnum.Dimming)
BtnDimming.Text = "V9" & LanguageData.StringList(MultiLanguageDAL.StringEnum.DimmingTest)
Label34.Text = "V9" & LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
Label36.Text = "V9" & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOOutput)
Label35.Text = "V9" & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOInput)
Label40.Text = "V9" & LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
Label37.Text = "V9" & LanguageData.StringList(MultiLanguageDAL.StringEnum.Music)
BtnInputTest.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.TheInputTest)
Label38.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFolder)
Label39.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFileNumber)
Button21.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Play)
Button23.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
End Sub
#End Region
#Region "窗体"
''' <summary>
''' 窗体加载事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmTest_C5_Load(sender As Object, e As EventArgs) Handles Me.Load
MultiLanguageInfo()
InitFolderItems()
End Sub
''' <summary>
''' 显示窗体事件
''' 实现接口
''' </summary>
''' <param name="parentControl"></param>
Public Sub ShowForm(parentControl As Control) Implements IFrmTest.ShowForm
FormBorderStyle = FormBorderStyle.None '无边框
TopLevel = False
Dock = DockStyle.Fill '填满大小
Parent = parentControl '父容器
Show()
End Sub
''' <summary>
''' 发送函数
''' </summary>
''' <param name="sendPacket"></param>
Public Sub SendData(sendPacket() As Byte)
FCsConfig.SendTestData(sendPacket)
FCsConfig.AppendTipText($"TX{ByteToString(sendPacket)}{vbCrLf}", Color.Green)
End Sub
#End Region
#Region "C12测试"
''' <summary>
''' 获取继电器序号
''' </summary>
Private relayNumber(4) As Byte
''' <summary>
''' 发送组包
''' </summary>
''' <param name="cmd"></param>
''' <param name="dataBuff"></param>
''' <returns></returns>
Public Function FillPacket(cmd As Byte, dataBuff() As Byte) As Byte()
If _connectStatus = True Then
cmd = &HD3 '网络测试Cmd
dataBuff = FCsConfig.FillSendData(cmd, dataBuff) '网络数据
Else
cmd = &H7 '串口测试Cmd
dataBuff = FillModelsSerialPortTest(cmd, dataBuff) '串口数据
End If
Return dataBuff
End Function
''' <summary>
''' 1-13路继电器
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnRelay13_Click(sender As Object, e As EventArgs) Handles BtnRelay9.Click, BtnRelay8.Click, BtnRelay7.Click, BtnRelay6.Click, BtnRelay5.Click, BtnRelay4.Click, BtnRelay3.Click, BtnRelay2.Click, BtnRelay13.Click, BtnRelay12.Click, BtnRelay11.Click, BtnRelay10.Click, BtnRelay1.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetRelayStatus(index)
Dim param() As Byte = GetRelayNumber(index, flg)
Dim testState As Byte = &H2
Dim devType As Byte = &HF1
Dim devAddr As Byte = &H0
Dim devCmd As Byte = &H21
'组包
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12继电器测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
''' <summary>
''' 获取继电器状态
''' </summary>
''' <param name="index"></param>
''' <returns></returns>
Private Function GetRelayStatus(index As Integer) As Boolean
Dim bt As Byte = relayNumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
''' <summary>
''' 获取继电器序号
''' </summary>
''' <param name="number"></param>
''' <returns></returns>
Private Function GetRelayNumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
relayNumber(number \ 4) = (relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else
relayNumber(number \ 4) = (relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return relayNumber
End Function
''' <summary>
''' 1-5路输出
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnOutput1_Click(sender As Object, e As EventArgs) Handles BtnOutput5.Click, BtnOutput4.Click, BtnOutput3.Click, BtnOutput2.Click, BtnOutput1.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetC12DOStatus(index)
Dim param() As Byte = GetC12DONumber(index, flg)
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H23 '测试命令字
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12输出测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
''' <summary>
''' 获取C12测试输出序号
''' </summary>
Private C12DONumber(1) As Byte
''' <summary>
''' 获取继电器状态
''' </summary>
''' <param name="index"></param>
''' <returns></returns>
Private Function GetC12DOStatus(index As Integer) As Boolean
Dim bt As Byte = C12DONumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
''' <summary>
''' 获取输入序号
''' </summary>
''' <param name="number"></param>
''' <returns></returns>
Private Function GetC12DONumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
C12DONumber(number \ 4) = (C12DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else '置位10
C12DONumber(number \ 4) = (C12DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return C12DONumber
End Function
''' <summary>
''' C12输入测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnInputTest_Click(sender As Object, e As EventArgs) Handles BtnInputTest.Click
Dim cmd As Byte
Dim testState As Byte = &H1 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H3 '测试时间——3分钟
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd)
'组包
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12输入测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C12音乐测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button21_Click(sender As Object, e As EventArgs) Handles Button21.Click
Dim cmd As Byte
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &H15 '设备类型
Dim devAddr As Byte = &H1 '设备地址默认为0
Dim devCmd As Byte = &H22 '测试命令字
Dim param() As Byte = C5MusicTest()
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"音频测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C5测试音频播放文件下
''' </summary>
Private _PlayFolder() As String = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"}
''' <summary>
''' 初始化文件夹可选项
''' </summary>
Private Sub InitFolderItems()
ComboBox10.Items.Clear()
ComboBox10.Items.AddRange(_PlayFolder)
If ComboBox10.Items.Count > 4 Then ComboBox10.SelectedIndex = 4
End Sub
''' <summary>
''' C5音频测试
''' </summary>
''' <returns></returns>
Private Function C5MusicTest()
Dim playFolder As Byte = GetPlayFolder(ComboBox10.Text)
Dim playFile As Byte = $"&H{Hex(NumericUpDown1.Value)}"
Dim databuff As New List(Of Byte)
databuff.Add(&H7) '播放音乐状态
databuff.Add(playFolder) '播放音乐文件夹
databuff.Add(playFile) '播放音乐文件
Return databuff.ToArray
End Function
''' <summary>
''' 获取播放文件夹
''' </summary>
''' <param name="text"></param>
''' <returns></returns>
Private Function GetPlayFolder(text As String) As Byte
Dim palyFolder As Byte
Select Case text
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}"
palyFolder = &H0
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}"
palyFolder = &H1
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}"
palyFolder = &H2
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}"
palyFolder = &H3
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}"
palyFolder = &H4
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}"
palyFolder = &H5
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}"
palyFolder = &H6
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"
palyFolder = &H7
End Select
Return palyFolder
End Function
''' <summary>
''' 巡回测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button23_Click(sender As Object, e As EventArgs) Handles Button23.Click
Label48.ForeColor = Color.Black
Label48.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Test)}..."
Dim cmd As Byte
'组包
Dim data(0) As Byte
data(0) = &H3
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12巡回测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C12调光
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnDimming_Click(sender As Object, e As EventArgs) Handles BtnDimming.Click
Dim frmtestc12diming As New FrmTest_C12_Dimming(FCsConfig, "V9调光")
frmtestc12diming.ShowDialog()
End Sub
Public Sub ShowForm1(parentControl As Control, ftext As String) Implements IFrmTest.ShowForm1
Throw New NotImplementedException()
End Sub
#End Region
End Class

660
BLV_Studio/Control/FrmTest_C12.Designer.vb generated Normal file
View File

@@ -0,0 +1,660 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmTest_C12
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.Label48 = New System.Windows.Forms.Label()
Me.LblInput7 = New System.Windows.Forms.Label()
Me.LblInput6 = New System.Windows.Forms.Label()
Me.LblInput5 = New System.Windows.Forms.Label()
Me.LblInput4 = New System.Windows.Forms.Label()
Me.LblInput3 = New System.Windows.Forms.Label()
Me.LblInput2 = New System.Windows.Forms.Label()
Me.LblInput1 = New System.Windows.Forms.Label()
Me.Label40 = New System.Windows.Forms.Label()
Me.Button23 = New System.Windows.Forms.Button()
Me.BtnInputTest = New System.Windows.Forms.Button()
Me.Button21 = New System.Windows.Forms.Button()
Me.Label39 = New System.Windows.Forms.Label()
Me.NumericUpDown1 = New System.Windows.Forms.NumericUpDown()
Me.Label38 = New System.Windows.Forms.Label()
Me.ComboBox10 = New System.Windows.Forms.ComboBox()
Me.Label37 = New System.Windows.Forms.Label()
Me.Label36 = New System.Windows.Forms.Label()
Me.BtnOutput5 = New System.Windows.Forms.Button()
Me.BtnOutput4 = New System.Windows.Forms.Button()
Me.BtnOutput3 = New System.Windows.Forms.Button()
Me.BtnOutput2 = New System.Windows.Forms.Button()
Me.BtnOutput1 = New System.Windows.Forms.Button()
Me.Label35 = New System.Windows.Forms.Label()
Me.BtnRelay13 = New System.Windows.Forms.Button()
Me.BtnRelay12 = New System.Windows.Forms.Button()
Me.BtnRelay11 = New System.Windows.Forms.Button()
Me.Label34 = New System.Windows.Forms.Label()
Me.BtnRelay10 = New System.Windows.Forms.Button()
Me.BtnRelay9 = New System.Windows.Forms.Button()
Me.BtnRelay7 = New System.Windows.Forms.Button()
Me.BtnRelay6 = New System.Windows.Forms.Button()
Me.BtnRelay8 = New System.Windows.Forms.Button()
Me.BtnRelay5 = New System.Windows.Forms.Button()
Me.BtnRelay4 = New System.Windows.Forms.Button()
Me.BtnRelay3 = New System.Windows.Forms.Button()
Me.BtnRelay2 = New System.Windows.Forms.Button()
Me.BtnRelay1 = New System.Windows.Forms.Button()
Me.LblInput13 = New System.Windows.Forms.Label()
Me.LblInput12 = New System.Windows.Forms.Label()
Me.LblInput11 = New System.Windows.Forms.Label()
Me.LblInput10 = New System.Windows.Forms.Label()
Me.LblInput9 = New System.Windows.Forms.Label()
Me.LblInput8 = New System.Windows.Forms.Label()
Me.Label7 = New System.Windows.Forms.Label()
Me.BtnDimming = New System.Windows.Forms.Button()
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'Label48
'
Me.Label48.AutoSize = True
Me.Label48.Font = New System.Drawing.Font("宋体", 21.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label48.Location = New System.Drawing.Point(196, 216)
Me.Label48.Name = "Label48"
Me.Label48.Size = New System.Drawing.Size(125, 29)
Me.Label48.TabIndex = 123
Me.Label48.Text = "Test..."
'
'LblInput7
'
Me.LblInput7.AutoSize = True
Me.LblInput7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput7.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput7.Location = New System.Drawing.Point(253, 144)
Me.LblInput7.Name = "LblInput7"
Me.LblInput7.Size = New System.Drawing.Size(30, 16)
Me.LblInput7.TabIndex = 122
Me.LblInput7.Text = " 7 "
'
'LblInput6
'
Me.LblInput6.AutoSize = True
Me.LblInput6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput6.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput6.Location = New System.Drawing.Point(215, 144)
Me.LblInput6.Name = "LblInput6"
Me.LblInput6.Size = New System.Drawing.Size(30, 16)
Me.LblInput6.TabIndex = 121
Me.LblInput6.Text = " 6 "
'
'LblInput5
'
Me.LblInput5.AutoSize = True
Me.LblInput5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput5.Location = New System.Drawing.Point(177, 144)
Me.LblInput5.Name = "LblInput5"
Me.LblInput5.Size = New System.Drawing.Size(30, 16)
Me.LblInput5.TabIndex = 120
Me.LblInput5.Text = " 5 "
'
'LblInput4
'
Me.LblInput4.AutoSize = True
Me.LblInput4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput4.Location = New System.Drawing.Point(139, 144)
Me.LblInput4.Name = "LblInput4"
Me.LblInput4.Size = New System.Drawing.Size(30, 16)
Me.LblInput4.TabIndex = 119
Me.LblInput4.Text = " 4 "
'
'LblInput3
'
Me.LblInput3.AutoSize = True
Me.LblInput3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput3.Location = New System.Drawing.Point(101, 144)
Me.LblInput3.Name = "LblInput3"
Me.LblInput3.Size = New System.Drawing.Size(30, 16)
Me.LblInput3.TabIndex = 118
Me.LblInput3.Text = " 3 "
'
'LblInput2
'
Me.LblInput2.AutoSize = True
Me.LblInput2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput2.Location = New System.Drawing.Point(63, 144)
Me.LblInput2.Name = "LblInput2"
Me.LblInput2.Size = New System.Drawing.Size(30, 16)
Me.LblInput2.TabIndex = 117
Me.LblInput2.Text = " 2 "
'
'LblInput1
'
Me.LblInput1.AutoSize = True
Me.LblInput1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput1.Location = New System.Drawing.Point(25, 144)
Me.LblInput1.Name = "LblInput1"
Me.LblInput1.Size = New System.Drawing.Size(30, 16)
Me.LblInput1.TabIndex = 116
Me.LblInput1.Text = " 1 "
'
'Label40
'
Me.Label40.AutoSize = True
Me.Label40.Location = New System.Drawing.Point(12, 216)
Me.Label40.Name = "Label40"
Me.Label40.Size = New System.Drawing.Size(77, 12)
Me.Label40.TabIndex = 115
Me.Label40.Text = "C12 巡回测试"
'
'Button23
'
Me.Button23.Location = New System.Drawing.Point(108, 216)
Me.Button23.Name = "Button23"
Me.Button23.Size = New System.Drawing.Size(68, 25)
Me.Button23.TabIndex = 114
Me.Button23.Text = "巡回测试"
Me.Button23.UseVisualStyleBackColor = True
'
'BtnInputTest
'
Me.BtnInputTest.Location = New System.Drawing.Point(569, 140)
Me.BtnInputTest.Name = "BtnInputTest"
Me.BtnInputTest.Size = New System.Drawing.Size(62, 24)
Me.BtnInputTest.TabIndex = 113
Me.BtnInputTest.Text = "输入检测"
Me.BtnInputTest.UseVisualStyleBackColor = True
'
'Button21
'
Me.Button21.Location = New System.Drawing.Point(567, 189)
Me.Button21.Name = "Button21"
Me.Button21.Size = New System.Drawing.Size(62, 21)
Me.Button21.TabIndex = 112
Me.Button21.Text = "播放"
Me.Button21.UseVisualStyleBackColor = True
'
'Label39
'
Me.Label39.AutoSize = True
Me.Label39.BackColor = System.Drawing.SystemColors.Control
Me.Label39.Location = New System.Drawing.Point(270, 193)
Me.Label39.Name = "Label39"
Me.Label39.Size = New System.Drawing.Size(77, 12)
Me.Label39.TabIndex = 111
Me.Label39.Text = "播放文件序号"
Me.Label39.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'NumericUpDown1
'
Me.NumericUpDown1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.NumericUpDown1.Location = New System.Drawing.Point(353, 189)
Me.NumericUpDown1.Maximum = New Decimal(New Integer() {10, 0, 0, 0})
Me.NumericUpDown1.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
Me.NumericUpDown1.Name = "NumericUpDown1"
Me.NumericUpDown1.Size = New System.Drawing.Size(86, 23)
Me.NumericUpDown1.TabIndex = 110
Me.NumericUpDown1.Value = New Decimal(New Integer() {1, 0, 0, 0})
'
'Label38
'
Me.Label38.AutoSize = True
Me.Label38.Location = New System.Drawing.Point(37, 193)
Me.Label38.Name = "Label38"
Me.Label38.Size = New System.Drawing.Size(65, 12)
Me.Label38.TabIndex = 109
Me.Label38.Text = "播放文件夹"
Me.Label38.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'ComboBox10
'
Me.ComboBox10.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox10.FormattingEnabled = True
Me.ComboBox10.Location = New System.Drawing.Point(108, 190)
Me.ComboBox10.Name = "ComboBox10"
Me.ComboBox10.Size = New System.Drawing.Size(138, 20)
Me.ComboBox10.TabIndex = 108
'
'Label37
'
Me.Label37.AutoSize = True
Me.Label37.Location = New System.Drawing.Point(12, 170)
Me.Label37.Name = "Label37"
Me.Label37.Size = New System.Drawing.Size(59, 12)
Me.Label37.TabIndex = 107
Me.Label37.Text = "C12 MUSIC"
'
'Label36
'
Me.Label36.AutoSize = True
Me.Label36.Location = New System.Drawing.Point(12, 84)
Me.Label36.Name = "Label36"
Me.Label36.Size = New System.Drawing.Size(71, 12)
Me.Label36.TabIndex = 106
Me.Label36.Text = "C12 IO 输出"
'
'BtnOutput5
'
Me.BtnOutput5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput5.Location = New System.Drawing.Point(181, 99)
Me.BtnOutput5.Name = "BtnOutput5"
Me.BtnOutput5.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput5.TabIndex = 105
Me.BtnOutput5.Tag = "4"
Me.BtnOutput5.Text = "5"
Me.BtnOutput5.UseVisualStyleBackColor = True
'
'BtnOutput4
'
Me.BtnOutput4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput4.Location = New System.Drawing.Point(142, 99)
Me.BtnOutput4.Name = "BtnOutput4"
Me.BtnOutput4.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput4.TabIndex = 104
Me.BtnOutput4.Tag = "3"
Me.BtnOutput4.Text = "4"
Me.BtnOutput4.UseVisualStyleBackColor = True
'
'BtnOutput3
'
Me.BtnOutput3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput3.Location = New System.Drawing.Point(103, 99)
Me.BtnOutput3.Name = "BtnOutput3"
Me.BtnOutput3.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput3.TabIndex = 103
Me.BtnOutput3.Tag = "2"
Me.BtnOutput3.Text = "3"
Me.BtnOutput3.UseVisualStyleBackColor = True
'
'BtnOutput2
'
Me.BtnOutput2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput2.Location = New System.Drawing.Point(64, 99)
Me.BtnOutput2.Name = "BtnOutput2"
Me.BtnOutput2.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput2.TabIndex = 102
Me.BtnOutput2.Tag = "1"
Me.BtnOutput2.Text = "2"
Me.BtnOutput2.UseVisualStyleBackColor = True
'
'BtnOutput1
'
Me.BtnOutput1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput1.Location = New System.Drawing.Point(25, 99)
Me.BtnOutput1.Name = "BtnOutput1"
Me.BtnOutput1.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput1.TabIndex = 101
Me.BtnOutput1.Tag = "0"
Me.BtnOutput1.Text = "1"
Me.BtnOutput1.UseVisualStyleBackColor = True
'
'Label35
'
Me.Label35.AutoSize = True
Me.Label35.Location = New System.Drawing.Point(12, 128)
Me.Label35.Name = "Label35"
Me.Label35.Size = New System.Drawing.Size(71, 12)
Me.Label35.TabIndex = 100
Me.Label35.Text = "C12 IO 输入"
'
'BtnRelay13
'
Me.BtnRelay13.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay13.Location = New System.Drawing.Point(493, 54)
Me.BtnRelay13.Name = "BtnRelay13"
Me.BtnRelay13.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay13.TabIndex = 99
Me.BtnRelay13.Tag = "12"
Me.BtnRelay13.Text = "13"
Me.BtnRelay13.UseVisualStyleBackColor = True
'
'BtnRelay12
'
Me.BtnRelay12.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay12.Location = New System.Drawing.Point(454, 54)
Me.BtnRelay12.Name = "BtnRelay12"
Me.BtnRelay12.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay12.TabIndex = 97
Me.BtnRelay12.Tag = "11"
Me.BtnRelay12.Text = "12"
Me.BtnRelay12.UseVisualStyleBackColor = True
'
'BtnRelay11
'
Me.BtnRelay11.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay11.Location = New System.Drawing.Point(415, 54)
Me.BtnRelay11.Name = "BtnRelay11"
Me.BtnRelay11.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay11.TabIndex = 98
Me.BtnRelay11.Tag = "10"
Me.BtnRelay11.Text = "11"
Me.BtnRelay11.UseVisualStyleBackColor = True
'
'Label34
'
Me.Label34.AutoSize = True
Me.Label34.Location = New System.Drawing.Point(12, 39)
Me.Label34.Name = "Label34"
Me.Label34.Size = New System.Drawing.Size(107, 12)
Me.Label34.TabIndex = 96
Me.Label34.Text = "C12 IO 继电器控制"
'
'BtnRelay10
'
Me.BtnRelay10.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay10.Location = New System.Drawing.Point(376, 54)
Me.BtnRelay10.Name = "BtnRelay10"
Me.BtnRelay10.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay10.TabIndex = 95
Me.BtnRelay10.Tag = "9"
Me.BtnRelay10.Text = "10"
Me.BtnRelay10.UseVisualStyleBackColor = True
'
'BtnRelay9
'
Me.BtnRelay9.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay9.Location = New System.Drawing.Point(337, 54)
Me.BtnRelay9.Name = "BtnRelay9"
Me.BtnRelay9.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay9.TabIndex = 94
Me.BtnRelay9.Tag = "8"
Me.BtnRelay9.Text = "9"
Me.BtnRelay9.UseVisualStyleBackColor = True
'
'BtnRelay7
'
Me.BtnRelay7.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay7.Location = New System.Drawing.Point(259, 54)
Me.BtnRelay7.Name = "BtnRelay7"
Me.BtnRelay7.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay7.TabIndex = 93
Me.BtnRelay7.Tag = "6"
Me.BtnRelay7.Text = "7"
Me.BtnRelay7.UseVisualStyleBackColor = True
'
'BtnRelay6
'
Me.BtnRelay6.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay6.Location = New System.Drawing.Point(220, 54)
Me.BtnRelay6.Name = "BtnRelay6"
Me.BtnRelay6.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay6.TabIndex = 92
Me.BtnRelay6.Tag = "5"
Me.BtnRelay6.Text = "6"
Me.BtnRelay6.UseVisualStyleBackColor = True
'
'BtnRelay8
'
Me.BtnRelay8.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay8.Location = New System.Drawing.Point(298, 54)
Me.BtnRelay8.Name = "BtnRelay8"
Me.BtnRelay8.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay8.TabIndex = 91
Me.BtnRelay8.Tag = "7"
Me.BtnRelay8.Text = "8"
Me.BtnRelay8.UseVisualStyleBackColor = True
'
'BtnRelay5
'
Me.BtnRelay5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay5.Location = New System.Drawing.Point(181, 54)
Me.BtnRelay5.Name = "BtnRelay5"
Me.BtnRelay5.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay5.TabIndex = 90
Me.BtnRelay5.Tag = "4"
Me.BtnRelay5.Text = "5"
Me.BtnRelay5.UseVisualStyleBackColor = True
'
'BtnRelay4
'
Me.BtnRelay4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay4.Location = New System.Drawing.Point(142, 54)
Me.BtnRelay4.Name = "BtnRelay4"
Me.BtnRelay4.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay4.TabIndex = 89
Me.BtnRelay4.Tag = "3"
Me.BtnRelay4.Text = "4"
Me.BtnRelay4.UseVisualStyleBackColor = True
'
'BtnRelay3
'
Me.BtnRelay3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay3.Location = New System.Drawing.Point(103, 54)
Me.BtnRelay3.Name = "BtnRelay3"
Me.BtnRelay3.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay3.TabIndex = 88
Me.BtnRelay3.Tag = "2"
Me.BtnRelay3.Text = "3"
Me.BtnRelay3.UseVisualStyleBackColor = True
'
'BtnRelay2
'
Me.BtnRelay2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay2.Location = New System.Drawing.Point(64, 54)
Me.BtnRelay2.Name = "BtnRelay2"
Me.BtnRelay2.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay2.TabIndex = 87
Me.BtnRelay2.Tag = "1"
Me.BtnRelay2.Text = "2"
Me.BtnRelay2.UseVisualStyleBackColor = True
'
'BtnRelay1
'
Me.BtnRelay1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay1.Location = New System.Drawing.Point(25, 54)
Me.BtnRelay1.Name = "BtnRelay1"
Me.BtnRelay1.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay1.TabIndex = 86
Me.BtnRelay1.Tag = "0"
Me.BtnRelay1.Text = "1"
Me.BtnRelay1.UseVisualStyleBackColor = True
'
'LblInput13
'
Me.LblInput13.AutoSize = True
Me.LblInput13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput13.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput13.Location = New System.Drawing.Point(502, 144)
Me.LblInput13.Name = "LblInput13"
Me.LblInput13.Size = New System.Drawing.Size(37, 16)
Me.LblInput13.TabIndex = 132
Me.LblInput13.Text = " 13 "
'
'LblInput12
'
Me.LblInput12.AutoSize = True
Me.LblInput12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput12.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput12.Location = New System.Drawing.Point(457, 144)
Me.LblInput12.Name = "LblInput12"
Me.LblInput12.Size = New System.Drawing.Size(37, 16)
Me.LblInput12.TabIndex = 131
Me.LblInput12.Text = " 12 "
'
'LblInput11
'
Me.LblInput11.AutoSize = True
Me.LblInput11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput11.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput11.Location = New System.Drawing.Point(412, 144)
Me.LblInput11.Name = "LblInput11"
Me.LblInput11.Size = New System.Drawing.Size(37, 16)
Me.LblInput11.TabIndex = 130
Me.LblInput11.Text = " 11 "
'
'LblInput10
'
Me.LblInput10.AutoSize = True
Me.LblInput10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput10.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput10.Location = New System.Drawing.Point(367, 144)
Me.LblInput10.Name = "LblInput10"
Me.LblInput10.Size = New System.Drawing.Size(37, 16)
Me.LblInput10.TabIndex = 129
Me.LblInput10.Text = " 10 "
'
'LblInput9
'
Me.LblInput9.AutoSize = True
Me.LblInput9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput9.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput9.Location = New System.Drawing.Point(329, 144)
Me.LblInput9.Name = "LblInput9"
Me.LblInput9.Size = New System.Drawing.Size(30, 16)
Me.LblInput9.TabIndex = 128
Me.LblInput9.Text = " 9 "
'
'LblInput8
'
Me.LblInput8.AutoSize = True
Me.LblInput8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput8.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput8.Location = New System.Drawing.Point(291, 144)
Me.LblInput8.Name = "LblInput8"
Me.LblInput8.Size = New System.Drawing.Size(30, 16)
Me.LblInput8.TabIndex = 127
Me.LblInput8.Text = " 8 "
'
'Label7
'
Me.Label7.AutoSize = True
Me.Label7.Location = New System.Drawing.Point(12, 9)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(53, 12)
Me.Label7.TabIndex = 133
Me.Label7.Text = "C12 调光"
'
'BtnDimming
'
Me.BtnDimming.Location = New System.Drawing.Point(91, 9)
Me.BtnDimming.Name = "BtnDimming"
Me.BtnDimming.Size = New System.Drawing.Size(62, 24)
Me.BtnDimming.TabIndex = 134
Me.BtnDimming.Text = "调光测试"
Me.BtnDimming.UseVisualStyleBackColor = True
'
'FrmTest_C12
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(658, 256)
Me.Controls.Add(Me.BtnDimming)
Me.Controls.Add(Me.Label7)
Me.Controls.Add(Me.LblInput13)
Me.Controls.Add(Me.LblInput12)
Me.Controls.Add(Me.LblInput11)
Me.Controls.Add(Me.LblInput10)
Me.Controls.Add(Me.LblInput9)
Me.Controls.Add(Me.LblInput8)
Me.Controls.Add(Me.Label48)
Me.Controls.Add(Me.LblInput7)
Me.Controls.Add(Me.LblInput6)
Me.Controls.Add(Me.LblInput5)
Me.Controls.Add(Me.LblInput4)
Me.Controls.Add(Me.LblInput3)
Me.Controls.Add(Me.LblInput2)
Me.Controls.Add(Me.LblInput1)
Me.Controls.Add(Me.Label40)
Me.Controls.Add(Me.Button23)
Me.Controls.Add(Me.BtnInputTest)
Me.Controls.Add(Me.Button21)
Me.Controls.Add(Me.Label39)
Me.Controls.Add(Me.NumericUpDown1)
Me.Controls.Add(Me.Label38)
Me.Controls.Add(Me.ComboBox10)
Me.Controls.Add(Me.Label37)
Me.Controls.Add(Me.Label36)
Me.Controls.Add(Me.BtnOutput5)
Me.Controls.Add(Me.BtnOutput4)
Me.Controls.Add(Me.BtnOutput3)
Me.Controls.Add(Me.BtnOutput2)
Me.Controls.Add(Me.BtnOutput1)
Me.Controls.Add(Me.Label35)
Me.Controls.Add(Me.BtnRelay13)
Me.Controls.Add(Me.BtnRelay12)
Me.Controls.Add(Me.BtnRelay11)
Me.Controls.Add(Me.Label34)
Me.Controls.Add(Me.BtnRelay10)
Me.Controls.Add(Me.BtnRelay9)
Me.Controls.Add(Me.BtnRelay7)
Me.Controls.Add(Me.BtnRelay6)
Me.Controls.Add(Me.BtnRelay8)
Me.Controls.Add(Me.BtnRelay5)
Me.Controls.Add(Me.BtnRelay4)
Me.Controls.Add(Me.BtnRelay3)
Me.Controls.Add(Me.BtnRelay2)
Me.Controls.Add(Me.BtnRelay1)
Me.Name = "FrmTest_C12"
Me.Text = "FrmTest_C12"
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Label48 As Label
Friend WithEvents LblInput7 As Label
Friend WithEvents LblInput6 As Label
Friend WithEvents LblInput5 As Label
Friend WithEvents LblInput4 As Label
Friend WithEvents LblInput3 As Label
Friend WithEvents LblInput2 As Label
Friend WithEvents LblInput1 As Label
Friend WithEvents Label40 As Label
Friend WithEvents Button23 As Button
Friend WithEvents BtnInputTest As Button
Friend WithEvents Button21 As Button
Friend WithEvents Label39 As Label
Friend WithEvents NumericUpDown1 As NumericUpDown
Friend WithEvents Label38 As Label
Friend WithEvents ComboBox10 As ComboBox
Friend WithEvents Label37 As Label
Friend WithEvents Label36 As Label
Friend WithEvents BtnOutput5 As Button
Friend WithEvents BtnOutput4 As Button
Friend WithEvents BtnOutput3 As Button
Friend WithEvents BtnOutput2 As Button
Friend WithEvents BtnOutput1 As Button
Friend WithEvents Label35 As Label
Friend WithEvents BtnRelay13 As Button
Friend WithEvents BtnRelay12 As Button
Friend WithEvents BtnRelay11 As Button
Friend WithEvents Label34 As Label
Friend WithEvents BtnRelay10 As Button
Friend WithEvents BtnRelay9 As Button
Friend WithEvents BtnRelay7 As Button
Friend WithEvents BtnRelay6 As Button
Friend WithEvents BtnRelay8 As Button
Friend WithEvents BtnRelay5 As Button
Friend WithEvents BtnRelay4 As Button
Friend WithEvents BtnRelay3 As Button
Friend WithEvents BtnRelay2 As Button
Friend WithEvents BtnRelay1 As Button
Friend WithEvents LblInput13 As Label
Friend WithEvents LblInput12 As Label
Friend WithEvents LblInput11 As Label
Friend WithEvents LblInput10 As Label
Friend WithEvents LblInput9 As Label
Friend WithEvents LblInput8 As Label
Friend WithEvents Label7 As Label
Friend WithEvents BtnDimming As Button
End Class

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,390 @@
Public Class FrmTest_C12
Implements IFrmTest
Public FCsConfig As FrmCSeriesConfig
Sub New(pathme As FrmCSeriesConfig)
' 此调用是设计器所必需的。
InitializeComponent()
FCsConfig = pathme
' 在 InitializeComponent() 调用之后添加任何初始化。
End Sub
#Region "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
Private Sub MultiLanguageInfo()
'控件.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
Label7.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Dimming)
BtnDimming.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.DimmingTest)
Label34.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
Label36.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOOutput)
Label35.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOInput)
Label40.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
Label37.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Music)
BtnInputTest.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.TheInputTest)
Label38.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFolder)
Label39.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFileNumber)
Button21.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Play)
Button23.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
End Sub
#End Region
#Region "窗体"
''' <summary>
''' 窗体加载事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmTest_C5_Load(sender As Object, e As EventArgs) Handles Me.Load
MultiLanguageInfo()
InitFolderItems()
End Sub
''' <summary>
''' 显示窗体事件
''' 实现接口
''' </summary>
''' <param name="parentControl"></param>
Public Sub ShowForm(parentControl As Control) Implements IFrmTest.ShowForm
FormBorderStyle = FormBorderStyle.None '无边框
TopLevel = False
Dock = DockStyle.Fill '填满大小
Parent = parentControl '父容器
Show()
End Sub
''' <summary>
''' 发送函数
''' </summary>
''' <param name="sendPacket"></param>
Public Sub SendData(sendPacket() As Byte)
FCsConfig.SendTestData(sendPacket)
FCsConfig.AppendTipText($"TX{ByteToString(sendPacket)}{vbCrLf}", Color.Green)
End Sub
#End Region
#Region "C12测试"
''' <summary>
''' 获取继电器序号
''' </summary>
Private relayNumber(4) As Byte
''' <summary>
''' 发送组包
''' </summary>
''' <param name="cmd"></param>
''' <param name="dataBuff"></param>
''' <returns></returns>
Public Function FillPacket(cmd As Byte, dataBuff() As Byte) As Byte()
If _connectStatus = True Then
cmd = &HD3 '网络测试Cmd
dataBuff = FCsConfig.FillSendData(cmd, dataBuff) '网络数据
Else
cmd = &H7 '串口测试Cmd
dataBuff = FillModelsSerialPortTest(cmd, dataBuff) '串口数据
End If
Return dataBuff
End Function
''' <summary>
''' 1-13路继电器
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnRelay13_Click(sender As Object, e As EventArgs) Handles BtnRelay9.Click, BtnRelay8.Click, BtnRelay7.Click, BtnRelay6.Click, BtnRelay5.Click, BtnRelay4.Click, BtnRelay3.Click, BtnRelay2.Click, BtnRelay13.Click, BtnRelay12.Click, BtnRelay11.Click, BtnRelay10.Click, BtnRelay1.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetRelayStatus(index)
Dim param() As Byte = GetRelayNumber(index, flg)
Dim testState As Byte = &H2
Dim devType As Byte = &HF1
Dim devAddr As Byte = &H0
Dim devCmd As Byte = &H21
'组包
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12继电器测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
''' <summary>
''' 获取继电器状态
''' </summary>
''' <param name="index"></param>
''' <returns></returns>
Private Function GetRelayStatus(index As Integer) As Boolean
Dim bt As Byte = relayNumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
''' <summary>
''' 获取继电器序号
''' </summary>
''' <param name="number"></param>
''' <returns></returns>
Private Function GetRelayNumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
relayNumber(number \ 4) = (relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else
relayNumber(number \ 4) = (relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return relayNumber
End Function
''' <summary>
''' 1-5路输出
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnOutput1_Click(sender As Object, e As EventArgs) Handles BtnOutput5.Click, BtnOutput4.Click, BtnOutput3.Click, BtnOutput2.Click, BtnOutput1.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetC12DOStatus(index)
Dim param() As Byte = GetC12DONumber(index, flg)
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H23 '测试命令字
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12输出测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
''' <summary>
''' 获取C12测试输出序号
''' </summary>
Private C12DONumber(1) As Byte
''' <summary>
''' 获取继电器状态
''' </summary>
''' <param name="index"></param>
''' <returns></returns>
Private Function GetC12DOStatus(index As Integer) As Boolean
Dim bt As Byte = C12DONumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
''' <summary>
''' 获取输入序号
''' </summary>
''' <param name="number"></param>
''' <returns></returns>
Private Function GetC12DONumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
C12DONumber(number \ 4) = (C12DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else '置位10
C12DONumber(number \ 4) = (C12DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return C12DONumber
End Function
''' <summary>
''' C12输入测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnInputTest_Click(sender As Object, e As EventArgs) Handles BtnInputTest.Click
Dim cmd As Byte
Dim testState As Byte = &H1 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H3 '测试时间——3分钟
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd)
'组包
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12输入测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C12音乐测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button21_Click(sender As Object, e As EventArgs) Handles Button21.Click
Dim cmd As Byte
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &H15 '设备类型
Dim devAddr As Byte = &H1 '设备地址默认为0
Dim devCmd As Byte = &H22 '测试命令字
Dim param() As Byte = C5MusicTest()
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"音频测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C5测试音频播放文件下
''' </summary>
Private _PlayFolder() As String = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"}
''' <summary>
''' 初始化文件夹可选项
''' </summary>
Private Sub InitFolderItems()
ComboBox10.Items.Clear()
ComboBox10.Items.AddRange(_PlayFolder)
If ComboBox10.Items.Count > 4 Then ComboBox10.SelectedIndex = 4
End Sub
''' <summary>
''' C5音频测试
''' </summary>
''' <returns></returns>
Private Function C5MusicTest()
Dim playFolder As Byte = GetPlayFolder(ComboBox10.Text)
Dim playFile As Byte = $"&H{Hex(NumericUpDown1.Value)}"
Dim databuff As New List(Of Byte)
databuff.Add(&H7) '播放音乐状态
databuff.Add(playFolder) '播放音乐文件夹
databuff.Add(playFile) '播放音乐文件
Return databuff.ToArray
End Function
''' <summary>
''' 获取播放文件夹
''' </summary>
''' <param name="text"></param>
''' <returns></returns>
Private Function GetPlayFolder(text As String) As Byte
Dim palyFolder As Byte
Select Case text
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}"
palyFolder = &H0
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}"
palyFolder = &H1
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}"
palyFolder = &H2
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}"
palyFolder = &H3
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}"
palyFolder = &H4
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}"
palyFolder = &H5
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}"
palyFolder = &H6
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"
palyFolder = &H7
End Select
Return palyFolder
End Function
''' <summary>
''' 巡回测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button23_Click(sender As Object, e As EventArgs) Handles Button23.Click
Label48.ForeColor = Color.Black
Label48.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Test)}..."
Dim cmd As Byte
'组包
Dim data(0) As Byte
data(0) = &H3
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12巡回测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C12调光
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnDimming_Click(sender As Object, e As EventArgs) Handles BtnDimming.Click
Dim frmtestc12diming As New FrmTest_C12_Dimming(FCsConfig)
frmtestc12diming.ShowDialog()
End Sub
Public Sub ShowForm1(parentControl As Control, ftext As String) Implements IFrmTest.ShowForm1
Throw New NotImplementedException()
End Sub
#End Region
End Class

View File

@@ -0,0 +1,93 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class FrmTest_C12_Dimming
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
Me.Label16 = New System.Windows.Forms.Label()
Me.Label15 = New System.Windows.Forms.Label()
Me.Label14 = New System.Windows.Forms.Label()
Me.GroupBox1.SuspendLayout()
Me.SuspendLayout()
'
'GroupBox1
'
Me.GroupBox1.Controls.Add(Me.Label16)
Me.GroupBox1.Controls.Add(Me.Label15)
Me.GroupBox1.Controls.Add(Me.Label14)
Me.GroupBox1.Dock = System.Windows.Forms.DockStyle.Fill
Me.GroupBox1.Location = New System.Drawing.Point(0, 0)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Size = New System.Drawing.Size(430, 427)
Me.GroupBox1.TabIndex = 4
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "Dimming"
'
'Label16
'
Me.Label16.AutoSize = True
Me.Label16.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label16.Location = New System.Drawing.Point(310, 35)
Me.Label16.Name = "Label16"
Me.Label16.Size = New System.Drawing.Size(31, 14)
Me.Label16.TabIndex = 32
Me.Label16.Text = "Val"
'
'Label15
'
Me.Label15.AutoSize = True
Me.Label15.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label15.Location = New System.Drawing.Point(179, 35)
Me.Label15.Name = "Label15"
Me.Label15.Size = New System.Drawing.Size(31, 14)
Me.Label15.TabIndex = 31
Me.Label15.Text = "Val"
'
'Label14
'
Me.Label14.AutoSize = True
Me.Label14.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label14.Location = New System.Drawing.Point(35, 35)
Me.Label14.Name = "Label14"
Me.Label14.Size = New System.Drawing.Size(23, 14)
Me.Label14.TabIndex = 30
Me.Label14.Text = "SN"
'
'FrmTest_C12_Dimming
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(430, 427)
Me.Controls.Add(Me.GroupBox1)
Me.Name = "FrmTest_C12_Dimming"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
Me.Text = "C12调光"
Me.GroupBox1.ResumeLayout(False)
Me.GroupBox1.PerformLayout()
Me.ResumeLayout(False)
End Sub
Friend WithEvents GroupBox1 As GroupBox
Friend WithEvents Label16 As Label
Friend WithEvents Label15 As Label
Friend WithEvents Label14 As Label
End Class

View File

@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="GroupBox1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label16.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label15.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label14.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@@ -0,0 +1,231 @@
Imports System.ComponentModel
Public Class FrmTest_C12_Dimming
Public FCsConfig As FrmCSeriesConfig
Sub New(pathme As FrmCSeriesConfig, Optional frtile As String = "C12调光")
Text = frtile
' 此调用是设计器所必需的。
InitializeComponent()
FCsConfig = pathme
' 在 InitializeComponent() 调用之后添加任何初始化。
Text = frtile
End Sub
#Region "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
Private Sub MultiLanguageInfo()
'控件.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Dimming)
GroupBox1.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Dimming)
End Sub
#End Region
#Region "窗体"
''' <summary>
''' 窗体加载
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmTest_C12_Dimming_Load(sender As Object, e As EventArgs) Handles Me.Load
InitDimmingLoadInfo()
End Sub
''' <summary>
''' 发送函数
''' </summary>
''' <param name="sendPacket"></param>
Public Sub SendData(sendPacket() As Byte)
FCsConfig.SendTestData(sendPacket)
FCsConfig.AppendTipText($"TX{ByteToString(sendPacket)}{vbCrLf}", Color.Green)
End Sub
#End Region
#Region "C12调光"
''' <summary>
''' 调光
''' </summary>
Private _Dimming As New Dictionary(Of Integer, C12Test_DimmingBLL)
''' <summary>
''' 初始化调光信息
''' </summary>
Private Sub InitDimmingLoadInfo()
If _Dimming.Count > 0 Then Return
'_Dimming.Clear()
Dim number As Integer = 12
If Text.Equals("C12调光") Then
number = 12
Else
number = 4
End If
For index = 0 To number
Dim a As New Label
a.Name = "LED_Tip" & index
a.Parent = GroupBox1
a.Size = New Size(30, 12)
a.Location = New Point(36, 60 + index * (a.Height + 12))
a.Font = New Font("Arial", 9, FontStyle.Bold)
a.ForeColor = Color.Green
If index = 0 Then
a.Text = $"ALL"
a.Visible = False
Else
a.Text = $"L{index}"
End If
a.Tag = index
'a.BringToFront()
Dim b As New HScrollBar
If index = 0 Then
b.Visible = False
End If
b.Name = "LED_Bar" & index
b.Parent = GroupBox1
b.Size = New Size(215, 20)
b.Location = New Point(75, 56 + index * (a.Height + 12))
b.Tag = index
b.Maximum = 109
AddHandler b.ValueChanged, AddressOf HScrollBar1_ValueChanged
Dim c As New NumericUpDown
If index = 0 Then
c.Visible = False
End If
c.Name = "LED_Num" & index
c.Parent = GroupBox1
c.Size = New Size(45, 21)
c.Location = New Point(304, 58 + index * (a.Height + 12))
c.Tag = index
AddHandler c.ValueChanged, AddressOf NumericUpDown1_ValueChanged
_Dimming.Add(index, New C12Test_DimmingBLL With {.Dimming = a, .DimmingVal = b, .DimmingInputVal = c})
Next
End Sub
Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs)
Dim hsb As NumericUpDown = sender
Dim index As Integer = sender.tag
If _Dimming.ContainsKey(index) = False Then Return
_Dimming(index).DimmingVal.Value = hsb.Value
End Sub
Private Sub HScrollBar1_ValueChanged(sender As Object, e As EventArgs)
Dim hsb As HScrollBar = sender
Dim index As Integer = sender.tag
If _Dimming.ContainsKey(index) = False Then Return
_Dimming(index).DimmingInputVal.Value = hsb.Value
'Threading.ThreadPool.QueueUserWorkItem(AddressOf Demo, index)
SendDimming(index)
End Sub
''' <summary>
''' 调光发送
''' </summary>
''' <param name="Index"></param>
Private Sub SendDimming(Index As Integer)
Static time As Date
'If (Now - time).TotalMilliseconds < 200 Then
' Return
'End If
Threading.Thread.Sleep(200)
If _Dimming.ContainsKey(Index) = False Then Return
DimmingDataBuff(Index)
'Console.WriteLine($"Text:{_Dimming(Index).Dimming.Text} Value:{_Dimming(Index).DimmingVal.Value}")
time = Now
End Sub
''' <summary>
''' 调光数据
''' </summary>
''' <param name="Index"></param>
Private Sub DimmingDataBuff(Index As Integer)
Dim cmd As Byte
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &H18 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H21 '测试Cmd
Dim param() As Byte = DimmingParam(Index)
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte
'组包
If Text.Equals("C12调光") Then
sendDatas = FCsConfig._blvC12TestForm.FillPacket(cmd, data)
Console.WriteLine($"C12调光测试{ByteToString(sendDatas)}")
Else
sendDatas = FCsConfig._blvC8TestForm.FillPacket(cmd, data)
Console.WriteLine($"C12调光测试{ByteToString(sendDatas)}")
End If
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' 调光参数
''' </summary>
''' <param name="Index"></param>
''' <returns></returns>
Private Function DimmingParam(Index As Integer) As Byte()
Dim data(2) As Byte
data(0) = Index
data(1) = _Dimming(Index).DimmingInputVal.Value
data(2) = &H1
Return data
End Function
#End Region
#Region "窗体关闭"
''' <summary>
''' 窗体关闭事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmTest_C12_Dimming_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
'Close()
End Sub
#End Region
End Class

843
BLV_Studio/Control/FrmTest_C5.Designer.vb generated Normal file
View File

@@ -0,0 +1,843 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmTest_C5
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.Panel2 = New System.Windows.Forms.Panel()
Me.Button1 = New System.Windows.Forms.Button()
Me.Button2 = New System.Windows.Forms.Button()
Me.Button3 = New System.Windows.Forms.Button()
Me.Button4 = New System.Windows.Forms.Button()
Me.Label51 = New System.Windows.Forms.Label()
Me.Label50 = New System.Windows.Forms.Label()
Me.Button20 = New System.Windows.Forms.Button()
Me.Label48 = New System.Windows.Forms.Label()
Me.Label47 = New System.Windows.Forms.Label()
Me.Label46 = New System.Windows.Forms.Label()
Me.Label45 = New System.Windows.Forms.Label()
Me.Label44 = New System.Windows.Forms.Label()
Me.Label43 = New System.Windows.Forms.Label()
Me.Label42 = New System.Windows.Forms.Label()
Me.Label41 = New System.Windows.Forms.Label()
Me.Label40 = New System.Windows.Forms.Label()
Me.Button23 = New System.Windows.Forms.Button()
Me.Button22 = New System.Windows.Forms.Button()
Me.Button21 = New System.Windows.Forms.Button()
Me.Label39 = New System.Windows.Forms.Label()
Me.NumericUpDown1 = New System.Windows.Forms.NumericUpDown()
Me.Label38 = New System.Windows.Forms.Label()
Me.ComboBox10 = New System.Windows.Forms.ComboBox()
Me.Label37 = New System.Windows.Forms.Label()
Me.Label36 = New System.Windows.Forms.Label()
Me.Button83 = New System.Windows.Forms.Button()
Me.Button82 = New System.Windows.Forms.Button()
Me.Button81 = New System.Windows.Forms.Button()
Me.Button80 = New System.Windows.Forms.Button()
Me.Button79 = New System.Windows.Forms.Button()
Me.Label35 = New System.Windows.Forms.Label()
Me.Button63 = New System.Windows.Forms.Button()
Me.Button64 = New System.Windows.Forms.Button()
Me.Button65 = New System.Windows.Forms.Button()
Me.Button66 = New System.Windows.Forms.Button()
Me.Button67 = New System.Windows.Forms.Button()
Me.Button68 = New System.Windows.Forms.Button()
Me.Button69 = New System.Windows.Forms.Button()
Me.Button70 = New System.Windows.Forms.Button()
Me.Button71 = New System.Windows.Forms.Button()
Me.Button72 = New System.Windows.Forms.Button()
Me.Label34 = New System.Windows.Forms.Label()
Me.Button62 = New System.Windows.Forms.Button()
Me.Button61 = New System.Windows.Forms.Button()
Me.Button60 = New System.Windows.Forms.Button()
Me.Button59 = New System.Windows.Forms.Button()
Me.Button58 = New System.Windows.Forms.Button()
Me.Button57 = New System.Windows.Forms.Button()
Me.Button56 = New System.Windows.Forms.Button()
Me.Button55 = New System.Windows.Forms.Button()
Me.Button54 = New System.Windows.Forms.Button()
Me.Button47 = New System.Windows.Forms.Button()
Me.LblInput13 = New System.Windows.Forms.Label()
Me.LblInput12 = New System.Windows.Forms.Label()
Me.LblInput11 = New System.Windows.Forms.Label()
Me.LblInput10 = New System.Windows.Forms.Label()
Me.LblInput9 = New System.Windows.Forms.Label()
Me.LblInput8 = New System.Windows.Forms.Label()
Me.Panel2.SuspendLayout()
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'Panel2
'
Me.Panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Panel2.Controls.Add(Me.LblInput13)
Me.Panel2.Controls.Add(Me.LblInput12)
Me.Panel2.Controls.Add(Me.LblInput11)
Me.Panel2.Controls.Add(Me.LblInput10)
Me.Panel2.Controls.Add(Me.LblInput9)
Me.Panel2.Controls.Add(Me.LblInput8)
Me.Panel2.Controls.Add(Me.Button1)
Me.Panel2.Controls.Add(Me.Button2)
Me.Panel2.Controls.Add(Me.Button3)
Me.Panel2.Controls.Add(Me.Button4)
Me.Panel2.Controls.Add(Me.Label51)
Me.Panel2.Controls.Add(Me.Label50)
Me.Panel2.Controls.Add(Me.Button20)
Me.Panel2.Controls.Add(Me.Label48)
Me.Panel2.Controls.Add(Me.Label47)
Me.Panel2.Controls.Add(Me.Label46)
Me.Panel2.Controls.Add(Me.Label45)
Me.Panel2.Controls.Add(Me.Label44)
Me.Panel2.Controls.Add(Me.Label43)
Me.Panel2.Controls.Add(Me.Label42)
Me.Panel2.Controls.Add(Me.Label41)
Me.Panel2.Controls.Add(Me.Label40)
Me.Panel2.Controls.Add(Me.Button23)
Me.Panel2.Controls.Add(Me.Button22)
Me.Panel2.Controls.Add(Me.Button21)
Me.Panel2.Controls.Add(Me.Label39)
Me.Panel2.Controls.Add(Me.NumericUpDown1)
Me.Panel2.Controls.Add(Me.Label38)
Me.Panel2.Controls.Add(Me.ComboBox10)
Me.Panel2.Controls.Add(Me.Label37)
Me.Panel2.Controls.Add(Me.Label36)
Me.Panel2.Controls.Add(Me.Button83)
Me.Panel2.Controls.Add(Me.Button82)
Me.Panel2.Controls.Add(Me.Button81)
Me.Panel2.Controls.Add(Me.Button80)
Me.Panel2.Controls.Add(Me.Button79)
Me.Panel2.Controls.Add(Me.Label35)
Me.Panel2.Controls.Add(Me.Button63)
Me.Panel2.Controls.Add(Me.Button64)
Me.Panel2.Controls.Add(Me.Button65)
Me.Panel2.Controls.Add(Me.Button66)
Me.Panel2.Controls.Add(Me.Button67)
Me.Panel2.Controls.Add(Me.Button68)
Me.Panel2.Controls.Add(Me.Button69)
Me.Panel2.Controls.Add(Me.Button70)
Me.Panel2.Controls.Add(Me.Button71)
Me.Panel2.Controls.Add(Me.Button72)
Me.Panel2.Controls.Add(Me.Label34)
Me.Panel2.Controls.Add(Me.Button62)
Me.Panel2.Controls.Add(Me.Button61)
Me.Panel2.Controls.Add(Me.Button60)
Me.Panel2.Controls.Add(Me.Button59)
Me.Panel2.Controls.Add(Me.Button58)
Me.Panel2.Controls.Add(Me.Button57)
Me.Panel2.Controls.Add(Me.Button56)
Me.Panel2.Controls.Add(Me.Button55)
Me.Panel2.Controls.Add(Me.Button54)
Me.Panel2.Controls.Add(Me.Button47)
Me.Panel2.Dock = System.Windows.Forms.DockStyle.Fill
Me.Panel2.Location = New System.Drawing.Point(0, 0)
Me.Panel2.Name = "Panel2"
Me.Panel2.Size = New System.Drawing.Size(730, 246)
Me.Panel2.TabIndex = 1
'
'Button1
'
Me.Button1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button1.Location = New System.Drawing.Point(657, 55)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(31, 27)
Me.Button1.TabIndex = 89
Me.Button1.Tag = "23"
Me.Button1.Text = "24"
Me.Button1.UseVisualStyleBackColor = True
'
'Button2
'
Me.Button2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button2.Location = New System.Drawing.Point(623, 55)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(31, 27)
Me.Button2.TabIndex = 88
Me.Button2.Tag = "22"
Me.Button2.Text = "23"
Me.Button2.UseVisualStyleBackColor = True
'
'Button3
'
Me.Button3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button3.Location = New System.Drawing.Point(555, 55)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(31, 27)
Me.Button3.TabIndex = 87
Me.Button3.Tag = "20"
Me.Button3.Text = "21"
Me.Button3.UseVisualStyleBackColor = True
'
'Button4
'
Me.Button4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button4.Location = New System.Drawing.Point(589, 55)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(31, 27)
Me.Button4.TabIndex = 86
Me.Button4.Tag = "21"
Me.Button4.Text = "22"
Me.Button4.UseVisualStyleBackColor = True
'
'Label51
'
Me.Label51.AutoSize = True
Me.Label51.Font = New System.Drawing.Font("宋体", 21.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label51.Location = New System.Drawing.Point(469, 198)
Me.Label51.Name = "Label51"
Me.Label51.Size = New System.Drawing.Size(125, 29)
Me.Label51.TabIndex = 85
Me.Label51.Text = "Test..."
'
'Label50
'
Me.Label50.AutoSize = True
Me.Label50.Location = New System.Drawing.Point(361, 187)
Me.Label50.Name = "Label50"
Me.Label50.Size = New System.Drawing.Size(53, 12)
Me.Label50.TabIndex = 84
Me.Label50.Text = "MAC 地址"
Me.Label50.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
'
'Button20
'
Me.Button20.Location = New System.Drawing.Point(385, 202)
Me.Button20.Name = "Button20"
Me.Button20.Size = New System.Drawing.Size(68, 25)
Me.Button20.TabIndex = 83
Me.Button20.Text = "设置MAC"
Me.Button20.UseVisualStyleBackColor = True
'
'Label48
'
Me.Label48.AutoSize = True
Me.Label48.Font = New System.Drawing.Font("宋体", 21.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label48.Location = New System.Drawing.Point(189, 187)
Me.Label48.Name = "Label48"
Me.Label48.Size = New System.Drawing.Size(125, 29)
Me.Label48.TabIndex = 82
Me.Label48.Text = "Test..."
'
'Label47
'
Me.Label47.AutoSize = True
Me.Label47.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Label47.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label47.Location = New System.Drawing.Point(227, 115)
Me.Label47.Name = "Label47"
Me.Label47.Size = New System.Drawing.Size(30, 16)
Me.Label47.TabIndex = 81
Me.Label47.Text = " 7 "
'
'Label46
'
Me.Label46.AutoSize = True
Me.Label46.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Label46.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label46.Location = New System.Drawing.Point(191, 115)
Me.Label46.Name = "Label46"
Me.Label46.Size = New System.Drawing.Size(30, 16)
Me.Label46.TabIndex = 80
Me.Label46.Text = " 6 "
'
'Label45
'
Me.Label45.AutoSize = True
Me.Label45.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Label45.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label45.Location = New System.Drawing.Point(155, 115)
Me.Label45.Name = "Label45"
Me.Label45.Size = New System.Drawing.Size(30, 16)
Me.Label45.TabIndex = 79
Me.Label45.Text = " 5 "
'
'Label44
'
Me.Label44.AutoSize = True
Me.Label44.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Label44.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label44.Location = New System.Drawing.Point(119, 115)
Me.Label44.Name = "Label44"
Me.Label44.Size = New System.Drawing.Size(30, 16)
Me.Label44.TabIndex = 78
Me.Label44.Text = " 4 "
'
'Label43
'
Me.Label43.AutoSize = True
Me.Label43.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Label43.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label43.Location = New System.Drawing.Point(83, 115)
Me.Label43.Name = "Label43"
Me.Label43.Size = New System.Drawing.Size(30, 16)
Me.Label43.TabIndex = 77
Me.Label43.Text = " 3 "
'
'Label42
'
Me.Label42.AutoSize = True
Me.Label42.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Label42.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label42.Location = New System.Drawing.Point(47, 115)
Me.Label42.Name = "Label42"
Me.Label42.Size = New System.Drawing.Size(30, 16)
Me.Label42.TabIndex = 76
Me.Label42.Text = " 2 "
'
'Label41
'
Me.Label41.AutoSize = True
Me.Label41.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.Label41.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label41.Location = New System.Drawing.Point(11, 115)
Me.Label41.Name = "Label41"
Me.Label41.Size = New System.Drawing.Size(30, 16)
Me.Label41.TabIndex = 75
Me.Label41.Text = " 1 "
'
'Label40
'
Me.Label40.AutoSize = True
Me.Label40.Location = New System.Drawing.Point(7, 187)
Me.Label40.Name = "Label40"
Me.Label40.Size = New System.Drawing.Size(71, 12)
Me.Label40.TabIndex = 74
Me.Label40.Text = "C5 巡回测试"
'
'Button23
'
Me.Button23.Location = New System.Drawing.Point(103, 187)
Me.Button23.Name = "Button23"
Me.Button23.Size = New System.Drawing.Size(68, 25)
Me.Button23.TabIndex = 73
Me.Button23.Text = "巡回测试"
Me.Button23.UseVisualStyleBackColor = True
'
'Button22
'
Me.Button22.Location = New System.Drawing.Point(532, 111)
Me.Button22.Name = "Button22"
Me.Button22.Size = New System.Drawing.Size(62, 24)
Me.Button22.TabIndex = 72
Me.Button22.Text = "输入检测"
Me.Button22.UseVisualStyleBackColor = True
'
'Button21
'
Me.Button21.Location = New System.Drawing.Point(532, 160)
Me.Button21.Name = "Button21"
Me.Button21.Size = New System.Drawing.Size(62, 21)
Me.Button21.TabIndex = 71
Me.Button21.Text = "播放"
Me.Button21.UseVisualStyleBackColor = True
'
'Label39
'
Me.Label39.AutoSize = True
Me.Label39.BackColor = System.Drawing.SystemColors.Control
Me.Label39.Location = New System.Drawing.Point(265, 164)
Me.Label39.Name = "Label39"
Me.Label39.Size = New System.Drawing.Size(77, 12)
Me.Label39.TabIndex = 70
Me.Label39.Text = "播放文件序号"
Me.Label39.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'NumericUpDown1
'
Me.NumericUpDown1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.NumericUpDown1.Location = New System.Drawing.Point(348, 160)
Me.NumericUpDown1.Maximum = New Decimal(New Integer() {10, 0, 0, 0})
Me.NumericUpDown1.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
Me.NumericUpDown1.Name = "NumericUpDown1"
Me.NumericUpDown1.Size = New System.Drawing.Size(86, 23)
Me.NumericUpDown1.TabIndex = 69
Me.NumericUpDown1.Value = New Decimal(New Integer() {1, 0, 0, 0})
'
'Label38
'
Me.Label38.AutoSize = True
Me.Label38.Location = New System.Drawing.Point(32, 164)
Me.Label38.Name = "Label38"
Me.Label38.Size = New System.Drawing.Size(65, 12)
Me.Label38.TabIndex = 68
Me.Label38.Text = "播放文件夹"
Me.Label38.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'ComboBox10
'
Me.ComboBox10.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox10.FormattingEnabled = True
Me.ComboBox10.Location = New System.Drawing.Point(103, 161)
Me.ComboBox10.Name = "ComboBox10"
Me.ComboBox10.Size = New System.Drawing.Size(138, 20)
Me.ComboBox10.TabIndex = 67
'
'Label37
'
Me.Label37.AutoSize = True
Me.Label37.Location = New System.Drawing.Point(7, 141)
Me.Label37.Name = "Label37"
Me.Label37.Size = New System.Drawing.Size(53, 12)
Me.Label37.TabIndex = 66
Me.Label37.Text = "C5 MUSIC"
'
'Label36
'
Me.Label36.AutoSize = True
Me.Label36.Location = New System.Drawing.Point(3, 55)
Me.Label36.Name = "Label36"
Me.Label36.Size = New System.Drawing.Size(71, 12)
Me.Label36.TabIndex = 65
Me.Label36.Text = "C5IO IO输出"
'
'Button83
'
Me.Button83.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button83.Location = New System.Drawing.Point(147, 70)
Me.Button83.Name = "Button83"
Me.Button83.Size = New System.Drawing.Size(31, 26)
Me.Button83.TabIndex = 63
Me.Button83.Tag = "4"
Me.Button83.Text = "5"
Me.Button83.UseVisualStyleBackColor = True
'
'Button82
'
Me.Button82.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button82.Location = New System.Drawing.Point(113, 70)
Me.Button82.Name = "Button82"
Me.Button82.Size = New System.Drawing.Size(31, 26)
Me.Button82.TabIndex = 62
Me.Button82.Tag = "3"
Me.Button82.Text = "4"
Me.Button82.UseVisualStyleBackColor = True
'
'Button81
'
Me.Button81.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button81.Location = New System.Drawing.Point(79, 70)
Me.Button81.Name = "Button81"
Me.Button81.Size = New System.Drawing.Size(31, 26)
Me.Button81.TabIndex = 61
Me.Button81.Tag = "2"
Me.Button81.Text = "3"
Me.Button81.UseVisualStyleBackColor = True
'
'Button80
'
Me.Button80.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button80.Location = New System.Drawing.Point(45, 70)
Me.Button80.Name = "Button80"
Me.Button80.Size = New System.Drawing.Size(31, 26)
Me.Button80.TabIndex = 60
Me.Button80.Tag = "1"
Me.Button80.Text = "2"
Me.Button80.UseVisualStyleBackColor = True
'
'Button79
'
Me.Button79.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button79.Location = New System.Drawing.Point(11, 70)
Me.Button79.Name = "Button79"
Me.Button79.Size = New System.Drawing.Size(31, 26)
Me.Button79.TabIndex = 59
Me.Button79.Tag = "0"
Me.Button79.Text = "1"
Me.Button79.UseVisualStyleBackColor = True
'
'Label35
'
Me.Label35.AutoSize = True
Me.Label35.Location = New System.Drawing.Point(3, 99)
Me.Label35.Name = "Label35"
Me.Label35.Size = New System.Drawing.Size(71, 12)
Me.Label35.TabIndex = 57
Me.Label35.Text = "C5IO IO输入"
'
'Button63
'
Me.Button63.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button63.Location = New System.Drawing.Point(657, 25)
Me.Button63.Name = "Button63"
Me.Button63.Size = New System.Drawing.Size(31, 27)
Me.Button63.TabIndex = 51
Me.Button63.Tag = "19"
Me.Button63.Text = "20"
Me.Button63.UseVisualStyleBackColor = True
'
'Button64
'
Me.Button64.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button64.Location = New System.Drawing.Point(623, 25)
Me.Button64.Name = "Button64"
Me.Button64.Size = New System.Drawing.Size(31, 27)
Me.Button64.TabIndex = 50
Me.Button64.Tag = "18"
Me.Button64.Text = "19"
Me.Button64.UseVisualStyleBackColor = True
'
'Button65
'
Me.Button65.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button65.Location = New System.Drawing.Point(555, 25)
Me.Button65.Name = "Button65"
Me.Button65.Size = New System.Drawing.Size(31, 27)
Me.Button65.TabIndex = 49
Me.Button65.Tag = "16"
Me.Button65.Text = "17"
Me.Button65.UseVisualStyleBackColor = True
'
'Button66
'
Me.Button66.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button66.Location = New System.Drawing.Point(521, 25)
Me.Button66.Name = "Button66"
Me.Button66.Size = New System.Drawing.Size(31, 27)
Me.Button66.TabIndex = 47
Me.Button66.Tag = "15"
Me.Button66.Text = "16"
Me.Button66.UseVisualStyleBackColor = True
'
'Button67
'
Me.Button67.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button67.Location = New System.Drawing.Point(589, 25)
Me.Button67.Name = "Button67"
Me.Button67.Size = New System.Drawing.Size(31, 27)
Me.Button67.TabIndex = 48
Me.Button67.Tag = "017"
Me.Button67.Text = "18"
Me.Button67.UseVisualStyleBackColor = True
'
'Button68
'
Me.Button68.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button68.Location = New System.Drawing.Point(487, 25)
Me.Button68.Name = "Button68"
Me.Button68.Size = New System.Drawing.Size(31, 27)
Me.Button68.TabIndex = 46
Me.Button68.Tag = "14"
Me.Button68.Text = "15"
Me.Button68.UseVisualStyleBackColor = True
'
'Button69
'
Me.Button69.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button69.Location = New System.Drawing.Point(453, 25)
Me.Button69.Name = "Button69"
Me.Button69.Size = New System.Drawing.Size(31, 27)
Me.Button69.TabIndex = 45
Me.Button69.Tag = "13"
Me.Button69.Text = "14"
Me.Button69.UseVisualStyleBackColor = True
'
'Button70
'
Me.Button70.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button70.Location = New System.Drawing.Point(419, 25)
Me.Button70.Name = "Button70"
Me.Button70.Size = New System.Drawing.Size(31, 27)
Me.Button70.TabIndex = 44
Me.Button70.Tag = "12"
Me.Button70.Text = "13"
Me.Button70.UseVisualStyleBackColor = True
'
'Button71
'
Me.Button71.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button71.Location = New System.Drawing.Point(385, 25)
Me.Button71.Name = "Button71"
Me.Button71.Size = New System.Drawing.Size(31, 27)
Me.Button71.TabIndex = 42
Me.Button71.Tag = "11"
Me.Button71.Text = "12"
Me.Button71.UseVisualStyleBackColor = True
'
'Button72
'
Me.Button72.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button72.Location = New System.Drawing.Point(351, 25)
Me.Button72.Name = "Button72"
Me.Button72.Size = New System.Drawing.Size(31, 27)
Me.Button72.TabIndex = 43
Me.Button72.Tag = "10"
Me.Button72.Text = "11"
Me.Button72.UseVisualStyleBackColor = True
'
'Label34
'
Me.Label34.AutoSize = True
Me.Label34.Location = New System.Drawing.Point(3, 10)
Me.Label34.Name = "Label34"
Me.Label34.Size = New System.Drawing.Size(95, 12)
Me.Label34.TabIndex = 41
Me.Label34.Text = "C5IO 继电器控制"
'
'Button62
'
Me.Button62.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button62.Location = New System.Drawing.Point(317, 25)
Me.Button62.Name = "Button62"
Me.Button62.Size = New System.Drawing.Size(31, 27)
Me.Button62.TabIndex = 40
Me.Button62.Tag = "9"
Me.Button62.Text = "10"
Me.Button62.UseVisualStyleBackColor = True
'
'Button61
'
Me.Button61.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button61.Location = New System.Drawing.Point(283, 25)
Me.Button61.Name = "Button61"
Me.Button61.Size = New System.Drawing.Size(31, 27)
Me.Button61.TabIndex = 39
Me.Button61.Tag = "8"
Me.Button61.Text = "9"
Me.Button61.UseVisualStyleBackColor = True
'
'Button60
'
Me.Button60.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button60.Location = New System.Drawing.Point(215, 25)
Me.Button60.Name = "Button60"
Me.Button60.Size = New System.Drawing.Size(31, 27)
Me.Button60.TabIndex = 38
Me.Button60.Tag = "6"
Me.Button60.Text = "7"
Me.Button60.UseVisualStyleBackColor = True
'
'Button59
'
Me.Button59.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button59.Location = New System.Drawing.Point(181, 25)
Me.Button59.Name = "Button59"
Me.Button59.Size = New System.Drawing.Size(31, 27)
Me.Button59.TabIndex = 37
Me.Button59.Tag = "5"
Me.Button59.Text = "6"
Me.Button59.UseVisualStyleBackColor = True
'
'Button58
'
Me.Button58.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button58.Location = New System.Drawing.Point(249, 25)
Me.Button58.Name = "Button58"
Me.Button58.Size = New System.Drawing.Size(31, 27)
Me.Button58.TabIndex = 37
Me.Button58.Tag = "7"
Me.Button58.Text = "8"
Me.Button58.UseVisualStyleBackColor = True
'
'Button57
'
Me.Button57.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button57.Location = New System.Drawing.Point(147, 25)
Me.Button57.Name = "Button57"
Me.Button57.Size = New System.Drawing.Size(31, 27)
Me.Button57.TabIndex = 36
Me.Button57.Tag = "4"
Me.Button57.Text = "5"
Me.Button57.UseVisualStyleBackColor = True
'
'Button56
'
Me.Button56.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button56.Location = New System.Drawing.Point(113, 25)
Me.Button56.Name = "Button56"
Me.Button56.Size = New System.Drawing.Size(31, 27)
Me.Button56.TabIndex = 35
Me.Button56.Tag = "3"
Me.Button56.Text = "4"
Me.Button56.UseVisualStyleBackColor = True
'
'Button55
'
Me.Button55.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button55.Location = New System.Drawing.Point(79, 25)
Me.Button55.Name = "Button55"
Me.Button55.Size = New System.Drawing.Size(31, 27)
Me.Button55.TabIndex = 34
Me.Button55.Tag = "2"
Me.Button55.Text = "3"
Me.Button55.UseVisualStyleBackColor = True
'
'Button54
'
Me.Button54.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button54.Location = New System.Drawing.Point(45, 25)
Me.Button54.Name = "Button54"
Me.Button54.Size = New System.Drawing.Size(31, 27)
Me.Button54.TabIndex = 33
Me.Button54.Tag = "1"
Me.Button54.Text = "2"
Me.Button54.UseVisualStyleBackColor = True
'
'Button47
'
Me.Button47.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Button47.Location = New System.Drawing.Point(11, 25)
Me.Button47.Name = "Button47"
Me.Button47.Size = New System.Drawing.Size(31, 27)
Me.Button47.TabIndex = 33
Me.Button47.Tag = "0"
Me.Button47.Text = "1"
Me.Button47.UseVisualStyleBackColor = True
'
'LblInput13
'
Me.LblInput13.AutoSize = True
Me.LblInput13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput13.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput13.Location = New System.Drawing.Point(474, 115)
Me.LblInput13.Name = "LblInput13"
Me.LblInput13.Size = New System.Drawing.Size(37, 16)
Me.LblInput13.TabIndex = 138
Me.LblInput13.Text = " 13 "
'
'LblInput12
'
Me.LblInput12.AutoSize = True
Me.LblInput12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput12.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput12.Location = New System.Drawing.Point(429, 115)
Me.LblInput12.Name = "LblInput12"
Me.LblInput12.Size = New System.Drawing.Size(37, 16)
Me.LblInput12.TabIndex = 137
Me.LblInput12.Text = " 12 "
'
'LblInput11
'
Me.LblInput11.AutoSize = True
Me.LblInput11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput11.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput11.Location = New System.Drawing.Point(384, 115)
Me.LblInput11.Name = "LblInput11"
Me.LblInput11.Size = New System.Drawing.Size(37, 16)
Me.LblInput11.TabIndex = 136
Me.LblInput11.Text = " 11 "
'
'LblInput10
'
Me.LblInput10.AutoSize = True
Me.LblInput10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput10.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput10.Location = New System.Drawing.Point(339, 115)
Me.LblInput10.Name = "LblInput10"
Me.LblInput10.Size = New System.Drawing.Size(37, 16)
Me.LblInput10.TabIndex = 135
Me.LblInput10.Text = " 10 "
'
'LblInput9
'
Me.LblInput9.AutoSize = True
Me.LblInput9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput9.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput9.Location = New System.Drawing.Point(301, 115)
Me.LblInput9.Name = "LblInput9"
Me.LblInput9.Size = New System.Drawing.Size(30, 16)
Me.LblInput9.TabIndex = 134
Me.LblInput9.Text = " 9 "
'
'LblInput8
'
Me.LblInput8.AutoSize = True
Me.LblInput8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput8.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput8.Location = New System.Drawing.Point(263, 115)
Me.LblInput8.Name = "LblInput8"
Me.LblInput8.Size = New System.Drawing.Size(30, 16)
Me.LblInput8.TabIndex = 133
Me.LblInput8.Text = " 8 "
'
'FrmTest_C5
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(730, 246)
Me.Controls.Add(Me.Panel2)
Me.Name = "FrmTest_C5"
Me.Text = "FrmTest_C5"
Me.Panel2.ResumeLayout(False)
Me.Panel2.PerformLayout()
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
Friend WithEvents Panel2 As Panel
Friend WithEvents Label51 As Label
Friend WithEvents Label50 As Label
Friend WithEvents Button20 As Button
Friend WithEvents Label48 As Label
Friend WithEvents Label47 As Label
Friend WithEvents Label46 As Label
Friend WithEvents Label45 As Label
Friend WithEvents Label44 As Label
Friend WithEvents Label43 As Label
Friend WithEvents Label42 As Label
Friend WithEvents Label41 As Label
Friend WithEvents Label40 As Label
Friend WithEvents Button23 As Button
Friend WithEvents Button22 As Button
Friend WithEvents Button21 As Button
Friend WithEvents Label39 As Label
Friend WithEvents NumericUpDown1 As NumericUpDown
Friend WithEvents Label38 As Label
Friend WithEvents ComboBox10 As ComboBox
Friend WithEvents Label37 As Label
Friend WithEvents Label36 As Label
Friend WithEvents Button83 As Button
Friend WithEvents Button82 As Button
Friend WithEvents Button81 As Button
Friend WithEvents Button80 As Button
Friend WithEvents Button79 As Button
Friend WithEvents Label35 As Label
Friend WithEvents Button63 As Button
Friend WithEvents Button64 As Button
Friend WithEvents Button65 As Button
Friend WithEvents Button66 As Button
Friend WithEvents Button67 As Button
Friend WithEvents Button68 As Button
Friend WithEvents Button69 As Button
Friend WithEvents Button70 As Button
Friend WithEvents Button71 As Button
Friend WithEvents Button72 As Button
Friend WithEvents Label34 As Label
Friend WithEvents Button62 As Button
Friend WithEvents Button61 As Button
Friend WithEvents Button60 As Button
Friend WithEvents Button59 As Button
Friend WithEvents Button58 As Button
Friend WithEvents Button57 As Button
Friend WithEvents Button56 As Button
Friend WithEvents Button55 As Button
Friend WithEvents Button54 As Button
Friend WithEvents Button47 As Button
Friend WithEvents Button1 As Button
Friend WithEvents Button2 As Button
Friend WithEvents Button3 As Button
Friend WithEvents Button4 As Button
Friend WithEvents LblInput13 As Label
Friend WithEvents LblInput12 As Label
Friend WithEvents LblInput11 As Label
Friend WithEvents LblInput10 As Label
Friend WithEvents LblInput9 As Label
Friend WithEvents LblInput8 As Label
End Class

View File

@@ -0,0 +1,300 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="Panel2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LblInput13.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LblInput12.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LblInput11.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LblInput10.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LblInput9.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="LblInput8.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button3.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button4.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label51.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label50.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button20.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label48.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label47.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label46.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label45.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label44.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label43.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label42.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label41.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label40.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button23.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button22.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button21.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label39.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="NumericUpDown1.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label38.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ComboBox10.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label37.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label36.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button83.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button82.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button81.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button80.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button79.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label35.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button63.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button64.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button65.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button66.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button67.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button68.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button69.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button70.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button71.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button72.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Label34.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button62.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button61.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button60.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button59.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button58.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button57.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button56.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button55.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button54.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Button47.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>

View File

@@ -0,0 +1,481 @@
Public Class FrmTest_C5
Implements IFrmTest
Public FCsConfig As FrmCSeriesConfig
Sub New(pathme As FrmCSeriesConfig)
' 此调用是设计器所必需的。
InitializeComponent()
FCsConfig = pathme
' 在 InitializeComponent() 调用之后添加任何初始化。
End Sub
#Region "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
Private Sub MultiLanguageInfo()
'Label34.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
'Label36.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOOutput)
'Label35.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOInput)
'Label37.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Music)
'Label40.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
Label34.Text = Text & LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
Label36.Text = Text & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOOutput)
Label35.Text = Text & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOInput)
Label37.Text = Text & LanguageData.StringList(MultiLanguageDAL.StringEnum.Music)
Label40.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C5) & LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
Button22.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.TheInputTest)
Label38.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFolder)
Label39.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFileNumber)
Button21.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Play)
Button23.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
Label50.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.MAC)
Button20.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.SetMAC)
End Sub
#End Region
#Region "窗体"
''' <summary>
''' 窗体加载事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmTest_C5_Load(sender As Object, e As EventArgs) Handles Me.Load
MultiLanguageInfo()
InitFolderItems()
End Sub
''' <summary>
''' 显示窗体事件
''' 实现接口
''' </summary>
''' <param name="parentControl"></param>
Public Sub ShowForm(parentControl As Control) Implements IFrmTest.ShowForm
FormBorderStyle = FormBorderStyle.None '无边框
TopLevel = False
Dock = DockStyle.Fill '填满大小
Parent = parentControl '父容器
Show()
End Sub
''' <summary>
''' 发送函数
''' </summary>
''' <param name="sendPacket"></param>
Public Sub SendData(sendPacket() As Byte)
FCsConfig.SendTestData(sendPacket)
FCsConfig.AppendTipText($"TX{ByteToString(sendPacket)}{vbCrLf}", Color.Green)
End Sub
#End Region
#Region "C5测试"
''' <summary>
''' 发送组包
''' </summary>
''' <param name="cmd"></param>
''' <param name="dataBuff"></param>
''' <returns></returns>
Public Function FillPacket(cmd As Byte, dataBuff() As Byte) As Byte()
If _connectStatus = True Then
cmd = &HD3 '网络测试Cmd
dataBuff = FCsConfig.FillSendData(cmd, dataBuff) '网络数据
Else
cmd = &H7 '串口测试Cmd
dataBuff = FillModelsSerialPortTest(cmd, dataBuff) '串口数据
End If
Return dataBuff
End Function
''' <summary>
''' 获取继电器序号
''' </summary>
Private _relayNumber(5) As Byte
'''' <summary>
'''' 1-20路继电器
'''' </summary>
'''' <param name="sender"></param>
'''' <param name="e"></param>
'Private Sub Button63_Click_1(sender As Object, e As EventArgs) Handles Button72.Click, Button71.Click, Button70.Click, Button69.Click, Button68.Click, Button67.Click, Button66.Click, Button65.Click, Button64.Click, Button63.Click, Button62.Click, Button61.Click, Button60.Click, Button59.Click, Button58.Click, Button57.Click, Button56.Click, Button55.Click, Button54.Click, Button47.Click
' Dim cmd As Byte
' Dim btn As Button = sender
' Dim index As Integer = sender.tag
' Dim flg As Boolean = Not GetRelayStatus(index)
' Dim param() As Byte = GetRelayNumber(index, flg)
' '组包
' Dim testState As Byte = &H2 '测试状态
' Dim devType As Byte = &HF1 '设备类型
' Dim devAddr As Byte = &H0 '设备地址默认为0
' Dim devCmd As Byte = &H21 '测试设备Cmd
' Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
' Dim sendDatas() As Byte = FillPacket(cmd, data)
' Console.WriteLine($"继电器测试:{ByteToString(sendDatas)}")
' '发送
' SendData(sendDatas)
' If flg Then
' btn.BackColor = Color.Green
' Else
' btn.BackColor = Color.Transparent
' End If
'End Sub
''' <summary>
''' 1-24路继电器
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button63_Click(sender As Object, e As EventArgs) Handles Button72.Click, Button71.Click, Button70.Click, Button69.Click, Button68.Click, Button67.Click, Button66.Click, Button65.Click, Button64.Click, Button63.Click, Button62.Click, Button61.Click, Button60.Click, Button59.Click, Button58.Click, Button57.Click, Button56.Click, Button55.Click, Button54.Click, Button47.Click, Button4.Click, Button3.Click, Button2.Click, Button1.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetRelayStatus(index)
Dim param() As Byte = GetRelayNumber(index, flg)
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H21 '测试设备Cmd
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"继电器测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
''' <summary>
''' 获取继电器序号
''' </summary>
''' <param name="number"></param>
''' <returns></returns>
Private Function GetRelayNumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
'relayNumber(number \ 4) = relayNumber(number \ 4) Or (1 << ((number Mod 4) * 2))
_relayNumber(number \ 4) = (_relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else '置位10
_relayNumber(number \ 4) = (_relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return _relayNumber
'relayNumber(number \ 4) = 1 << ((number Mod 4) * 2)
'For index = 0 To 19
' relayNumber(index \ 4) = relayNumber(index \ 4) Or (1 << (index Mod 4 * 2))
'Next
End Function
''' <summary>
''' 获取继电器状态
''' </summary>
''' <param name="index"></param>
''' <returns></returns>
Private Function GetRelayStatus(index As Integer) As Boolean
Dim bt As Byte = _relayNumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
''' <summary>
''' C5-IO 检测输入
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button22_Click_1(sender As Object, e As EventArgs) Handles Button22.Click
Dim cmd As Byte
Dim testState As Byte = &H1 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H3 '测试时间——3分钟
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd)
'组包
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"输入测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' 输出测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button79_Click_1(sender As Object, e As EventArgs) Handles Button83.Click, Button82.Click, Button81.Click, Button80.Click, Button79.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetC5DOStatus(index)
Dim param() As Byte = GetC5DONumber(index, flg)
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H23 '测试命令字
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"输出测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
''' <summary>
''' 获取C5测试输出序号
''' </summary>
Private C5DONumber(1) As Byte
''' <summary>
''' 获取继电器状态
''' </summary>
''' <param name="index"></param>
''' <returns></returns>
Private Function GetC5DOStatus(index As Integer) As Boolean
Dim bt As Byte = C5DONumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
''' <summary>
''' 获取输入序号
''' </summary>
''' <param name="number"></param>
''' <returns></returns>
Private Function GetC5DONumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
C5DONumber(number \ 4) = (C5DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else '置位10
C5DONumber(number \ 4) = (C5DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return C5DONumber
End Function
''' <summary>
''' C5测试音频播放文件下
''' </summary>
Private _PlayFolder() As String = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"}
''' <summary>
''' 初始化文件夹可选项
''' </summary>
Private Sub InitFolderItems()
ComboBox10.Items.Clear()
ComboBox10.Items.AddRange(_PlayFolder)
If ComboBox10.Items.Count > 4 Then ComboBox10.SelectedIndex = 4
End Sub
''' <summary>
''' 音乐播放
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button21_Click_1(sender As Object, e As EventArgs) Handles Button21.Click
Dim cmd As Byte
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &H15 '设备类型
Dim devAddr As Byte = &H1 '设备地址默认为0
Dim devCmd As Byte = &H22 '测试命令字
Dim param() As Byte = C5MusicTest()
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"音频测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C5音频测试
''' </summary>
''' <returns></returns>
Private Function C5MusicTest()
Dim playFolder As Byte = GetPlayFolder(ComboBox10.Text)
Dim playFile As Byte = $"&H{Hex(NumericUpDown1.Value)}"
Dim databuff As New List(Of Byte)
databuff.Add(&H7) '播放音乐状态
databuff.Add(playFolder) '播放音乐文件夹
databuff.Add(playFile) '播放音乐文件
Return databuff.ToArray
End Function
''' <summary>
''' 获取播放文件夹
''' </summary>
''' <param name="text"></param>
''' <returns></returns>
Private Function GetPlayFolder(text As String) As Byte
Dim palyFolder As Byte
Select Case text
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}"
palyFolder = &H0
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}"
palyFolder = &H1
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}"
palyFolder = &H2
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}"
palyFolder = &H3
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}"
palyFolder = &H4
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}"
palyFolder = &H5
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}"
palyFolder = &H6
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"
palyFolder = &H7
End Select
Return palyFolder
End Function
''' <summary>
''' 起始时间
''' </summary>
Private _startTime As Date
''' <summary>
''' C5_巡回测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button23_Click_1(sender As Object, e As EventArgs) Handles Button23.Click
Label48.ForeColor = Color.Black
Label48.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Test)}..."
Dim cmd As Byte
'组包
Dim data(0) As Byte
data(0) = &H3
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"巡回测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
'_isTourRealy = Fals
'WaitInfraredForRelay()
'If _isTourRealy = False Then
' AppendTipText($"巡回测试失败!", Color.Red)
'End If
End Sub
''' <summary>
''' 设置MAC地址
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button20_Click_1(sender As Object, e As EventArgs) Handles Button20.Click
Dim frmmacdia As New FrmMACDialog(FCsConfig)
frmmacdia.ShowMyDialog()
Label51.ForeColor = Color.Black
Label51.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Test)}..."
If FCsConfig._IsOK = True Then
Dim data() As Byte = frmmacdia.GetMACAddress()
Dim cmd As Byte = &H6
'发送
Dim databuff As Byte() = FCsConfig.FillMACIssuedData(data)
Dim sendDatas As Byte() = FillSetMACPacket(cmd, databuff)
Console.WriteLine($"串口设置MAC{ByteToString(sendDatas)}")
SendData(sendDatas)
FCsConfig._IsOK = False
End If
End Sub
''' <summary>
''' 发送MAC
''' </summary>
''' <param name="cmd"></param>
''' <param name="dataBuff"></param>
''' <returns></returns>
Public Function FillSetMACPacket(cmd As Byte, dataBuff() As Byte) As Byte()
If _connectStatus = True Then
cmd = &H31 '网络测试Cmd
dataBuff = FCsConfig.FillSendData(cmd, dataBuff)
Else
dataBuff = FillModelsSerialPortTest(cmd, dataBuff)
End If
Return dataBuff
End Function
Public Sub ShowForm1(parentControl As Control, ftext As String) Implements IFrmTest.ShowForm1
FormBorderStyle = FormBorderStyle.None '无边框
TopLevel = False
Dock = DockStyle.Fill '填满大小
Parent = parentControl '父容器
If Not String.IsNullOrEmpty(ftext) Then
Text = ftext
End If
Show()
End Sub
#End Region
End Class

670
BLV_Studio/Control/FrmTest_C8.Designer.vb generated Normal file
View File

@@ -0,0 +1,670 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmTest_C8
Inherits System.Windows.Forms.Form
'Form 重写 Dispose以清理组件列表。
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Windows 窗体设计器所必需的
Private components As System.ComponentModel.IContainer
'注意: 以下过程是 Windows 窗体设计器所必需的
'可以使用 Windows 窗体设计器修改它。
'不要使用代码编辑器修改它。
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.BtnDimming = New System.Windows.Forms.Button()
Me.Label7 = New System.Windows.Forms.Label()
Me.LblInput13 = New System.Windows.Forms.Label()
Me.LblInput12 = New System.Windows.Forms.Label()
Me.LblInput11 = New System.Windows.Forms.Label()
Me.LblInput10 = New System.Windows.Forms.Label()
Me.LblInput9 = New System.Windows.Forms.Label()
Me.LblInput8 = New System.Windows.Forms.Label()
Me.Label48 = New System.Windows.Forms.Label()
Me.LblInput7 = New System.Windows.Forms.Label()
Me.LblInput6 = New System.Windows.Forms.Label()
Me.LblInput5 = New System.Windows.Forms.Label()
Me.LblInput4 = New System.Windows.Forms.Label()
Me.LblInput3 = New System.Windows.Forms.Label()
Me.LblInput2 = New System.Windows.Forms.Label()
Me.LblInput1 = New System.Windows.Forms.Label()
Me.Label40 = New System.Windows.Forms.Label()
Me.Button23 = New System.Windows.Forms.Button()
Me.BtnInputTest = New System.Windows.Forms.Button()
Me.Button21 = New System.Windows.Forms.Button()
Me.Label39 = New System.Windows.Forms.Label()
Me.NumericUpDown1 = New System.Windows.Forms.NumericUpDown()
Me.Label38 = New System.Windows.Forms.Label()
Me.ComboBox10 = New System.Windows.Forms.ComboBox()
Me.Label37 = New System.Windows.Forms.Label()
Me.Label36 = New System.Windows.Forms.Label()
Me.BtnOutput5 = New System.Windows.Forms.Button()
Me.BtnOutput4 = New System.Windows.Forms.Button()
Me.BtnOutput3 = New System.Windows.Forms.Button()
Me.BtnOutput2 = New System.Windows.Forms.Button()
Me.BtnOutput1 = New System.Windows.Forms.Button()
Me.Label35 = New System.Windows.Forms.Label()
Me.BtnRelay13 = New System.Windows.Forms.Button()
Me.BtnRelay12 = New System.Windows.Forms.Button()
Me.BtnRelay11 = New System.Windows.Forms.Button()
Me.Label34 = New System.Windows.Forms.Label()
Me.BtnRelay10 = New System.Windows.Forms.Button()
Me.BtnRelay9 = New System.Windows.Forms.Button()
Me.BtnRelay7 = New System.Windows.Forms.Button()
Me.BtnRelay6 = New System.Windows.Forms.Button()
Me.BtnRelay8 = New System.Windows.Forms.Button()
Me.BtnRelay5 = New System.Windows.Forms.Button()
Me.BtnRelay4 = New System.Windows.Forms.Button()
Me.BtnRelay3 = New System.Windows.Forms.Button()
Me.BtnRelay2 = New System.Windows.Forms.Button()
Me.BtnRelay1 = New System.Windows.Forms.Button()
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'BtnDimming
'
Me.BtnDimming.Location = New System.Drawing.Point(99, 8)
Me.BtnDimming.Name = "BtnDimming"
Me.BtnDimming.Size = New System.Drawing.Size(62, 24)
Me.BtnDimming.TabIndex = 180
Me.BtnDimming.Text = "调光测试"
Me.BtnDimming.UseVisualStyleBackColor = True
'
'Label7
'
Me.Label7.AutoSize = True
Me.Label7.Location = New System.Drawing.Point(20, 10)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(47, 12)
Me.Label7.TabIndex = 179
Me.Label7.Text = "C8 调光"
'
'LblInput13
'
Me.LblInput13.AutoSize = True
Me.LblInput13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput13.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput13.Location = New System.Drawing.Point(510, 145)
Me.LblInput13.Name = "LblInput13"
Me.LblInput13.Size = New System.Drawing.Size(37, 16)
Me.LblInput13.TabIndex = 178
Me.LblInput13.Text = " 13 "
'
'LblInput12
'
Me.LblInput12.AutoSize = True
Me.LblInput12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput12.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput12.Location = New System.Drawing.Point(465, 145)
Me.LblInput12.Name = "LblInput12"
Me.LblInput12.Size = New System.Drawing.Size(37, 16)
Me.LblInput12.TabIndex = 177
Me.LblInput12.Text = " 12 "
'
'LblInput11
'
Me.LblInput11.AutoSize = True
Me.LblInput11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput11.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput11.Location = New System.Drawing.Point(420, 145)
Me.LblInput11.Name = "LblInput11"
Me.LblInput11.Size = New System.Drawing.Size(37, 16)
Me.LblInput11.TabIndex = 176
Me.LblInput11.Text = " 11 "
'
'LblInput10
'
Me.LblInput10.AutoSize = True
Me.LblInput10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput10.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput10.Location = New System.Drawing.Point(375, 145)
Me.LblInput10.Name = "LblInput10"
Me.LblInput10.Size = New System.Drawing.Size(37, 16)
Me.LblInput10.TabIndex = 175
Me.LblInput10.Text = " 10 "
'
'LblInput9
'
Me.LblInput9.AutoSize = True
Me.LblInput9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput9.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput9.Location = New System.Drawing.Point(337, 145)
Me.LblInput9.Name = "LblInput9"
Me.LblInput9.Size = New System.Drawing.Size(30, 16)
Me.LblInput9.TabIndex = 174
Me.LblInput9.Text = " 9 "
'
'LblInput8
'
Me.LblInput8.AutoSize = True
Me.LblInput8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput8.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput8.Location = New System.Drawing.Point(299, 145)
Me.LblInput8.Name = "LblInput8"
Me.LblInput8.Size = New System.Drawing.Size(30, 16)
Me.LblInput8.TabIndex = 173
Me.LblInput8.Text = " 8 "
'
'Label48
'
Me.Label48.AutoSize = True
Me.Label48.Font = New System.Drawing.Font("宋体", 21.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label48.Location = New System.Drawing.Point(204, 217)
Me.Label48.Name = "Label48"
Me.Label48.Size = New System.Drawing.Size(125, 29)
Me.Label48.TabIndex = 172
Me.Label48.Text = "Test..."
'
'LblInput7
'
Me.LblInput7.AutoSize = True
Me.LblInput7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput7.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput7.Location = New System.Drawing.Point(261, 145)
Me.LblInput7.Name = "LblInput7"
Me.LblInput7.Size = New System.Drawing.Size(30, 16)
Me.LblInput7.TabIndex = 171
Me.LblInput7.Text = " 7 "
'
'LblInput6
'
Me.LblInput6.AutoSize = True
Me.LblInput6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput6.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput6.Location = New System.Drawing.Point(223, 145)
Me.LblInput6.Name = "LblInput6"
Me.LblInput6.Size = New System.Drawing.Size(30, 16)
Me.LblInput6.TabIndex = 170
Me.LblInput6.Text = " 6 "
'
'LblInput5
'
Me.LblInput5.AutoSize = True
Me.LblInput5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput5.Location = New System.Drawing.Point(185, 145)
Me.LblInput5.Name = "LblInput5"
Me.LblInput5.Size = New System.Drawing.Size(30, 16)
Me.LblInput5.TabIndex = 169
Me.LblInput5.Text = " 5 "
'
'LblInput4
'
Me.LblInput4.AutoSize = True
Me.LblInput4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput4.Location = New System.Drawing.Point(147, 145)
Me.LblInput4.Name = "LblInput4"
Me.LblInput4.Size = New System.Drawing.Size(30, 16)
Me.LblInput4.TabIndex = 168
Me.LblInput4.Text = " 4 "
'
'LblInput3
'
Me.LblInput3.AutoSize = True
Me.LblInput3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput3.Location = New System.Drawing.Point(109, 145)
Me.LblInput3.Name = "LblInput3"
Me.LblInput3.Size = New System.Drawing.Size(30, 16)
Me.LblInput3.TabIndex = 167
Me.LblInput3.Text = " 3 "
'
'LblInput2
'
Me.LblInput2.AutoSize = True
Me.LblInput2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput2.Location = New System.Drawing.Point(71, 145)
Me.LblInput2.Name = "LblInput2"
Me.LblInput2.Size = New System.Drawing.Size(30, 16)
Me.LblInput2.TabIndex = 166
Me.LblInput2.Text = " 2 "
'
'LblInput1
'
Me.LblInput1.AutoSize = True
Me.LblInput1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.LblInput1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblInput1.Location = New System.Drawing.Point(33, 145)
Me.LblInput1.Name = "LblInput1"
Me.LblInput1.Size = New System.Drawing.Size(30, 16)
Me.LblInput1.TabIndex = 165
Me.LblInput1.Text = " 1 "
'
'Label40
'
Me.Label40.AutoSize = True
Me.Label40.Location = New System.Drawing.Point(20, 217)
Me.Label40.Name = "Label40"
Me.Label40.Size = New System.Drawing.Size(71, 12)
Me.Label40.TabIndex = 164
Me.Label40.Text = "C8 巡回测试"
'
'Button23
'
Me.Button23.Location = New System.Drawing.Point(116, 217)
Me.Button23.Name = "Button23"
Me.Button23.Size = New System.Drawing.Size(68, 25)
Me.Button23.TabIndex = 163
Me.Button23.Text = "巡回测试"
Me.Button23.UseVisualStyleBackColor = True
'
'BtnInputTest
'
Me.BtnInputTest.Location = New System.Drawing.Point(577, 141)
Me.BtnInputTest.Name = "BtnInputTest"
Me.BtnInputTest.Size = New System.Drawing.Size(62, 24)
Me.BtnInputTest.TabIndex = 162
Me.BtnInputTest.Text = "输入检测"
Me.BtnInputTest.UseVisualStyleBackColor = True
'
'Button21
'
Me.Button21.Location = New System.Drawing.Point(575, 190)
Me.Button21.Name = "Button21"
Me.Button21.Size = New System.Drawing.Size(62, 21)
Me.Button21.TabIndex = 161
Me.Button21.Text = "播放"
Me.Button21.UseVisualStyleBackColor = True
'
'Label39
'
Me.Label39.AutoSize = True
Me.Label39.BackColor = System.Drawing.SystemColors.Control
Me.Label39.Location = New System.Drawing.Point(278, 194)
Me.Label39.Name = "Label39"
Me.Label39.Size = New System.Drawing.Size(77, 12)
Me.Label39.TabIndex = 160
Me.Label39.Text = "播放文件序号"
Me.Label39.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'NumericUpDown1
'
Me.NumericUpDown1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.NumericUpDown1.Location = New System.Drawing.Point(361, 190)
Me.NumericUpDown1.Maximum = New Decimal(New Integer() {10, 0, 0, 0})
Me.NumericUpDown1.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
Me.NumericUpDown1.Name = "NumericUpDown1"
Me.NumericUpDown1.Size = New System.Drawing.Size(86, 23)
Me.NumericUpDown1.TabIndex = 159
Me.NumericUpDown1.Value = New Decimal(New Integer() {1, 0, 0, 0})
'
'Label38
'
Me.Label38.AutoSize = True
Me.Label38.Location = New System.Drawing.Point(45, 194)
Me.Label38.Name = "Label38"
Me.Label38.Size = New System.Drawing.Size(65, 12)
Me.Label38.TabIndex = 158
Me.Label38.Text = "播放文件夹"
Me.Label38.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'ComboBox10
'
Me.ComboBox10.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox10.FormattingEnabled = True
Me.ComboBox10.Location = New System.Drawing.Point(116, 191)
Me.ComboBox10.Name = "ComboBox10"
Me.ComboBox10.Size = New System.Drawing.Size(138, 20)
Me.ComboBox10.TabIndex = 157
'
'Label37
'
Me.Label37.AutoSize = True
Me.Label37.Location = New System.Drawing.Point(20, 171)
Me.Label37.Name = "Label37"
Me.Label37.Size = New System.Drawing.Size(53, 12)
Me.Label37.TabIndex = 156
Me.Label37.Text = "C8 MUSIC"
'
'Label36
'
Me.Label36.AutoSize = True
Me.Label36.Location = New System.Drawing.Point(20, 85)
Me.Label36.Name = "Label36"
Me.Label36.Size = New System.Drawing.Size(65, 12)
Me.Label36.TabIndex = 155
Me.Label36.Text = "C8 IO 输出"
'
'BtnOutput5
'
Me.BtnOutput5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput5.Location = New System.Drawing.Point(189, 100)
Me.BtnOutput5.Name = "BtnOutput5"
Me.BtnOutput5.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput5.TabIndex = 154
Me.BtnOutput5.Tag = "4"
Me.BtnOutput5.Text = "5"
Me.BtnOutput5.UseVisualStyleBackColor = True
'
'BtnOutput4
'
Me.BtnOutput4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput4.Location = New System.Drawing.Point(150, 100)
Me.BtnOutput4.Name = "BtnOutput4"
Me.BtnOutput4.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput4.TabIndex = 153
Me.BtnOutput4.Tag = "3"
Me.BtnOutput4.Text = "4"
Me.BtnOutput4.UseVisualStyleBackColor = True
'
'BtnOutput3
'
Me.BtnOutput3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput3.Location = New System.Drawing.Point(111, 100)
Me.BtnOutput3.Name = "BtnOutput3"
Me.BtnOutput3.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput3.TabIndex = 152
Me.BtnOutput3.Tag = "2"
Me.BtnOutput3.Text = "3"
Me.BtnOutput3.UseVisualStyleBackColor = True
'
'BtnOutput2
'
Me.BtnOutput2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput2.Location = New System.Drawing.Point(72, 100)
Me.BtnOutput2.Name = "BtnOutput2"
Me.BtnOutput2.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput2.TabIndex = 151
Me.BtnOutput2.Tag = "1"
Me.BtnOutput2.Text = "2"
Me.BtnOutput2.UseVisualStyleBackColor = True
'
'BtnOutput1
'
Me.BtnOutput1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnOutput1.Location = New System.Drawing.Point(33, 100)
Me.BtnOutput1.Name = "BtnOutput1"
Me.BtnOutput1.Size = New System.Drawing.Size(31, 26)
Me.BtnOutput1.TabIndex = 150
Me.BtnOutput1.Tag = "0"
Me.BtnOutput1.Text = "1"
Me.BtnOutput1.UseVisualStyleBackColor = True
'
'Label35
'
Me.Label35.AutoSize = True
Me.Label35.Location = New System.Drawing.Point(20, 129)
Me.Label35.Name = "Label35"
Me.Label35.Size = New System.Drawing.Size(65, 12)
Me.Label35.TabIndex = 149
Me.Label35.Text = "C8 IO 输入"
'
'BtnRelay13
'
Me.BtnRelay13.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay13.Location = New System.Drawing.Point(501, 55)
Me.BtnRelay13.Name = "BtnRelay13"
Me.BtnRelay13.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay13.TabIndex = 148
Me.BtnRelay13.Tag = "12"
Me.BtnRelay13.Text = "13"
Me.BtnRelay13.UseVisualStyleBackColor = True
Me.BtnRelay13.Visible = False
'
'BtnRelay12
'
Me.BtnRelay12.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay12.Location = New System.Drawing.Point(462, 55)
Me.BtnRelay12.Name = "BtnRelay12"
Me.BtnRelay12.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay12.TabIndex = 146
Me.BtnRelay12.Tag = "11"
Me.BtnRelay12.Text = "12"
Me.BtnRelay12.UseVisualStyleBackColor = True
Me.BtnRelay12.Visible = False
'
'BtnRelay11
'
Me.BtnRelay11.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay11.Location = New System.Drawing.Point(423, 55)
Me.BtnRelay11.Name = "BtnRelay11"
Me.BtnRelay11.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay11.TabIndex = 147
Me.BtnRelay11.Tag = "10"
Me.BtnRelay11.Text = "11"
Me.BtnRelay11.UseVisualStyleBackColor = True
Me.BtnRelay11.Visible = False
'
'Label34
'
Me.Label34.AutoSize = True
Me.Label34.Location = New System.Drawing.Point(20, 40)
Me.Label34.Name = "Label34"
Me.Label34.Size = New System.Drawing.Size(101, 12)
Me.Label34.TabIndex = 145
Me.Label34.Text = "C8 IO 继电器控制"
'
'BtnRelay10
'
Me.BtnRelay10.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay10.Location = New System.Drawing.Point(384, 55)
Me.BtnRelay10.Name = "BtnRelay10"
Me.BtnRelay10.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay10.TabIndex = 144
Me.BtnRelay10.Tag = "9"
Me.BtnRelay10.Text = "10"
Me.BtnRelay10.UseVisualStyleBackColor = True
Me.BtnRelay10.Visible = False
'
'BtnRelay9
'
Me.BtnRelay9.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay9.Location = New System.Drawing.Point(345, 55)
Me.BtnRelay9.Name = "BtnRelay9"
Me.BtnRelay9.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay9.TabIndex = 143
Me.BtnRelay9.Tag = "8"
Me.BtnRelay9.Text = "9"
Me.BtnRelay9.UseVisualStyleBackColor = True
Me.BtnRelay9.Visible = False
'
'BtnRelay7
'
Me.BtnRelay7.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay7.Location = New System.Drawing.Point(267, 55)
Me.BtnRelay7.Name = "BtnRelay7"
Me.BtnRelay7.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay7.TabIndex = 142
Me.BtnRelay7.Tag = "6"
Me.BtnRelay7.Text = "7"
Me.BtnRelay7.UseVisualStyleBackColor = True
Me.BtnRelay7.Visible = False
'
'BtnRelay6
'
Me.BtnRelay6.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay6.Location = New System.Drawing.Point(228, 55)
Me.BtnRelay6.Name = "BtnRelay6"
Me.BtnRelay6.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay6.TabIndex = 141
Me.BtnRelay6.Tag = "5"
Me.BtnRelay6.Text = "6"
Me.BtnRelay6.UseVisualStyleBackColor = True
Me.BtnRelay6.Visible = False
'
'BtnRelay8
'
Me.BtnRelay8.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay8.Location = New System.Drawing.Point(306, 55)
Me.BtnRelay8.Name = "BtnRelay8"
Me.BtnRelay8.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay8.TabIndex = 140
Me.BtnRelay8.Tag = "7"
Me.BtnRelay8.Text = "8"
Me.BtnRelay8.UseVisualStyleBackColor = True
Me.BtnRelay8.Visible = False
'
'BtnRelay5
'
Me.BtnRelay5.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay5.Location = New System.Drawing.Point(189, 55)
Me.BtnRelay5.Name = "BtnRelay5"
Me.BtnRelay5.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay5.TabIndex = 139
Me.BtnRelay5.Tag = "4"
Me.BtnRelay5.Text = "5"
Me.BtnRelay5.UseVisualStyleBackColor = True
Me.BtnRelay5.Visible = False
'
'BtnRelay4
'
Me.BtnRelay4.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay4.Location = New System.Drawing.Point(150, 55)
Me.BtnRelay4.Name = "BtnRelay4"
Me.BtnRelay4.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay4.TabIndex = 138
Me.BtnRelay4.Tag = "3"
Me.BtnRelay4.Text = "4"
Me.BtnRelay4.UseVisualStyleBackColor = True
'
'BtnRelay3
'
Me.BtnRelay3.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay3.Location = New System.Drawing.Point(111, 55)
Me.BtnRelay3.Name = "BtnRelay3"
Me.BtnRelay3.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay3.TabIndex = 137
Me.BtnRelay3.Tag = "2"
Me.BtnRelay3.Text = "3"
Me.BtnRelay3.UseVisualStyleBackColor = True
'
'BtnRelay2
'
Me.BtnRelay2.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay2.Location = New System.Drawing.Point(72, 55)
Me.BtnRelay2.Name = "BtnRelay2"
Me.BtnRelay2.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay2.TabIndex = 136
Me.BtnRelay2.Tag = "1"
Me.BtnRelay2.Text = "2"
Me.BtnRelay2.UseVisualStyleBackColor = True
'
'BtnRelay1
'
Me.BtnRelay1.Font = New System.Drawing.Font("宋体", 10.5!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.BtnRelay1.Location = New System.Drawing.Point(33, 55)
Me.BtnRelay1.Name = "BtnRelay1"
Me.BtnRelay1.Size = New System.Drawing.Size(31, 27)
Me.BtnRelay1.TabIndex = 135
Me.BtnRelay1.Tag = "0"
Me.BtnRelay1.Text = "1"
Me.BtnRelay1.UseVisualStyleBackColor = True
'
'FrmTest_C8
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(658, 256)
Me.Controls.Add(Me.BtnDimming)
Me.Controls.Add(Me.Label7)
Me.Controls.Add(Me.LblInput13)
Me.Controls.Add(Me.LblInput12)
Me.Controls.Add(Me.LblInput11)
Me.Controls.Add(Me.LblInput10)
Me.Controls.Add(Me.LblInput9)
Me.Controls.Add(Me.LblInput8)
Me.Controls.Add(Me.Label48)
Me.Controls.Add(Me.LblInput7)
Me.Controls.Add(Me.LblInput6)
Me.Controls.Add(Me.LblInput5)
Me.Controls.Add(Me.LblInput4)
Me.Controls.Add(Me.LblInput3)
Me.Controls.Add(Me.LblInput2)
Me.Controls.Add(Me.LblInput1)
Me.Controls.Add(Me.Label40)
Me.Controls.Add(Me.Button23)
Me.Controls.Add(Me.BtnInputTest)
Me.Controls.Add(Me.Button21)
Me.Controls.Add(Me.Label39)
Me.Controls.Add(Me.NumericUpDown1)
Me.Controls.Add(Me.Label38)
Me.Controls.Add(Me.ComboBox10)
Me.Controls.Add(Me.Label37)
Me.Controls.Add(Me.Label36)
Me.Controls.Add(Me.BtnOutput5)
Me.Controls.Add(Me.BtnOutput4)
Me.Controls.Add(Me.BtnOutput3)
Me.Controls.Add(Me.BtnOutput2)
Me.Controls.Add(Me.BtnOutput1)
Me.Controls.Add(Me.Label35)
Me.Controls.Add(Me.BtnRelay13)
Me.Controls.Add(Me.BtnRelay12)
Me.Controls.Add(Me.BtnRelay11)
Me.Controls.Add(Me.Label34)
Me.Controls.Add(Me.BtnRelay10)
Me.Controls.Add(Me.BtnRelay9)
Me.Controls.Add(Me.BtnRelay7)
Me.Controls.Add(Me.BtnRelay6)
Me.Controls.Add(Me.BtnRelay8)
Me.Controls.Add(Me.BtnRelay5)
Me.Controls.Add(Me.BtnRelay4)
Me.Controls.Add(Me.BtnRelay3)
Me.Controls.Add(Me.BtnRelay2)
Me.Controls.Add(Me.BtnRelay1)
Me.Name = "FrmTest_C8"
Me.Text = "FrmTest_C8"
CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents BtnDimming As Button
Friend WithEvents Label7 As Label
Friend WithEvents LblInput13 As Label
Friend WithEvents LblInput12 As Label
Friend WithEvents LblInput11 As Label
Friend WithEvents LblInput10 As Label
Friend WithEvents LblInput9 As Label
Friend WithEvents LblInput8 As Label
Friend WithEvents Label48 As Label
Friend WithEvents LblInput7 As Label
Friend WithEvents LblInput6 As Label
Friend WithEvents LblInput5 As Label
Friend WithEvents LblInput4 As Label
Friend WithEvents LblInput3 As Label
Friend WithEvents LblInput2 As Label
Friend WithEvents LblInput1 As Label
Friend WithEvents Label40 As Label
Friend WithEvents Button23 As Button
Friend WithEvents BtnInputTest As Button
Friend WithEvents Button21 As Button
Friend WithEvents Label39 As Label
Friend WithEvents NumericUpDown1 As NumericUpDown
Friend WithEvents Label38 As Label
Friend WithEvents ComboBox10 As ComboBox
Friend WithEvents Label37 As Label
Friend WithEvents Label36 As Label
Friend WithEvents BtnOutput5 As Button
Friend WithEvents BtnOutput4 As Button
Friend WithEvents BtnOutput3 As Button
Friend WithEvents BtnOutput2 As Button
Friend WithEvents BtnOutput1 As Button
Friend WithEvents Label35 As Label
Friend WithEvents BtnRelay13 As Button
Friend WithEvents BtnRelay12 As Button
Friend WithEvents BtnRelay11 As Button
Friend WithEvents Label34 As Label
Friend WithEvents BtnRelay10 As Button
Friend WithEvents BtnRelay9 As Button
Friend WithEvents BtnRelay7 As Button
Friend WithEvents BtnRelay6 As Button
Friend WithEvents BtnRelay8 As Button
Friend WithEvents BtnRelay5 As Button
Friend WithEvents BtnRelay4 As Button
Friend WithEvents BtnRelay3 As Button
Friend WithEvents BtnRelay2 As Button
Friend WithEvents BtnRelay1 As Button
End Class

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -0,0 +1,390 @@
Public Class FrmTest_C8
Implements IFrmTest
Public FCsConfig As FrmCSeriesConfig
Sub New(pathme As FrmCSeriesConfig)
' 此调用是设计器所必需的。
InitializeComponent()
FCsConfig = pathme
' 在 InitializeComponent() 调用之后添加任何初始化。
End Sub
#Region "多语种信息"
''' <summary>
''' 初始化界面控件文本
''' </summary>
Private Sub MultiLanguageInfo()
'控件.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
'Label7.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Dimming)
'BtnDimming.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.DimmingTest)
'Label34.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.RelayControl)
'Label36.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOOutput)
'Label35.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.IOInput)
'Label40.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
'Label37.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.C12) & LanguageData.StringList(MultiLanguageDAL.StringEnum.Music)
'BtnInputTest.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.TheInputTest)
'Label38.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFolder)
'Label39.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.PlayFileNumber)
'Button21.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.Play)
'Button23.Text = LanguageData.StringList(MultiLanguageDAL.StringEnum.ItinerateTest)
End Sub
#End Region
#Region "窗体"
''' <summary>
''' 窗体加载事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub FrmTest_C5_Load(sender As Object, e As EventArgs) Handles Me.Load
MultiLanguageInfo()
InitFolderItems()
End Sub
''' <summary>
''' 显示窗体事件
''' 实现接口
''' </summary>
''' <param name="parentControl"></param>
Public Sub ShowForm(parentControl As Control) Implements IFrmTest.ShowForm
FormBorderStyle = FormBorderStyle.None '无边框
TopLevel = False
Dock = DockStyle.Fill '填满大小
Parent = parentControl '父容器
Show()
End Sub
''' <summary>
''' 发送函数
''' </summary>
''' <param name="sendPacket"></param>
Public Sub SendData(sendPacket() As Byte)
FCsConfig.SendTestData(sendPacket)
FCsConfig.AppendTipText($"TX{ByteToString(sendPacket)}{vbCrLf}", Color.Green)
End Sub
#End Region
#Region "C12测试"
''' <summary>
''' 获取继电器序号
''' </summary>
Private relayNumber(4) As Byte
''' <summary>
''' 发送组包
''' </summary>
''' <param name="cmd"></param>
''' <param name="dataBuff"></param>
''' <returns></returns>
Public Function FillPacket(cmd As Byte, dataBuff() As Byte) As Byte()
If _connectStatus = True Then
cmd = &HD3 '网络测试Cmd
dataBuff = FCsConfig.FillSendData(cmd, dataBuff) '网络数据
Else
cmd = &H7 '串口测试Cmd
dataBuff = FillModelsSerialPortTest(cmd, dataBuff) '串口数据
End If
Return dataBuff
End Function
''' <summary>
''' 1-13路继电器
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnRelay13_Click(sender As Object, e As EventArgs) Handles BtnRelay9.Click, BtnRelay8.Click, BtnRelay7.Click, BtnRelay6.Click, BtnRelay5.Click, BtnRelay4.Click, BtnRelay3.Click, BtnRelay2.Click, BtnRelay13.Click, BtnRelay12.Click, BtnRelay11.Click, BtnRelay10.Click, BtnRelay1.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetRelayStatus(index)
Dim param() As Byte = GetRelayNumber(index, flg)
Dim testState As Byte = &H2
Dim devType As Byte = &HF1
Dim devAddr As Byte = &H0
Dim devCmd As Byte = &H21
'组包
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12继电器测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
''' <summary>
''' 获取继电器状态
''' </summary>
''' <param name="index"></param>
''' <returns></returns>
Private Function GetRelayStatus(index As Integer) As Boolean
Dim bt As Byte = relayNumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
''' <summary>
''' 获取继电器序号
''' </summary>
''' <param name="number"></param>
''' <returns></returns>
Private Function GetRelayNumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
relayNumber(number \ 4) = (relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else
relayNumber(number \ 4) = (relayNumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return relayNumber
End Function
''' <summary>
''' 1-5路输出
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnOutput1_Click(sender As Object, e As EventArgs) Handles BtnOutput5.Click, BtnOutput4.Click, BtnOutput3.Click, BtnOutput2.Click, BtnOutput1.Click
Dim cmd As Byte
Dim btn As Button = sender
Dim index As Integer = sender.tag
Dim flg As Boolean = Not GetC12DOStatus(index)
Dim param() As Byte = GetC12DONumber(index, flg)
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H23 '测试命令字
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12输出测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
If flg Then
btn.BackColor = Color.Green
Else
btn.BackColor = Color.Transparent
End If
End Sub
''' <summary>
''' 获取C12测试输出序号
''' </summary>
Private C12DONumber(1) As Byte
''' <summary>
''' 获取继电器状态
''' </summary>
''' <param name="index"></param>
''' <returns></returns>
Private Function GetC12DOStatus(index As Integer) As Boolean
Dim bt As Byte = C12DONumber(index \ 4) >> ((index Mod 4) * 2) And 3
If bt = 1 Then Return True
Return False
End Function
''' <summary>
''' 获取输入序号
''' </summary>
''' <param name="number"></param>
''' <returns></returns>
Private Function GetC12DONumber(number As Integer, start As Boolean) As Byte()
If start Then '置位01
C12DONumber(number \ 4) = (C12DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (1 << ((number Mod 4) * 2))
Else '置位10
C12DONumber(number \ 4) = (C12DONumber(number \ 4) And (Not (3 << ((number Mod 4) * 2)))) Or (2 << ((number Mod 4) * 2))
End If
Return C12DONumber
End Function
''' <summary>
''' C12输入测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnInputTest_Click(sender As Object, e As EventArgs) Handles BtnInputTest.Click
Dim cmd As Byte
Dim testState As Byte = &H1 '测试状态
Dim devType As Byte = &HF1 '设备类型
Dim devAddr As Byte = &H0 '设备地址默认为0
Dim devCmd As Byte = &H3 '测试时间——3分钟
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd)
'组包
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12输入测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C12音乐测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button21_Click(sender As Object, e As EventArgs) Handles Button21.Click
Dim cmd As Byte
'组包
Dim testState As Byte = &H2 '测试状态
Dim devType As Byte = &H15 '设备类型
Dim devAddr As Byte = &H1 '设备地址默认为0
Dim devCmd As Byte = &H22 '测试命令字
Dim param() As Byte = C5MusicTest()
Dim data() As Byte = FillTestDatabuff(testState, devType, devAddr, devCmd, param)
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"音频测试:{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C5测试音频播放文件下
''' </summary>
Private _PlayFolder() As String = {$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}",
$"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"}
''' <summary>
''' 初始化文件夹可选项
''' </summary>
Private Sub InitFolderItems()
ComboBox10.Items.Clear()
ComboBox10.Items.AddRange(_PlayFolder)
If ComboBox10.Items.Count > 4 Then ComboBox10.SelectedIndex = 4
End Sub
''' <summary>
''' C5音频测试
''' </summary>
''' <returns></returns>
Private Function C5MusicTest()
Dim playFolder As Byte = GetPlayFolder(ComboBox10.Text)
Dim playFile As Byte = $"&H{Hex(NumericUpDown1.Value)}"
Dim databuff As New List(Of Byte)
databuff.Add(&H7) '播放音乐状态
databuff.Add(playFolder) '播放音乐文件夹
databuff.Add(playFile) '播放音乐文件
Return databuff.ToArray
End Function
''' <summary>
''' 获取播放文件夹
''' </summary>
''' <param name="text"></param>
''' <returns></returns>
Private Function GetPlayFolder(text As String) As Byte
Dim palyFolder As Byte
Select Case text
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.MusicFolder)}"
palyFolder = &H0
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SoundPromptFolder)}"
palyFolder = &H1
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepingFolder)}"
palyFolder = &H2
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.DoorbellFolder)}"
palyFolder = &H3
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.WelcomeMessageFolder)}"
palyFolder = &H4
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder1Meditate)}"
palyFolder = &H5
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder2SeaWave)}"
palyFolder = &H6
Case $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.SleepAidFolder3Forest)}"
palyFolder = &H7
End Select
Return palyFolder
End Function
''' <summary>
''' 巡回测试
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub Button23_Click(sender As Object, e As EventArgs) Handles Button23.Click
Label48.ForeColor = Color.Black
Label48.Text = $"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Test)}..."
Dim cmd As Byte
'组包
Dim data(0) As Byte
data(0) = &H3
Dim sendDatas() As Byte = FillPacket(cmd, data)
Console.WriteLine($"C12巡回测试{ByteToString(sendDatas)}")
'发送
SendData(sendDatas)
End Sub
''' <summary>
''' C12调光
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub BtnDimming_Click(sender As Object, e As EventArgs) Handles BtnDimming.Click
Dim frmtestc12diming As New FrmTest_C12_Dimming(FCsConfig, "C8调光")
frmtestc12diming.ShowDialog()
End Sub
Public Sub ShowForm1(parentControl As Control, ftext As String) Implements IFrmTest.ShowForm1
Throw New NotImplementedException()
End Sub
#End Region
End Class

View File

@@ -0,0 +1,35 @@
Public Class HostConfig
Public Ischeck As Boolean =False
Public LoadIP As String
Public IPType As String
Public IPMask As String '掩码
Public IPGateway As String '网关
Public IPDNS As String
Public Port As String
Public Remark As String '备注
Public ServerIP As String
Public ServerPort As String
Public Function IFNetworkFormat(ByRef attribute As String, val As String) As Boolean
If String.IsNullOrEmpty(val) Then Return False
Dim buff() As String = val.Trim.Split(".")
If buff.Length <> 4 Then Return False
For Each index In buff
If Not IsNumeric(index) Then Return False
If index < 0 OrElse index > 255 Then Return False
Next
attribute = val.Trim
Return True
End Function
Public Function IFPortisNumber(ByRef attribute As String, val As String) As Boolean
If String.IsNullOrEmpty(val) Then Return False
If Not IsNumeric(val.Trim) Then Return False
If CIntval.Trim < 0 OrElse CIntval.Trim > 65535 Then Return False
attribute = val
Return True
End Function
End Class

View File

@@ -0,0 +1,10 @@
Public Interface IFrmTest
''' <summary>
''' 显示测试窗体接口
''' 测试窗体为各测试机型
''' </summary>
''' <param name="parentControl"></param>
Sub ShowForm(parentControl As Control)
Sub ShowForm1(parentControl As Control, ftext As String)
End Interface

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,27 @@
Public Class LoginBLL
''' <summary>
''' 初始化
''' </summary>
Sub New()
End Sub
''' <summary>
''' 登录数据
''' </summary>
Public Data As LoginHotelBLL
''' <summary>
''' 登录状态
''' </summary>
Public Status As String
''' <summary>
''' 登录提示
''' </summary>
Public Message As String
End Class

View File

@@ -0,0 +1,20 @@
Public Class LoginHotelBLL
Sub New()
HotelData = New List(Of LoginHotelsBLL)
End Sub
''' <summary>
''' 用户信息
''' </summary>
Public Userinfo As LoginUserInfoBLL
''' <summary>
''' 酒店数据
''' </summary>
Public HotelData As List(Of LoginHotelsBLL)
End Class

View File

@@ -0,0 +1,27 @@
Public Class LoginHotelsAuthBLL
''' <summary>
''' 初始化酒店权限
''' </summary>
Sub New()
End Sub
''' <summary>
''' 权限状态ID
''' </summary>
Public AuthotypeId As Integer
''' <summary>
''' 权限ID
''' </summary>
Public AuthorityId As Integer
''' <summary>
''' 权限名称
''' </summary>
Public AuthorityName As String
End Class

View File

@@ -0,0 +1,27 @@
Public Class LoginHotelsBLL
''' <summary>
''' 初始化酒店组
''' </summary>
Sub New()
Hotels = New List(Of LoginHotelsInfoBLL)
End Sub
''' <summary>
''' 酒店组ID
''' </summary>
Public HotelGroupsId As String
''' <summary>
''' 酒店组名称
''' </summary>
Public HotelGroupsName As String
''' <summary>
''' 酒店组
''' </summary>
Public Hotels As List(Of LoginHotelsInfoBLL)
End Class

View File

@@ -0,0 +1,32 @@
Public Class LoginHotelsInfoBLL
''' <summary>
''' 初始化酒店信息
''' </summary>
Sub New()
Auth = New List(Of LoginHotelsAuthBLL)
End Sub
''' <summary>
''' 酒店ID
''' </summary>
Public HotelId As String
''' <summary>
''' 项目编码
''' </summary>
Public Code As String
''' <summary>
''' 酒店名称
''' </summary>
Public HotelName As String
''' <summary>
''' 酒店权限
''' </summary>
Public Auth As List(Of LoginHotelsAuthBLL)
End Class

View File

@@ -0,0 +1,49 @@
Public Class LoginReturnDataBLL
Sub New()
End Sub
''' <summary>
''' 酒店组ID
''' </summary>
Public HotelGroupsId As String
''' <summary>
''' 酒店组名
''' </summary>
Public HotelGroupsName As String
''' <summary>
''' 酒店ID
''' </summary>
Public HotelId As String
''' <summary>
''' 项目编码
''' </summary>
Public Code As String
''' <summary>
''' 酒店名称
''' </summary>
Public HotelName As String
''' <summary>
''' 权限状态
''' </summary>
Public AuthotypeId As String
''' <summary>
''' 权限ID
''' </summary>
Public AuthorityId As String
''' <summary>
''' 权限名称
''' </summary>
Public AuthorityName As String
End Class

View File

@@ -0,0 +1,10 @@
Public Class LoginUserInfoBLL
''' <summary>
''' 用户头像
''' </summary>
Public HeadImg As String
End Class

View File

@@ -0,0 +1,21 @@
Public Class C12Test_DimmingBLL
''' <summary>
''' 调光
''' </summary>
Public Dimming As Label
''' <summary>
''' 调光滑动值
''' </summary>
Public DimmingVal As HScrollBar
''' <summary>
''' 调光输入值
''' </summary>
Public DimmingInputVal As NumericUpDown
End Class

View File

@@ -0,0 +1,975 @@
Imports System.IO
Imports System.Net
Imports System.Net.NetworkInformation
Imports System.Net.Sockets
Imports System.Security.Cryptography
Imports System.Text
Imports System.Threading
Imports Newtonsoft.Json
Module FunctionModule
#Region "发送模式"
''' <summary>
''' 是否是网络发送
''' </summary>
Public _isNetWork As Boolean
''' <summary>
''' 是否是串口发送
''' </summary>
Public _isSerialPort As Boolean
#End Region
#Region "权限管理"
''' <summary>
''' 查询到的酒店编码
''' </summary>
Public _projectNumber As String
''' <summary>
''' 查询到的酒店名称
''' </summary>
Public _HotelName As String
''' <summary>
''' 查询到权限
''' </summary>
Public _authorityInfo As New Dictionary(Of String, String)
#End Region
#Region "数据库操作"
''' <summary>
''' 登录返回数据
''' json序列号
''' </summary>
Public _loginData As New Dictionary(Of String, LoginReturnDataBLL)
''' <summary>
''' 后台接口返回酒店列表数据
''' </summary>
Public _hotelListData As New Dictionary(Of String, BackstageHotelListBLL)
''' <summary>
''' 后台接口返回房型列表数据
''' </summary>
Public _roomTypeListData As New Dictionary(Of String, BackstageRoomTypeListBLL)
''' <summary>
''' 后台接口返回主机列表数据
''' </summary>
Public _hostListData As New Dictionary(Of String, BackstageHostListBLL)
''' <summary>
''' 语言数据
''' </summary>
Public LanguageData As MultiLanguageDAL
''' <summary>
''' SqlServer
''' </summary>
Public _SqlServer As New SqlServerDAL
''' <summary>
''' 登录数据库
''' </summary>
Public _SqlLogin As New BlvMySql("blv-cloud-db.mysql.rds.aliyuncs.com", 3307, "blv_rcu_config", "blv_rcu", "fnadiaJDIJ7546")
Public Function ConnLoginDataSourse() As Boolean
If _SqlLogin.ConnMySQLBase() = False Then
MsgBox($"")
Return False
End If
Console.WriteLine($"登录_权限数据库连接成功")
Return True
End Function
''' <summary>
''' 用户名
''' </summary>
Public _userNames As String
''' <summary>
''' 用户表格
''' </summary>
Public _userData As New DataTable
'''' <summary>
'''' 后台数据
'''' </summary>
'Public _backstageData As New SqlServerDAL
'''' <summary>
'''' 连接后台数据源
'''' </summary>
'Public Sub ConnBackstageData()
' _backstageData.ConnDataBase($"boonlive-rcu.com", "", False, "blw", "blw@123")
' If _backstageData._isConn = True Then
' Console.WriteLine($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Background)}{LanguageData.StringList(MultiLanguageDAL.StringEnum.DatabaseConnectionSuccessful)}")
' Else
' Console.WriteLine($"{LanguageData.StringList(MultiLanguageDAL.StringEnum.Background)}{LanguageData.StringList(MultiLanguageDAL.StringEnum.DatabaseConnectionFailed)}")
' End If
'End Sub
'''' <summary>
'''' 获取匹配的用户信息
'''' </summary>
'''' <param name="userAccount">用户账号</param>
'''' <param name="userPassword">用户密码</param>
'''' <returns></returns>
'Public Function UtsGetUserInfo(userAccount As String, userPassword As String) As DataTable
' Dim dtUser As DataTable
' Dim dbParam As DbExecutorInitParam = GetDbInitParam()
' Using db As New DbExecutor(dbParam.Type, dbParam.ConnectionString)
' db.Open()
' Dim tableName As String = DbTableModel.Manage.UserListTable.TableName
' Dim condition As String = $"`{DbTableModel.Manage.UserListTable.ColNamesEnum.UserName}` = @user and `{DbTableModel.Manage.UserListTable.ColNamesEnum.Password}` = @pwd"
' db.AddDbParameter(DbType.AnsiString, "user", userAccount)
' db.AddDbParameter(DbType.AnsiString, "pwd", MD5.GetStringMd5(MD5.GetStringMd5(userPassword)))
' If dbParam.Type = DbExecutor.DbTypeEnum.Sqlite Then
' dtUser = db.ExecuteDataTable(db.CmdHelper.SearchAll(tableName, condition))
' Else
' dtUser = db.ExecuteDataTable(db.CmdHelper.DbSearchAll(UtsDb.RemotePublicDb, tableName, condition))
' End If
' db.Close()
' End Using
' Return dtUser
'End Function
#End Region
#Region "功能模块"
''' <summary>
''' 本地IP
''' </summary>
Public _localIP As String
''' <summary>
''' 本地端口号
''' </summary>
Public _localPort As Integer
''' <summary>
''' 远程IP地址
''' </summary>
Public _RemoteIP As IPAddress = IPAddress.Parse($"192.168.0.23")
''' <summary>
''' 远程端口号
''' </summary>
Public _RemotePort As Integer = 3341
''' <summary>
''' 连接状态,默认非连接
''' </summary>
Public _connectStatus As Boolean = False
''' <summary>
''' 是否通过UDP发送数据
''' </summary>
Public _isSendByUdp As Boolean
''' <summary>
''' 回复超时
''' </summary>
Public ReadOnly _relayTimeout As Integer = 50
''' <summary>
''' 是否重试绑定MAC
''' </summary>
Public _isMACRetry As Boolean
''' <summary>
''' 是否解绑MAC
''' </summary>
Public _isMACUnbundle As Boolean
''' <summary>
''' 获取本地可用IP
''' </summary>
''' <returns></returns>
Public Function GetLocalIp() As List(Of IPAddress)
Dim address() As IPAddress
Dim destAddress As New List(Of IPAddress)
address = Dns.GetHostEntry(Dns.GetHostName()).AddressList
For Each pAddress As IPAddress In address
If pAddress.AddressFamily = AddressFamily.InterNetwork Then
destAddress.Add(pAddress)
End If
Next
Return destAddress
End Function
''' <summary>
''' Byte数组转字符串
''' </summary>
''' <param name="databuff"></param>
''' <returns></returns>
Public Function ByteToString(databuff() As Byte)
Dim strData As String = String.Empty
For i = 0 To databuff.Length - 1
strData &= $" {Hex(databuff(i)).PadLeft(2, "0"c)}"
Next
Return strData
End Function
''' <summary>
''' 判断文本不能为空
''' 文本框
''' </summary>
''' <param name="txt"></param>
''' <returns></returns>
Public Function TextIsNull(txt As TextBox, Tip As String) As Boolean
If txt.Text = Nothing Or txt.Text = "" Then
MsgBox($"{Tip}{LanguageData.StringList(MultiLanguageDAL.StringEnum.NOTNULL)}")
Return False
End If
Return True
End Function
''' <summary>
''' 判断文本不能为空
''' 下拉框
''' </summary>
''' <param name="txt"></param>
''' <returns></returns>
Public Function TextIsNull(txt As ComboBox, Tip As String) As Boolean
If txt.Text = Nothing Or txt.Text = "" Then
MsgBox($"{Tip} {LanguageData.StringList(MultiLanguageDAL.StringEnum.NOTNULL)}")
Return False
End If
Return True
End Function
''' <summary>
''' 等待回复
''' </summary>
''' <param name="isReply">是否回复标志位</param>
''' <param name="TimeOut">超时时间</param>
Public Sub WaitReply(isReply As Boolean, TimeOut As Integer) 'ByRef
Dim tick As Integer
Dim startTick As Integer = My.Computer.Clock.TickCount
isReply = False
While isReply = False AndAlso tick <= TimeOut
Thread.Sleep(3)
tick = My.Computer.Clock.TickCount - startTick
Application.DoEvents()
End While
End Sub
''' <summary>
''' 延时N秒
''' </summary>
''' <param name="HowLong">延时时间值</param>
Public Sub PauseWait(ByVal HowLong As Long)
Dim tick As Long
tick = My.Computer.Clock.TickCount
Do
My.Application.DoEvents()
Loop Until tick + HowLong < My.Computer.Clock.TickCount
End Sub
''' <summary>
''' IP地址转换为Byte数组
''' </summary>
''' <param name="addr"></param>
''' <returns></returns>
Public Function GetAddressToBytes(addr As String)
Dim iadd() As String = addr.Split(New Char() {"."c}, StringSplitOptions.RemoveEmptyEntries)
Dim address(3) As Byte
address(0) = iadd(0) '例192
address(1) = iadd(1) '例168
address(2) = iadd(2)
address(3) = iadd(3)
Return address
End Function
''' <summary>
''' 端口号转换为Byte数组
''' </summary>
''' <param name="port"></param>
''' <returns></returns>
Public Function GetPortToBytes(port As String)
Dim bport As Integer = CInt(port)
Dim ports() As Byte = IntToByteLB(bport)
Return ports
End Function
''' <summary>
''' Int转2个字节Byte
''' 低字节在前,高字节在后
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
Public Function IntToByteLB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(1)
btemp(1) = b(0)
Return btemp
End Function
''' <summary>
''' Int转2个字节Byte
''' 高字节在前,低字节在后
''' </summary>
''' <param name="i"></param>
''' <returns></returns>
Public Function IntToByteHB(ByVal i As Integer) As Byte()
Dim btemp() As Byte = {0, 0}
Dim b() As Byte = BitConverter.GetBytes(i)
btemp(0) = b(0)
btemp(1) = b(1)
Return btemp
End Function
''' <summary>
''' 获取文件的MD5值
''' 返回Byte数组值
''' </summary>
''' <param name="filepath">文件路径</param>
''' <returns></returns>
Public Function GetMd5(filepath As String) As Byte()
Dim FileStr As FileStream = New FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read)
Dim data(FileStr.Length - 1) As Byte
FileStr.Read(data, 0, data.Length)
Dim md5s As Byte() = MD5.Create().ComputeHash(data)
'Dim fileMd5 As New StringBuilder()
'Dim i As Integer
'For i = 0 To md5s.Length - 1
' fileMd5.Append(md5s(i).ToString("x2"))
'Next
'Console.WriteLine($"MD5:{fileMd5}")
Return md5s
End Function
''' <summary>
''' 获取文件的MD5值
''' 返回String字符串
''' </summary>
''' <param name="filepath">文件路径</param>
''' <returns></returns>
Public Function GetMd5String(filepath As String) As String
Dim FileStr As FileStream = New FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read)
Dim data(FileStr.Length) As Byte
FileStr.Read(data, 0, data.Length)
Dim md5s As Byte() = MD5.Create().ComputeHash(data)
Dim fileMd5 As New StringBuilder()
Dim i As Integer
For i = 0 To md5s.Length - 1
fileMd5.Append(md5s(i).ToString("x2"))
Next
Console.WriteLine($"MD5:{fileMd5}")
Return fileMd5.ToString()
End Function
'''' <summary>
'''' 获取文件的MD5值
'''' </summary>
'''' <param name="filepath">文件路径</param>
'''' <returns></returns>
'Public Function GetFileMd5String(filepath As String) As String
' 'Dim data As Byte() = MD5.Create().ComputeHash(filepath)
' Dim md5Hasher As New MD5CryptoServiceProvider()
' Dim data As Byte() = md5Hasher.ComputeHash(IO.File.ReadAllBytes(filepath))
' Dim fileMd5 As New StringBuilder()
' Dim i As Integer
' For i = 0 To data.Length - 1
' fileMd5.Append(data(i).ToString("x2"))
' Next
' Return fileMd5.ToString()
'End Function
'''' <summary>
'''' 获取文件的MD5值
'''' </summary>
'''' <param name="filepath">文件路径</param>
'''' <returns></returns>
'Public Function GetFileMd5Byte(filepath As String) As Byte()
' Dim md5Hasher As New MD5CryptoServiceProvider()
' Dim data As Byte() = md5Hasher.ComputeHash(IO.File.ReadAllBytes(filepath))
' 'Dim fileMd5 As New StringBuilder()
' 'Dim i As Integer
' 'For i = 0 To data.Length - 1
' ' fileMd5.Append(data(i).ToString("X2"))
' 'Next
' 'Return fileMd5.ToString()
' Return data
'End Function
''' <summary>
''' 获取数据的MD5值
''' 返回MD5校验的Byte数组
''' </summary>
''' <param name="data">文件数据</param>
''' <returns></returns>
Public Function GetDataMd5Byte(data As Byte()) As Byte()
Dim databuff As Byte() = MD5.Create().ComputeHash(data)
Return databuff
End Function
''' <summary>
''' 获取数据的MD5值
''' 返回MD5校验的Byte数组
''' </summary>
''' <param name="data">文件数据</param>
''' <returns></returns>
Public Function GetDataMd5String(data As Byte()) As String
Dim databuff As Byte() = MD5.Create().ComputeHash(data)
Dim strData As String = BitConverter.ToString(databuff)
Return strData
End Function
''' <summary>
''' 获取字符串的MD5值
''' </summary>
''' <param name="str">需要求MD5的原文字符串</param>
''' <returns></returns>
Public Function GetStringMd5(str As String) As String
Dim md5Hasher As New MD5CryptoServiceProvider()
Dim data As Byte() = md5Hasher.ComputeHash(Encoding.UTF8.GetBytes(str))
Dim fileMd5 As New StringBuilder()
Dim i As Integer
For i = 0 To data.Length - 1
fileMd5.Append(data(i).ToString("X2"))
Next
Return fileMd5.ToString()
End Function
''' <summary>
''' 分块函数
''' 计算Byte数组的块数
''' </summary>
''' <param name="databuff"></param>
''' <param name="size"></param>
''' <returns></returns>
Public Function GetBlocks(databuff As Byte(), size As Integer) As Integer
Dim blockCount As Integer = databuff.Length \ size
If databuff.Length Mod size > 0 Then
blockCount += 1
End If
Return blockCount
End Function
''' <summary>
''' 字符串转换Byte数组
''' 字符串为连续且不包含任意字符的字符串
''' </summary>
''' <param name="str"></param>
''' <returns></returns>
Public Function GetStringToDataByte(str As String) As Byte()
Dim dataList As New List(Of Byte)
For index As Integer = 0 To str.Length - 1 Step 2
dataList.Add($"&H{str.Substring(index, 2)}")
Next
Return dataList.ToArray
End Function
''参数strTime:要转换的时间intTimeZone该时间对应的时区
''返回值strTime相对于1970年1月1日午夜0点经过的秒数
''示例ToUnixTime("2008-5-23 10:51:0", +8)返回值为1211511060
'Public Function ToUnixTime(strTime, intTimeZone)
' If strTime Is Nothing Or Not IsDate(strTime) Then strTime = Now
' If intTimeZone Is Nothing Or Not IsNumeric(intTimeZone) Then intTimeZone = 0
' ToUnixTime = DateAdd("h", -intTimeZone, strTime)
' ToUnixTime = DateDiff("s", "1970-1-1 0:0:0", ToUnixTime)
'End Function
''' <summary>
''' 把UNIX时间戳转换为标准时间
''' </summary>
''' <param name="intTime">要转换的UNIX时间戳</param>
''' <param name="ime">时区</param>
''' <returns>intTime所代表的标准时间</returns>
Public Function FromUnixTime(intTime As Long, ime As Long) As Date
'If intTime Is Nothing Or Not IsNumeric(intTime) Then
' FromUnixTime = Now()
' Exit Function
'End If
'If intTime Is Nothing Or Not IsNumeric(intTimeZone) Then intTimeZone = 0
'FromUnixTime = DateAdd("s", intTime, "1970-1-1 0:0:0")
'FromUnixTime = DateAdd("h", intTimeZone, FromUnixTime)
Dim a As Date = DateTime.Parse("1970-1-1 0:0:0")
a = a.AddSeconds(intTime)
a = a.AddHours(ime)
Return a
End Function
''' <summary>
''' 判断网络信息是否合法
''' </summary>
''' <param name="text"></param>
''' <param name="Tip"></param>
''' <returns></returns>
Public Function GetNetworkInfoIsLegal(text As String, Tip As String) As Boolean
If GetTxStringIsLegal(text) = False Then
MsgBox($"{Tip} 输入不合法!")
Return False
End If
Return True
End Function
''' <summary>
''' 判断文本输入控件输入是否合法
''' </summary>
''' <param name="text"></param>
''' <returns></returns>
Public Function GetTxStringIsLegal(text As String) As Boolean
If IsNumeric(text) = True AndAlso text <> "" Then
Return True
End If
Return False
End Function
'''' <summary>
'''' 两个字节Byte转Int
'''' </summary>
'''' <param name="datas"></param>
'''' <returns></returns>
'Private Function GetByteToInt(datas() As Byte)
' 'Dim ints As Integer = CInt(datas(0)) + CInt(datas(1) * 256)
' Dim ints As Integer = BitConverter.ToUInt16(datas, 0)
' Return ints
'End Function
#End Region
#Region "后台接口"
''' <summary>
''' Post请求
''' </summary>
''' <param name="url"></param>
''' <param name="data"></param>
''' <returns></returns>
Public Function PostData(ByVal url As String, ByVal data As String) As String
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest = WebRequest.Create(url)
'//Post请求方式
request.Method = "POST"
'内容类型
request.ContentType = "application/x-www-form-urlencoded"
'将URL编码后的字符串转化为字节
Dim encoding As New UTF8Encoding()
Dim bys As Byte() = encoding.GetBytes(data)
'设置请求的 ContentLength
request.ContentLength = bys.Length
'获得请 求流
'MsgBox("0.0.1")
Dim newStream As Stream = request.GetRequestStream()
' MsgBox("0.0.2")
newStream.Write(bys, 0, bys.Length)
newStream.Close()
'获得响应流
Dim sr As StreamReader = New StreamReader(request.GetResponse().GetResponseStream)
' MsgBox("0.0.3")
Return sr.ReadToEnd
End Function
''' <summary>
''' 处理酒店列表接口信息
''' </summary>
''' <returns></returns>
Public Function DealHotelListInterfaceInfo() As Boolean
Dim key As String = "blw_ws@2015"
''https://www.boonlive-rcu.com/api/GetHotelList?jsonData={"key":"blw_ws@2015"}
Dim jsonString As String = PostData("https://www.boonlive-rcu.com/api/GetHotelList", $"jsonData={{""key"":""{key}""}}")
Console.WriteLine($"后台接口_获取酒店列表:" & jsonString)
'MsgBox("0.1")
Dim hotelList As BackstageHotelListResultBLL = JsonConvert.DeserializeObject(Of BackstageHotelListResultBLL)(jsonString)
'MsgBox("0.2")
If hotelList.IsSuccess = False Then
MsgBox($"解析酒店列表接口错误!")
Return False
End If
'MsgBox("0.3")
_hotelListData.Clear()
For i = 0 To hotelList.Result.Count - 1
Dim datalist As New BackstageHotelListBLL
datalist.ID = hotelList.Result(i).ID
datalist.Code = hotelList.Result(i).Code
datalist.Name = hotelList.Result(i).Name
datalist.EName = hotelList.Result(i).EName
datalist.TWName = hotelList.Result(i).TWName
datalist.Contact = hotelList.Result(i).Contact
datalist.Phone = hotelList.Result(i).Phone
datalist.Address = hotelList.Result(i).Address
datalist.ValidateDate = hotelList.Result(i).ValidateDate
datalist.CreatDate = hotelList.Result(i).CreatDate
datalist.Remark = hotelList.Result(i).Remark
datalist.Status = hotelList.Result(i).Status
datalist.IsApprove = hotelList.Result(i).IsApprove
datalist.SysHotelGroupID = hotelList.Result(i).SysHotelGroupID
datalist.SysHotelGroupName = hotelList.Result(i).SysHotelGroupName
_hotelListData.Add(datalist.Code, datalist)
Next
' MsgBox("0.4")
Return True
End Function
''' <summary>
''' 处理主机列表接口信息
''' </summary>
''' <returns></returns>
Public Function DealRoomTypeListInterfaceInfo(code As String, creatDate As String) As Boolean
Console.WriteLine($"code:{code}————creatDate:{creatDate}")
Dim jsonString As String = PostData("https://www.boonlive-rcu.com/api/GetRoomTypeAndModalsList", $"jsonData={{""code"":""{code}"", ""creatDate"":""{creatDate}""}}")
Console.WriteLine($"后台接口_获取房型列表:" & jsonString)
Dim roomTypeList As BackstageRoomTypeListResultBLL = JsonConvert.DeserializeObject(Of BackstageRoomTypeListResultBLL)(jsonString)
If roomTypeList.IsSuccess = False Then
MsgBox($"解析房型列表接口错误!")
Return False
End If
_roomTypeListData.Clear()
For i = 0 To roomTypeList.Result.Count - 1
Dim datalist As New BackstageRoomTypeListBLL
datalist.ID = roomTypeList.Result(i).ID
datalist.Code = roomTypeList.Result(i).Code
datalist.Name = roomTypeList.Result(i).Name
datalist.Modals = roomTypeList.Result(i).Modals
_roomTypeListData.Add(i, datalist)
Next
Return True
End Function
''' <summary>
''' 处理主机列表接口信息
''' </summary>
''' <returns></returns>
Public Function DealHostListInterfaceInfo(code As String, creatDate As String) As Boolean
'Dim codes As String = _hotelListData.Keys(1)
'Dim creatDates As String = _hotelListData.Values(1).CreatDate
Console.WriteLine($"code:{code}————creatDate:{creatDate}")
Dim jsonString As String = PostData("https://www.boonlive-rcu.com/api/GetHostList", $"jsonData={{""code"":""{code}"", ""creatDate"":""{creatDate}""}}")
Console.WriteLine($"后台接口_获取主机列表:" & jsonString)
Dim hostList As BackstageHostListResultBLL = JsonConvert.DeserializeObject(Of BackstageHostListResultBLL)(jsonString)
If hostList.IsSuccess = False Then
MsgBox($"解析主机列表接口错误!")
Return False
End If
_hostListData.Clear()
For i = 0 To hostList.Result.Count - 1
Dim datalist As New BackstageHostListBLL
datalist.ID = hostList.Result(i).ID
datalist.HotelID = hostList.Result(i).HotelID
datalist.HotelName = hostList.Result(i).HotelName
datalist.HostNumber = hostList.Result(i).HostNumber
datalist.RoomNumber = hostList.Result(i).RoomNumber
datalist.Status = hostList.Result(i).Status
datalist.RegisterDate = hostList.Result(i).RegisterDate
datalist.RoomStatusID = hostList.Result(i).RoomStatusID
datalist.RoomStatusName = hostList.Result(i).RoomStatusName
datalist.RoomTypeID = hostList.Result(i).RoomTypeID
datalist.RoomTypeName = hostList.Result(i).RoomTypeName
datalist.MAC = hostList.Result(i).MAC
datalist.MACBindDate = hostList.Result(i).MACBindDate
datalist.IP = hostList.Result(i).IP
datalist.Remark = hostList.Result(i).Remark
_hostListData.Add(i, datalist)
Next
Return True
End Function
''' <summary>
''' 设置MAC地址返回结果
''' </summary>
Public _setResult As String
''' <summary>
''' 处理设置主机MAC接口信息
''' </summary>
''' <returns></returns>
Public Function DealSetHostMACInterfaceInfo(code As String, creatDate As String, roomNumber As String, mac As String) As Boolean
'code As String, creatDate As String, roomNumber As String, mac As String
'Dim code As String = _hotelListData.Keys(2)
'Dim creatDate As String = _hotelListData.Values(2).CreatDate
'Dim roomNumber As String = _hostListData.Values(1).RoomNumber
'Dim mac As String = _hostListData.Values(1).MAC
Console.WriteLine($"code:{code}——creatDate:{creatDate}——roomNumber:{roomNumber}——mac:{mac}")
Dim jsonString As String = PostData("https://www.boonlive-rcu.com/api/SetHostMAC", $"jsonData={{""code"":""{code}"", ""creatDate"":""{creatDate}"", ""roomNumber"":""{roomNumber}"", ""mac"":""{mac}""}}")
Console.WriteLine($"后台接口_设置主机MAC:" & jsonString)
Dim setHostMAC As BackstageSetHostMACBLL = JsonConvert.DeserializeObject(Of BackstageSetHostMACBLL)(jsonString)
'If setHostMAC.IsSuccess = False Then
' 'MsgBox($"解析主机MAC接口错误!")
' Return False
'End If
_setResult = setHostMAC.Result
Return setHostMAC.IsSuccess
End Function
#End Region
#Region "获取端口随机数"
''' <summary>
''' 获取操作系统已用的端口号
''' </summary>
Public Function PortIsUsed()
'获取本地计算机的网络连接和通信统计数据的信息
Dim ipGlobal As IPGlobalProperties = IPGlobalProperties.GetIPGlobalProperties()
'返回本地计算机上的所有Tcp监听程序
Dim ipsTcp As IPEndPoint() = ipGlobal.GetActiveTcpListeners()
'返回本地计算机上的所有UDP监听程序
Dim ipsUdp As IPEndPoint() = ipGlobal.GetActiveUdpListeners()
'返回本地计算机上的Internet协议版本4(IPV4 传输控制协议(TCP)连接的信息
Dim tcpConn As TcpConnectionInformation() = ipGlobal.GetActiveTcpConnections()
Dim allports As IList = New ArrayList()
For Each ep As IPEndPoint In ipsTcp
allports.Add(ep.Port)
Next
For Each ep As IPEndPoint In ipsUdp
allports.Add(ep.Port)
Next
For Each conn As TcpConnectionInformation In tcpConn
allports.Add(conn.LocalEndPoint.Port)
Next
Return allports
End Function
''' <summary>
''' 获取随机端口号
''' </summary>
''' <returns></returns>
Public Function GetRandomPort()
Dim port As Integer = 0
Dim hasUserdPort As IList = PortIsUsed()
Dim isRandomOk As Boolean = True
Dim random As Random = New Random(Date.Now.Millisecond)
While isRandomOk
port = random.Next(1024, 65535)
isRandomOk = hasUserdPort.Contains(port)
End While
Return port
End Function
#End Region
#Region "机型测试"
''' <summary>发送测试数据序号</summary>
Public _dataNumber As Byte = 0
''' <summary>
''' 填充C5串口测试
''' </summary>
''' <param name="data"></param>
''' <returns></returns>
Public Function FillModelsSerialPortTest(cmd As Byte, data As Byte()) As Byte()
Dim ourAddress As Byte = &H0 '己方地址
Dim sendNumber As Byte = GetSendNumber() '发送序号
Dim devType As Byte = &HF2 '设备类型
Dim putAddress As Byte = &H0 '收方地址
Dim len(1) As Byte '数据长度占2个字节
Dim dataSum As Byte '校验和
Dim length As Integer = 8 + data.Length
len = IntToByteHB(length)
Dim databuff As New List(Of Byte)
databuff.Add(ourAddress)
databuff.Add(sendNumber)
databuff.Add(devType)
databuff.Add(putAddress)
databuff.AddRange(len)
databuff.Add(cmd)
databuff.AddRange(data)
dataSum = GetSumCheckMod(databuff.ToArray)
databuff.Insert(6, dataSum)
Return databuff.ToArray
End Function
''' <summary>
''' 获取发送序号
''' </summary>
''' <returns></returns>
Public Function GetSendNumber()
_dataNumber += 1
If _dataNumber > 15 Then
_dataNumber = 1
End If
Return _dataNumber
End Function
''' <summary>
''' 和校验取余数
''' 求Byte数组的和校验取余数
''' </summary>
''' <param name="dataPacket">Byte数组</param>
''' <returns></returns>
Public Function GetSumCheckMod(dataPacket As Byte()) As Byte
Dim sum As Integer
For idx = 0 To dataPacket.Length - 1
sum += dataPacket(idx)
sum = sum And &HFF
Next
Dim sumMod As Byte = &HFF - sum
Return sumMod
End Function
''' <summary>
''' 填充测试数据参数
''' </summary>
''' <param name="testState">测试状态</param>
''' <param name="devType">设备类型</param>
''' <param name="devAddr">设备地址-默认为0</param>
''' <param name="devCmd">测试设备Cmd</param>
''' <param name="param">参数</param>
''' <returns></returns>
Public Function FillTestDatabuff(testState As Byte, devType As Byte, devAddr As Byte, devCmd As Byte, param As Byte()) As Byte()
Dim data As New List(Of Byte)
data.Add(testState)
data.Add(devType)
data.Add(devAddr)
data.Add(devCmd)
data.AddRange(param)
Return data.ToArray
End Function
''' <summary>
''' 填充测试数据参数
''' </summary>
''' <param name="testState">测试状态</param>
''' <param name="devType">设备类型</param>
''' <param name="devAddr">设备地址-默认为0</param>
''' <param name="devCmd">测试设备Cmd</param>
''' <returns></returns>
Public Function FillTestDatabuff(testState As Byte, devType As Byte, devAddr As Byte, devCmd As Byte) As Byte()
Dim data As New List(Of Byte)
data.Add(testState)
data.Add(devType)
data.Add(devAddr)
data.Add(devCmd)
Return data.ToArray
End Function
#End Region
End Module

View File

@@ -0,0 +1,183 @@
Imports System.Data.SqlClient
Imports MySql.Data.MySqlClient
Public Class BlvMySql
''' <summary>
''' 连接字符串
''' </summary>
Private _ConnString As MySqlConnectionStringBuilder = New MySqlConnectionStringBuilder()
''' <summary>
''' MySQL 连接器
''' </summary>
Public _mySqlConn As New MySqlConnection
''' <summary>
''' 初始化 MySQL 连接对象
''' </summary>
''' <param name="ServerAddress"></param>
''' <param name="port"></param>
''' <param name="DataBaseName"></param>
''' <param name="User"></param>
''' <param name="Password"></param>
Sub New(ServerAddress As String, port As UInteger, DataBaseName As String, User As String, Password As String)
_ConnString.Server = ServerAddress
_ConnString.Port = port
_ConnString.Database = DataBaseName
_ConnString.UserID = User
_ConnString.Password = Password
End Sub
''' <summary>
''' 连接My SQL数据库
''' </summary>
Public Function ConnMySQLBase() As Boolean
Try
_mySqlConn = New MySqlConnection(_ConnString.ConnectionString)
_mySqlConn.Open()
Catch ex As Exception
Console.WriteLine($"Error Message:{ex.Message}")
Return False
End Try
Return True
End Function
#Region "MySQL增删改查"
''' <summary>
''' 插入MySQL数据
''' </summary>
''' <param name="strInsert"></param>
''' <returns></returns>
Public Function InsertMySql(strInsert As String)
Try
Dim cmd As New MySqlCommand(strInsert, _mySqlConn)
cmd.ExecuteNonQuery()
_mySqlConn.Close()
_mySqlConn.Dispose()
Catch ex As Exception
Console.WriteLine($"MySql Error:{ex.Message}")
Return False
End Try
Return True
End Function
''' <summary>
''' 修改MySQL数据
''' </summary>
''' <param name="strUpdate"></param>
''' <returns></returns>
Public Function UpdateMySql(strUpdate As String)
Dim result As Integer
Try
Dim cmd As New MySqlCommand(strUpdate, _mySqlConn)
result = cmd.ExecuteNonQuery()
_mySqlConn.Close()
_mySqlConn.Dispose()
Catch ex As Exception
Console.WriteLine($"MySql Error:{ex.Message}")
End Try
Return result
End Function
''' <summary>
''' 查询MySQL数据
''' </summary>
''' <param name="queryString">需要查询的列</param>
''' <returns></returns>
Public Function Query(queryString As String) As DataTable
Dim sda As MySqlDataAdapter = New MySqlDataAdapter(queryString, _ConnString.ConnectionString)
Dim sqlDataSet As DataTable = New DataTable()
Try
sda.Fill(sqlDataSet)
Catch ex As Exception
MsgBox($"######{Now} - MySQL查询错误: {ex.Message} 查询语句: {queryString}")
End Try
Return sqlDataSet
End Function
''' <summary>
''' 查询MySQL数据
''' </summary>
''' <param name="queryCol">需要查询的列</param>
''' <param name="TableName">需要查询的数据表名</param>
''' <param name="Conditions">需要查询的条件,默认为空</param>
''' <returns></returns>
Public Function Query(queryCol As String, TableName As String, Optional Conditions As String = "") As DataTable
Dim sql As String = $"select {queryCol} from {TableName} {Conditions}"
Dim sda As MySqlDataAdapter = New MySqlDataAdapter(sql, _ConnString.ConnectionString)
Dim sqlDataSet As DataTable = New DataTable()
Try
sda.Fill(sqlDataSet)
Catch ex As Exception
MsgBox($"######{Now} - MySQL查询错误: {ex.Message} 查询语句: {sql}")
End Try
Return sqlDataSet
End Function
#End Region
#Region "多语种信息"
''' <summary>
''' 获取多语种版本信息
''' </summary>
''' <returns></returns>
Public Function GetCloudVersionInfo() As DataTable
Dim dtUser As DataTable = New DataTable()
Dim queryStr As String = $"Select a.Language, a.Version from tbl_multilingual a
Left Join tbl_multilingual_apps b on a.ApplicationID = b.ID
where b.Application = 'C系列配置工具'"
Console.WriteLine($"获取多语种版本信息查询语句:{queryStr}")
Dim sda As MySqlDataAdapter = New MySqlDataAdapter(queryStr, _ConnString.ConnectionString)
Try
sda.Fill(dtUser)
Catch ex As Exception
MsgBox($"######{Now} - MySQL查询错误: {ex.Message} 查询语句: ")
End Try
Return dtUser
End Function
''' <summary>
''' 获取云端数据信息
''' </summary>
''' <returns></returns>
Public Function GetCloudDataInfo(languageName As String) As DataTable
Dim dtUser As DataTable = New DataTable()
Dim queryStr As String = $"Select a.{languageName} from tbl_multilingual_data a
left join tbl_multilingual b on a.ApplicationID = b.ApplicationID
left join tbl_multilingual_apps c on b.ApplicationID = c.ID
where c.Application = 'C系列配置工具' And b.Language = '{languageName}';"
Console.WriteLine($"获取云端数据信息查询语句:{queryStr}")
Dim sda As MySqlDataAdapter = New MySqlDataAdapter(queryStr, _ConnString.ConnectionString)
Try
sda.Fill(dtUser)
Catch ex As Exception
MsgBox($"######{Now} - MySQL查询错误: {ex.Message} 查询语句: {queryStr}")
End Try
Return dtUser
End Function
#End Region
End Class

View File

@@ -0,0 +1,470 @@
Imports System.Data.SqlClient
Public Class SqlServerDAL
''' <summary>
''' SQL连接
''' </summary>
Public _sqlConn As New SqlConnection
''' <summary>
''' SQL适配器
''' </summary>
Public _sqlDateAdap As New SqlDataAdapter
''' <summary>
''' SQL数据集
''' </summary>
Public _sqlDataSet As DataSet
Public DbConnString As String = "Server=blv-cloud-db.mysql.rds.aliyuncs.com;Port=3307;Database=blv_rcu_db;Uid=blv_rcu;Pwd=fnadiaJDIJ7546;charset=utf8;"
''' <summary>
''' 是否连接数据库
''' </summary>
Public _isConn As Boolean
''' <summary>
''' 初始化
''' </summary>
Sub New()
End Sub
Public Function SelectTable(sqlstr As String) As Dictionary(Of String, String)
Dim dic As New Dictionary(Of String, String)
Dim dt As New DataTable
Try
'Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mssql, DbConnString)
Using db As New DbExecutor(DbExecutor.DbTypeEnum.Mysql, DbConnString)
db.Open()
dt = db.ExecuteDataTable(sqlstr)
db.Close()
End Using
If Not IsNothingdt Then
For Each dtrow As DataRow In dt.Rows
For i As Integer = 0 To dt.Columns.Count - 1
dic.Add(dt.Columns(i).ColumnName, dtrow.Item(i).ToString)
Next
Next
End If
Catch ex As Exception
End Try
Return dic
End Function
#Region "数据源连接"
''' <summary>
''' 连接数据库
''' </summary>
''' <param name="IPAddress">IP地址或计算名</param>
''' <param name="DataBaseName">数据库名</param>
''' <param name="Conn">安全连接情况真或假若是Windows验证方式则为真若是用户名及密码登录则为假</param>
''' <param name="User">上项为假时,提供用户名</param>
''' <param name="Password">上项为假时,提供密码</param>
Public Sub ConnDataBase(IPAddress As String, DataBaseName As String, Conn As Boolean, User As String, Password As String)
Dim cnStr As String = $"Data Source={IPAddress};Initial Catalog={DataBaseName};Integrated Security={Conn};User ID={User};Password={Password};"
Try
_sqlConn = New SqlConnection(cnStr)
_sqlConn.Open()
_isConn = True
Catch ex As SqlException
_isConn = False
MsgBox($"Error SqlConn! {ex.Message}")
Catch ex As Exception
_isConn = False
MsgBox($"Error Message! {ex.Message}")
End Try
End Sub
#End Region
#Region "多语种信息"
''' <summary>
''' 获取多语种版本信息
''' </summary>
''' <returns></returns>
Public Function GetCloudVersionInfo() As DataTable
Dim dtUser As DataTable = New DataTable()
Dim queryStr As String = $"Select a.Language, a.Version from TBL_Multilingual a
Left Join TBL_MultilingualApps b on a.ApplicationID = b.ID
where b.Application = '{Application.ProductName}'"
_sqlDateAdap = New SqlDataAdapter(queryStr, _sqlConn)
'Console.WriteLine($"查询语种版本:{queryStr}")
_sqlDateAdap.Fill(dtUser)
Return dtUser
End Function
''' <summary>
''' 获取多语种版本信息
''' </summary>
''' <returns></returns>
Public Function GetCloudDataInfo(languageName As String) As DataTable
Dim dtUser As DataTable = New DataTable()
Dim queryStr As String = $"Select a.{languageName} from TBL_MultilingualData a
left join TBL_Multilingual b on a.ApplicationID = b.ApplicationID
left join TBL_MultilingualApps c on b.ApplicationID = c.ID
where c.Application = '{Application.ProductName}' And b.Language = '{languageName}'"
_sqlDateAdap = New SqlDataAdapter(queryStr, _sqlConn)
Console.WriteLine($"查询语种数据:{queryStr}")
_sqlDateAdap.Fill(dtUser)
Return dtUser
End Function
#End Region
#Region "本地_数据源"
''' <summary>
''' SqlServer查询
''' </summary>
''' <param name="TableName">需要查询的数据表名</param>
''' <param name="grd">要显示的表格控件</param>
''' <param name="Conditions">需要查询的条件,默认为空</param>
Public Sub Query(TableName As String, grd As FlexCell.Grid, Optional Conditions As String = "")
_sqlDateAdap = New SqlDataAdapter($"select * from {TableName} {Conditions}", _sqlConn)
_sqlDataSet = New DataSet()
_sqlDateAdap.Fill(_sqlDataSet, $"{TableName}")
Console.WriteLine($"查询语句select * from {TableName} {Conditions}")
grd.DataSource = _sqlDataSet.Tables($"{TableName}")
grd.DisplayRowNumber = True
End Sub
''' <summary>
''' SqlServer查询
''' </summary>
''' <param name="queryCol">要查询的列</param>
''' <param name="TableName">需要查询的数据表名</param>
''' <param name="grd">要显示的表格控件</param>
''' <param name="Conditions">需要查询的条件,默认为空</param>
Public Sub Query(queryCol As String, TableName As String, grd As FlexCell.Grid, Optional Conditions As String = "")
_sqlDateAdap = New SqlDataAdapter($"select {queryCol} from {TableName} {Conditions}", _sqlConn)
_sqlDataSet = New DataSet()
Console.WriteLine($"查询语句select * from {TableName} {Conditions}")
_sqlDateAdap.Fill(_sqlDataSet, $"{TableName}")
grd.DataSource = _sqlDataSet.Tables($"{TableName}")
grd.DisplayRowNumber = True
End Sub
''' <summary>
''' SqlServer查询
''' </summary>
''' <param name="TableName">需要查询的数据表名</param>
''' <param name="Conditions">需要查询的条件,默认为空</param>
Public Function Query(TableName As String, Optional Conditions As String = "") As DataTable
_sqlDateAdap = New SqlDataAdapter($"select * from {TableName} {Conditions}", _sqlConn)
Dim sqlDataSet As DataTable = New DataTable()
Console.WriteLine($"查询语句select * from {TableName} {Conditions}")
_sqlDateAdap.Fill(sqlDataSet)
Return sqlDataSet
End Function
''' <summary>
''' SqlServer查询
''' </summary>
''' <param name="queryCol">需要查询的列</param>
''' <param name="TableName">需要查询的数据表名</param>
''' <param name="Conditions">需要查询的条件,默认为空</param>
''' <returns></returns>
Public Function Query(queryCol As String, TableName As String, Optional Conditions As String = "") As DataTable
_sqlDateAdap = New SqlDataAdapter($"select {queryCol} from {TableName} {Conditions}", _sqlConn)
Dim sqlDataSet As DataTable = New DataTable()
Console.WriteLine($"查询语句select {queryCol} from {TableName} {Conditions}")
_sqlDateAdap.Fill(sqlDataSet)
Return sqlDataSet
End Function
''' <summary>
''' SqlServer添加
''' </summary>
''' <param name="TableName">需要添加的数据表名</param>
''' <param name="grd">要显示的表格控件</param>
''' <param name="Conditions">需要添加的数据条件,(字段1字段2字段3) values(字段1值字段2值字段3值)</param>
''' (条件中若是包含中文则用N'{值}'表示)
Public Sub Add(TableName As String, grd As FlexCell.Grid, Optional Conditions As String = "")
Dim insert As String = $"insert into {TableName} {Conditions}"
_sqlDateAdap = New SqlDataAdapter(insert, _sqlConn)
_sqlDateAdap.Fill(_sqlDataSet, $"{TableName}")
Console.WriteLine($"插入语句:{insert}")
grd.DataSource = _sqlDataSet.Tables($"{TableName}")
grd.DisplayRowNumber = True
End Sub
''' <summary>
''' SqlServer添加
''' </summary>
''' <param name="TableName">需要添加的数据表名</param>
''' <param name="Conditions">需要添加的数据条件,(字段1字段2字段3) values(字段1值字段2值字段3值)</param>
''' (条件中若是包含中文则用N'{值}'表示)
Public Sub Add(TableName As String, Optional Conditions As String = "")
Dim insert As String = $"insert into {TableName} {Conditions}"
_sqlDateAdap = New SqlDataAdapter(insert, _sqlConn)
Dim sqlDataSet As DataTable = New DataTable()
Console.WriteLine($"插入语句:{insert}")
_sqlDateAdap.Fill(sqlDataSet)
End Sub
''' <summary>
''' SqlServer修改
''' </summary>
''' <param name="TableName">需要修改的数据表名</param>
''' <param name="grd">要显示的表格控件</param>
''' <param name="Conditions">需要修改的数据条件Set 字段1 = 修改后的值 Where 字段1 = 修改前的值</param>
''' (条件中若是包含中文则用N'{值}'表示)
Public Sub Modify(TableName As String, grd As FlexCell.Grid, Optional Conditions As String = "")
Dim modify As String = $"update {TableName} {Conditions}"
_sqlDateAdap = New SqlDataAdapter(modify, _sqlConn)
Console.WriteLine($"修改语句:{modify}")
_sqlDateAdap.Fill(_sqlDataSet, $"{TableName}")
grd.DataSource = _sqlDataSet.Tables($"{TableName}")
grd.DisplayRowNumber = True
End Sub
''' <summary>
''' SqlServer删除
''' </summary>
''' <param name="TableName">需要删除的数据表名</param>
''' <param name="grd">要显示的表格控件</param>
''' <param name="Conditions">需要删除的数据条件Where 字段1 = 字段1值 And 字段2 = 字段2值 And 字段3...</param>
''' (条件中若是包含中文则用N'{值}'表示)
Public Sub Delete(TableName As String, grd As FlexCell.Grid, Optional Conditions As String = "")
Dim delete As String = $"delete From {TableName} {Conditions}"
_sqlDateAdap = New SqlDataAdapter(delete, _sqlConn)
Console.WriteLine($"删除语句:{delete}")
_sqlDateAdap.Fill(_sqlDataSet, $"{TableName}")
grd.DataSource = _sqlDataSet.Tables($"{TableName}")
grd.DisplayRowNumber = True
End Sub
#End Region
#Region "登录_数据源"
''' <summary>
''' 获取匹配的用户信息
''' </summary>
''' <param name="userAccount">用户账号</param>
''' <param name="userPassword">用户密码</param>
''' <returns></returns>
Public Function GetUserInfo(userAccount As String, userPassword As String) As DataTable
Dim userInfo As String = UserInfoListDAL.UserInfo
Dim userAuthoes As String = UserInfoListDAL.UserAuthoes
Dim appAutho As String = UserInfoListDAL.AppAutho
Dim authority As String = UserInfoListDAL.Authority
Dim dtUser As DataTable = New DataTable()
Dim queryCol As String = $"Uid, Pwd"
Dim queryStr As String = $"Select a.Id, a.Uid, a.Pwd, a.CreateTime, b.AuthorityId, c.AuthorityName, b.HotelId, d.Name, d.Code, d.GroupId, e.Name from {userInfo} a
left join {userAuthoes} b on a.Id = b.UserId
left join {authority} c on b.AuthorityId = c.Id
left join dbo.Hotels d on b.HotelId = d.Id
left join dbo.HotelGroups e on d.GroupId = e.Id
left join dbo.AppAutho aa on c.id = aa.AuthorityId
where a.Uid = '{userAccount}' and b.AuthotypeId <> '1' and aa.AppId = '1'"
_sqlDateAdap = New SqlDataAdapter(queryStr, _sqlConn)
'_sqlDateAdap = New SqlDataAdapter($"select {queryCol} from {userInfo} Where Uid = '{userAccount}'", _sqlConn)
Console.WriteLine($"查询语句:{queryStr}")
_sqlDateAdap.Fill(dtUser)
Return dtUser
End Function
#End Region
#Region "后台_数据源"
'''' <summary>
'''' 获取后台数据源的房型
'''' </summary>
'''' <param name="projectNumber">项目编号</param>
'''' <returns></returns>
'Public Function GetProjectRoomTypeInfo(projectNumber As String) As DataTable
' Dim dtUser As DataTable = New DataTable()
' Dim queryStr As String = $"select a.ID, a.Code, a.Name, b.HostName, b.ID from tb_Sys_Hotels a
' left join dbo.tb_RoomType b
' on b.HotelID = a.ID
' where a.Code = '{projectNumber}'"
' _sqlDateAdap = New SqlDataAdapter(queryStr, _sqlConn)
' Console.WriteLine($"查询语句:{queryStr}")
' _sqlDateAdap.Fill(dtUser)
' Return dtUser
'End Function
'''' <summary>
'''' 获取后台数据源的房号
'''' </summary>
'''' <param name="projectNumber">项目编号</param>
'''' <param name="roomType">房型</param>
'''' <returns></returns>
'Public Function GetProjectRoomNumberInfo(projectNumber As String, roomType As String) As DataTable
' Dim dtUser As DataTable = New DataTable()
' Dim queryStr As String
' If roomType = $"全部" Then
' queryStr = $"select a.HotelID, b.Code, b.Name, c.HostName, a.RoomNumber, a.ID, c.ID from tb_Hosts a
' left join tb_Sys_Hotels b on b.ID = a.HotelID
' left join tb_RoomType c on c.ID = a.RoomTypeID
' where b.code = '{projectNumber}' and a.IsSyncRoomNumber = '1'
' order by a.RoomNumber asc"
' Else
' queryStr = $"select a.HotelID, b.Code, b.Name, c.HostName, a.RoomNumber, a.ID, c.ID from tb_Hosts a
' left join tb_Sys_Hotels b on b.ID = a.HotelID
' left join tb_RoomType c on c.ID = a.RoomTypeID
' where b.code = '{projectNumber}' and HostName = '{roomType}' and a.IsSyncRoomNumber = '1'
' order by a.RoomNumber asc"
' End If
' _sqlDateAdap = New SqlDataAdapter(queryStr, _sqlConn)
' Console.WriteLine($"查询语句:{queryStr}")
' _sqlDateAdap.Fill(dtUser)
' Return dtUser
'End Function
'''' <summary>
'''' 获取后台数据源的房型
'''' 已知项目编号和房号
'''' </summary>
'''' <param name="projectNumber">项目编号</param>
'''' <param name="roomNumber">房号</param>
'''' <returns></returns>
'Public Function GetProjectRoomNumberTypeInfo(projectNumber As String, roomNumber As String) As DataTable
' Dim dtUser As DataTable = New DataTable()
' Dim queryStr As String = $"select a.HotelID, b.Code, b.Name, c.HostName, a.RoomNumber, a.RoomTypeID from tb_Hosts a
' left join tb_Sys_Hotels b on b.ID = a.HotelID
' left join tb_RoomType c on c.ID = a.RoomTypeID
' where b.code = '{projectNumber}' and a.RoomNumber = '{roomNumber}' and a.IsSyncRoomNumber = '1'
' order by a.RoomNumber asc"
' _sqlDateAdap = New SqlDataAdapter(queryStr, _sqlConn)
' Console.WriteLine($"房号查询语句:{queryStr}")
' _sqlDateAdap.Fill(dtUser)
' Return dtUser
'End Function
'''' <summary>
'''' 获取后台数据源的房号
'''' </summary>
'''' <param name="projectNumber">项目编号</param>
'''' <returns></returns>
'Public Function GetMatchingInfo(projectNumber As String) As DataTable
' Dim dtUser As DataTable = New DataTable()
' Dim queryStr As String = $"select a.HotelID, b.Code, b.Name, a.ID, a.RoomNumber, c.ID, c.HostName, a.MAC from tb_Hosts a
' left join tb_Sys_Hotels b on b.ID = a.HotelID
' left join tb_RoomType c on c.ID = a.RoomTypeID
' where b.code = '{projectNumber}' and a.IsSyncRoomNumber = '1'
' order by a.RoomNumber asc"
' _sqlDateAdap = New SqlDataAdapter(queryStr, _sqlConn)
' Console.WriteLine($"查询语句:{queryStr}")
' _sqlDateAdap.Fill(dtUser)
' Return dtUser
'End Function
'''' <summary>
'''' 获取后台数据源的批量数据
'''' 已知项目编码
'''' </summary>
'''' <param name="projectNumber">项目编号</param>
'''' <returns></returns>
'Public Function GetBatchDataInfo(projectNumber As String) As DataTable
' Dim dtUser As DataTable = New DataTable()
' Dim queryStr As String = $"select a.RoomNumber, a.MAC, a.IP, a.Remark, a.ID, a.RoomTypeID, a.Port, a.Gateway, a.SubnetMask, a.DNS, a.LockStatus, a.AuthorizedHours from tb_Hosts a
' left join tb_Sys_Hotels b on a.HotelID = b.ID
' where b.Code = '{projectNumber}';"
' _sqlDateAdap = New SqlDataAdapter(queryStr, _sqlConn)
' Console.WriteLine($"批量数据查询结果:{queryStr}")
' _sqlDateAdap.Fill(dtUser)
' Return dtUser
'End Function
#End Region
#Region "更新绑定信息"
'''' <summary>
'''' 更新绑定信息
'''' </summary>
'''' <param name="projectNumber">项目编号</param>
'''' <param name="roomNumber">房号</param>
'''' <param name="mac">MAC</param>
'''' <returns></returns>
'Public Function UpdateMACInfo(projectNumber As String, roomNumber As String, mac As String) As Boolean
' Dim count As Integer = 0
' Dim dtUser As DataTable = New DataTable()
' Dim updateStr As String = $"update dbo.tb_Hosts set MAC = '{mac}' where RoomNumber='{roomNumber}' and HotelID=(select ID from tb_Sys_Hotels where Code='{projectNumber}');"
' Console.WriteLine($"更新语句:{updateStr}")
' _sqlDateAdap = New SqlDataAdapter(updateStr, _sqlConn)
' _sqlDateAdap.Fill(dtUser)
' Try
' count = _sqlDateAdap.Update(dtUser)
' Catch ex As Exception
' Return False
' End Try
' Return True
'End Function
#End Region
#Region "关闭连接"
''' <summary>
''' 关闭连接
''' </summary>
Public Sub ConnClose()
If _sqlConn IsNot Nothing AndAlso _sqlConn.State <> ConnectionState.Closed Then
_sqlConn.Close()
End If
End Sub
#End Region
End Class

View File

@@ -0,0 +1,55 @@
Public Class UserInfoListDAL
Enum ColNamesEnum
''' <summary>
''' 用户Uid唯一索引_用户名
''' </summary>
UserID
''' <summary>
''' 用户密码
''' </summary>
Password
''' <summary>
''' 创建日期
''' </summary>
CreateTime
''' <summary>
''' 是否有效
''' </summary>
IsValid
End Enum
''' <summary>
''' C系列配置工具权限所属域ID
''' </summary>
Public Shared Property _appAuthorityId As Integer = 1 'C系列配置工具
''' <summary>
''' 用户表名称
''' </summary>
''' <returns></returns>
Public Shared Property UserInfo() As String = "UserInfo"
''' <summary>
''' 用户表-权限关联表名称
''' </summary>
''' <returns></returns>
Public Shared Property UserAuthoes() As String = "UserAuthoes"
''' <summary>
''' 域-权限关联表名称
''' </summary>
''' <returns></returns>
Public Shared Property AppAutho() As String = "AppAutho"
''' <summary>
''' 权限表名称
''' </summary>
''' <returns></returns>
Public Shared Property Authority() As String = "Authority"
End Class

View File

@@ -0,0 +1,89 @@
Imports System.IO
Imports System.Net
Imports System.Text
Imports Newtonsoft.Json
Public Class RoomControlSystemAPI
Public Shared Function API_AllocationBarCode(roomNumber As String, hotelID As String) As APIRoomNode
Dim jsonString As String = String.Empty
Dim dic As New Dictionary(Of String String
dic.Add("roomNumber", roomNumber)
dic.Add("key", "blw_ws@2015")
dic.Add("hotelID", hotelID)
Try
jsonString = PostData("https://www.boonlive-rcu.com/api/GetHostByRoomNumber", $"jsonData={JsonConvert.SerializeObject(dic)}")
Catch ex As Exception
MsgBox($"网络API调用错误请联系管理员。")
Return Nothing
End Try
'Console.WriteLine(jsonString)
If jsonString = Nothing Then
Return Nothing
End If
Dim login As APIRoomNode = Nothing
Try
login = JsonConvert.DeserializeObject(Of APIRoomNode)(jsonString)
If login.IsSuccess.ToLower.Equals("true") Then
Return login
Else
Return Nothing
End If
Catch ex As Exception
'MsgBox($"Json数据转换错误请联系管理员。详情 Json data to AllocationAPI error")
Return Nothing
End Try
End Function
Public Shared Function URLEncode(strInput As String) As String
Dim strOutput As String
Dim intAscii As Integer
Dim i As Integer
For i = 1 To Len(strInput)
intAscii = Asc(Mid(strInput, i, 1))
If ((intAscii < 58) And (intAscii > 47)) Or
((intAscii < 91) And (intAscii > 64)) Or
((intAscii < 123) And (intAscii > 96)) Then
strOutput = strOutput & Chr(intAscii)
Else
strOutput = strOutput &
IIf(intAscii < 16, "%0", "%") &
Trim$(Hex$(intAscii))
End If
Next
URLEncode = strOutput
End Function
Public Shared Function PostData(ByVal url As String, ByVal data As String) As String
ServicePointManager.Expect100Continue = False
Dim request As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
'//Post请求方式
request.Method = "POST"
'内容类型
request.ContentType = "application/x-www-form-urlencoded"
'将URL编码后的字符串转化为字节
Dim encoding As New UTF8Encoding()
Dim bys As Byte() = encoding.GetBytes(data)
'设置请求的 ContentLength
request.ContentLength = bys.Length
'获得请 求流
Dim newStream As Stream = request.GetRequestStream()
newStream.Write(bys, 0, bys.Length)
newStream.Close()
'获得响应流
Dim sr As StreamReader = New StreamReader(request.GetResponse().GetResponseStream)
Return sr.ReadToEnd
End Function
End Class
Public Class APIRoomNode
Public IsSuccess As String
Public Result As List(Of Dictionary(Of String, String))
End Class

View File

@@ -0,0 +1,15 @@

Namespace Database.Base
''' <summary>
''' Contains the schema of a single DB column.
''' </summary>
Public Class ColumnSchema
Public ColumnName As String
Public ColumnType As String
Public Length As Integer
Public IsNullable As Boolean
Public DefaultValue As String
Public IsIdentity As Boolean
Public IsCaseSensitivity As Boolean? = Nothing
End Class
End NameSpace

View File

@@ -0,0 +1,297 @@
Imports System.Text
Namespace Database.Base
Public MustInherit Class CommandHelpers
Public Overridable Function Search(param As SearchParams) As String
Dim searchString As New StringBuilder
'基础查询
searchString.Append("Select")
searchString.Append(" ")
searchString.Append($"{String.Join(",", param.SearchColNames)}")
searchString.Append(" ")
searchString.Append("From")
searchString.Append(" ")
searchString.Append($"`{param.TableName}`")
'筛选条件
If param.SearchCondition IsNot Nothing Then
If param.SearchCondition.Count > 0 Then
searchString.Append(" ")
searchString.Append("Where")
For i As Integer = 0 To param.SearchCondition.Count - 1
If i > 0 Then
searchString.Append(" ")
searchString.Append(param.SearchCondition(i).LogicPrevious.ToString())
End If
searchString.Append(param.SearchCondition(i).ToString())
Next
End If
End If
'排序与排序方式
If param.OrderType <> SearchParams.OrderTypeEnum.None Then
searchString.Append($" Order By {param.OrderColName} {param.OrderType}")
End If
'返回结果行数
If param.Limit > -1 Then
searchString.Append($" Limit {param.Limit}")
End If
searchString.Append(";")
Return searchString.ToString()
End Function
Public Overridable Function SearchAll(tableName As String) As String
Return $"Select * FROM `{tableName}`;"
End Function
Public Overridable Function SearchAll(tableName As String, condition As String) As String
Return $"Select * FROM `{tableName}` WHERE {condition};"
End Function
Public Overridable Function Search(columnName As List(Of String), tableName As String) As String
Dim colNameString As New StringBuilder
For i As Integer = 0 To columnName.Count - 1
If i = 0 Then
colNameString.Append($"`{columnName(i)}`")
Else
colNameString.Append($",`{columnName(i)}`")
End If
Next
Return $"Select {colNameString} FROM `{tableName}`;"
End Function
Public Overridable Function Search(columnName As String, tableName As String) As String
Return $"Select {columnName} FROM `{tableName}`;"
End Function
Public Overridable Function Search(columnName As String, tableName As String, condition As String) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition};"
End Function
Public Overridable Function Search(columnName As String, tableName As String, condition As String, limit As Integer) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Limit {limit};"
End Function
Public Overridable Function SearchDistinct(columnName As String, tableName As String) As String
Return $"Select Distinct {columnName} FROM `{tableName}`;"
End Function
Public Overridable Function SearchDistinct(columnName As String, tableName As String, condition As String) As String
Return $"Select Distinct {columnName} FROM `{tableName}` WHERE {condition};"
End Function
Public Overridable Function SearchDescOrder(columnName As String, tableName As String, orderCol As String) As String
Return $"Select {columnName} FROM `{tableName}` Order By {orderCol} Desc;"
End Function
Public Overridable Function SearchDescOrder(columnName As String, tableName As String, orderCol As String, limit As Integer) As String
Return $"Select {columnName} FROM `{tableName}` Order By {orderCol} Desc Limit {limit};"
End Function
Public Overridable Function SearchDescOrder(columnName As String, ByVal tableName As String, ByVal condition As String, ByVal orderCol As String) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Order By `{orderCol}` Desc;"
End Function
Public Overridable Function SearchDescOrder(columnName As String, ByVal tableName As String, ByVal condition As String, ByVal orderCol As String, limit As Integer) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Order By `{orderCol}` Desc Limit {limit};"
End Function
Public Overridable Function SearchAscOrder(ByVal columnName As String, ByVal tableName As String, ByVal orderCol As String) As String
Return $"Select {columnName} FROM `{tableName}` Order By {orderCol} Asc;"
End Function
Public Overridable Function SearchAscOrder(ByVal columnName As String, ByVal tableName As String, ByVal condition As String, ByVal orderCol As String) As String
Return $"Select {columnName} FROM `{tableName}` WHERE {condition} Order By {orderCol} Asc;"
End Function
Public Overridable Function SearchNullTable(tableName As String) As String
Return $"Select * FROM `{tableName}` Where Limit 0;"
End Function
Public Overridable Function Insert(ByVal tableName As String, ByVal values As String) As String
Return $"Insert into `{tableName}` Values ( {values} );"
End Function
Public Overridable Function Insert(ByVal tableName As String, ByVal colNames As String, ByVal values As String) As String
Return $"Insert into `{tableName}` ({colNames}) Values ( {values} );"
End Function
Public Overridable Function Insert(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
Dim colNames As New StringBuilder
Dim values As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If colNames.Length = 0 Then
colNames.Append($"`{keyValuePair.Key}`")
values.Append($"'{keyValuePair.Value}'")
Else
colNames.Append($",`{keyValuePair.Key}`")
values.Append($",'{keyValuePair.Value}'")
End If
Next
Return Insert(tableName, colNames.ToString(), values.ToString())
End Function
Public Overridable Function InsertByParameters(tableName As String, dicNameValues As Dictionary(Of String, String)) As String
Dim colNames As New StringBuilder
Dim values As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If colNames.Length = 0 Then
colNames.Append($"`{keyValuePair.Key}`")
values.Append($"{keyValuePair.Value}")
Else
colNames.Append($",`{keyValuePair.Key}`")
values.Append($",{keyValuePair.Value}")
End If
Next
Return Insert(tableName, colNames.ToString(), values.ToString())
End Function
Public Overridable Function AddCol(ByVal tableName As String, ByVal colName As String, ByVal colType As String, Optional isNull As Boolean = True) As String
Return $"Alter Table `{tableName}` Add `{colName}` {colType} {IIf(isNull, "Default Null", "Not Null")};"
End Function
Public Overridable Function AddCol(ByVal tableName As String, colParam As DatabaseData) As String
Dim sb As New StringBuilder
sb.Append($"Alter Table `{tableName}` ")
sb.Append("Add ")
sb.Append(colParam.ToAddColString())
Return sb.ToString()
End Function
Public Overridable Function AddCols(tableName As String, colList As List(Of DatabaseData)) As String
Dim sb As New StringBuilder
sb.Append($"Alter Table `{tableName}` ")
sb.Append("Add ")
sb.Append("( ")
sb.Append(colList(0).ToAddColString())
For i As Integer = 1 To colList.Count - 1
sb.Append($",{colList(i).ToAddColString()}")
Next
sb.Append(");")
Return sb.ToString()
End Function
Public Overridable Function Update(ByVal tableName As String, ByVal destStr As String, ByVal condition As String) As String
Return $"Update `{tableName}` Set {destStr} Where {condition};"
End Function
Public Overridable Function Update(ByVal tableName As String, dicNameValues As Dictionary(Of String, String), ByVal condition As String) As String
Dim destStr As New StringBuilder
For Each keyValuePair As KeyValuePair(Of String, String) In dicNameValues
If destStr.Length = 0 Then
destStr.Append($"`{keyValuePair.Key}` = '{keyValuePair.Value}'")
Else
destStr.Append($",`{keyValuePair.Key}` = '{keyValuePair.Value}'")
End If
Next
Return Update(tableName, destStr.ToString(), condition)
End Function
Public Overridable Function Update(ByVal tableName As String, names() As String, values() As String, condition As String) As String
Dim destStr As New StringBuilder
If names.Length <> values.Length Then
Throw New Exception("DBHelpers_Update:names.Length <> values.Length")
End If
For i As Integer = 0 To names.Length - 1
If i = 0 Then
destStr.Append($"{names(i)} = '{values(i)}'")
Else
destStr.Append($",{names(i)} = '{values(i)}'")
End If
Next
Return Update(tableName, destStr.ToString(), condition)
End Function
Public Overridable Function DeleteRows(ByVal tableName As String, ByVal condition As String) As String
Return $"Delete From `{tableName}` Where {condition};"
End Function
''' <summary>
''' 清空数据表
''' </summary>
''' <param name="tableName">数据表名</param>
''' <returns></returns>
Public Overridable Function DeleteTable(ByVal tableName As String) As String
Return $"Delete From `{tableName}`;"
End Function
Public Overridable Function DropCol(ByVal tableName As String, ByVal colName As String) As String
Return $"Alter Table `{tableName}` Drop Column `{colName}`;"
End Function
''' <summary>
''' 删除数据表
''' </summary>
''' <param name="tableName">数据表名</param>
''' <returns></returns>
Public Overridable Function DropTable(ByVal tableName As String) As String
Return $"Drop Table `{tableName}`;"
End Function
Public Overridable Function CreateTable(ByVal tableName As String, ByVal createStr As String) As String
Return $"Create Table `{tableName}` ( {createStr} );"
End Function
Public Overridable Function CreateTableWhenNotExists(tableName As String, createStr As String) As String
Return $"Create Table if not exists `{tableName}` ( {createStr} );"
End Function
Public Overridable Function CreateLikeTable(tableName As String, baseTableName As String) As String
Return $"create table `{tableName}` like `{baseTableName}`;"
End Function
Public Overridable Function CreateLikeTableNotExists(tableName As String, baseTableName As String) As String
Return $"create table if not exists `{tableName}` like `{baseTableName}`;"
End Function
''' <summary>
''' 创建表,同时复制基础表数据(不包含原表索引与主键)
''' 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="baseTableName">基础表名</param>
''' <returns></returns>
Public Overridable Function CreateCopyTable(tableName As String, baseTableName As String) As String
Return $"create table `{tableName}` as select * from `{baseTableName}`;"
End Function
''' <summary>
''' 不存在表时即创建表,同时复制基础表数据(不包含原表索引与主键)
''' 若想复制表结构加数据,则先复制表结构创建表,再拷贝数据
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="baseTableName">基础表名</param>
''' <returns></returns>
Public Overridable Function CreateCopyTableNotExists(tableName As String, baseTableName As String) As String
Return $"create table if not exists `{tableName}` as select * from `{baseTableName}`;"
End Function
''' <summary>
''' 复制基础表数据到新表中
''' </summary>
''' <param name="tableName">表名</param>
''' <param name="baseTableName">基础表名</param>
''' <returns></returns>
Public Overridable Function InsertCopyTable(tableName As String, baseTableName As String) As String
Return $"insert into `{tableName}` select * from `{baseTableName}`;"
End Function
End Class
End Namespace

View File

@@ -0,0 +1,94 @@
Imports System.Text
Namespace Database.Base
Public Class DatabaseData
Enum TypeEnum
[Bit]
[Char]
[Date]
[DateTime]
[Double]
[Enum]
[Float]
[Int]
[IntUnsigned]
[Json]
[Text]
[Time]
Varchar
[Year]
End Enum
''' <summary>
''' 列名
''' </summary>
''' <returns></returns>
Public Property ColumnName() As String
''' <summary>
''' 当前值
''' </summary>
''' <returns></returns>
Public Property Value() As String
''' <summary>
''' 默认值
''' </summary>
''' <returns></returns>
Public Property DefaultValue() As String
''' <summary>
''' 数据类型
''' </summary>
''' <returns></returns>
Public Property DataType() As TypeEnum
''' <summary>
''' 数据类型长度
''' </summary>
''' <returns></returns>
Public Property DataTypeLength() As Integer
''' <summary>
''' 是否允许为空
''' </summary>
''' <returns></returns>
Public Property IsNull() As Boolean = True
''' <summary>
''' 是否自动增长
''' </summary>
''' <returns></returns>
Public Property IsAutoIncrement() As Boolean
''' <summary>
''' 是否为主键
''' </summary>
''' <returns></returns>
Public Property IsPrimaryKey() As Boolean
Public Function ToAddColString() As String
Dim sb As New StringBuilder
sb.Append($"`{ColumnName}`")
Select Case DataType
Case TypeEnum.Char, TypeEnum.Varchar
sb.Append($" {DataType}({DataTypeLength}) ")
Case TypeEnum.Int
sb.Append($" {DataType}")
If IsAutoIncrement Then sb.Append($" AUTO_INCREMENT")
Case Else
sb.Append($" {DataType}")
End Select
sb.Append(IIf(IsNull, " Default Null", " Not Null"))
If IsPrimaryKey Then
sb.Append($" PRIMARY KEY")
End If
Return sb.ToString()
End Function
End Class
End Namespace

View File

@@ -0,0 +1,12 @@
Imports System.Collections.Generic
Namespace Database.Base
''' <summary>
''' Contains the entire database schema
''' </summary>
Public Class DatabaseSchema
Public Tables As List(Of TableSchema) = New List(Of TableSchema)()
Public Views As List(Of ViewSchema) = New List(Of ViewSchema)()
End Class
End NameSpace

Some files were not shown because too many files have changed in this diff Show More