第一次提交至Git

This commit is contained in:
2024-03-11 16:32:52 +08:00
commit 3f6c4d62b9
2865 changed files with 2172317 additions and 0 deletions

View File

@@ -0,0 +1,446 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class ZQ_Mars_T2_FrmStationPlan
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.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ZQ_Mars_T2_FrmStationPlan))
Me.MsiCopyNode = New System.Windows.Forms.ToolStripMenuItem()
Me.MsiNodePaste = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator5 = New System.Windows.Forms.ToolStripSeparator()
Me.MsiUndo = New System.Windows.Forms.ToolStripMenuItem()
Me.MsiRedo = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator6 = New System.Windows.Forms.ToolStripSeparator()
Me.MsiSaveNodeFile = New System.Windows.Forms.ToolStripMenuItem()
Me.MsiLoadNodeFile = New System.Windows.Forms.ToolStripMenuItem()
Me.TsmiDebugStart = New System.Windows.Forms.ToolStripMenuItem()
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
Me.TsBtnOpen = New System.Windows.Forms.ToolStripButton()
Me.TsBtnSave = New System.Windows.Forms.ToolStripButton()
Me.ToolStripSeparator4 = New System.Windows.Forms.ToolStripSeparator()
Me.TsBtnLoad = New System.Windows.Forms.ToolStripButton()
Me.TsBtnSaveAs = New System.Windows.Forms.ToolStripButton()
Me.ToolStripSeparator3 = New System.Windows.Forms.ToolStripSeparator()
Me.MsiCutNode = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStrip1 = New System.Windows.Forms.ToolStrip()
Me.CmsPlanGrid = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.ToolStripSeparator7 = New System.Windows.Forms.ToolStripSeparator()
Me.TsmiDebugEnd = New System.Windows.Forms.ToolStripMenuItem()
Me.TsmiDebugStep = New System.Windows.Forms.ToolStripMenuItem()
Me.TsmiDebugContinue = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator8 = New System.Windows.Forms.ToolStripSeparator()
Me.TsmiDebugSetup = New System.Windows.Forms.ToolStripMenuItem()
Me.TsmiDebugMain = New System.Windows.Forms.ToolStripMenuItem()
Me.TsmiDebugPass = New System.Windows.Forms.ToolStripMenuItem()
Me.TsmiDebugFail = New System.Windows.Forms.ToolStripMenuItem()
Me.TsmiDebugCleanup = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator9 = New System.Windows.Forms.ToolStripSeparator()
Me.TsmiDebugNode = New System.Windows.Forms.ToolStripMenuItem()
Me.TsmiDebugNodeBegin = New System.Windows.Forms.ToolStripMenuItem()
Me.StuMain = New System.Windows.Forms.StatusStrip()
Me.DlgOpenFile = New System.Windows.Forms.OpenFileDialog()
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
Me.LblDesc = New System.Windows.Forms.Label()
Me.GrdStationPlan = New FlexCell.Grid()
Me.Grid1 = New FlexCell.Grid()
Me.ToolStrip1.SuspendLayout()
Me.CmsPlanGrid.SuspendLayout()
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer1.Panel1.SuspendLayout()
Me.SplitContainer1.Panel2.SuspendLayout()
Me.SplitContainer1.SuspendLayout()
Me.GroupBox2.SuspendLayout()
Me.SuspendLayout()
'
'MsiCopyNode
'
Me.MsiCopyNode.Enabled = False
Me.MsiCopyNode.Name = "MsiCopyNode"
Me.MsiCopyNode.Size = New System.Drawing.Size(192, 22)
Me.MsiCopyNode.Text = "复制"
'
'MsiNodePaste
'
Me.MsiNodePaste.Enabled = False
Me.MsiNodePaste.Name = "MsiNodePaste"
Me.MsiNodePaste.Size = New System.Drawing.Size(192, 22)
Me.MsiNodePaste.Text = "粘贴"
'
'ToolStripSeparator5
'
Me.ToolStripSeparator5.Name = "ToolStripSeparator5"
Me.ToolStripSeparator5.Size = New System.Drawing.Size(189, 6)
'
'MsiUndo
'
Me.MsiUndo.Enabled = False
Me.MsiUndo.Name = "MsiUndo"
Me.MsiUndo.Size = New System.Drawing.Size(192, 22)
Me.MsiUndo.Text = "撤销"
'
'MsiRedo
'
Me.MsiRedo.Enabled = False
Me.MsiRedo.Name = "MsiRedo"
Me.MsiRedo.Size = New System.Drawing.Size(192, 22)
Me.MsiRedo.Text = "重做"
'
'ToolStripSeparator6
'
Me.ToolStripSeparator6.Name = "ToolStripSeparator6"
Me.ToolStripSeparator6.Size = New System.Drawing.Size(189, 6)
'
'MsiSaveNodeFile
'
Me.MsiSaveNodeFile.Name = "MsiSaveNodeFile"
Me.MsiSaveNodeFile.Size = New System.Drawing.Size(192, 22)
Me.MsiSaveNodeFile.Text = "另存为节点文件"
'
'MsiLoadNodeFile
'
Me.MsiLoadNodeFile.Name = "MsiLoadNodeFile"
Me.MsiLoadNodeFile.Size = New System.Drawing.Size(192, 22)
Me.MsiLoadNodeFile.Text = "加载节点文件"
'
'TsmiDebugStart
'
Me.TsmiDebugStart.Name = "TsmiDebugStart"
Me.TsmiDebugStart.ShortcutKeys = System.Windows.Forms.Keys.F1
Me.TsmiDebugStart.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugStart.Text = "开始执行"
'
'GroupBox1
'
Me.GroupBox1.Dock = System.Windows.Forms.DockStyle.Fill
Me.GroupBox1.Font = New System.Drawing.Font("微软雅黑", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.GroupBox1.Location = New System.Drawing.Point(0, 0)
Me.GroupBox1.Name = "GroupBox1"
Me.GroupBox1.Size = New System.Drawing.Size(536, 561)
Me.GroupBox1.TabIndex = 0
Me.GroupBox1.TabStop = False
Me.GroupBox1.Text = "常规预览"
'
'TsBtnOpen
'
Me.TsBtnOpen.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.TsBtnOpen.Image = CType(resources.GetObject("TsBtnOpen.Image"), System.Drawing.Image)
Me.TsBtnOpen.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TsBtnOpen.Name = "TsBtnOpen"
Me.TsBtnOpen.Size = New System.Drawing.Size(35, 33)
Me.TsBtnOpen.Text = "打开"
Me.TsBtnOpen.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
'
'TsBtnSave
'
Me.TsBtnSave.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.TsBtnSave.Image = CType(resources.GetObject("TsBtnSave.Image"), System.Drawing.Image)
Me.TsBtnSave.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TsBtnSave.Name = "TsBtnSave"
Me.TsBtnSave.Size = New System.Drawing.Size(35, 33)
Me.TsBtnSave.Text = "保存"
Me.TsBtnSave.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
'
'ToolStripSeparator4
'
Me.ToolStripSeparator4.Name = "ToolStripSeparator4"
Me.ToolStripSeparator4.Size = New System.Drawing.Size(6, 36)
'
'TsBtnLoad
'
Me.TsBtnLoad.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.TsBtnLoad.Image = CType(resources.GetObject("TsBtnLoad.Image"), System.Drawing.Image)
Me.TsBtnLoad.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TsBtnLoad.Name = "TsBtnLoad"
Me.TsBtnLoad.Size = New System.Drawing.Size(35, 33)
Me.TsBtnLoad.Text = "重载"
Me.TsBtnLoad.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
'
'TsBtnSaveAs
'
Me.TsBtnSaveAs.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.TsBtnSaveAs.Image = CType(resources.GetObject("TsBtnSaveAs.Image"), System.Drawing.Image)
Me.TsBtnSaveAs.ImageTransparentColor = System.Drawing.Color.Magenta
Me.TsBtnSaveAs.Name = "TsBtnSaveAs"
Me.TsBtnSaveAs.Size = New System.Drawing.Size(35, 33)
Me.TsBtnSaveAs.Text = "导出"
Me.TsBtnSaveAs.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText
'
'ToolStripSeparator3
'
Me.ToolStripSeparator3.Name = "ToolStripSeparator3"
Me.ToolStripSeparator3.Size = New System.Drawing.Size(6, 36)
'
'MsiCutNode
'
Me.MsiCutNode.Enabled = False
Me.MsiCutNode.Name = "MsiCutNode"
Me.MsiCutNode.Size = New System.Drawing.Size(192, 22)
Me.MsiCutNode.Text = "剪切"
'
'ToolStrip1
'
Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TsBtnOpen, Me.TsBtnSave, Me.ToolStripSeparator4, Me.TsBtnLoad, Me.TsBtnSaveAs, Me.ToolStripSeparator3})
Me.ToolStrip1.Location = New System.Drawing.Point(0, 0)
Me.ToolStrip1.Name = "ToolStrip1"
Me.ToolStrip1.Size = New System.Drawing.Size(984, 36)
Me.ToolStrip1.TabIndex = 7
Me.ToolStrip1.Text = "ToolStrip1"
'
'CmsPlanGrid
'
Me.CmsPlanGrid.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MsiCopyNode, Me.MsiCutNode, Me.MsiNodePaste, Me.ToolStripSeparator5, Me.MsiUndo, Me.MsiRedo, Me.ToolStripSeparator6, Me.MsiSaveNodeFile, Me.MsiLoadNodeFile, Me.ToolStripSeparator7, Me.TsmiDebugStart, Me.TsmiDebugEnd, Me.TsmiDebugStep, Me.TsmiDebugContinue, Me.ToolStripSeparator8, Me.TsmiDebugSetup, Me.TsmiDebugMain, Me.TsmiDebugPass, Me.TsmiDebugFail, Me.TsmiDebugCleanup, Me.ToolStripSeparator9, Me.TsmiDebugNode, Me.TsmiDebugNodeBegin})
Me.CmsPlanGrid.Name = "CmsMain"
Me.CmsPlanGrid.Size = New System.Drawing.Size(193, 430)
'
'ToolStripSeparator7
'
Me.ToolStripSeparator7.Name = "ToolStripSeparator7"
Me.ToolStripSeparator7.Size = New System.Drawing.Size(189, 6)
'
'TsmiDebugEnd
'
Me.TsmiDebugEnd.Name = "TsmiDebugEnd"
Me.TsmiDebugEnd.ShortcutKeys = System.Windows.Forms.Keys.F2
Me.TsmiDebugEnd.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugEnd.Text = "退出执行"
'
'TsmiDebugStep
'
Me.TsmiDebugStep.Name = "TsmiDebugStep"
Me.TsmiDebugStep.ShortcutKeys = System.Windows.Forms.Keys.F3
Me.TsmiDebugStep.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugStep.Text = "单步执行"
'
'TsmiDebugContinue
'
Me.TsmiDebugContinue.Name = "TsmiDebugContinue"
Me.TsmiDebugContinue.ShortcutKeys = System.Windows.Forms.Keys.F4
Me.TsmiDebugContinue.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugContinue.Text = "继续执行"
'
'ToolStripSeparator8
'
Me.ToolStripSeparator8.Name = "ToolStripSeparator8"
Me.ToolStripSeparator8.Size = New System.Drawing.Size(189, 6)
'
'TsmiDebugSetup
'
Me.TsmiDebugSetup.Name = "TsmiDebugSetup"
Me.TsmiDebugSetup.ShortcutKeys = System.Windows.Forms.Keys.F5
Me.TsmiDebugSetup.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugSetup.Text = "Setup模块执行"
'
'TsmiDebugMain
'
Me.TsmiDebugMain.Name = "TsmiDebugMain"
Me.TsmiDebugMain.ShortcutKeys = System.Windows.Forms.Keys.F6
Me.TsmiDebugMain.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugMain.Text = "Main模块执行"
'
'TsmiDebugPass
'
Me.TsmiDebugPass.Name = "TsmiDebugPass"
Me.TsmiDebugPass.ShortcutKeys = System.Windows.Forms.Keys.F7
Me.TsmiDebugPass.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugPass.Text = "Pass模块执行"
'
'TsmiDebugFail
'
Me.TsmiDebugFail.Name = "TsmiDebugFail"
Me.TsmiDebugFail.ShortcutKeys = System.Windows.Forms.Keys.F8
Me.TsmiDebugFail.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugFail.Text = "Fail模块执行"
'
'TsmiDebugCleanup
'
Me.TsmiDebugCleanup.Name = "TsmiDebugCleanup"
Me.TsmiDebugCleanup.ShortcutKeys = System.Windows.Forms.Keys.F9
Me.TsmiDebugCleanup.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugCleanup.Text = "Cleanup模块执行"
'
'ToolStripSeparator9
'
Me.ToolStripSeparator9.Name = "ToolStripSeparator9"
Me.ToolStripSeparator9.Size = New System.Drawing.Size(189, 6)
'
'TsmiDebugNode
'
Me.TsmiDebugNode.Name = "TsmiDebugNode"
Me.TsmiDebugNode.ShortcutKeys = System.Windows.Forms.Keys.F10
Me.TsmiDebugNode.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugNode.Text = "节点测试"
'
'TsmiDebugNodeBegin
'
Me.TsmiDebugNodeBegin.Name = "TsmiDebugNodeBegin"
Me.TsmiDebugNodeBegin.ShortcutKeys = System.Windows.Forms.Keys.F11
Me.TsmiDebugNodeBegin.Size = New System.Drawing.Size(192, 22)
Me.TsmiDebugNodeBegin.Text = "节点开始测试"
'
'StuMain
'
Me.StuMain.Location = New System.Drawing.Point(0, 539)
Me.StuMain.Name = "StuMain"
Me.StuMain.Size = New System.Drawing.Size(984, 22)
Me.StuMain.TabIndex = 8
Me.StuMain.Text = "StatusStrip1"
'
'DlgOpenFile
'
Me.DlgOpenFile.FileName = "OpenFileDialog1"
'
'SplitContainer1
'
Me.SplitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainer1.Location = New System.Drawing.Point(0, 0)
Me.SplitContainer1.Name = "SplitContainer1"
'
'SplitContainer1.Panel1
'
Me.SplitContainer1.Panel1.Controls.Add(Me.GroupBox2)
'
'SplitContainer1.Panel2
'
Me.SplitContainer1.Panel2.Controls.Add(Me.GroupBox1)
Me.SplitContainer1.Size = New System.Drawing.Size(984, 561)
Me.SplitContainer1.SplitterDistance = 444
Me.SplitContainer1.TabIndex = 9
'
'GroupBox2
'
Me.GroupBox2.Controls.Add(Me.LblDesc)
Me.GroupBox2.Controls.Add(Me.GrdStationPlan)
Me.GroupBox2.Dock = System.Windows.Forms.DockStyle.Fill
Me.GroupBox2.Font = New System.Drawing.Font("微软雅黑", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.GroupBox2.Location = New System.Drawing.Point(0, 0)
Me.GroupBox2.Name = "GroupBox2"
Me.GroupBox2.Size = New System.Drawing.Size(444, 561)
Me.GroupBox2.TabIndex = 0
Me.GroupBox2.TabStop = False
Me.GroupBox2.Text = "流程参数"
'
'LblDesc
'
Me.LblDesc.Dock = System.Windows.Forms.DockStyle.Bottom
Me.LblDesc.Font = New System.Drawing.Font("微软雅黑", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.LblDesc.Location = New System.Drawing.Point(3, 497)
Me.LblDesc.Name = "LblDesc"
Me.LblDesc.Size = New System.Drawing.Size(438, 61)
Me.LblDesc.TabIndex = 6
'
'GrdStationPlan
'
Me.GrdStationPlan.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.GrdStationPlan.BorderStyle = FlexCell.BorderStyleEnum.None
Me.GrdStationPlan.CheckedImage = Nothing
Me.GrdStationPlan.ContextMenuStrip = Me.CmsPlanGrid
Me.GrdStationPlan.DefaultFont = New System.Drawing.Font("宋体", 9.0!)
Me.GrdStationPlan.Font = New System.Drawing.Font("微软雅黑", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.GrdStationPlan.GridColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
Me.GrdStationPlan.Location = New System.Drawing.Point(0, 24)
Me.GrdStationPlan.Name = "GrdStationPlan"
Me.GrdStationPlan.Size = New System.Drawing.Size(441, 470)
Me.GrdStationPlan.TabIndex = 4
Me.GrdStationPlan.UncheckedImage = Nothing
'
'Grid1
'
Me.Grid1.BorderStyle = FlexCell.BorderStyleEnum.None
Me.Grid1.CheckedImage = Nothing
Me.Grid1.ContextMenuStrip = Me.CmsPlanGrid
Me.Grid1.DefaultFont = New System.Drawing.Font("宋体", 9.0!)
Me.Grid1.Dock = System.Windows.Forms.DockStyle.Top
Me.Grid1.Font = New System.Drawing.Font("宋体", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Grid1.GridColor = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
Me.Grid1.Location = New System.Drawing.Point(0, 36)
Me.Grid1.Name = "Grid1"
Me.Grid1.Size = New System.Drawing.Size(984, 424)
Me.Grid1.TabIndex = 10
Me.Grid1.UncheckedImage = Nothing
'
'ZQ_Mars_T2_FrmStationPlan
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(984, 561)
Me.Controls.Add(Me.Grid1)
Me.Controls.Add(Me.ToolStrip1)
Me.Controls.Add(Me.StuMain)
Me.Controls.Add(Me.SplitContainer1)
Me.Name = "ZQ_Mars_T2_FrmStationPlan"
Me.Text = "ZQ_Mars_P2_FrmStationPlan"
Me.ToolStrip1.ResumeLayout(false)
Me.ToolStrip1.PerformLayout
Me.CmsPlanGrid.ResumeLayout(false)
Me.SplitContainer1.Panel1.ResumeLayout(false)
Me.SplitContainer1.Panel2.ResumeLayout(false)
CType(Me.SplitContainer1,System.ComponentModel.ISupportInitialize).EndInit
Me.SplitContainer1.ResumeLayout(false)
Me.GroupBox2.ResumeLayout(false)
Me.ResumeLayout(false)
Me.PerformLayout
End Sub
Friend WithEvents MsiCopyNode As ToolStripMenuItem
Friend WithEvents MsiNodePaste As ToolStripMenuItem
Friend WithEvents ToolStripSeparator5 As ToolStripSeparator
Friend WithEvents MsiUndo As ToolStripMenuItem
Friend WithEvents MsiRedo As ToolStripMenuItem
Friend WithEvents ToolStripSeparator6 As ToolStripSeparator
Friend WithEvents MsiSaveNodeFile As ToolStripMenuItem
Friend WithEvents MsiLoadNodeFile As ToolStripMenuItem
Friend WithEvents TsmiDebugStart As ToolStripMenuItem
Friend WithEvents GroupBox1 As GroupBox
Friend WithEvents TsBtnOpen As ToolStripButton
Friend WithEvents TsBtnSave As ToolStripButton
Friend WithEvents ToolStripSeparator4 As ToolStripSeparator
Friend WithEvents TsBtnLoad As ToolStripButton
Friend WithEvents TsBtnSaveAs As ToolStripButton
Friend WithEvents ToolStripSeparator3 As ToolStripSeparator
Friend WithEvents MsiCutNode As ToolStripMenuItem
Friend WithEvents ToolStrip1 As ToolStrip
Friend WithEvents CmsPlanGrid As ContextMenuStrip
Friend WithEvents ToolStripSeparator7 As ToolStripSeparator
Friend WithEvents TsmiDebugEnd As ToolStripMenuItem
Friend WithEvents TsmiDebugStep As ToolStripMenuItem
Friend WithEvents TsmiDebugContinue As ToolStripMenuItem
Friend WithEvents ToolStripSeparator8 As ToolStripSeparator
Friend WithEvents TsmiDebugSetup As ToolStripMenuItem
Friend WithEvents TsmiDebugMain As ToolStripMenuItem
Friend WithEvents TsmiDebugPass As ToolStripMenuItem
Friend WithEvents TsmiDebugFail As ToolStripMenuItem
Friend WithEvents TsmiDebugCleanup As ToolStripMenuItem
Friend WithEvents ToolStripSeparator9 As ToolStripSeparator
Friend WithEvents TsmiDebugNode As ToolStripMenuItem
Friend WithEvents TsmiDebugNodeBegin As ToolStripMenuItem
Friend WithEvents StuMain As StatusStrip
Friend WithEvents DlgOpenFile As OpenFileDialog
Friend WithEvents SplitContainer1 As SplitContainer
Friend WithEvents GroupBox2 As GroupBox
Friend WithEvents LblDesc As Label
Friend WithEvents GrdStationPlan As FlexCell.Grid
Friend WithEvents Grid1 As FlexCell.Grid
End Class

View File

@@ -0,0 +1,185 @@
<?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="TsBtnOpen.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVGhD1ZnLSgRBFEMbFN3rUv03H1v160T/wDfot+jo
VhNk4FqUk77dqRrnQGAgnZt+TS26hhnsQpfQPbSAvsziTM6+gNhl5QB6hWrFLfQCsdMC70bPk1+KF2F5
EnxtagU9dA7N5gGKQ68g2+MNHELXUOy6g2bzDsWhLGrFERS73qDZxIFUa+x99oGCyX1b0OnPz19MHjiR
SX370DNUC0waOIN03za0PPlaIA6r+W7SfWfQqkD0ar6bdN8TtCoQvZrvJt33Ca0KRK/mu0n3qYDy3aT7
VED5btJ9KqB8N+k+FVC+m3SfCijfTbpPBZTvJt2nAsp3k+5TAeW7SfepgPLdpPtUQPlu0n0qoHw36T4V
UL6bdJ8KKN9Nuk8FlO8m3acCyneT7lMB5btJ96mA8t2k+1RA+W7SfSqgfDfpPhVQvpt0nwr8+4+7MUCV
lJ/X+Qm8xUXw5G+g2DXq83oMUCXcsyqP6aVRGxxlqITbPNzuKY9rLXbuQJIyWIM7Mj0vIrXJV4b/gneD
j5TvZfnHdogzbyF2jLrzS8pBG8fGX0DPdb4Jvdb5ZqxznT+BZrOudf4R4saihd7rPE9+D7LSep3/gPh/
O4a4sTiBYfgGl13a4+npcwkAAAAASUVORK5CYII=
</value>
</data>
<data name="TsBtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHqSURBVGhD7Zm9Tt1AEEYvNDxCArwSXZDSpAwiFQ+HEA2Q
dPmpeAl4AaALEnxTXDSate/xeHcvkeIjnerzN97F9rWEVwsLC6PsyFP5Rz7Jl07ey0+yKQfyuxw6YQ//
ys+yCbvyhxw6UU+f5RdZzTc5dIJt2ORK2D3vh17ID3KNz8wabLG2aD+vehOP0g/8KD0+M2tpvgk/yIxQ
PodjGTcx+5nwQ8wI5XNptgk/wIxQXkOTTfiyGaG8lupN+KIZiflc7Q18JIcYe7AnvbF9yYzEvMY7OcbQ
JjYd/4YvmBEbEo+ZKy3INhE7CBXsstvlj8dl3XQLeWIPSRc6k15PutCZ9HrShc6k15MudCa9nnShM+n1
pAudSa+HCq1+RqNjP6vxOIQKLV9k0aEXWzwGoULMWxuhvIAKMW9thPICKlCeheZRXkAFyrPQPMoLqEB5
FppHeQEVKM9C8ygvoALlWWge5QVUoDwLzaO8gAqUZ6F5lBdQgfIsNI/yAipQnoXmUV5ABcqz0DzKCx6k
L/j/TBs+M2vZNM8+tPjM1ob8lr50LvflGp+ZtYzNs3NeSp/9ksiZ9KV/ya8S2ZO3cmjAe3ol7cPjJA7l
jRwa9B5eS38bT8J2eyJ/yvjVZhvaA2vntttm8l9+YeH/YrV6BfNWMy9RUhK1AAAAAElFTkSuQmCC
</value>
</data>
<data name="TsBtnLoad.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVGhD1ZnLSgRBFEMbFN3rUv03H1v160T/wDfot+jo
VhNk4FqUk77dqRrnQGAgnZt+TS26hhnsQpfQPbSAvsziTM6+gNhl5QB6hWrFLfQCsdMC70bPk1+KF2F5
EnxtagU9dA7N5gGKQ68g2+MNHELXUOy6g2bzDsWhLGrFERS73qDZxIFUa+x99oGCyX1b0OnPz19MHjiR
SX370DNUC0waOIN03za0PPlaIA6r+W7SfWfQqkD0ar6bdN8TtCoQvZrvJt33Ca0KRK/mu0n3qYDy3aT7
VED5btJ9KqB8N+k+FVC+m3SfCijfTbpPBZTvJt2nAsp3k+5TAeW7SfepgPLdpPtUQPlu0n0qoHw36T4V
UL6bdJ8KKN9Nuk8FlO8m3acCyneT7lMB5btJ96mA8t2k+1RA+W7SfSqgfDfpPhVQvpt0nwr8+4+7MUCV
lJ/X+Qm8xUXw5G+g2DXq83oMUCXcsyqP6aVRGxxlqITbPNzuKY9rLXbuQJIyWIM7Mj0vIrXJV4b/gneD
j5TvZfnHdogzbyF2jLrzS8pBG8fGX0DPdb4Jvdb5ZqxznT+BZrOudf4R4saihd7rPE9+D7LSep3/gPh/
O4a4sTiBYfgGl13a4+npcwkAAAAASUVORK5CYII=
</value>
</data>
<data name="TsBtnSaveAs.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADQSURBVEhL5ZYxDgFBGEbnCE4gjuAcCnEER3AER9BpVWqV
QqcTlSOIUkVFx/fWSMYsyfx/FCu+5CX7ZWfmTbKT3Q1J+mLnYCmKMhQ3sRKLQg5iL4ryFHSqVpaZ+H3B
UQwy2qIWr4A5OaxVi0fATrsJPfFVQR7m/pGA42eBmARc8yrgpMxj38aewhjuEbNg/LgMLUEfVe01jGmu
4CpO4hz7JfYUxrgFGzER09jXsacwxi34/WdggZgE7MwCMQk8aYbA8tHPYe5Hgfe35R2spYRwB61XwcSY
NxMjAAAAAElFTkSuQmCC
</value>
</data>
<metadata name="ToolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>230, 55</value>
</metadata>
<metadata name="CmsPlanGrid.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>342, 55</value>
</metadata>
<metadata name="StuMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>469, 55</value>
</metadata>
<metadata name="DlgOpenFile.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>570, 55</value>
</metadata>
</root>

View File

@@ -0,0 +1,492 @@
Imports UTS_Core.DebugLog
Imports UTS_Core.UTSModule
Imports UTS_Core.UTSModule.Station
Imports UTS_Core.UTSModule.Station.StationPackagePlan
Imports UTS_Core.UTSModule.Test.StatusMonitor
Public Class ZQ_Mars_T2_FrmStationPlan
' Implements IProcessFileChanged
Implements IProcessStation
Implements IProductionLine
Private _utsApp As UtsAppForm
Private _stationPlan As StationPackagePlan
Public Sub ShowForm(parentControl As Control)
FormBorderStyle = FormBorderStyle.None
TopLevel = False
Dock = DockStyle.Fill
Parent = parentControl
Show()
End Sub
Public Sub utsbctfilechanged
'For Each observer As IProcessStation In _observerList
' observer.StationChanged()
' Next
End Sub
''' <summary>
''' 站位变更代码
''' </summary>
Public Sub Station_Changed() Implements IProcessStation.StationChanged
ApplicationLog.WriteInfoLog($"编辑页面站位变更中PN{_utsApp.ProcessStation.ParentProject.Name} - SN:{_utsApp.ProcessStation.Name} - TP:{_utsApp.ProcessStation.Packet.Name}!")
Try
_stationPlan = CType(_utsApp.ProcessStation.Packet.StationPlan, StationPackagePlan)
Catch ex As Exception
MsgBox($"加载项目流程失败,{ex.Message}")
End Try
InitGrid(_stationPlan)
ApplicationLog.WriteInfoLog($"编辑页面站位变更完成。")
End Sub
''' <summary>
''' 产线变化代码
''' </summary>
Public Sub ProductionLineChanged() Implements IProductionLine.ProductionLineChanged
ApplicationLog.WriteInfoLog($"编辑页面生产线变更中。")
ApplicationLog.WriteInfoLog($"编辑页面生产线变更完成。")
End Sub
Private Sub FrmStationPlan_Load(sender As Object, e As EventArgs) Handles Me.Load
ApplicationLog.WriteInfoLog($"编辑页面加载中。")
'初始化UTS窗体信息,失败则关闭窗体
If InitializeUtsApp() = False Then Return
'初始化窗体页面
InitializeForm()
ApplicationLog.WriteInfoLog($"编辑页面加载完成。")
End Sub
Private Function InitializeUtsApp() As Boolean
_utsApp = UtsAppForm.CreateSingleton()
_utsApp.AddStatisticsObserver(Me)
Try
If _utsApp.IsInitialized = False Then
_utsApp.Initialize(ProcessStation.StationTypeEnum.Package) 'Todo:可根据需要限定可选站位
End If
Catch ex As Exception
ApplicationLog.WriteErrorLog($"初始化窗体失败,原因:{ex.Message}!")
MsgBox($"初始化窗体失败,原因:{ex.Message}")
Close()
Return False
End Try
Return True
End Function
Private Sub InitializeForm()
InitGrid(_stationPlan)
End Sub
Private Sub TsBtnOpen_Click(sender As Object, e As EventArgs) Handles TsBtnOpen.Click
Using xml As New OpenFileDialog
xml.Filter = $"流程文件(*.xml)|*.xml"
If xml.ShowDialog() = DialogResult.OK Then
ApplicationLog.WriteInfoLog($"编辑页面执行流程正在加载{xml.FileName}")
LoadTreeViewFormXml(xml.FileName)
ApplicationLog.WriteInfoLog($"编辑页面执行流程加载完成。")
End If
End Using
End Sub
Private Sub TsBtnLoad_Click(sender As Object, e As EventArgs) Handles TsBtnLoad.Click
If MsgBox("重载会将流程返回为上一次保存的流程状态,是否继续", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
ApplicationLog.WriteInfoLog($"编辑页面执行流程重载中。")
LoadTreeViewFormXml()
ApplicationLog.WriteInfoLog($"编辑页面执行流程重载完成。")
End If
End Sub
Private Sub TsBtnSave_Click(sender As Object, e As EventArgs) Handles TsBtnSave.Click
ApplicationLog.WriteInfoLog($"编辑页面执行流程保存中。")
UpdateGrid(_stationPlan)
ExportTreeViewToXml()
ApplicationLog.WriteInfoLog($"编辑页面执行流程保存完成。")
End Sub
''' <summary>
''' 读取XML,加载树状视图
''' </summary>
Private Sub LoadTreeViewFormXml()
Dim revStationPlanPath As String = $"{UtsPath.GetStationPacketTestPlanDirPath(_stationPlan.ParentPacket.Name)}\Main.xml"
Try
_stationPlan.LoadFile(revStationPlanPath)
InitGrid(_stationPlan)
If StationEditStatusMonitor.StationEditStatus <> StationEditStatusMonitor.StationEditStatusEnum.Saved Then
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Saved
End If
Catch ex As Exception
ApplicationLog.WriteErrorLog($"加载测试站流程发生错误,原因:{ex.Message}")
MsgBox($"加载测试站流程发生错误,原因:{ex.Message}")
_stationPlan.CreateStationPlan()
End Try
End Sub
''' <summary>
''' 读取XML,加载树状视图
''' </summary>
Private Sub LoadTreeViewFormXml(revStationPlanPath As String)
Try
_stationPlan.LoadFile(revStationPlanPath)
InitGrid(_stationPlan)
If StationEditStatusMonitor.StationEditStatus <> StationEditStatusMonitor.StationEditStatusEnum.Saved Then
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Saved
End If
Catch ex As Exception
ApplicationLog.WriteErrorLog($"加载测试站流程发生错误,原因:{ex.Message}")
MsgBox($"加载测试站流程发生错误,原因:{ex.Message}")
_stationPlan.CreateStationPlan()
End Try
End Sub
''' <summary>
''' 将树状视图导出为Xml
''' </summary>
Private Sub ExportTreeViewToXml()
'保存至项目文件
Dim revStationPlanPath As String = $"{UtsPath.GetStationPacketTestPlanDirPath(_stationPlan.ParentPacket.Name)}\Main.xml"
_stationPlan.SaveFile(revStationPlanPath)
'备份至临时文件
Dim tempPath As String = $"{UtsPath.StationDesignDirPath()}\Main.xml"
_stationPlan.SaveFile(tempPath)
If StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Changed Then
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Saved
End If
End Sub
Private Sub TsBtnSaveAs_Click(sender As Object, e As EventArgs) Handles TsBtnSaveAs.Click
Using dlg As New SaveFileDialog
dlg.Filter = "Excel 文件(*.xls)|*.xls|CSV 文件(*.csv)|*.csv|PDF 文件(*.pdf)|*.pdf"
dlg.AddExtension = True
If dlg.ShowDialog <> DialogResult.OK Then Return
Cursor = Cursors.WaitCursor
ApplicationLog.WriteInfoLog($"编辑页面执行流程导出中。")
Try
Select Case dlg.FilterIndex
Case 1
GrdStationPlan.ExportToExcel(dlg.FileName, True, True)
Case 2
GrdStationPlan.ExportToCSV(dlg.FileName, True, True)
Case 3
GrdStationPlan.ExportToPDF(dlg.FileName)
End Select
ApplicationLog.WriteInfoLog($"编辑页面执行流程导出完成。")
Catch ex As Exception
ApplicationLog.WriteErrorLog($"编辑页面执行流程导出失败,原因:{ex.Message}")
MsgBox($"编辑页面执行流程导出失败,原因:{ex.Message}")
End Try
Cursor = Cursors.Arrow
End Using
End Sub
#Region "Package表格"
Private Sub InitGrid(Optional stationplan As StationPackagePlan = Nothing)
With GrdStationPlan
.AutoRedraw = False
.NewFile()
.BorderStyle = FlexCell.BorderStyleEnum.None
.Cols = ColNames.Max
.Rows = RowItems.Max
.ExtendLastCol = True
.DisplayRowNumber = True
.Cell(0, ColNames.Item).Text = "Item"
.Cell(0, ColNames.Value).Text = "Value"
.Column(ColNames.Item).Width = 200
.Column(ColNames.Item).Locked = True
.DefaultRowHeight = 20
.DefaultFont = New Font("微软雅黑", 10)
For i As Integer = 1 To RowItems.Max - 1
.Cell(i, ColNames.Item).Text = [Enum].GetName(GetType(RowItems), i)
Next
'.Cell(RowItems.CheckSnTested, ColNames.Value).CellType = FlexCell.CellTypeEnum.ComboBox
'.Cell(RowItems.CheckSnPackaged, ColNames.Value).CellType = FlexCell.CellTypeEnum.ComboBox
'.Cell(RowItems.CheckSnMO, ColNames.Value).CellType = FlexCell.CellTypeEnum.ComboBox
'.Cell(RowItems.MissingQuantity, ColNames.Value).CellType = FlexCell.CellTypeEnum.ComboBox
'.Cell(RowItems.BarCodeType, ColNames.Value).CellType = FlexCell.CellTypeEnum.ComboBox
.Cell(RowItems.AutoPrint, ColNames.Value).CellType = FlexCell.CellTypeEnum.CheckBox
.Cell(RowItems.BoxMumEditKey, ColNames.Item).Text = "uperLimit"
.Cell(RowItems.CompanyName, ColNames.Item).Text = "LowerLimit
"
'.Cell(RowItems.ErrorSound, ColNames.Value).CellType = FlexCell.CellTypeEnum.Button
'.Cell(RowItems.TemplateFile, ColNames.Value).CellType = FlexCell.CellTypeEnum.Button
'.Cell(RowItems.CompanyLogo, ColNames.Value).CellType = FlexCell.CellTypeEnum.Button
FillGrid(stationplan)
.AutoRedraw = True
.Refresh()
End With
End Sub
Private Sub FillGrid(stationplan As StationPackagePlan)
If stationplan Is Nothing Then Return
With GrdStationPlan
'.Cell(RowItems.CheckSnTested, ColNames.Value).Text = stationplan.CheckSnTested.ToString
'.Cell(RowItems.CheckSnPackaged, ColNames.Value).Text = stationplan.CheckSnPackaged.ToString
'.Cell(RowItems.CheckSnMO, ColNames.Value).Text = stationplan.CheckSnMO.ToString
'.Cell(RowItems.PictureCount, ColNames.Value).Text = stationplan.PictureCount.ToString
'.Cell(RowItems.UnlockKey, ColNames.Value).Text = stationplan.UnlockKey
'.Cell(RowItems.BarCodeType, ColNames.Value).Text = stationplan.BarCodeType.ToString
'.Cell(RowItems.MissingQuantity, ColNames.Value).Text = stationplan.MissingQuantity.ToString
'.Cell(RowItems.MissingQuantityKey, ColNames.Value).Text = stationplan.MissingQuantityKey
.Cell(RowItems.AutoPrint, ColNames.Value).Text = stationplan.AutoPrint.ToString
'.Cell(RowItems.ErrorSound, ColNames.Value).Text = stationplan.ErrorSound
'.Cell(RowItems.TemplateFile, ColNames.Value).Text = stationplan.TemplateFile
.Cell(RowItems.BoxMumEditKey, ColNames.Value).Text = stationplan.BoxMumEditKey
'.Cell(RowItems.CompanyLogo, ColNames.Value).Text = stationplan.CompanyLogo
.Cell(RowItems.CompanyName, ColNames.Value).Text = stationplan.CompanyName
'.Cell(RowItems.BoxNumText, ColNames.Value).Text = stationplan.BoxNumText
'.Cell(RowItems.BoxBarCode, ColNames.Value).Text = stationplan.BoxBarCode
End With
If StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Changed Then
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Saved
End If
End Sub
Private Sub UpdateGrid(stationplan As StationPackagePlan)
If _stationPlan Is Nothing Then Return
With GrdStationPlan
'If [Enum].TryParse(.Cell(RowItems.CheckSnTested, ColNames.Value).Text, stationplan.CheckSnTested) = False Then
' MsgBox("更新CheckSnTested失败!")
' Return
'End If
'If [Enum].TryParse(.Cell(RowItems.CheckSnPackaged, ColNames.Value).Text, stationplan.CheckSnPackaged) = False Then
' MsgBox("更新CheckSnPackaged失败!")
' Return
'End If
'If [Enum].TryParse(.Cell(RowItems.CheckSnMO, ColNames.Value).Text, stationplan.CheckSnMO) = False Then
' MsgBox("更新CheckSnMO失败!")
' Return
'End If
'If [Enum].TryParse(.Cell(RowItems.BarCodeType, ColNames.Value).Text, stationplan.BarCodeType) = False Then
' MsgBox("更新BarCodeType失败!")
' Return
'End If
'If [Enum].TryParse(.Cell(RowItems.MissingQuantity, ColNames.Value).Text, stationplan.MissingQuantity) = False Then
' MsgBox("更新MissingQuantity失败!")
' Return
'End If
'stationplan.PictureCount = .Cell(RowItems.PictureCount, ColNames.Value).IntegerValue
'stationplan.UnlockKey = .Cell(RowItems.UnlockKey, ColNames.Value).Text
'stationplan.MissingQuantityKey = .Cell(RowItems.MissingQuantityKey, ColNames.Value).Text
stationplan.AutoPrint = .Cell(RowItems.AutoPrint, ColNames.Value).BooleanValue
'stationplan.ErrorSound = .Cell(RowItems.ErrorSound, ColNames.Value).Text
'stationplan.TemplateFile = .Cell(RowItems.TemplateFile, ColNames.Value).Text
stationplan.BoxMumEditKey = .Cell(RowItems.BoxMumEditKey, ColNames.Value).Text
'stationplan.CompanyLogo = .Cell(RowItems.CompanyLogo, ColNames.Value).Text
stationplan.CompanyName = .Cell(RowItems.CompanyName, ColNames.Value).Text
'stationplan.BoxNumText = .Cell(RowItems.BoxNumText, ColNames.Value).Text
'stationplan.BoxBarCode = .Cell(RowItems.BoxBarCode, ColNames.Value).Text
End With
End Sub
Private Sub GrdStationPlan_ButtonClick(Sender As Object, e As FlexCell.Grid.ButtonClickEventArgs) Handles GrdStationPlan.ButtonClick
Select Case e.Row
'Case RowItems.ErrorSound
' DlgOpenFile.Filter = "图像资源 (*.jpg;*.png;*.gif;*.ico)|*.jpg;*.png;*.gif;*.ico"
'Case RowItems.TemplateFile
' DlgOpenFile.Filter = "模板资源 (*.btw)|*.btw"
'Case RowItems.CompanyLogo
' DlgOpenFile.Filter = "图像资源 (*.jpg;*.png;*.gif;*.ico)|*.jpg;*.png;*.gif;*.ico"
End Select
DlgOpenFile.CheckFileExists = True
DlgOpenFile.CheckPathExists = True
If DlgOpenFile.ShowDialog() <> DialogResult.OK Then Return
Dim fileName As String = $"{DlgOpenFile.SafeFileName}"
Dim fileDir As String = UtsPath.GetStationPacketResourceDirPath(_stationPlan.ParentPacket.Name)
Dim fliePath As String = $"{fileDir}\{fileName}"
GrdStationPlan.Cell(e.Row, ColNames.Value).Text = fileName
'导入文件
Try
IO.File.Copy(DlgOpenFile.FileName, fliePath, True)
Catch ex As Exception
MsgBox($"导入资源文件失败,{ex.Message}")
End Try
End Sub
Private Sub GrdStationPlan_ComboDropDown(Sender As Object, e As FlexCell.Grid.ComboDropDownEventArgs) Handles GrdStationPlan.ComboDropDown
GrdStationPlan.ComboBox(0).Items.Clear()
Select Case e.Row
'Case RowItems.CheckSnTested
' GrdStationPlan.ComboBox(0).Items.AddRange([Enum].GetNames(GetType(CheckStatus)))
'Case RowItems.CheckSnPackaged
' GrdStationPlan.ComboBox(0).Items.AddRange([Enum].GetNames(GetType(CheckStatus)))
'Case RowItems.CheckSnMO
' GrdStationPlan.ComboBox(0).Items.AddRange([Enum].GetNames(GetType(CheckStatus)))
'Case RowItems.MissingQuantity
' GrdStationPlan.ComboBox(0).Items.AddRange([Enum].GetNames(GetType(MissCountStatus)))
'Case RowItems.BarCodeType
' GrdStationPlan.ComboBox(0).Items.AddRange([Enum].GetNames(GetType(BarcodeTypes)))
End Select
End Sub
Private Sub GrdStationPlan_CellChange(Sender As Object, e As FlexCell.Grid.CellChangeEventArgs) Handles GrdStationPlan.CellChange
StationEditStatusMonitor.StationEditStatus = StationEditStatusMonitor.StationEditStatusEnum.Changed
End Sub
Enum ColNames
SN
Item
Value
Max
End Enum
Enum RowItems
''' <summary>固定行</summary>
<System.ComponentModel.Description("固定行")>
SN
'''' <summary>校验条码未测试后处理方式</summary>
'<System.ComponentModel.Description("校验条码未测试后处理方式")>
'CheckSnTested
'''' <summary>校验条码已参与包装后处理方式</summary>
'<System.ComponentModel.Description("校验条码已参与包装后处理方式")>
'CheckSnPackaged
'''' <summary>校验条码不属于指定MO后处理方式</summary>
'<System.ComponentModel.Description("校验条码不属于指定MO后处理方式")>
'CheckSnMO
'''' <summary>拍摄保存图像的数量</summary>
'<System.ComponentModel.Description("拍摄保存图像的数量")>
'PictureCount
'''' <summary>解锁密码</summary>
'<System.ComponentModel.Description("解锁密码")>
'UnlockKey
'''' <summary>条码类型</summary>
'<System.ComponentModel.Description("条码类型")>
'BarCodeType
'''' <summary>缺失条码数量后的处理方式</summary>
'<System.ComponentModel.Description("缺失条码数量后的处理方式")>
'MissingQuantity
'''' <summary>缺失条码数量后的解锁密码</summary>
'<System.ComponentModel.Description("缺失条码数量后的解锁密码")>
'MissingQuantityKey
''' <summary>是否自动打印</summary>
<System.ComponentModel.Description("是否自动记录")>
AutoPrint
'''' <summary>发生错误后报警文件</summary>
'<System.ComponentModel.Description("发生错误后报警文件")>
'ErrorSound
'''' <summary>模板文件名</summary>
'<System.ComponentModel.Description("模板文件名")>
'TemplateFile
''' <summary>箱号编辑密码</summary>
<System.ComponentModel.Description("箱号编辑密码")>
BoxMumEditKey
'''' <summary>公司Logo文件</summary>
'<System.ComponentModel.Description("公司Logo文件")>
'CompanyLogo
''' <summary>公司名称</summary>
<System.ComponentModel.Description("公司名称")>
CompanyName
'''' <summary>箱号规则</summary>
'<System.ComponentModel.Description("箱号规则")>
'BoxNumText
'''' <summary>箱号条码</summary>
'<System.ComponentModel.Description("箱号条码")>
'BoxBarCode
Max
End Enum
Private Sub GrdStationPlan_SelChange(Sender As Object, e As FlexCell.Grid.SelChangeEventArgs) Handles GrdStationPlan.SelChange
If e.FirstRow <= RowItems.SN OrElse e.FirstRow > GrdStationPlan.Rows - 1 Then Return
Dim row As Integer = e.FirstRow
Dim a As RowItems
If [Enum].TryParse(row.ToString, a) Then
LblDesc.Text = $"Row:{row}{vbCrLf}Desc:{GetEnumDescription(a)}"
Else
LblDesc.Text = $"Row:{row}{vbCrLf}Desc:无说明"
End If
End Sub
Public Function GetEnumDescription(enumValue As RowItems) As String
Dim str As String = enumValue.ToString()
Dim field As System.Reflection.FieldInfo = enumValue.GetType().GetField(str)
Dim objs() As Object = field.GetCustomAttributes(GetType(System.ComponentModel.DescriptionAttribute), False)
If objs Is Nothing OrElse objs.Length = 0 Then Return str
Dim da As System.ComponentModel.DescriptionAttribute = CType(objs(0), ComponentModel.DescriptionAttribute)
Return da.Description
End Function
#End Region
End Class

View File

@@ -0,0 +1,438 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class ZQ_Mars_T2_FrmStationTest
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.components = New System.ComponentModel.Container()
Me.SerialPort1 = New System.IO.Ports.SerialPort(Me.components)
Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
Me.timer_Rcvd_Timeout = New System.Windows.Forms.Timer(Me.components)
Me.StatusStrip1 = New System.Windows.Forms.StatusStrip()
Me.tss_CommPort = New System.Windows.Forms.ToolStripStatusLabel()
Me.timer_AutoFindCommPort = New System.Windows.Forms.Timer(Me.components)
Me.SplitContainer1 = New System.Windows.Forms.SplitContainer()
Me.SplitContainer2 = New System.Windows.Forms.SplitContainer()
Me.RichTextBox1 = New System.Windows.Forms.RichTextBox()
Me.SplitContainer3 = New System.Windows.Forms.SplitContainer()
Me.txt_BosCode = New System.Windows.Forms.TextBox()
Me.Label9 = New System.Windows.Forms.Label()
Me.OpenUart_btn = New System.Windows.Forms.Button()
Me.UartPort_cob = New System.Windows.Forms.ComboBox()
Me.Label6 = New System.Windows.Forms.Label()
Me.devbox = New System.Windows.Forms.TextBox()
Me.Label3 = New System.Windows.Forms.Label()
Me.colorbox = New System.Windows.Forms.TextBox()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label1 = New System.Windows.Forms.Label()
Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.txt_testnum = New System.Windows.Forms.TextBox()
Me.txt_LooadNum = New System.Windows.Forms.TextBox()
Me.Label5 = New System.Windows.Forms.Label()
Me.txt_UpNum = New System.Windows.Forms.TextBox()
Me.Label4 = New System.Windows.Forms.Label()
Me.lab_Processed_Unit_Cnt_ThisCycle = New System.Windows.Forms.Label()
Me.lab_Processed_Unit_Cnt = New System.Windows.Forms.Label()
Me.lab_imger = New System.Windows.Forms.Label()
Me.StatusStrip1.SuspendLayout()
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer1.Panel1.SuspendLayout()
Me.SplitContainer1.Panel2.SuspendLayout()
Me.SplitContainer1.SuspendLayout()
CType(Me.SplitContainer2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer2.Panel1.SuspendLayout()
Me.SplitContainer2.Panel2.SuspendLayout()
Me.SplitContainer2.SuspendLayout()
CType(Me.SplitContainer3, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer3.Panel1.SuspendLayout()
Me.SplitContainer3.Panel2.SuspendLayout()
Me.SplitContainer3.SuspendLayout()
Me.SuspendLayout()
'
'SerialPort1
'
'
'Timer1
'
Me.Timer1.Enabled = True
'
'timer_Rcvd_Timeout
'
Me.timer_Rcvd_Timeout.Enabled = True
Me.timer_Rcvd_Timeout.Interval = 1
'
'StatusStrip1
'
Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.tss_CommPort})
Me.StatusStrip1.Location = New System.Drawing.Point(0, 549)
Me.StatusStrip1.Name = "StatusStrip1"
Me.StatusStrip1.Size = New System.Drawing.Size(985, 22)
Me.StatusStrip1.TabIndex = 0
Me.StatusStrip1.Text = "StatusStrip1"
'
'tss_CommPort
'
Me.tss_CommPort.AutoSize = False
Me.tss_CommPort.Font = New System.Drawing.Font("微软雅黑", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.tss_CommPort.Name = "tss_CommPort"
Me.tss_CommPort.Size = New System.Drawing.Size(80, 17)
Me.tss_CommPort.Text = "COM1"
'
'timer_AutoFindCommPort
'
'
'SplitContainer1
'
Me.SplitContainer1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainer1.Location = New System.Drawing.Point(0, 0)
Me.SplitContainer1.Name = "SplitContainer1"
'
'SplitContainer1.Panel1
'
Me.SplitContainer1.Panel1.Controls.Add(Me.SplitContainer2)
'
'SplitContainer1.Panel2
'
Me.SplitContainer1.Panel2.Controls.Add(Me.SplitContainer3)
Me.SplitContainer1.Size = New System.Drawing.Size(985, 549)
Me.SplitContainer1.SplitterDistance = 325
Me.SplitContainer1.TabIndex = 1
'
'SplitContainer2
'
Me.SplitContainer2.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainer2.Location = New System.Drawing.Point(0, 0)
Me.SplitContainer2.Name = "SplitContainer2"
Me.SplitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal
'
'SplitContainer2.Panel1
'
Me.SplitContainer2.Panel1.Controls.Add(Me.lab_Processed_Unit_Cnt_ThisCycle)
Me.SplitContainer2.Panel1.Controls.Add(Me.lab_Processed_Unit_Cnt)
Me.SplitContainer2.Panel1.Controls.Add(Me.lab_imger)
'
'SplitContainer2.Panel2
'
Me.SplitContainer2.Panel2.Controls.Add(Me.RichTextBox1)
Me.SplitContainer2.Size = New System.Drawing.Size(325, 549)
Me.SplitContainer2.SplitterDistance = 228
Me.SplitContainer2.TabIndex = 0
'
'RichTextBox1
'
Me.RichTextBox1.Dock = System.Windows.Forms.DockStyle.Fill
Me.RichTextBox1.Location = New System.Drawing.Point(0, 0)
Me.RichTextBox1.Name = "RichTextBox1"
Me.RichTextBox1.Size = New System.Drawing.Size(325, 317)
Me.RichTextBox1.TabIndex = 2
Me.RichTextBox1.Text = ""
'
'SplitContainer3
'
Me.SplitContainer3.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainer3.Location = New System.Drawing.Point(0, 0)
Me.SplitContainer3.Name = "SplitContainer3"
Me.SplitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal
'
'SplitContainer3.Panel1
'
Me.SplitContainer3.Panel1.Controls.Add(Me.txt_BosCode)
Me.SplitContainer3.Panel1.Controls.Add(Me.Label9)
Me.SplitContainer3.Panel1.Controls.Add(Me.OpenUart_btn)
Me.SplitContainer3.Panel1.Controls.Add(Me.UartPort_cob)
Me.SplitContainer3.Panel1.Controls.Add(Me.Label6)
Me.SplitContainer3.Panel1.Controls.Add(Me.devbox)
Me.SplitContainer3.Panel1.Controls.Add(Me.Label3)
Me.SplitContainer3.Panel1.Controls.Add(Me.colorbox)
Me.SplitContainer3.Panel1.Controls.Add(Me.Label2)
Me.SplitContainer3.Panel1.Controls.Add(Me.Label1)
Me.SplitContainer3.Panel1.Controls.Add(Me.TextBox1)
'
'SplitContainer3.Panel2
'
Me.SplitContainer3.Panel2.Controls.Add(Me.txt_testnum)
Me.SplitContainer3.Panel2.Controls.Add(Me.txt_LooadNum)
Me.SplitContainer3.Panel2.Controls.Add(Me.Label5)
Me.SplitContainer3.Panel2.Controls.Add(Me.txt_UpNum)
Me.SplitContainer3.Panel2.Controls.Add(Me.Label4)
Me.SplitContainer3.Size = New System.Drawing.Size(656, 549)
Me.SplitContainer3.SplitterDistance = 346
Me.SplitContainer3.TabIndex = 0
'
'txt_BosCode
'
Me.txt_BosCode.Font = New System.Drawing.Font("宋体", 28.0!)
Me.txt_BosCode.Location = New System.Drawing.Point(192, 59)
Me.txt_BosCode.Name = "txt_BosCode"
Me.txt_BosCode.Size = New System.Drawing.Size(450, 50)
Me.txt_BosCode.TabIndex = 46
Me.txt_BosCode.Text = "CTHM08711382252604947"
'
'Label9
'
Me.Label9.AutoSize = True
Me.Label9.Font = New System.Drawing.Font("宋体", 20.0!)
Me.Label9.Location = New System.Drawing.Point(11, 71)
Me.Label9.Name = "Label9"
Me.Label9.Size = New System.Drawing.Size(188, 27)
Me.Label9.TabIndex = 45
Me.Label9.Text = "请输入箱体码:"
Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'OpenUart_btn
'
Me.OpenUart_btn.Location = New System.Drawing.Point(16, 3)
Me.OpenUart_btn.Name = "OpenUart_btn"
Me.OpenUart_btn.Size = New System.Drawing.Size(156, 47)
Me.OpenUart_btn.TabIndex = 43
Me.OpenUart_btn.Text = "打开串口"
Me.OpenUart_btn.UseVisualStyleBackColor = True
'
'UartPort_cob
'
Me.UartPort_cob.AllowDrop = True
Me.UartPort_cob.Font = New System.Drawing.Font("宋体", 25.0!)
Me.UartPort_cob.FormattingEnabled = True
Me.UartPort_cob.Location = New System.Drawing.Point(192, 3)
Me.UartPort_cob.Name = "UartPort_cob"
Me.UartPort_cob.Size = New System.Drawing.Size(450, 41)
Me.UartPort_cob.TabIndex = 44
'
'Label6
'
Me.Label6.AutoSize = True
Me.Label6.Font = New System.Drawing.Font("宋体", 20.0!)
Me.Label6.Location = New System.Drawing.Point(11, 297)
Me.Label6.Name = "Label6"
Me.Label6.Size = New System.Drawing.Size(161, 27)
Me.Label6.TabIndex = 42
Me.Label6.Text = "请确认称重:"
Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'devbox
'
Me.devbox.Font = New System.Drawing.Font("宋体", 28.0!)
Me.devbox.Location = New System.Drawing.Point(192, 220)
Me.devbox.Name = "devbox"
Me.devbox.ReadOnly = True
Me.devbox.Size = New System.Drawing.Size(450, 50)
Me.devbox.TabIndex = 36
Me.devbox.Text = "CTHM08711382252604947"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Font = New System.Drawing.Font("宋体", 20.0!)
Me.Label3.Location = New System.Drawing.Point(5, 232)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(191, 27)
Me.Label3.TabIndex = 35
Me.Label3.Text = "请确认DUT_SN:"
Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'colorbox
'
Me.colorbox.Font = New System.Drawing.Font("宋体", 28.0!)
Me.colorbox.Location = New System.Drawing.Point(192, 143)
Me.colorbox.Name = "colorbox"
Me.colorbox.Size = New System.Drawing.Size(450, 50)
Me.colorbox.TabIndex = 34
Me.colorbox.Text = "CTHM08711382252604947"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Font = New System.Drawing.Font("宋体", 20.0!)
Me.Label2.Location = New System.Drawing.Point(11, 155)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(188, 27)
Me.Label2.TabIndex = 33
Me.Label2.Text = "请输入彩盒码:"
Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(14, 32)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(83, 12)
Me.Label1.TabIndex = 32
Me.Label1.Text = "打印模板路径:"
Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight
Me.Label1.Visible = False
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(98, 29)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.ReadOnly = True
Me.TextBox1.Size = New System.Drawing.Size(547, 21)
Me.TextBox1.TabIndex = 31
Me.TextBox1.Visible = False
'
'txt_testnum
'
Me.txt_testnum.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txt_testnum.Font = New System.Drawing.Font("宋体", 27.0!)
Me.txt_testnum.Location = New System.Drawing.Point(244, 12)
Me.txt_testnum.Name = "txt_testnum"
Me.txt_testnum.ReadOnly = True
Me.txt_testnum.Size = New System.Drawing.Size(183, 49)
Me.txt_testnum.TabIndex = 40
Me.txt_testnum.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
'
'txt_LooadNum
'
Me.txt_LooadNum.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txt_LooadNum.Font = New System.Drawing.Font("宋体", 27.0!)
Me.txt_LooadNum.Location = New System.Drawing.Point(13, 12)
Me.txt_LooadNum.Name = "txt_LooadNum"
Me.txt_LooadNum.ReadOnly = True
Me.txt_LooadNum.Size = New System.Drawing.Size(183, 49)
Me.txt_LooadNum.TabIndex = 37
Me.txt_LooadNum.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
'
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.Font = New System.Drawing.Font("宋体", 27.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label5.Location = New System.Drawing.Point(202, 18)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(36, 37)
Me.Label5.TabIndex = 38
Me.Label5.Text = "<"
'
'txt_UpNum
'
Me.txt_UpNum.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.txt_UpNum.Font = New System.Drawing.Font("宋体", 27.0!)
Me.txt_UpNum.Location = New System.Drawing.Point(466, 12)
Me.txt_UpNum.Name = "txt_UpNum"
Me.txt_UpNum.ReadOnly = True
Me.txt_UpNum.Size = New System.Drawing.Size(176, 49)
Me.txt_UpNum.TabIndex = 41
Me.txt_UpNum.TextAlign = System.Windows.Forms.HorizontalAlignment.Center
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.Font = New System.Drawing.Font("宋体", 27.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte))
Me.Label4.Location = New System.Drawing.Point(433, 18)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(36, 37)
Me.Label4.TabIndex = 39
Me.Label4.Text = ">"
'
'lab_Processed_Unit_Cnt_ThisCycle
'
Me.lab_Processed_Unit_Cnt_ThisCycle.BackColor = System.Drawing.SystemColors.ActiveCaptionText
Me.lab_Processed_Unit_Cnt_ThisCycle.Dock = System.Windows.Forms.DockStyle.Right
Me.lab_Processed_Unit_Cnt_ThisCycle.Font = New System.Drawing.Font("Calibri", 20.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lab_Processed_Unit_Cnt_ThisCycle.ForeColor = System.Drawing.Color.White
Me.lab_Processed_Unit_Cnt_ThisCycle.Location = New System.Drawing.Point(161, 173)
Me.lab_Processed_Unit_Cnt_ThisCycle.Name = "lab_Processed_Unit_Cnt_ThisCycle"
Me.lab_Processed_Unit_Cnt_ThisCycle.Size = New System.Drawing.Size(164, 55)
Me.lab_Processed_Unit_Cnt_ThisCycle.TabIndex = 35
Me.lab_Processed_Unit_Cnt_ThisCycle.Text = "0"
Me.lab_Processed_Unit_Cnt_ThisCycle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'lab_Processed_Unit_Cnt
'
Me.lab_Processed_Unit_Cnt.BackColor = System.Drawing.SystemColors.ActiveCaptionText
Me.lab_Processed_Unit_Cnt.Dock = System.Windows.Forms.DockStyle.Left
Me.lab_Processed_Unit_Cnt.Font = New System.Drawing.Font("Calibri", 20.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lab_Processed_Unit_Cnt.ForeColor = System.Drawing.Color.White
Me.lab_Processed_Unit_Cnt.Location = New System.Drawing.Point(0, 173)
Me.lab_Processed_Unit_Cnt.Name = "lab_Processed_Unit_Cnt"
Me.lab_Processed_Unit_Cnt.Size = New System.Drawing.Size(163, 55)
Me.lab_Processed_Unit_Cnt.TabIndex = 34
Me.lab_Processed_Unit_Cnt.Tag = "本次生产总统计数量连击5次清零"
Me.lab_Processed_Unit_Cnt.Text = "0"
Me.lab_Processed_Unit_Cnt.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'lab_imger
'
Me.lab_imger.Dock = System.Windows.Forms.DockStyle.Top
Me.lab_imger.Location = New System.Drawing.Point(0, 0)
Me.lab_imger.Name = "lab_imger"
Me.lab_imger.Size = New System.Drawing.Size(325, 173)
Me.lab_imger.TabIndex = 33
'
'ZQ_Mars_T2_FrmStationTest
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 12.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(985, 571)
Me.Controls.Add(Me.SplitContainer1)
Me.Controls.Add(Me.StatusStrip1)
Me.Name = "ZQ_Mars_T2_FrmStationTest"
Me.Text = "ZQ_Mars_P2_FrmStationTest"
Me.StatusStrip1.ResumeLayout(False)
Me.StatusStrip1.PerformLayout()
Me.SplitContainer1.Panel1.ResumeLayout(False)
Me.SplitContainer1.Panel2.ResumeLayout(False)
CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainer1.ResumeLayout(False)
Me.SplitContainer2.Panel1.ResumeLayout(False)
Me.SplitContainer2.Panel2.ResumeLayout(False)
CType(Me.SplitContainer2, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainer2.ResumeLayout(False)
Me.SplitContainer3.Panel1.ResumeLayout(False)
Me.SplitContainer3.Panel1.PerformLayout()
Me.SplitContainer3.Panel2.ResumeLayout(False)
Me.SplitContainer3.Panel2.PerformLayout()
CType(Me.SplitContainer3, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainer3.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents SerialPort1 As IO.Ports.SerialPort
Friend WithEvents Timer1 As Timer
Friend WithEvents timer_Rcvd_Timeout As Timer
Friend WithEvents StatusStrip1 As StatusStrip
Friend WithEvents tss_CommPort As ToolStripStatusLabel
Friend WithEvents timer_AutoFindCommPort As Timer
Friend WithEvents SplitContainer1 As SplitContainer
Friend WithEvents SplitContainer2 As SplitContainer
Friend WithEvents RichTextBox1 As RichTextBox
Friend WithEvents SplitContainer3 As SplitContainer
Friend WithEvents OpenUart_btn As Button
Friend WithEvents UartPort_cob As ComboBox
Friend WithEvents Label6 As Label
Friend WithEvents devbox As TextBox
Friend WithEvents Label3 As Label
Friend WithEvents colorbox As TextBox
Friend WithEvents Label2 As Label
Friend WithEvents Label1 As Label
Friend WithEvents TextBox1 As TextBox
Friend WithEvents txt_testnum As TextBox
Friend WithEvents txt_LooadNum As TextBox
Friend WithEvents Label5 As Label
Friend WithEvents txt_UpNum As TextBox
Friend WithEvents Label4 As Label
Friend WithEvents txt_BosCode As TextBox
Friend WithEvents Label9 As Label
Friend WithEvents lab_Processed_Unit_Cnt_ThisCycle As Label
Friend WithEvents lab_Processed_Unit_Cnt As Label
Friend WithEvents lab_imger As Label
End Class

View File

@@ -0,0 +1,138 @@
<?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="SerialPort1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="Timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>133, 17</value>
</metadata>
<metadata name="timer_Rcvd_Timeout.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>225, 17</value>
</metadata>
<metadata name="StatusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>396, 17</value>
</metadata>
<metadata name="timer_AutoFindCommPort.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>519, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>105</value>
</metadata>
</root>

View File

@@ -0,0 +1,798 @@
Imports System.IO
Imports System.IO.Ports
Imports System.Net
Imports System.Text
Imports Newtonsoft.Json
Imports UTS_Core.DebugLog
Imports UTS_Core.UTSModule
Imports UTS_Core.UTSModule.Station
Imports UTS_Core.UTSModule.Test
Imports UTS_Core.UTSModule.Test.Command
Imports UTS_Core.UTSModule.Test.StatusMonitor
Public Class ZQ_Mars_T2_FrmStationTest
Implements IProcessStation
Private _utsApp As UtsAppForm
Private _stationPlan As StationPackagePlan
Private PrintfNum As Integer = 0
Private Printfcnt As Integer = 0
#Region "UTS Produce"
''' <summary>
''' 窗口加载事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub ZQ_Mars_P2_FrmStationTest_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' lp_label.BackColor = Color.Transparent
ApplicationLog.WriteInfoLog($"测试页面加载中。")
If InitializeUtsApp() = False Then Return
'InitializeForm()
'timer_AutoFindCommPort.Enabled = True
'timer_AutoFindCommPort.Start()
End Sub
''' <summary>
''' 初始化App
''' </summary>
''' <returns></returns>
Private Function InitializeUtsApp() As Boolean
_utsApp = UtsAppForm.CreateSingleton()
_utsApp.AddStatisticsObserver(CType(Me, IProcessStation))
Try
If _utsApp.IsInitialized = False Then
_utsApp.Initialize(ProcessStation.StationTypeEnum.Package) 'Todo:可根据需要限定可选站位
End If
Catch ex As Exception
ApplicationLog.WriteErrorLog($"初始化窗体失败,原因:{ex.Message}!")
MsgBox($"初始化窗体失败,原因:{ex.Message}")
Close()
Return False
End Try
Return True
End Function
''' <summary>
''' 站位改变事件
''' </summary>
Public Sub Station_Changed() Implements IProcessStation.StationChanged
'Todo:站位变化代码
ApplicationLog.WriteInfoLog($"测试页面站位变更中PN{_utsApp.ProcessStation.ParentProject.Name} - SN:{_utsApp.ProcessStation.Name} - TP:{_utsApp.ProcessStation.Packet.Name}!")
_stationPlan = CType(_utsApp.ProcessStation.Packet.StationPlan, StationPackagePlan)
'清除表格数据
'InitBarcodeGrid()
txt_LooadNum.Text = _stationPlan.CompanyName
txt_UpNum.Text = _stationPlan.BoxMumEditKey
ApplicationLog.WriteInfoLog($"测试页面站位变更完成!")
End Sub
''' <summary>
''' 加载窗体
''' </summary>
''' <param name="parentControl"></param>
Public Sub ShowForm(parentControl As Control)
FormBorderStyle = FormBorderStyle.None
TopLevel = False
Dock = DockStyle.Fill
Parent = parentControl
Show()
End Sub
Private Sub TheTestResults(dutSn As String, ispass As TestResult.TestResultEnum, datenow As Date, Optional FailMsg As RowNode = Nothing, Optional Customfield As Dictionary(Of String String) = Nothing)
'重置信息
_utsApp.TestResult.ResetTestResult()
'产线索引
_utsApp.TestResult.ProductionLineID = -1
'测试开始时间
_utsApp.TestResult.StartTime = Now
_utsApp.TestResult.DUT_SN = dutSn
_utsApp.TestResult.TestResult = ispass
_utsApp.TestResult.UsedTime = Now - datenow
If Not IsNothing(FailMsg) Then
_utsApp.TestResult.FailSteps.Add(FailMsg)
End If
If Not IsNothing(Customfield) Then
For indexptr As Integer = 0 To Customfield.Count - 1
_utsApp.TestResult.AddCustomRecord($"{Customfield.Keys(indexptr)}", $"{Customfield.Values(indexptr)}")
Next
End If
Try
'提交测试记录,缺省参数默认为FalseTrue则测试记录唯一,覆盖相同条码记录
_utsApp.CommitTestResult(True)
If ispass = TestResult.TestResultEnum.Pass Then
TestStatusMonitor.TestStatus = StatusMonitor.TestStatusMonitor.TestStatusEnum.TestPass
Else
TestStatusMonitor.TestStatus = TestStatusMonitor.TestStatusEnum.TestFail
End If
TestStatusMonitor.TestStatus = TestStatusMonitor.TestStatusEnum.TestPass
Catch ex As Exception
ApplicationLog.WriteErrorLog($"写入称量数据失败:{ex.Message}")
MsgBox($"写入称量数据失败:{ex.Message}")
'LblResult.Text = "FAIL"
'LblResult.ForeColor = Color.Red
TestStatusMonitor.TestStatus = TestStatusMonitor.TestStatusEnum.TestFail
Return
End Try
End Sub
#End Region
#Region "SerialPort"
''' <summary>
''' 电子秤数据结构体
''' </summary>
Private Structure ScaleData_Strut
Dim isStable As ScaleIsStable_Enum '是否稳定
Dim weight_g As Double '重量,以 g 为单位
Dim weight_unit As ScaleUnit_Enum '重量单位
Dim isDataReady As Boolean '数据是否可用
Dim updateCnt As ULong '更新计数
End Structure
''' <summary>
''' 电子秤读回数据是否稳定枚举
''' </summary>
Private Enum ScaleIsStable_Enum
stable
unstable
End Enum
''' <summary>
''' 电子秤读回数据单位枚举
''' </summary>
Private Enum ScaleUnit_Enum
g
kg
End Enum
''' <summary>
''' 串口打开关闭状态枚举
''' </summary>
Private Enum OpenClose_Enum
Close
Open
End Enum
''' <summary>
''' 自动重连状态机枚举
''' </summary>
Private Enum AutoConnectComportStatus_Enum
Unknow
Connected
Disconnected
reConnecting
End Enum
Dim g_ScaleData As ScaleData_Strut '电子秤数据
Dim g_strRcvd As String = "" '当前串口接收到的数据
Dim g_isScal_Connected As Boolean = False '电子秤是连接到主机
Dim g_LastRcvdData_TimePoint As DateTime
Dim g_LastRcvdDataCnt As ULong '保存上一次串口数据接收计数,用于判断是否收到新的串口数据
Dim g_NoRcvdData_Cnt As Integer = 0 '未收到串口数据计数每100mS更新一次
Dim g_LstCommPort As List(Of String) = New List(Of String) '用于保存串口列表
Dim g_port_pointer_for_AutoConnect As Integer = 0 '在自动连接时,逐个串口尝试连接
Dim g_Current_AutoConnectStatus As AutoConnectComportStatus_Enum = AutoConnectComportStatus_Enum.Unknow '当前自动连接状态
''' <summary>
''' 100mS 时钟,用于维护串口连接状态
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub timer_AutoFindCommPort_Tick(sender As Object, e As EventArgs) Handles timer_AutoFindCommPort.Tick
Select Case g_Current_AutoConnectStatus
Case AutoConnectComportStatus_Enum.Unknow '未知连接状态
If g_isScal_Connected Then
g_Current_AutoConnectStatus = AutoConnectComportStatus_Enum.Connected '连接状态
Else
Dim tmpCommPortCnt As Integer = UpdateCommportList(g_LstCommPort) '重新刷新可用串口列表’
g_Current_AutoConnectStatus = AutoConnectComportStatus_Enum.reConnecting '重连状态
End If
Case AutoConnectComportStatus_Enum.Connected '连接状态
If g_ScaleData.updateCnt = g_LastRcvdDataCnt Then '判断是否收到新数据
g_NoRcvdData_Cnt += 1
If g_NoRcvdData_Cnt >= 10 Then '连续1000mS没有收到新数据
g_ScaleData.isDataReady = False '电子秤数据不可用
g_isScal_Connected = False '复位连接状态
tss_CommPort.BackColor = Color.Crimson
If SerialPort1.IsOpen Then SerialPort1.Close() '关闭当前串口’
Dim tmpCommPortCnt As Integer = UpdateCommportList(g_LstCommPort) '重新刷新可用串口列表’
g_port_pointer_for_AutoConnect = 0 '寻找串口指针
g_Current_AutoConnectStatus = AutoConnectComportStatus_Enum.Disconnected '断开连接状态
End If
Else
'两次计数不同说明收到新数据
If SerialPort1.IsOpen Then tss_CommPort.Text = SerialPort1.PortName
tss_CommPort.BackColor = Color.LightGreen
g_LastRcvdDataCnt = g_ScaleData.updateCnt
g_NoRcvdData_Cnt = 0
End If
Case AutoConnectComportStatus_Enum.Disconnected '断开连接状态
Dim tmpLstCommportCnt As Integer = g_LstCommPort.Count
If tmpLstCommportCnt > 0 And g_port_pointer_for_AutoConnect <= tmpLstCommportCnt - 1 Then
OpenClose_CommPort(g_LstCommPort(g_port_pointer_for_AutoConnect), OpenClose_Enum.Open)
If SerialPort1.IsOpen Then
tss_CommPort.Text = SerialPort1.PortName
tss_CommPort.BackColor = Color.Khaki
End If
g_NoRcvdData_Cnt = 0
g_Current_AutoConnectStatus = AutoConnectComportStatus_Enum.reConnecting
End If
Case AutoConnectComportStatus_Enum.reConnecting '重连中
If g_ScaleData.updateCnt = g_LastRcvdDataCnt Then '判断是否收到新数据
g_NoRcvdData_Cnt += 1
If g_NoRcvdData_Cnt >= 10 Then '连续1000mS没有收到新数据
If g_port_pointer_for_AutoConnect < g_LstCommPort.Count - 1 Then
g_port_pointer_for_AutoConnect += 1
Else
Dim tmpCommPortCnt As Integer = UpdateCommportList(g_LstCommPort) '重新刷新可用串口列表’
g_port_pointer_for_AutoConnect = 0 '寻找串口指针
End If
g_Current_AutoConnectStatus = AutoConnectComportStatus_Enum.Disconnected '断开连接状态
End If
Else
If SerialPort1.IsOpen Then tss_CommPort.Text = SerialPort1.PortName
tss_CommPort.BackColor = Color.LightGreen
g_LastRcvdDataCnt = g_ScaleData.updateCnt
g_NoRcvdData_Cnt = 0
g_Current_AutoConnectStatus = AutoConnectComportStatus_Enum.Connected
End If
Case Else
g_Current_AutoConnectStatus = AutoConnectComportStatus_Enum.Unknow
End Select
End Sub
''' <summary>
''' 更新可用串口列表
''' </summary>
''' <param name="lstPortName">返回串口列表</param>
''' <returns>返回寻找可用串口数量</returns>
Private Function UpdateCommportList(ByRef lstPortName As List(Of String)) As Integer
lstPortName.Clear()
Dim portNames As String() = Ports.SerialPort.GetPortNames
lstPortName.AddRangeportNames
Return lstPortName.Count
End Function
''' <summary>
''' 打开或关闭串口
''' </summary>
''' <param name="comportName"> 串口名称</param>
''' <param name="openClose">打开或关闭串口</param>
''' <returns>操作成功返回true否则返回false </returns>
Private Function OpenClose_CommPort(comportName As String, openClose As OpenClose_Enum) As Boolean
'关闭串口
If SerialPort1.IsOpen = True Then
SerialPort1.Close()
End If
If openClose = OpenClose_Enum.Close Then
Return Not SerialPort1.IsOpen
Else
'打开串口
SerialPort1.PortName = comportName
SerialPort1.Open()
Return SerialPort1.IsOpen
End If
End Function
''' <summary>
''' 串口接收事件
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
'收到数据
Dim rcvd As String = ""
Dim bufflen As Integer = SerialPort1.BytesToRead
If SerialPort1.BytesToRead > 0 Then
Dim therecvBuffer(bufflen) As Byte
SerialPort1.Read(therecvBuffer, 0, bufflen)
Dim readStr As String = Encoding.GetEncoding("GBK").GetString(therecvBuffer)
If readStr.Equals(vbNullChar) Then Return
rcvd = rcvd & readStr
rcvd = rcvd.ReplacevbNullChar, ""
g_strRcvd = g_strRcvd & readStr
g_strRcvd = g_strRcvd.ReplacevbNullChar, ""
g_LastRcvdData_TimePoint = DateTime.Now
End If
'ST,NT,+ 197.9 g
'US,NT,+ 197.4 g
'US,NT,+ 197.4 g
'收到换行符号或长度大于=18
If rcvd.Length < 1 Then
Return
End If
Dim listr As String = rcvd.Substring(rcvd.Length - 2)
If listr.Equals(vbCrLf) Then
listr = rcvd.Trim
Console.WriteLine($"listr:{listr}")
If listr.Length >= 10 Then
If listr.Length >= 10 Then
'判断稳定状态
' Dim tmpStableStr As String = Microsoft.VisualBasic.Mid(listr, 6, 2).Trim
Dim tmpUnit() As String = listr.Split(CChar("+"))
If tmpUnit.Length <> 2 Then
Return
End If
Dim tmpUnit1() As String = tmpUnit1.Trim.Split(CChar(" "))
If tmpUnit.Length <> 2 Then
Return
End If
If tmpUnit(0).Contains("ST") Then
'稳定
g_ScaleData.isStable = ScaleIsStable_Enum.stable
g_ScaleData.isDataReady = False
ElseIf tmpUnit(0).Contains("US") Then
'不稳定
g_ScaleData.isStable = ScaleIsStable_Enum.unstable
g_ScaleData.isDataReady = False
Else
'非法数据
g_strRcvd = ""
Return
End If
'判断单位
If tmpUnit1(1).Trim.Equals("kg") Then
g_ScaleData.weight_unit = ScaleUnit_Enum.g
ElseIf tmpUnit1(1).Trim.Equals("g") Then
g_ScaleData.weight_unit = ScaleUnit_Enum.kg
Else
'非法数据
g_strRcvd = ""
Return
End If
'计算重量
If Double.TryParse(tmpUnit1(0).Trim, g_ScaleData.weight_g) Then
If g_ScaleData.weight_unit = ScaleUnit_Enum.kg Then
g_ScaleData.weight_g = g_ScaleData.weight_g * 1000
End If
If g_ScaleData.weight_g > 5 Then
If g_ScaleData.isStable = ScaleIsStable_Enum.stable Then
loadedWeight(txt_testnum, g_ScaleData.weight_g.ToString, Color.Green)
ElseIf g_ScaleData.isStable = ScaleIsStable_Enum.unstable Then
loadedWeight(txt_testnum, g_ScaleData.weight_g.ToString, Color.Blue)
Else
loadedWeight(txt_testnum, "----", Color.Gray)
End If
Else
loadedWeight(txt_testnum, "----", Color.Gray)
End If
Else
'非法数据
g_strRcvd = ""
Return
End If
g_ScaleData.updateCnt = CULng(g_ScaleData.updateCnt + 1) '有效计数 +1
g_ScaleData.isDataReady = True '数据就绪
g_isScal_Connected = True '电子秤已连接
End If
g_strRcvd = ""
End If
End If
End Sub
Delegate Sub theSetopenUartshow(btn As TextBox txt As String bcolor As Color)
Public Sub loadedWeight(testnum As TextBox txt As String txtcolor As Color)
If testnum.InvokeRequired Then
Dim dev As New theSetopenUartshow(AddressOf loadedWeight)
testnum.Invoke(dev, New Object() {testnum, txt, txtcolor})
Else
testnum.Text = txt
testnum.ReadOnly = False
testnum.ForeColor = txtcolor
End If
End Sub
''' <summary>
''' 串口接收超时计数每1mS中断判断一次超时大于80mS就将缓冲区数据抛弃
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
Private Sub timer_Rcvd_Timeout_Tick(sender As Object, e As EventArgs) Handles timer_Rcvd_Timeout.Tick
'ticks 1unit = 100nS
Dim rcvTimespan As Long = DateTime.Now.Ticks - g_LastRcvdData_TimePoint.Ticks
If rcvTimespan >= 80 * 10000 Then
g_strRcvd = ""
End If
End Sub
#End Region
#Region "Web 数据接口"
Public Function AccessApi2dbName As String, theKey As String dic As Dictionary(Of String, String) As JsonPtr
Dim jsonString As String = String.Empty
Dim ptr As String = $"Pwd=actop00803&DBName={dbName}&Key={theKey}&JsonData={JsonConvert.SerializeObject(dic)}"
'/http://uts-data.com/CommonApi/Combind_Sn_Info? Pwd%3D%26*$@%23235%26DBName%3Duts_zongqing%26Key%3DBarcode%26Barcode%3D1
Try
jsonString = PostData("http://uts-data.com/CommonApi/Combind_Sn_Info", ptr)
Console.WriteLine(jsonString)
If jsonString = Nothing Then
Return Nothing
End If
Dim login As JsonPtr = JsonConvert.DeserializeObject(Of JsonPtr)(jsonString)
If login.Message.Contains"成功" Then
Return login
Else
Return Nothing
End If
Catch ex As Exception
MsgBox($"{ex.Message}!盒码获取失败请联系管理员")
Return Nothing
End Try
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 Region
#Region "UIEven"
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs)
RichTextBox1.SelectionStart = RichTextBox1.TextLength
RichTextBox1.ScrollToCaret()
End Sub
Delegate Sub IPSetRichTextBox1Text(TextBox1 As RichTextBox, text As String txtcolor As Color)
Private Sub SetRichTextBox1Text(TextBox1 As RichTextBox, text As String txtcolor As Color)
If InvokeRequired = True Then
Dim dev As New IPSetRichTextBox1Text(AddressOf SetRichTextBox1Text)
Me.Invoke(dev, New Object() {TextBox1, text, txtcolor})
Else
With TextBox1
.SuspendLayout()
.SelectionColor = txtcolor
.AppendText(text & vbCrLf)
.ResumeLayout(False)
End With
End If
End Sub
Public Function ObtainWeighingValue() As String
Dim Whileint As Integer = 0
While Whileint < 200
If txt_LooadNum.ForeColor = Color.Green Then
Return txt_LooadNum.Text
Exit While
Else
Whileint = Whileint + 1
delayms100
End If
End While
If txt_LooadNum.ForeColor = Color.Green Then
Else
Return "False"
End If
End Function
Private Sub TextBox2_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles colorbox.PreviewKeyDown
Dim buff() As String
Dim Customfield As New Dictionary(Of String String)
Dim ColorBox As String = ""
Dim node As New RowNode
Dim Dut_SN As String = ""
Dim datenow As Date = Now
Dim exepath As String = "C:\Debug\AUTS_Ext_BarTenderConsole.exe"
If e.KeyData = Keys.Enter Then
If IsBoxReady Then
If Entering_Cnt > 10 Then
MsgBox("箱体已满载,请更换箱体码再进行录入。")
Me.txt_BosCode.Focus()
Me.txt_BosCode.SelectAll()
Me.txt_BosCode.Enabled = True
Else
Dim dic As New Dictionary(Of String, String
Dim weightval As String = ObtainWeighingValue()
If weightval.Equals("False") Then
dic.Add("Mars_UnitWeigth" txt_testnum.Text) '称重值
Else
dic.Add("Mars_UnitWeigth" weightval) '称重值
End If
dic.Add("Mars_ColorBox_BarCode" Me.colorbox.Text)
Dim apidata As JsonPtr = AccessApi2("uts_zongqing", "Mars_ColorBox_BarCode" dic)
If Not IsNothingapidata Then
Dut_SN = apidata.Data.Barcode.Trim
devbox.Text = apidata.Data.Barcode
Customfield.Clear()
Customfield.Add("MacCode", apidata.Data.Mars_MacCodeP)
Customfield.Add("SnCode", Dut_SN)
Customfield.Add("ColorBoxCode", Me.colorbox.Text.Trim)
Customfield.Add("label_string", Dut_SN & "/" & apidata.Data.Mars_MacCodeP)
Customfield.Add("mars_OutBoxCode", txt_BosCode.Text.Trim)
Dim testresuli As String
If weightval.Equals("False") Then
Customfield.Add("Mars_UnitWeigth", txt_testnum.Text)
testresuli = CopmareTheSize(txt_LooadNum.Text, txt_testnum.Text, txt_UpNum.Text) '比较范围
Else
Customfield.Add("Mars_UnitWeigth", weightval)
testresuli = CopmareTheSize(txt_LooadNum.Text, weightval, txt_UpNum.Text) '比较范围
End If
If testresuli.Equals("False") Then
node.RowListIndex = 1
node.Description = "称重不在预设阈值内!"
node.TestReturn = New TestCommandReturn
node.TestReturn.LowerLimit = ""
node.TestReturn.UpperLimit = ""
node.TestReturn.RecordValue = "Fail"
TheTestResults("", TestResult.TestResultEnum.Fail, datenow, node, Customfield)
SetRichTextBox1Text(RichTextBox1, "称重不在预设阈值内!" & vbCrLf, Color.Red)
Else
TheTestResults(Dut_SN, TestResult.TestResultEnum.Pass, datenow, Nothing, Customfield)
PrintfNum = PrintfNum + 1
'Label7.Text = PrintfNum.ToString & "个"
' lab_test_num.Text = PrintfNum.ToString & "个"
Printfcnt = My.Settings.P2_cnt + PrintfNum
'lab_Test_cnt.Text = Printfcnt.ToString & "个"
My.Settings.Save()
SetRichTextBox1Text(RichTextBox1, "数据录入成功!" & vbCrLf, Color.Blue)
End If
Me.colorbox.Focus()
Me.colorbox.SelectAll()
Else
node.RowListIndex = 1
node.Description = "获取彩盒码关联条码错误!"
node.TestReturn.LowerLimit = ""
node.TestReturn.UpperLimit = ""
node.TestReturn.RecordValue = "Fail"
TheTestResults(Dut_SN, TestResult.TestResultEnum.Fail, datenow, node)
SetRichTextBox1Text(RichTextBox1, "获取彩盒码关联条码错误!" & vbCrLf, Color.Red)
End If
End If
Else
MsgBox("箱体码未就绪,请先扫箱体码再进行录入。")
Me.txt_BosCode.Focus()
Me.txt_BosCode.SelectAll()
Me.txt_BosCode.Enabled = True
End If
End If
End Sub
Public Function CopmareTheSize(loadint As String, numint As String, upint As String) As String
Dim loadnum As Integer = 0
Dim upnum As Integer = 0
Dim connum As Integer = 0
If Integer.TryParse(loadint, loadnum) AndAlso Integer.TryParse(numint, connum) AndAlso Integer.TryParse(upint, upnum) Then
If loadnum < connum AndAlso connum < upnum Then
Return CStr(connum)
Else
Return "False"
End If
Else
Return "False"
End If
End Function
Public Sub delayms(ms As Integer)
Dim start As Integer = Environment.TickCount
While (Math.Abs(Environment.TickCount - start) < ms)
Application.DoEvents()
End While
End Sub
Private Sub OpenUart_btn_Click(sender As Object, e As EventArgs) Handles OpenUart_btn.Click
Dim Btn As Button = CType(sender, Button)
If IsNothing(UartPort_cob) OrElse String.IsNullOrEmpty(UartPort_cob.Text) Then Return
SerialPortCommSwitch(SerialPort1, UartPort_cob.Text, Btn)
End Sub
Private Sub SerialPortCommSwitch(Serial As IO.Ports.SerialPort, portName As String, btn As Button)
If Serial.IsOpen Then
Serial.Close()
btn.Text = "打开串口"
btn.BackColor = Color.LightGray
btn.Enabled = True
Else
If String.IsNullOrEmpty(portName) Then
MsgBox("串口为空,请选择串口")
Return
End If
ConfigSerialPort(Serial, portName)
Try
Serial.Open()
Catch ex As Exception
MsgBox($"串口打开失败,详情:{ex.Message}")
Serial.Close()
Return
End Try
'SerialPort1.Close()
btn.Text = "关闭串口"
btn.BackColor = Color.SlateGray
btn.Enabled = True
End If
End Sub
Public Sub ConfigSerialPort(Serial As IO.Ports.SerialPort, portName As String)
With Serial
.PortName = portName '串口名
.BaudRate = 9600 ' _BaudRate '波特率
.DataBits = 8 '数据位
.StopBits = Ports.StopBits.One '停止位
.Parity = Ports.Parity.None '偶校验
.RtsEnable = True
.ReceivedBytesThreshold = 1
End With
End Sub
Private Sub UartPort_cob_DropDown(sender As Object, e As EventArgs) Handles UartPort_cob.DropDown
Dim portNames As String() = System.IO.Ports.SerialPort.GetPortNames '获得可用串口
Array.Sort(portNames)
UartPort_cob.Items.Clear()
UartPort_cob.Items.AddRange(portNames)
If Not SerialPort1.IsOpen Then
UartPort_cob.SelectedIndex = 0
End If
End Sub
Public IsBoxReady As Boolean = False
Public Entering_Cnt As Integer = 0
Private Sub txt_BosCode_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles txt_BosCode.PreviewKeyDown
If e.KeyData = Keys.Enter Then
IsBoxReady = True
Entering_Cnt = 0
Me.txt_BosCode.Enabled = False
End If
End Sub
#End Region
#Region "测试流程"
#End Region
End Class
Public Class JsonPtr
Public Data As jsonrusil
Public Message As String
End Class
Public Class jsonrusil
Public ID As String
Public ProjectID As String
Public Barcode As String
Public ImportDateTime As Date
Public UpdateTime As Date
Public Mars_ColorBox_BarCode As String
Public Mars_OutBoxCode As String
Public Mars_MacCodeP As String
Public Mars_UnitWeigth As String
End Class