Compare commits
5 Commits
82e4a55f8d
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b707eee6ea | ||
|
|
9887cc7540 | ||
|
|
c3889b9f0a | ||
|
|
dc66158497 | ||
|
|
3eac3927f8 |
@@ -59,11 +59,10 @@ namespace Project
|
||||
PUB.flag.set(eVarBool.FG_RDY_PORT_PC, false, "SW_START");
|
||||
PUB.flag.set(eVarBool.FG_RDY_PORT_PR, false, "SW_START");
|
||||
|
||||
//얼라인 상태를 모두 초기화 한다
|
||||
//loader1.arVar_Port.ToList().ForEach(t => t.AlignOK = 0);
|
||||
VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] = false;
|
||||
|
||||
//언로더 체크작업은 항상 다시 시작한다
|
||||
if (PUB.Result.UnloaderSeq > 1) PUB.Result.UnloaderSeq = 1;
|
||||
//언로더 체크작업은 항상 다시 시작한다
|
||||
if (PUB.Result.UnloaderSeq > 1) PUB.Result.UnloaderSeq = 1;
|
||||
|
||||
//팝업메세지가 사라지도록 한다
|
||||
PUB.popup.needClose = true;
|
||||
|
||||
@@ -463,10 +463,7 @@ namespace Project
|
||||
PRE_USE_REELID_R,
|
||||
|
||||
NEED_JOBCANCEL,
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LCONVER_REEL_DECTECT_ALL =150,
|
||||
RCONVER_REEL_DECTECT_ALL,
|
||||
LCONVER_REEL_DECTECT_IN,
|
||||
@@ -480,8 +477,6 @@ namespace Project
|
||||
NOBYPASSSID,
|
||||
|
||||
CONFIG_KEYENCE,
|
||||
|
||||
|
||||
PRINTER_LPRINTER_NOUP,
|
||||
PRINTER_RPRINTER_NOUP,
|
||||
NOECSDATA,
|
||||
@@ -494,6 +489,7 @@ namespace Project
|
||||
INBOUNDWEBAPIERROR,
|
||||
SIDINFORDUP,
|
||||
NOECSDATAACTIVE,
|
||||
NOTSELECTMULTISID,
|
||||
}
|
||||
|
||||
public enum eNextStep : byte
|
||||
|
||||
52
Handler/Project/Dialog/fSelectJob.Designer.cs
generated
@@ -92,6 +92,8 @@
|
||||
this.chkInfoApplyCust = new System.Windows.Forms.CheckBox();
|
||||
this.chkInfoApplyPart = new System.Windows.Forms.CheckBox();
|
||||
this.grpApplyWMSinfo = new System.Windows.Forms.GroupBox();
|
||||
this.checkBox2 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox36 = new System.Windows.Forms.CheckBox();
|
||||
this.chkWMSApplyBatch = new System.Windows.Forms.CheckBox();
|
||||
this.label22 = new System.Windows.Forms.Label();
|
||||
@@ -110,8 +112,6 @@
|
||||
this.btCancle = new arCtl.arLabel();
|
||||
this.dataSet11 = new Project.DataSet1();
|
||||
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox2 = new System.Windows.Forms.CheckBox();
|
||||
this.panel2.SuspendLayout();
|
||||
this.panel5.SuspendLayout();
|
||||
this.tabControl1.SuspendLayout();
|
||||
@@ -992,6 +992,30 @@
|
||||
this.grpApplyWMSinfo.TabStop = false;
|
||||
this.grpApplyWMSinfo.Text = "WMS Information Application";
|
||||
//
|
||||
// checkBox2
|
||||
//
|
||||
this.checkBox2.AutoSize = true;
|
||||
this.checkBox2.ForeColor = System.Drawing.Color.Black;
|
||||
this.checkBox2.Location = new System.Drawing.Point(431, 24);
|
||||
this.checkBox2.Name = "checkBox2";
|
||||
this.checkBox2.Size = new System.Drawing.Size(92, 23);
|
||||
this.checkBox2.TabIndex = 39;
|
||||
this.checkBox2.Tag = "13";
|
||||
this.checkBox2.Text = "MFG Date";
|
||||
this.checkBox2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.ForeColor = System.Drawing.Color.Blue;
|
||||
this.checkBox1.Location = new System.Drawing.Point(379, 50);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(92, 23);
|
||||
this.checkBox1.TabIndex = 38;
|
||||
this.checkBox1.Tag = "12";
|
||||
this.checkBox1.Text = "MFG Date";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox36
|
||||
//
|
||||
this.checkBox36.AutoSize = true;
|
||||
@@ -1249,30 +1273,6 @@
|
||||
this.dataSet11.DataSetName = "DataSet1";
|
||||
this.dataSet11.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.ForeColor = System.Drawing.Color.Blue;
|
||||
this.checkBox1.Location = new System.Drawing.Point(379, 50);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(92, 23);
|
||||
this.checkBox1.TabIndex = 38;
|
||||
this.checkBox1.Tag = "12";
|
||||
this.checkBox1.Text = "MFG Date";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox2
|
||||
//
|
||||
this.checkBox2.AutoSize = true;
|
||||
this.checkBox2.ForeColor = System.Drawing.Color.Black;
|
||||
this.checkBox2.Location = new System.Drawing.Point(431, 24);
|
||||
this.checkBox2.Name = "checkBox2";
|
||||
this.checkBox2.Size = new System.Drawing.Size(92, 23);
|
||||
this.checkBox2.TabIndex = 39;
|
||||
this.checkBox2.Tag = "13";
|
||||
this.checkBox2.Text = "MFG Date";
|
||||
this.checkBox2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// fSelectJob
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 17F);
|
||||
|
||||
167
Handler/Project/Dialog/fSelectSIDInformation.Designer.cs
generated
@@ -50,6 +50,8 @@
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.lbExecuteSQL = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.bn = new System.Windows.Forms.BindingNavigator(this.components);
|
||||
this.bs = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.dsWMS = new Project.dsWMS();
|
||||
this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel();
|
||||
this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton();
|
||||
this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton();
|
||||
@@ -60,13 +62,6 @@
|
||||
this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton();
|
||||
this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.dv1 = new System.Windows.Forms.DataGridView();
|
||||
this.panDv = new System.Windows.Forms.Panel();
|
||||
this.btOK = new System.Windows.Forms.Button();
|
||||
this.panel3 = new System.Windows.Forms.Panel();
|
||||
this.bs = new System.Windows.Forms.BindingSource(this.components);
|
||||
this.dsWMS = new Project.dsWMS();
|
||||
this.ta = new Project.dsWMSTableAdapters.VW_GET_MAX_QTY_VENDOR_LOTTableAdapter();
|
||||
this.tam = new Project.dsWMSTableAdapters.TableAdapterManager();
|
||||
this.idxDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.sIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewButtonColumn();
|
||||
this.pARTNODataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
@@ -76,14 +71,19 @@
|
||||
this.vENDORLOTDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.mFGDATEDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.qTYDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.panDv = new System.Windows.Forms.Panel();
|
||||
this.btOK = new System.Windows.Forms.Button();
|
||||
this.panel3 = new System.Windows.Forms.Panel();
|
||||
this.ta = new Project.dsWMSTableAdapters.VW_GET_MAX_QTY_VENDOR_LOTTableAdapter();
|
||||
this.tam = new Project.dsWMSTableAdapters.TableAdapterManager();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bn)).BeginInit();
|
||||
this.bn.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dsWMS)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit();
|
||||
this.panDv.SuspendLayout();
|
||||
this.panel3.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bs)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dsWMS)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tbSID
|
||||
@@ -314,10 +314,20 @@
|
||||
this.bn.TabIndex = 12;
|
||||
this.bn.Text = "bindingNavigator1";
|
||||
//
|
||||
// bs
|
||||
//
|
||||
this.bs.DataMember = "VW_GET_MAX_QTY_VENDOR_LOT";
|
||||
this.bs.DataSource = this.dsWMS;
|
||||
//
|
||||
// dsWMS
|
||||
//
|
||||
this.dsWMS.DataSetName = "dsWMS";
|
||||
this.dsWMS.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
|
||||
//
|
||||
// bindingNavigatorCountItem
|
||||
//
|
||||
this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem";
|
||||
this.bindingNavigatorCountItem.Size = new System.Drawing.Size(27, 22);
|
||||
this.bindingNavigatorCountItem.Size = new System.Drawing.Size(26, 22);
|
||||
this.bindingNavigatorCountItem.Text = "/{0}";
|
||||
this.bindingNavigatorCountItem.ToolTipText = "Total item count";
|
||||
//
|
||||
@@ -387,6 +397,7 @@
|
||||
this.dv1.AllowUserToAddRows = false;
|
||||
this.dv1.AllowUserToDeleteRows = false;
|
||||
this.dv1.AutoGenerateColumns = false;
|
||||
this.dv1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;
|
||||
this.dv1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
@@ -402,8 +413,9 @@
|
||||
this.dv1.DataSource = this.bs;
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window;
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("맑은 고딕", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("맑은 고딕", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
|
||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
dataGridViewCellStyle1.Padding = new System.Windows.Forms.Padding(0, 3, 0, 3);
|
||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
@@ -417,75 +429,6 @@
|
||||
this.dv1.TabIndex = 35;
|
||||
this.dv1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.vW_GET_MAX_QTY_VENDOR_LOTDataGridView_CellClick);
|
||||
//
|
||||
// panDv
|
||||
//
|
||||
this.panDv.Controls.Add(this.dv1);
|
||||
this.panDv.Controls.Add(this.bn);
|
||||
this.panDv.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panDv.Location = new System.Drawing.Point(0, 157);
|
||||
this.panDv.Name = "panDv";
|
||||
this.panDv.Size = new System.Drawing.Size(1031, 405);
|
||||
this.panDv.TabIndex = 36;
|
||||
//
|
||||
// btOK
|
||||
//
|
||||
this.btOK.BackColor = System.Drawing.Color.DarkSeaGreen;
|
||||
this.btOK.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.btOK.Font = new System.Drawing.Font("맑은 고딕", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
|
||||
this.btOK.Location = new System.Drawing.Point(791, 10);
|
||||
this.btOK.Name = "btOK";
|
||||
this.btOK.Size = new System.Drawing.Size(230, 137);
|
||||
this.btOK.TabIndex = 4;
|
||||
this.btOK.Text = "SAVE";
|
||||
this.btOK.UseVisualStyleBackColor = false;
|
||||
this.btOK.Click += new System.EventHandler(this.btOK_Click);
|
||||
//
|
||||
// panel3
|
||||
//
|
||||
this.panel3.Controls.Add(this.btOK);
|
||||
this.panel3.Controls.Add(this.button5);
|
||||
this.panel3.Controls.Add(this.button4);
|
||||
this.panel3.Controls.Add(this.linkLabel7);
|
||||
this.panel3.Controls.Add(this.tbVName);
|
||||
this.panel3.Controls.Add(this.linkLabel5);
|
||||
this.panel3.Controls.Add(this.linkLabel6);
|
||||
this.panel3.Controls.Add(this.tbSID);
|
||||
this.panel3.Controls.Add(this.linkLabel8);
|
||||
this.panel3.Controls.Add(this.TbCustCode);
|
||||
this.panel3.Controls.Add(this.tbBatch);
|
||||
this.panel3.Controls.Add(this.linkLabel3);
|
||||
this.panel3.Controls.Add(this.tbLot);
|
||||
this.panel3.Controls.Add(this.lnkBatch);
|
||||
this.panel3.Controls.Add(this.tbPart);
|
||||
this.panel3.Controls.Add(this.tbMFG);
|
||||
this.panel3.Controls.Add(this.linkLabel2);
|
||||
this.panel3.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel3.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel3.Name = "panel3";
|
||||
this.panel3.Padding = new System.Windows.Forms.Padding(0, 10, 10, 10);
|
||||
this.panel3.Size = new System.Drawing.Size(1031, 157);
|
||||
this.panel3.TabIndex = 37;
|
||||
//
|
||||
// bs
|
||||
//
|
||||
this.bs.DataMember = "VW_GET_MAX_QTY_VENDOR_LOT";
|
||||
this.bs.DataSource = this.dsWMS;
|
||||
//
|
||||
// dsWMS
|
||||
//
|
||||
this.dsWMS.DataSetName = "dsWMS";
|
||||
this.dsWMS.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema;
|
||||
//
|
||||
// ta
|
||||
//
|
||||
this.ta.ClearBeforeFill = true;
|
||||
//
|
||||
// tam
|
||||
//
|
||||
this.tam.BackupDataSetBeforeUpdate = false;
|
||||
this.tam.Connection = null;
|
||||
this.tam.UpdateOrder = Project.dsWMSTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete;
|
||||
//
|
||||
// idxDataGridViewTextBoxColumn
|
||||
//
|
||||
this.idxDataGridViewTextBoxColumn.DataPropertyName = "idx";
|
||||
@@ -551,6 +494,65 @@
|
||||
this.qTYDataGridViewTextBoxColumn.Name = "qTYDataGridViewTextBoxColumn";
|
||||
this.qTYDataGridViewTextBoxColumn.ReadOnly = true;
|
||||
//
|
||||
// panDv
|
||||
//
|
||||
this.panDv.Controls.Add(this.dv1);
|
||||
this.panDv.Controls.Add(this.bn);
|
||||
this.panDv.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panDv.Location = new System.Drawing.Point(0, 157);
|
||||
this.panDv.Name = "panDv";
|
||||
this.panDv.Size = new System.Drawing.Size(1031, 405);
|
||||
this.panDv.TabIndex = 36;
|
||||
//
|
||||
// btOK
|
||||
//
|
||||
this.btOK.BackColor = System.Drawing.Color.DarkSeaGreen;
|
||||
this.btOK.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.btOK.Font = new System.Drawing.Font("맑은 고딕", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
|
||||
this.btOK.Location = new System.Drawing.Point(791, 10);
|
||||
this.btOK.Name = "btOK";
|
||||
this.btOK.Size = new System.Drawing.Size(230, 137);
|
||||
this.btOK.TabIndex = 4;
|
||||
this.btOK.Text = "SAVE";
|
||||
this.btOK.UseVisualStyleBackColor = false;
|
||||
this.btOK.Click += new System.EventHandler(this.btOK_Click);
|
||||
//
|
||||
// panel3
|
||||
//
|
||||
this.panel3.Controls.Add(this.btOK);
|
||||
this.panel3.Controls.Add(this.button5);
|
||||
this.panel3.Controls.Add(this.button4);
|
||||
this.panel3.Controls.Add(this.linkLabel7);
|
||||
this.panel3.Controls.Add(this.tbVName);
|
||||
this.panel3.Controls.Add(this.linkLabel5);
|
||||
this.panel3.Controls.Add(this.linkLabel6);
|
||||
this.panel3.Controls.Add(this.tbSID);
|
||||
this.panel3.Controls.Add(this.linkLabel8);
|
||||
this.panel3.Controls.Add(this.TbCustCode);
|
||||
this.panel3.Controls.Add(this.tbBatch);
|
||||
this.panel3.Controls.Add(this.linkLabel3);
|
||||
this.panel3.Controls.Add(this.tbLot);
|
||||
this.panel3.Controls.Add(this.lnkBatch);
|
||||
this.panel3.Controls.Add(this.tbPart);
|
||||
this.panel3.Controls.Add(this.tbMFG);
|
||||
this.panel3.Controls.Add(this.linkLabel2);
|
||||
this.panel3.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel3.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel3.Name = "panel3";
|
||||
this.panel3.Padding = new System.Windows.Forms.Padding(0, 10, 10, 10);
|
||||
this.panel3.Size = new System.Drawing.Size(1031, 157);
|
||||
this.panel3.TabIndex = 37;
|
||||
//
|
||||
// ta
|
||||
//
|
||||
this.ta.ClearBeforeFill = true;
|
||||
//
|
||||
// tam
|
||||
//
|
||||
this.tam.BackupDataSetBeforeUpdate = false;
|
||||
this.tam.Connection = null;
|
||||
this.tam.UpdateOrder = Project.dsWMSTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete;
|
||||
//
|
||||
// fSelectSIDInformation
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
@@ -565,18 +567,19 @@
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Multi SID Information";
|
||||
this.Load += new System.EventHandler(this.fLoaderInfo_Load);
|
||||
this.Shown += new System.EventHandler(this.fSelectSIDInformation_Shown);
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bn)).EndInit();
|
||||
this.bn.ResumeLayout(false);
|
||||
this.bn.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dsWMS)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit();
|
||||
this.panDv.ResumeLayout(false);
|
||||
this.panDv.PerformLayout();
|
||||
this.panel3.ResumeLayout(false);
|
||||
this.panel3.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.bs)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dsWMS)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
|
||||
@@ -34,6 +34,10 @@ namespace Project.Dialog
|
||||
|
||||
private void FLoaderInfo_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
AR.VAR.I32[AR.eVarInt32.PickOnRetry] = 0;
|
||||
VAR.TIME[eVarTime.KEYENCEWAIT] = DateTime.Now;
|
||||
|
||||
VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] = true;
|
||||
VAR.BOOL[eVarBool.FG_WAIT_INFOSELECT] = false;
|
||||
PUB.Result.ItemDataC.VisionData.PropertyChanged -= VisionData_PropertyChanged;
|
||||
|
||||
@@ -114,7 +118,6 @@ namespace Project.Dialog
|
||||
tbPart.Text = item.VisionData.PARTNO;
|
||||
TbCustCode.Text = item.VisionData.CUSTCODE;
|
||||
tbBatch.Text = item.VisionData.BATCH;
|
||||
|
||||
|
||||
selectInput(this.tbSID);
|
||||
|
||||
@@ -369,12 +372,36 @@ namespace Project.Dialog
|
||||
itemC.VisionData.SID0 = itemC.VisionData.SID;
|
||||
|
||||
//값이있는것들만 기록해준다.
|
||||
if (tbSID.Text.isEmpty() == false) itemC.VisionData.SID = tbSID.Text.Trim();
|
||||
if (tbBatch.Text.isEmpty() == false) itemC.VisionData.BATCH = tbBatch.Text.Trim();
|
||||
if (tbLot.Text.isEmpty() == false) itemC.VisionData.VLOT = tbLot.Text.Trim();
|
||||
if (tbMFG.Text.isEmpty() == false) itemC.VisionData.MFGDATE = tbMFG.Text.Trim();
|
||||
if (tbVName.Text.isEmpty() == false) itemC.VisionData.VNAME = tbVName.Text.Trim();
|
||||
if (tbPart.Text.isEmpty() == false) itemC.VisionData.PARTNO = tbPart.Text.Trim();
|
||||
if (tbSID.Text.isEmpty() == false)
|
||||
{
|
||||
itemC.VisionData.SID = tbSID.Text.Trim();
|
||||
itemC.VisionData.SID_Trust = true;
|
||||
}
|
||||
if (tbBatch.Text.isEmpty() == false)
|
||||
{
|
||||
itemC.VisionData.BATCH = tbBatch.Text.Trim();
|
||||
|
||||
}
|
||||
if (tbLot.Text.isEmpty() == false)
|
||||
{
|
||||
itemC.VisionData.VLOT = tbLot.Text.Trim();
|
||||
itemC.VisionData.VLOT_Trust = true;
|
||||
}
|
||||
if (tbMFG.Text.isEmpty() == false)
|
||||
{
|
||||
itemC.VisionData.MFGDATE = tbMFG.Text.Trim();
|
||||
itemC.VisionData.MFGDATE_Trust = true;
|
||||
}
|
||||
if (tbVName.Text.isEmpty() == false)
|
||||
{
|
||||
itemC.VisionData.VNAME = tbVName.Text.Trim();
|
||||
itemC.VisionData.VNAME_Trust = true;
|
||||
}
|
||||
if (tbPart.Text.isEmpty() == false)
|
||||
{
|
||||
itemC.VisionData.PARTNO = tbPart.Text.Trim();
|
||||
itemC.VisionData.PARTNO_Trust = true;
|
||||
}
|
||||
|
||||
this.TopMost = topmost;
|
||||
this.Close();
|
||||
@@ -856,7 +883,7 @@ namespace Project.Dialog
|
||||
// {
|
||||
// tb.Text = value;
|
||||
// }
|
||||
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -883,5 +910,10 @@ namespace Project.Dialog
|
||||
ValueUpdate(tbMFG, dr.MFG_DATE, "MFG_DATE");
|
||||
ValueUpdate(tbBatch, dr.BATCH_NO, "BATCH_NO");
|
||||
}
|
||||
|
||||
private void fSelectSIDInformation_Shown(object sender, EventArgs e)
|
||||
{
|
||||
this.dv1.AutoResizeColumns();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -257,6 +257,7 @@ namespace Project
|
||||
}
|
||||
|
||||
//키엔스데이터 기다리는중
|
||||
VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] = false;
|
||||
PUB.sm.seq.Update(cmdIndex);
|
||||
return false;
|
||||
}
|
||||
@@ -305,20 +306,31 @@ namespace Project
|
||||
//아무것도 하지 않는다
|
||||
//사용자가 정보를 설정하는 중
|
||||
}
|
||||
else
|
||||
{
|
||||
bool SHowUserFormINF = true;
|
||||
else {
|
||||
|
||||
//사용자 확인창을 표시한다
|
||||
if (SHowUserFormINF) //다중SID정보 선택건
|
||||
//사용자사 해당 창을 닫았다.
|
||||
if (VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] == true & PUB.Result.ItemDataC.VisionData.SID.isEmpty())
|
||||
{
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
PUB.log.Add("Calling user selection window (INF)");
|
||||
var f = new Dialog.fSelectSIDInformation();
|
||||
f.Show();
|
||||
}));
|
||||
//사용자가 창을 닫았고 SID값이 없다면 오류 처리한다.
|
||||
PUB.Result.SetResultMessage(eResult.OPERATION, eECode.NOTSELECTMULTISID, eNextStep.PAUSE);
|
||||
VAR.BOOL[eVarBool.FG_WAIT_INFOSELECTCLOSE] = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool SHowUserFormINF = true;
|
||||
|
||||
//사용자 확인창을 표시한다
|
||||
if (SHowUserFormINF) //다중SID정보 선택건
|
||||
{
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
PUB.log.Add("Calling user selection window (INF)");
|
||||
var f = new Dialog.fSelectSIDInformation();
|
||||
f.Show();
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace Project
|
||||
{
|
||||
//카메라 트리거 전송
|
||||
var sendok = WS_Send(target, WS, item.guid, "TRIG", item.VisionData.PrintQRData);
|
||||
PUB.log.Add($"Barcode trigger transmission ({target}) = {sendok}");
|
||||
PUB.log.Add($"Send QR Vision trigger ({target}) = {sendok} CMD=TRIG,DATA={item.VisionData.PrintQRData}");
|
||||
if(sendok==false) //230512 전송실패시 오류로 한다
|
||||
{
|
||||
PUB.Result.SetResultMessage(eResult.HARDWARE, eECode.VISION_TRIGERROR, eNextStep.PAUSE);
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace Project
|
||||
{
|
||||
@@ -23,8 +24,24 @@ namespace Project
|
||||
|
||||
foreach (var datas in qrdatas)
|
||||
{
|
||||
// JSON 구조에서 "data" 필드 추출
|
||||
string barcodeData = datas;
|
||||
try
|
||||
{
|
||||
var jobj = JObject.Parse(datas);
|
||||
if (jobj["data"] != null)
|
||||
{
|
||||
barcodeData = jobj["data"].ToString();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// JSON 파싱 실패 시 원본 데이터 사용
|
||||
barcodeData = datas;
|
||||
}
|
||||
|
||||
//원본자료를 체크한다
|
||||
if (datas.Equals(idata.VisionData.PrintQRData))
|
||||
if (barcodeData.Equals(idata.VisionData.PrintQRData))
|
||||
{
|
||||
//인쇄한 자료와 동일한 자료이다
|
||||
FindData = true;
|
||||
@@ -39,10 +56,10 @@ namespace Project
|
||||
foreach (var pt in pats)
|
||||
{
|
||||
var regx = new Regex(pt.Pattern, RegexOptions.IgnoreCase, new TimeSpan(0, 0, 10));
|
||||
if (regx.IsMatch(datas)) //패턴이 일치하다면 이것만 사용한다
|
||||
if (regx.IsMatch(barcodeData)) //패턴이 일치하다면 이것만 사용한다
|
||||
{
|
||||
//find data
|
||||
var matchs = regx.Matches(datas);
|
||||
var matchs = regx.Matches(barcodeData);
|
||||
foreach (System.Text.RegularExpressions.Match mat in matchs)
|
||||
{
|
||||
foreach (var matchdata in pt.Groups)
|
||||
@@ -81,30 +98,6 @@ namespace Project
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//var bcdData = new StdLabelPrint.CAmkorSTDBarcode(datas);
|
||||
//PUB.Result.ItemData[vIdx].VisionData.QTY2 = bcdData.QTY.ToString();
|
||||
//PUB.Result.ItemData[vIdx].VisionData.RID2 = bcdData.RID;
|
||||
//PUB.Result.ItemData[vIdx].VisionData.SID2 = bcdData.SID;
|
||||
//PUB.Result.ItemData[vIdx].VisionData.VLOT2 = bcdData.VLOT;
|
||||
//PUB.Result.ItemData[vIdx].VisionData.VNAME2 = bcdData.VENDERNAME;
|
||||
//PUB.Result.ItemData[vIdx].VisionData.MFGDATE2 = bcdData.MFGDate;//.ToString("yyyyMMdd");
|
||||
//PUB.Result.ItemData[vIdx].VisionData.PARTNO2 = bcdData.PARTNO;
|
||||
//PUB.Result.ItemData[vIdx].VisionData.Ready = true;
|
||||
////Pub.Result.ItemData[vIdx].VisionData.ETime = DateTime.Now;
|
||||
////Pub.Result.ItemData[vIdx].VisionData.Angle = 5;
|
||||
//PUB.Result.ItemData[vIdx].VisionData.Complete = true;
|
||||
//PUB.log.Add("BARCODE", $"{vIdx}바코드 읽기 성공 ID:{bcdData.RID},QTY:{bcdData.QTY}");
|
||||
|
||||
////데이터를 읽었으며, 검증기능이 켜져있다면 검증을한다
|
||||
//if (FindData) break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace Project
|
||||
|
||||
//[WMS] SID정보테이블에서 정보 추출(프린트정보는 없음)
|
||||
//[WMS] 에서 중복검색되면 팝업을 해야하므로 이것을 먼저 처리한다.
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplyWMSInfo] && (CompleteCheck || itemC.VisionData.BarcodeTouched == true))
|
||||
if (VAR.BOOL[eVarBool.Opt_ApplyWMSInfo] && (CompleteCheck || itemC.VisionData.BarcodeTouched == true))
|
||||
{
|
||||
var rlt_FindWMD = BCDProcess_FindWMSInfo(itemC);
|
||||
if (rlt_FindWMD.NewBarcodeUpdated) NewBarcodeUpdated = true;
|
||||
@@ -316,8 +316,25 @@ namespace Project
|
||||
if (vdata.MFGDATE_Trust && vdata.MFGDATE.isEmpty() == false) wheres.Add($"MFG_DATE = '{vdata.MFGDATE}'");
|
||||
else Apply = false;
|
||||
}
|
||||
|
||||
//데이터가 완성되었다면 처리하지 않는다.
|
||||
bool DataOK = true;
|
||||
foreach (var data in fields)
|
||||
{
|
||||
var column = data.ToLower();
|
||||
if (DataOK && column.Equals("sid") && (vdata.SID.isEmpty() || vdata.SID_Trust == false)) DataOK = false;
|
||||
else if (DataOK && column.Equals("part_no") && (vdata.PARTNO.isEmpty() || vdata.PARTNO_Trust)) DataOK = false;
|
||||
else if (DataOK && column.Equals("mfg_data") && (vdata.MFGDATE.isEmpty() || vdata.MFGDATE_Trust)) DataOK = false;
|
||||
else if (DataOK && column.Equals("vendor_nm") && (vdata.VNAME.isEmpty() || vdata.VNAME_Trust)) DataOK = false;
|
||||
else if (DataOK && column.Equals("batch_no") && (vdata.BATCH.isEmpty())) DataOK = false;
|
||||
else if (DataOK && column.Equals("qty") && (vdata.QTY.isEmpty() || vdata.QTY_Trust)) DataOK = false;
|
||||
else if (DataOK && column.Equals("cust_code") && (vdata.CUSTCODE.isEmpty())) DataOK = false;
|
||||
else if (DataOK && column.Equals("vendor_lot") && (vdata.VLOT.isEmpty() || vdata.VLOT_Trust)) DataOK = false;
|
||||
if (DataOK == false) break;
|
||||
}
|
||||
|
||||
//if query data . no error
|
||||
if (Apply && fields.Count > 0 && wheres.Count > 0)
|
||||
if (DataOK == false && Apply && fields.Count > 0 && wheres.Count > 0)
|
||||
{
|
||||
var TableName = "VW_GET_MAX_QTY_VENDOR_LOT";
|
||||
var whereState = " where " + string.Join(" and ", wheres);
|
||||
@@ -330,7 +347,7 @@ namespace Project
|
||||
var cntvalue = (DBHelper.ExecuteScalar(SQLC)?.ToString() ?? "0").toInt();
|
||||
if (cntvalue > 1)
|
||||
{
|
||||
VAR.STR[eVarString.MULTISID_QUERY] = $"select {selectFields} from {TableName} WITH(NOLOCK) {whereState}";
|
||||
VAR.STR[eVarString.MULTISID_QUERY] = $"select * from {TableName} WITH(NOLOCK) {whereState}";
|
||||
VAR.STR[eVarString.MULTISID_FIELDS] = selectFields;
|
||||
rlt = EResultKeyence.MultiSID;
|
||||
}
|
||||
|
||||
28
Handler/Project/fMain.Designer.cs
generated
@@ -1867,35 +1867,35 @@
|
||||
// axis0ToolStripMenuItem
|
||||
//
|
||||
this.axis0ToolStripMenuItem.Name = "axis0ToolStripMenuItem";
|
||||
this.axis0ToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
|
||||
this.axis0ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.axis0ToolStripMenuItem.Text = "Axis 0";
|
||||
this.axis0ToolStripMenuItem.Click += new System.EventHandler(this.axis0ToolStripMenuItem_Click);
|
||||
//
|
||||
// axis1ToolStripMenuItem
|
||||
//
|
||||
this.axis1ToolStripMenuItem.Name = "axis1ToolStripMenuItem";
|
||||
this.axis1ToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
|
||||
this.axis1ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.axis1ToolStripMenuItem.Text = "Axis 1";
|
||||
this.axis1ToolStripMenuItem.Click += new System.EventHandler(this.axis1ToolStripMenuItem_Click);
|
||||
//
|
||||
// axis2ToolStripMenuItem
|
||||
//
|
||||
this.axis2ToolStripMenuItem.Name = "axis2ToolStripMenuItem";
|
||||
this.axis2ToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
|
||||
this.axis2ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.axis2ToolStripMenuItem.Text = "Axis 2";
|
||||
this.axis2ToolStripMenuItem.Click += new System.EventHandler(this.axis2ToolStripMenuItem_Click);
|
||||
//
|
||||
// axis3ToolStripMenuItem
|
||||
//
|
||||
this.axis3ToolStripMenuItem.Name = "axis3ToolStripMenuItem";
|
||||
this.axis3ToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
|
||||
this.axis3ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.axis3ToolStripMenuItem.Text = "Axis 3";
|
||||
this.axis3ToolStripMenuItem.Click += new System.EventHandler(this.axis3ToolStripMenuItem_Click);
|
||||
//
|
||||
// axis4ToolStripMenuItem
|
||||
//
|
||||
this.axis4ToolStripMenuItem.Name = "axis4ToolStripMenuItem";
|
||||
this.axis4ToolStripMenuItem.Size = new System.Drawing.Size(116, 22);
|
||||
this.axis4ToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.axis4ToolStripMenuItem.Text = "Axis 4";
|
||||
this.axis4ToolStripMenuItem.Click += new System.EventHandler(this.axis4ToolStripMenuItem_Click);
|
||||
//
|
||||
@@ -3910,7 +3910,7 @@
|
||||
this.hmi1.R_PICK_BW = false;
|
||||
this.hmi1.R_PICK_FW = false;
|
||||
this.hmi1.Scean = UIControl.HMI.eScean.Nomal;
|
||||
this.hmi1.Size = new System.Drawing.Size(786, 403);
|
||||
this.hmi1.Size = new System.Drawing.Size(546, 403);
|
||||
this.hmi1.TabIndex = 0;
|
||||
this.hmi1.ZoneItemClick += new System.EventHandler<UIControl.HMI.ZoneItemClickEventargs>(this.hmi1_ZoneItemClick);
|
||||
//
|
||||
@@ -3969,7 +3969,7 @@
|
||||
column2.State = System.Windows.Forms.DataGridViewElementStates.None;
|
||||
column2.Style = null;
|
||||
column2.Text = "";
|
||||
column2.Width = 50;
|
||||
column2.Width = 80;
|
||||
column3.DataGridViewInternal = null;
|
||||
column3.DisplayIndex = 0;
|
||||
column3.IndexInternal = 0;
|
||||
@@ -3978,7 +3978,7 @@
|
||||
column3.State = System.Windows.Forms.DataGridViewElementStates.None;
|
||||
column3.Style = null;
|
||||
column3.Text = "";
|
||||
column3.Width = 100;
|
||||
column3.Width = 150;
|
||||
column4.DataGridViewInternal = null;
|
||||
column4.DisplayIndex = 0;
|
||||
column4.IndexInternal = 0;
|
||||
@@ -3987,7 +3987,7 @@
|
||||
column4.State = System.Windows.Forms.DataGridViewElementStates.None;
|
||||
column4.Style = null;
|
||||
column4.Text = "";
|
||||
column4.Width = 50;
|
||||
column4.Width = 80;
|
||||
column5.DataGridViewInternal = null;
|
||||
column5.DisplayIndex = 0;
|
||||
column5.IndexInternal = 0;
|
||||
@@ -3996,7 +3996,7 @@
|
||||
column5.State = System.Windows.Forms.DataGridViewElementStates.None;
|
||||
column5.Style = null;
|
||||
column5.Text = "";
|
||||
column5.Width = 100;
|
||||
column5.Width = 150;
|
||||
column6.DataGridViewInternal = null;
|
||||
column6.DisplayIndex = 0;
|
||||
column6.IndexInternal = 0;
|
||||
@@ -4005,7 +4005,7 @@
|
||||
column6.State = System.Windows.Forms.DataGridViewElementStates.None;
|
||||
column6.Style = null;
|
||||
column6.Text = "";
|
||||
column6.Width = 50;
|
||||
column6.Width = 80;
|
||||
column7.DataGridViewInternal = null;
|
||||
column7.DisplayIndex = 0;
|
||||
column7.IndexInternal = 0;
|
||||
@@ -4014,7 +4014,7 @@
|
||||
column7.State = System.Windows.Forms.DataGridViewElementStates.None;
|
||||
column7.Style = null;
|
||||
column7.Text = "";
|
||||
column7.Width = 100;
|
||||
column7.Width = 150;
|
||||
this.listView21.Columns = new arCtl.ListView2.Column[] {
|
||||
column2,
|
||||
column3,
|
||||
@@ -4030,7 +4030,7 @@
|
||||
this.listView21.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.listView21.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold);
|
||||
this.listView21.ForeColor = System.Drawing.Color.White;
|
||||
this.listView21.Location = new System.Drawing.Point(786, 0);
|
||||
this.listView21.Location = new System.Drawing.Point(546, 0);
|
||||
this.listView21.MinimumSize = new System.Drawing.Size(30, 30);
|
||||
this.listView21.Name = "listView21";
|
||||
this.listView21.RowHeight = 25;
|
||||
@@ -5160,7 +5160,7 @@
|
||||
itemStyle2.Font = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold);
|
||||
itemStyle2.ForeColor = System.Drawing.Color.Black;
|
||||
this.listView21.RowStyle = itemStyle2;
|
||||
this.listView21.Size = new System.Drawing.Size(451, 403);
|
||||
this.listView21.Size = new System.Drawing.Size(691, 403);
|
||||
this.listView21.TabIndex = 7;
|
||||
this.listView21.Text = "listView21";
|
||||
//
|
||||
|
||||
@@ -2222,7 +2222,7 @@ namespace Project
|
||||
|
||||
//If multiple information exists, it should be handled with selection screen
|
||||
|
||||
VAR.STR[eVarString.MULTISID_QUERY] = $"select {selectFields} from {TableName} WITH(NOLOCK) {whereState}";
|
||||
VAR.STR[eVarString.MULTISID_QUERY] = $"select * from {TableName} WITH(NOLOCK) {whereState}";
|
||||
VAR.STR[eVarString.MULTISID_FIELDS] = selectFields;
|
||||
|
||||
PUB.Result.ItemDataC.VisionData.CUSTCODE = VAR.STR[eVarString.JOB_CUSTOMER_CODE];
|
||||
|
||||
@@ -473,16 +473,16 @@ If pressed while motion is moving, motion will also stop.
|
||||
<data name="btManualPrint.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIUSURBVGhD7ZPBShtRFIanL1DfIZDu1L5B7U4tQty1uxYK
|
||||
FUGxIDKokBIptinFSrGaCmamEcaMlmhEX0B9gUrbTbtoU9Jtu80ip7n4h5nMnAuFzCQHnA++3Zz7f1nE
|
||||
SEhIuEZM/m7ey9QbvzJ1ojicqDdqmXpzDHPRczXAj0dn4yfmoocfjF7MRQ83FoeYix5uLA4xFxHzny+M
|
||||
ha+k5MbisL1nzH85Q0UXtB/rxw9Qdo3vMW4sDv2bqOgC32PcWBz6N1HRBb7HuLE49G+i4v+ZNXPjU2au
|
||||
NmPmSJJXTSujyNQjMb7ttJn7gUw93KEkkamHO5IkMvVwR5JEph7uSJLI1MMdSRKZeoIH9x8+ocGhYUqn
|
||||
0z1VbT54NNXRokSmnuBBP+LbDg7f7mhRIlNP8IB7uJcGe5CpJ3jAPdpLgz3I1PN41iS/qVSqrwZ7kBnG
|
||||
dk5uWeXqRUuy3WORou1ctSLbQ8UHDwR7jmyP9+7Hv8yHQq3+QbZH0T285D8WqFP9hGwPa+/4A/uxRMtH
|
||||
NrI9Wv+Bp+zHMp1DtkfRqYxY5aPWP12+drl6B9kepdLpzfzb7eaOUyHJqsaC6w4gu5OCvfd9e/eARFva
|
||||
/4bcMBs7zsG7okPC3UdumLVCcelNwSLRblmLyA3zcn3j7ov1TZLs6trmCHLDENGN5eevDrPZbPPZ6muS
|
||||
pGpaXMlXVCNyExISEhKuPYbxDwvXtwz5x5voAAAAAElFTkSuQmCC
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIUSURBVGhD7ZPNShthFIanN1DvIZDu/LmD2l1VhLirOwuF
|
||||
SqFiQWRQISVSrC3FWrA2FsxMI4wZlWhEb0C9gYp20y5aS7qt2yxymg/fMJOZ80EhM8kB54FnN+d7nyxi
|
||||
JCQk3CLG/tRHMtXa70yVKA5Hq7WrTLU+hLnouRngx6Oz9gtz0cMPRi/moocbi0PMRQ83FoeYi4iZizNj
|
||||
9hspubE4bO4ZM5cnqGiD5mPd+AHKtvE9xo3FoX8TFW3ge4wbi0P/JirawPcYNxaH/k1U/D9TZm540sxd
|
||||
PTdzJMmbpsWHyNQjMb7pMzP3E5l6uENJIlMPdyRJZOrhjiSJTD3ckSSRqYc7kiQy9QQPHk08pd6+fkqn
|
||||
0x1VbY4/nmxpUSJTT/CgG/FNe/sHWlqUyNQTPOAe7qTBHmTqCR5wj3bSYA8y9TyZMslvKpXqqsEeZIax
|
||||
naN7Vqly1pBs91CkaDtVrcj2UPHBA8GeIttjw927Zj4UauUvsj0K7v45/7FAncpXZHtY24df2I8lWjqw
|
||||
ke3R+A+8YD+W6TSyPQpOedAqHTT+6fK1S5X7yPYoFo/vLn/YqG86ZZKsasy7bg+yW8nb2z8+b+2SaIs7
|
||||
35EbZm3T2f1YcEi4O8gNs5IvzL/PWyTaT9YccsMsr649eL26TpJdWlkfRG4YIrqz8Ortfjabrb9cekeS
|
||||
VE1zi2/KqhG5CQkJCQm3HsP4B860twaYbLRsAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="btJobCancle.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
@@ -571,7 +571,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQgAAd0MAAAlD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABQQgAAhEMAAL5C
|
||||
AADIQgs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -579,7 +579,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACiQwAAd0MAAAlD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABhQwAAhEMAAL5C
|
||||
AADIQgs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -587,7 +587,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAEAPRAAAd0MAAAlD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADHQwAAhEMAAL5C
|
||||
AADIQgs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -595,7 +595,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAAAAAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAAAAAAKBC
|
||||
AAAAAAs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -603,7 +603,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAAAAAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAAAAAABZD
|
||||
AAAAAAs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -611,7 +611,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAAAAAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAAAAAAKBC
|
||||
AAAAAAs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -619,7 +619,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAAAAAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAAAAAABZD
|
||||
AAAAAAs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -627,7 +627,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAAAAAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAAAAAAKBC
|
||||
AAAAAAs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -635,7 +635,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAAAAAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAAAAAABZD
|
||||
AAAAAAs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -643,7 +643,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAAAAAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAAAAAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -651,7 +651,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAAAAAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAAAAAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -659,7 +659,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAAAAAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAAAAAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -667,7 +667,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAAAAAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAAAAAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -675,7 +675,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAAAAAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAAAAAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -683,7 +683,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAAAAAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAAAAAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -691,7 +691,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAAAAAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAAAAAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -699,7 +699,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEEAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEEAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -707,7 +707,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAyEEAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAyEEAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -715,7 +715,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAyEEAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAyEEAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -723,7 +723,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAyEEAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAyEEAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -731,7 +731,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAyEEAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAyEEAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -739,7 +739,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAyEEAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAyEEAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -747,7 +747,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEEAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEEAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -755,7 +755,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -763,7 +763,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAASEIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAASEIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -771,7 +771,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAASEIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAASEIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -779,7 +779,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAASEIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAASEIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -787,7 +787,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAASEIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAASEIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -795,7 +795,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAASEIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAASEIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -803,7 +803,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEIAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEIAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -811,7 +811,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -819,7 +819,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAlkIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAlkIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -827,7 +827,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAlkIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAlkIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -835,7 +835,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAlkIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAlkIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -843,7 +843,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAlkIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAlkIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -851,7 +851,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAlkIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAlkIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -859,7 +859,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkIAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkIAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -867,7 +867,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -875,7 +875,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAyEIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAyEIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -883,7 +883,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAyEIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAyEIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -891,7 +891,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAyEIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAyEIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -899,7 +899,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAyEIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAyEIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -907,7 +907,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAyEIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAyEIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -915,7 +915,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEIAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAyEIAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -923,7 +923,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAA+kIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAA+kIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -931,7 +931,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAA+kIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAA+kIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -939,7 +939,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAA+kIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAA+kIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -947,7 +947,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAA+kIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAA+kIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -955,7 +955,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAA+kIAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAA+kIAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -963,7 +963,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAA+kIAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAA+kIAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -971,7 +971,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAA+kIAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAA+kIAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -979,7 +979,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAFkMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAFkMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -987,7 +987,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAFkMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAFkMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -995,7 +995,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAFkMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAFkMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1003,7 +1003,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAFkMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAFkMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1011,7 +1011,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAFkMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAFkMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1019,7 +1019,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAFkMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAFkMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1027,7 +1027,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAFkMAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAFkMAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1035,7 +1035,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAL0MAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAL0MAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1043,7 +1043,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAL0MAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAL0MAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1051,7 +1051,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAL0MAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAL0MAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1059,7 +1059,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAL0MAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAL0MAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1067,7 +1067,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAL0MAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAL0MAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1075,7 +1075,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAL0MAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAL0MAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1083,7 +1083,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAL0MAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAL0MAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1091,7 +1091,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1099,7 +1099,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAASEMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAASEMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1107,7 +1107,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAASEMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAASEMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1115,7 +1115,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAASEMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAASEMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1123,7 +1123,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAASEMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAASEMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1131,7 +1131,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAASEMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAASEMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1139,7 +1139,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEMAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAASEMAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1147,7 +1147,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAYUMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAYUMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1155,7 +1155,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAYUMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAYUMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1163,7 +1163,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAYUMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAYUMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1171,7 +1171,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAYUMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAYUMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1179,7 +1179,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAYUMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAYUMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1187,7 +1187,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAYUMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAYUMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1195,7 +1195,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAYUMAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAYUMAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1203,7 +1203,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAekMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAekMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1211,7 +1211,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAekMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAekMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1219,7 +1219,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAekMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAekMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1227,7 +1227,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAekMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAekMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1235,7 +1235,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAekMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAekMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1243,7 +1243,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAekMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAekMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1251,7 +1251,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAekMAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAekMAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1259,7 +1259,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAiUMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAiUMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1267,7 +1267,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgCAiUMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgCAiUMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1275,7 +1275,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwCAiUMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwCAiUMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1283,7 +1283,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwCAiUMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwCAiUMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1291,7 +1291,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwCAiUMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwCAiUMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1299,7 +1299,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwCAiUMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRACAiUMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1307,7 +1307,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAiUMAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAiUMAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1315,7 +1315,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1323,7 +1323,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAlkMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAlkMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1331,7 +1331,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAlkMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAlkMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1339,7 +1339,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAlkMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAlkMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1347,7 +1347,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAlkMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAlkMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1355,7 +1355,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAlkMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAlkMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1363,7 +1363,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkMAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAlkMAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1371,7 +1371,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAokMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAokMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1379,7 +1379,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgCAokMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgCAokMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1387,7 +1387,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwCAokMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwCAokMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1395,7 +1395,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwCAokMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwCAokMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1403,7 +1403,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwCAokMAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwCAokMAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1411,7 +1411,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwCAokMAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRACAokMAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1419,7 +1419,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAokMAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAokMAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1427,7 +1427,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAr0MAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAr0MAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1435,7 +1435,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgAAr0MAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgAAr0MAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1443,7 +1443,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwAAr0MAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwAAr0MAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1451,7 +1451,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwAAr0MAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwAAr0MAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1459,7 +1459,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwAAr0MAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwAAr0MAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1467,7 +1467,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwAAr0MAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRAAAr0MAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1475,7 +1475,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAr0MAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAAAAr0MAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1483,7 +1483,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAu0MAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAu0MAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1491,7 +1491,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQgCAu0MAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACgQgCAu0MAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1499,7 +1499,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAWQwCAu0MAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABmQwCAu0MAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1507,7 +1507,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAABIQwCAu0MAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACbQwCAu0MAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1515,7 +1515,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACWQwCAu0MAAEhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAADmQwCAu0MAAKBC
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1523,7 +1523,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAACvQwCAu0MAAMhC
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAHRACAu0MAABZD
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
@@ -1531,7 +1531,7 @@ If pressed while motion is moving, motion will also stop.
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFFTeXN0ZW0uRHJhd2luZywgVmVyc2lvbj00LjAuMC4wLCBDdWx0
|
||||
dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWIwM2Y1ZjdmMTFkNTBhM2EFAQAAABlTeXN0ZW0uRHJh
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAu0MAgOFD
|
||||
d2luZy5SZWN0YW5nbGVGBAAAAAF4AXkFd2lkdGgGaGVpZ2h0AAAAAAsLCwsCAAAAAAAAAACAu0MAwCxE
|
||||
AADIQQs=
|
||||
</value>
|
||||
</data>
|
||||
|
||||
@@ -295,6 +295,7 @@ namespace AR
|
||||
/// SID정보가 복수가 검출되었을때 사용자가 선택하는 창
|
||||
/// </summary>
|
||||
FG_WAIT_INFOSELECT,
|
||||
FG_WAIT_INFOSELECTCLOSE,
|
||||
/// <summary>
|
||||
/// 작업시작화면
|
||||
/// </summary>
|
||||
|
||||
@@ -658,7 +658,7 @@ namespace UIControl
|
||||
var port_space = CvtMMtoPX_H(350 / 2.0f, 0);
|
||||
var port_spacex = CvtMMtoPX_W(10, 0); ;
|
||||
|
||||
var PickerSizeW = CvtMMtoPX_W(200, 0);// (float)(Math.Max(CvtMMtoPX_W(150, 0), CvtMMtoPX_H(15, 0)));
|
||||
var PickerSizeW = CvtMMtoPX_W(150, 0);// (float)(Math.Max(CvtMMtoPX_W(150, 0), CvtMMtoPX_H(15, 0)));
|
||||
var PickerSizeH = PickerSizeW;// CvtMMtoPX_H(130, 0);//(float)(Math.Max(CvtMMtoPX_W(150, 0), CvtMMtoPX_H(15, 0)));
|
||||
var PickerSpaceW = CvtMMtoPX_H(100, 0);
|
||||
|
||||
@@ -728,8 +728,8 @@ namespace UIControl
|
||||
}
|
||||
|
||||
//입출력포트의 영역을 다시 계산한다
|
||||
var portW = (int)(rect_main.Width * 0.175f);
|
||||
var portH = (int)(rect_main.Height * 0.25f);
|
||||
var portW = (int)(rect_main.Width * 0.125f);
|
||||
var portH = (int)(rect_main.Height * 0.35f);
|
||||
var portPad = (int)(rect_main.Width / 7f);
|
||||
var MarginX = (int)((rect_main.Width - portW * 3 - portPad * 2) / 2.0);
|
||||
var MarginY = (int)(rect_main.Height - portH - (portPad / 2f));
|
||||
@@ -738,7 +738,7 @@ namespace UIControl
|
||||
{
|
||||
arVar_Port[i].Rect = new Rectangle(
|
||||
(int)rect_main.Left + MarginX + (i * portW) + (i * portPad),
|
||||
(int)rect_main.Top + MarginY,
|
||||
(int)rect_main.Top + MarginY+50,
|
||||
portW, portH);
|
||||
zitem.Add(new CItem
|
||||
{
|
||||
@@ -1037,17 +1037,17 @@ namespace UIControl
|
||||
void Scean_Normal(Graphics g)
|
||||
{
|
||||
//전체 영역 테두리
|
||||
g.DrawRectangle(new Pen(Color.White, 2), rect_main.Left, rect_main.Top, rect_main.Width, rect_main.Height);
|
||||
//g.DrawRectangle(new Pen(Color.White, 2), rect_main.Left, rect_main.Top, rect_main.Width, rect_main.Height);
|
||||
|
||||
//포트표시(셔틀위에 표시됨)
|
||||
Draw_Port(g); //front
|
||||
|
||||
|
||||
//프린터영역그리기 201228
|
||||
var printareahei = 50;
|
||||
var printareahei = 100;
|
||||
var printareaw = 100;
|
||||
var printbordersize = 5;
|
||||
var rectpl = new RectangleF(arVar_Port[0].Rect.Right + printbordersize, arVar_Port[0].Rect.Top - 85, printareaw, printareahei);
|
||||
var rectpl = new RectangleF(arVar_Port[0].Rect.Right + printbordersize, arVar_Port[0].Rect.Top - printareahei-20, printareaw, printareahei);
|
||||
var fColorPrn = arFGPrinter0END ? Color.Lime : (arFGPrinter0RDY ? Color.Gold : Color.Gray);
|
||||
g.DrawRect(rectpl, fColorPrn, printbordersize);
|
||||
var prnstrbase = "";// "Print Qty:" + arCountPrint0.ToString("000") + "\n";
|
||||
@@ -1056,7 +1056,7 @@ namespace UIControl
|
||||
g.DrawString(prnstr, new Font("Tahoma", 10, FontStyle.Bold), new SolidBrush(fColorPrn), rectpl,
|
||||
new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
||||
|
||||
rectpl = new RectangleF(arVar_Port[2].Rect.Left - 90 - printbordersize, arVar_Port[2].Rect.Top - 85, printareaw, printareahei);
|
||||
rectpl = new RectangleF(arVar_Port[2].Rect.Left - 90 - printbordersize, arVar_Port[2].Rect.Top - printareahei-20, printareaw, printareahei);
|
||||
fColorPrn = arFGPrinter1END ? Color.Lime : (arFGPrinter1RDY ? Color.Gold : Color.Gray);
|
||||
g.DrawRect(rectpl, fColorPrn, printbordersize);
|
||||
prnstrbase = "";// "Print Qty:" + arCountPrint1.ToString("000") + "\n";
|
||||
|
||||
63
Handler/swPLC/.gitattributes
vendored
Normal file
@@ -0,0 +1,63 @@
|
||||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
# This is need for earlier builds of msysgit that does not have it on by
|
||||
# default for csharp files.
|
||||
# Note: This is only used by command line
|
||||
###############################################################################
|
||||
#*.cs diff=csharp
|
||||
|
||||
###############################################################################
|
||||
# Set the merge driver for project and solution files
|
||||
#
|
||||
# Merging from the command prompt will add diff markers to the files if there
|
||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||
# the diff markers are never inserted). Diff markers may cause the following
|
||||
# file extensions to fail to load in VS. An alternative would be to treat
|
||||
# these files as binary and thus will always conflict and require user
|
||||
# intervention with every merge. To do so, just uncomment the entries below
|
||||
###############################################################################
|
||||
#*.sln merge=binary
|
||||
#*.csproj merge=binary
|
||||
#*.vbproj merge=binary
|
||||
#*.vcxproj merge=binary
|
||||
#*.vcproj merge=binary
|
||||
#*.dbproj merge=binary
|
||||
#*.fsproj merge=binary
|
||||
#*.lsproj merge=binary
|
||||
#*.wixproj merge=binary
|
||||
#*.modelproj merge=binary
|
||||
#*.sqlproj merge=binary
|
||||
#*.wwaproj merge=binary
|
||||
|
||||
###############################################################################
|
||||
# behavior for image files
|
||||
#
|
||||
# image files are treated as binary by default.
|
||||
###############################################################################
|
||||
#*.jpg binary
|
||||
#*.png binary
|
||||
#*.gif binary
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
#*.doc diff=astextplain
|
||||
#*.DOC diff=astextplain
|
||||
#*.docx diff=astextplain
|
||||
#*.DOCX diff=astextplain
|
||||
#*.dot diff=astextplain
|
||||
#*.DOT diff=astextplain
|
||||
#*.pdf diff=astextplain
|
||||
#*.PDF diff=astextplain
|
||||
#*.rtf diff=astextplain
|
||||
#*.RTF diff=astextplain
|
||||
8
Handler/swPLC/.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
*.suo
|
||||
*.user
|
||||
*.pdb
|
||||
bin
|
||||
obj
|
||||
desktop.ini
|
||||
.vs
|
||||
packages
|
||||
34
Handler/swPLC/CSetting.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AR;
|
||||
|
||||
namespace Project
|
||||
{
|
||||
public class CSetting : AR.Setting
|
||||
{
|
||||
#region "swplc"
|
||||
public string swplc_name { get; set; }
|
||||
public int swplc_size { get; set; }
|
||||
#endregion
|
||||
|
||||
public CSetting()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void AfterLoad()
|
||||
{
|
||||
if (swplc_size < 1) swplc_size = 100;
|
||||
if (swplc_name.isEmpty()) swplc_name = "swplc";
|
||||
|
||||
}
|
||||
|
||||
public override void AfterSave()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
402
Handler/swPLC/Form1.Designer.cs
generated
Normal file
@@ -0,0 +1,402 @@
|
||||
namespace Project
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <summary>
|
||||
/// 필수 디자이너 변수입니다.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 사용 중인 모든 리소스를 정리합니다.
|
||||
/// </summary>
|
||||
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form 디자이너에서 생성한 코드
|
||||
|
||||
/// <summary>
|
||||
/// 디자이너 지원에 필요한 메서드입니다.
|
||||
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.logTextBox1 = new arCtl.LogTextBox();
|
||||
this.gridView1 = new arCtl.GridView.GridView();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.button3 = new System.Windows.Forms.Button();
|
||||
this.button4 = new System.Windows.Forms.Button();
|
||||
this.button5 = new System.Windows.Forms.Button();
|
||||
this.button6 = new System.Windows.Forms.Button();
|
||||
this.button7 = new System.Windows.Forms.Button();
|
||||
this.button8 = new System.Windows.Forms.Button();
|
||||
this.button9 = new System.Windows.Forms.Button();
|
||||
this.button10 = new System.Windows.Forms.Button();
|
||||
this.button11 = new System.Windows.Forms.Button();
|
||||
this.button12 = new System.Windows.Forms.Button();
|
||||
this.button13 = new System.Windows.Forms.Button();
|
||||
this.ioPanel1 = new arDev.AjinEXTEK.UI.IOPanel();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// timer1
|
||||
//
|
||||
this.timer1.Interval = 250;
|
||||
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripStatusLabel1,
|
||||
this.toolStripStatusLabel2,
|
||||
this.toolStripStatusLabel3});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 564);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(760, 22);
|
||||
this.statusStrip1.TabIndex = 2;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// toolStripStatusLabel1
|
||||
//
|
||||
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
|
||||
this.toolStripStatusLabel1.Size = new System.Drawing.Size(73, 17);
|
||||
this.toolStripStatusLabel1.Text = "AutoControl";
|
||||
this.toolStripStatusLabel1.Click += new System.EventHandler(this.toolStripStatusLabel1_Click);
|
||||
//
|
||||
// toolStripStatusLabel2
|
||||
//
|
||||
this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
|
||||
this.toolStripStatusLabel2.Size = new System.Drawing.Size(118, 17);
|
||||
this.toolStripStatusLabel2.Text = "toolStripStatusLabel2";
|
||||
//
|
||||
// toolStripStatusLabel3
|
||||
//
|
||||
this.toolStripStatusLabel3.Name = "toolStripStatusLabel3";
|
||||
this.toolStripStatusLabel3.Size = new System.Drawing.Size(118, 17);
|
||||
this.toolStripStatusLabel3.Text = "toolStripStatusLabel3";
|
||||
//
|
||||
// logTextBox1
|
||||
//
|
||||
this.logTextBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(24)))), ((int)(((byte)(24)))), ((int)(((byte)(24)))));
|
||||
this.logTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.logTextBox1.ColorList = new arCtl.sLogMessageColor[0];
|
||||
this.logTextBox1.DateFormat = "mm:ss.fff";
|
||||
this.logTextBox1.DefaultColor = System.Drawing.Color.LightGray;
|
||||
this.logTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.logTextBox1.EnableDisplayTimer = true;
|
||||
this.logTextBox1.EnableGubunColor = true;
|
||||
this.logTextBox1.Font = new System.Drawing.Font("Consolas", 9F);
|
||||
this.logTextBox1.ListFormat = "[{0}] {1}";
|
||||
this.logTextBox1.Location = new System.Drawing.Point(0, 116);
|
||||
this.logTextBox1.MaxListCount = ((ushort)(200));
|
||||
this.logTextBox1.MaxTextLength = ((uint)(4000u));
|
||||
this.logTextBox1.MessageInterval = 50;
|
||||
this.logTextBox1.Name = "logTextBox1";
|
||||
this.logTextBox1.Size = new System.Drawing.Size(760, 193);
|
||||
this.logTextBox1.TabIndex = 0;
|
||||
this.logTextBox1.Text = "";
|
||||
//
|
||||
// gridView1
|
||||
//
|
||||
this.gridView1.arVeriticalDraw = false;
|
||||
this.gridView1.BorderColor = System.Drawing.Color.Black;
|
||||
this.gridView1.BorderSize = 0;
|
||||
this.gridView1.ColorList = null;
|
||||
this.gridView1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.gridView1.FontPin = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold);
|
||||
this.gridView1.ForeColorPin = System.Drawing.Color.WhiteSmoke;
|
||||
this.gridView1.Location = new System.Drawing.Point(0, 309);
|
||||
this.gridView1.MatrixSize = new System.Drawing.Point(3, 5);
|
||||
this.gridView1.MenuBorderSize = 1;
|
||||
this.gridView1.MenuGap = 5;
|
||||
this.gridView1.MinimumSize = new System.Drawing.Size(100, 50);
|
||||
this.gridView1.Name = "gridView1";
|
||||
this.gridView1.Names = null;
|
||||
this.gridView1.ShadowColor = System.Drawing.Color.Transparent;
|
||||
this.gridView1.showDebugInfo = false;
|
||||
this.gridView1.ShowIndexString = true;
|
||||
this.gridView1.ShowNameString = true;
|
||||
this.gridView1.ShowValueString = true;
|
||||
this.gridView1.Size = new System.Drawing.Size(760, 100);
|
||||
this.gridView1.TabIndex = 3;
|
||||
this.gridView1.Tags = null;
|
||||
this.gridView1.Text = "gridView1";
|
||||
this.gridView1.TextAttachToImage = true;
|
||||
this.gridView1.Titles = null;
|
||||
this.gridView1.Values = null;
|
||||
//
|
||||
// tableLayoutPanel1
|
||||
//
|
||||
this.tableLayoutPanel1.ColumnCount = 3;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33332F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33334F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.button1, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button2, 2, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button3, 1, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button4, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button5, 1, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button6, 2, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button7, 2, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button8, 1, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button9, 0, 2);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button10, 0, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button11, 1, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button12, 2, 3);
|
||||
this.tableLayoutPanel1.Controls.Add(this.button13, 0, 4);
|
||||
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 409);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 5;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0005F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0005F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0005F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 19.99851F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(760, 155);
|
||||
this.tableLayoutPanel1.TabIndex = 4;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button1.Location = new System.Drawing.Point(3, 34);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(247, 25);
|
||||
this.button1.TabIndex = 0;
|
||||
this.button1.Tag = "0";
|
||||
this.button1.Text = "Refresh Port";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button2.Location = new System.Drawing.Point(509, 34);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(248, 25);
|
||||
this.button2.TabIndex = 0;
|
||||
this.button2.Tag = "2";
|
||||
this.button2.Text = "Refresh Port";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// button3
|
||||
//
|
||||
this.button3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button3.Location = new System.Drawing.Point(256, 34);
|
||||
this.button3.Name = "button3";
|
||||
this.button3.Size = new System.Drawing.Size(247, 25);
|
||||
this.button3.TabIndex = 0;
|
||||
this.button3.Tag = "1";
|
||||
this.button3.Text = "Refresh Port";
|
||||
this.button3.UseVisualStyleBackColor = true;
|
||||
this.button3.Click += new System.EventHandler(this.button1_Click);
|
||||
//
|
||||
// button4
|
||||
//
|
||||
this.button4.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button4.Location = new System.Drawing.Point(3, 3);
|
||||
this.button4.Name = "button4";
|
||||
this.button4.Size = new System.Drawing.Size(247, 25);
|
||||
this.button4.TabIndex = 1;
|
||||
this.button4.Tag = "0";
|
||||
this.button4.Text = "Up";
|
||||
this.button4.UseVisualStyleBackColor = true;
|
||||
this.button4.Click += new System.EventHandler(this.button4_Click);
|
||||
//
|
||||
// button5
|
||||
//
|
||||
this.button5.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button5.Location = new System.Drawing.Point(256, 3);
|
||||
this.button5.Name = "button5";
|
||||
this.button5.Size = new System.Drawing.Size(247, 25);
|
||||
this.button5.TabIndex = 1;
|
||||
this.button5.Tag = "1";
|
||||
this.button5.Text = "Up";
|
||||
this.button5.UseVisualStyleBackColor = true;
|
||||
this.button5.Click += new System.EventHandler(this.button4_Click);
|
||||
//
|
||||
// button6
|
||||
//
|
||||
this.button6.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button6.Location = new System.Drawing.Point(509, 3);
|
||||
this.button6.Name = "button6";
|
||||
this.button6.Size = new System.Drawing.Size(248, 25);
|
||||
this.button6.TabIndex = 1;
|
||||
this.button6.Tag = "2";
|
||||
this.button6.Text = "Up";
|
||||
this.button6.UseVisualStyleBackColor = true;
|
||||
this.button6.Click += new System.EventHandler(this.button4_Click);
|
||||
//
|
||||
// button7
|
||||
//
|
||||
this.button7.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button7.Location = new System.Drawing.Point(509, 65);
|
||||
this.button7.Name = "button7";
|
||||
this.button7.Size = new System.Drawing.Size(248, 25);
|
||||
this.button7.TabIndex = 1;
|
||||
this.button7.Tag = "2";
|
||||
this.button7.Text = "Down";
|
||||
this.button7.UseVisualStyleBackColor = true;
|
||||
this.button7.Click += new System.EventHandler(this.button9_Click);
|
||||
//
|
||||
// button8
|
||||
//
|
||||
this.button8.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button8.Location = new System.Drawing.Point(256, 65);
|
||||
this.button8.Name = "button8";
|
||||
this.button8.Size = new System.Drawing.Size(247, 25);
|
||||
this.button8.TabIndex = 1;
|
||||
this.button8.Tag = "1";
|
||||
this.button8.Text = "Down";
|
||||
this.button8.UseVisualStyleBackColor = true;
|
||||
this.button8.Click += new System.EventHandler(this.button9_Click);
|
||||
//
|
||||
// button9
|
||||
//
|
||||
this.button9.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button9.Location = new System.Drawing.Point(3, 65);
|
||||
this.button9.Name = "button9";
|
||||
this.button9.Size = new System.Drawing.Size(247, 25);
|
||||
this.button9.TabIndex = 1;
|
||||
this.button9.Tag = "0";
|
||||
this.button9.Text = "Down";
|
||||
this.button9.UseVisualStyleBackColor = true;
|
||||
this.button9.Click += new System.EventHandler(this.button9_Click);
|
||||
//
|
||||
// button10
|
||||
//
|
||||
this.button10.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button10.Location = new System.Drawing.Point(3, 96);
|
||||
this.button10.Name = "button10";
|
||||
this.button10.Size = new System.Drawing.Size(247, 24);
|
||||
this.button10.TabIndex = 2;
|
||||
this.button10.Tag = "0";
|
||||
this.button10.Text = "Stop";
|
||||
this.button10.UseVisualStyleBackColor = true;
|
||||
this.button10.Click += new System.EventHandler(this.button12_Click);
|
||||
//
|
||||
// button11
|
||||
//
|
||||
this.button11.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button11.Location = new System.Drawing.Point(256, 96);
|
||||
this.button11.Name = "button11";
|
||||
this.button11.Size = new System.Drawing.Size(247, 24);
|
||||
this.button11.TabIndex = 2;
|
||||
this.button11.Tag = "1";
|
||||
this.button11.Text = "Stop";
|
||||
this.button11.UseVisualStyleBackColor = true;
|
||||
this.button11.Click += new System.EventHandler(this.button12_Click);
|
||||
//
|
||||
// button12
|
||||
//
|
||||
this.button12.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button12.Location = new System.Drawing.Point(509, 96);
|
||||
this.button12.Name = "button12";
|
||||
this.button12.Size = new System.Drawing.Size(248, 24);
|
||||
this.button12.TabIndex = 2;
|
||||
this.button12.Tag = "2";
|
||||
this.button12.Text = "Stop";
|
||||
this.button12.UseVisualStyleBackColor = true;
|
||||
this.button12.Click += new System.EventHandler(this.button12_Click);
|
||||
//
|
||||
// button13
|
||||
//
|
||||
this.tableLayoutPanel1.SetColumnSpan(this.button13, 3);
|
||||
this.button13.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.button13.Location = new System.Drawing.Point(3, 126);
|
||||
this.button13.Name = "button13";
|
||||
this.button13.Size = new System.Drawing.Size(754, 26);
|
||||
this.button13.TabIndex = 3;
|
||||
this.button13.Text = "Exit";
|
||||
this.button13.UseVisualStyleBackColor = true;
|
||||
this.button13.Click += new System.EventHandler(this.button13_Click);
|
||||
//
|
||||
// ioPanel1
|
||||
//
|
||||
this.ioPanel1.BorderColor = System.Drawing.Color.Empty;
|
||||
this.ioPanel1.BorderSize = 0;
|
||||
this.ioPanel1.ColorList = null;
|
||||
this.ioPanel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.ioPanel1.FontPin = new System.Drawing.Font("Consolas", 8F, System.Drawing.FontStyle.Bold);
|
||||
this.ioPanel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200)))));
|
||||
this.ioPanel1.ForeColorPin = System.Drawing.Color.WhiteSmoke;
|
||||
this.ioPanel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.ioPanel1.MatrixSize = new System.Drawing.Point(3, 6);
|
||||
this.ioPanel1.MenuBorderSize = 1;
|
||||
this.ioPanel1.MenuGap = 5;
|
||||
this.ioPanel1.MinimumSize = new System.Drawing.Size(100, 50);
|
||||
this.ioPanel1.Name = "ioPanel1";
|
||||
this.ioPanel1.ShadowColor = System.Drawing.Color.Transparent;
|
||||
this.ioPanel1.showDebugInfo = false;
|
||||
this.ioPanel1.ShowPinName = true;
|
||||
this.ioPanel1.Size = new System.Drawing.Size(760, 116);
|
||||
this.ioPanel1.TabIndex = 0;
|
||||
this.ioPanel1.TextAttachToImage = true;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(760, 586);
|
||||
this.Controls.Add(this.logTextBox1);
|
||||
this.Controls.Add(this.gridView1);
|
||||
this.Controls.Add(this.ioPanel1);
|
||||
this.Controls.Add(this.tableLayoutPanel1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "Form1";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Form1";
|
||||
this.Load += new System.EventHandler(this.Form1_Load);
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.tableLayoutPanel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private arCtl.LogTextBox logTextBox1;
|
||||
private System.Windows.Forms.Timer timer1;
|
||||
private arDev.AjinEXTEK.UI.IOPanel ioPanel1;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2;
|
||||
private arCtl.GridView.GridView gridView1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3;
|
||||
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.Button button3;
|
||||
private System.Windows.Forms.Button button4;
|
||||
private System.Windows.Forms.Button button5;
|
||||
private System.Windows.Forms.Button button6;
|
||||
private System.Windows.Forms.Button button7;
|
||||
private System.Windows.Forms.Button button8;
|
||||
private System.Windows.Forms.Button button9;
|
||||
private System.Windows.Forms.Button button10;
|
||||
private System.Windows.Forms.Button button11;
|
||||
private System.Windows.Forms.Button button12;
|
||||
private System.Windows.Forms.Button button13;
|
||||
}
|
||||
}
|
||||
|
||||
762
Handler/swPLC/Form1.cs
Normal file
@@ -0,0 +1,762 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using AR;
|
||||
|
||||
namespace Project
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
AR.Log log;
|
||||
arDev.DIO.IDIO dio;
|
||||
StateMachine sm;
|
||||
AR.MemoryMap.Server swplc;
|
||||
bool exitforce = false;
|
||||
|
||||
byte[] buffer = new byte[16];
|
||||
|
||||
public Form1()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Text = $"{Application.ProductName} ver {Application.ProductVersion}";
|
||||
log = new AR.Log();
|
||||
log.RaiseMsg += (p1, p2, p3) => { this.logTextBox1.AddMsg(p1, p2, p3); };
|
||||
this.FormClosing += Form1_FormClosing;
|
||||
|
||||
this.logTextBox1.ColorList = new arCtl.sLogMessageColor[] {
|
||||
new arCtl.sLogMessageColor("NORM",Color.Yellow),
|
||||
new arCtl.sLogMessageColor("ERR",Color.Red),
|
||||
new arCtl.sLogMessageColor("WARN",Color.Tomato),
|
||||
new arCtl.sLogMessageColor("INFO",Color.LightSkyBlue)
|
||||
};
|
||||
|
||||
|
||||
List<string> piname = new List<String>();
|
||||
List<string> titles = new List<String>();
|
||||
List<bool> values = new List<bool>();
|
||||
|
||||
titles.AddRange(new string[] {
|
||||
"Upper Limit","Reel Detect","Lower Limit",
|
||||
"Motor Direction(1=DN,0=UP)","Motor Run","Emergency",
|
||||
});
|
||||
piname.AddRange(new string[] {
|
||||
"X"+((int)eDIName.PORTL_LIM_UP).ToString("X2"),
|
||||
"X"+((int)eDIName.PORTL_DET_UP).ToString("X2"),
|
||||
"X"+((int)eDIName.PORTL_LIM_DN).ToString("X2"),
|
||||
"Y"+((int)eDOName.PORTL_MOT_DIR).ToString("X2"),
|
||||
"Y"+((int)eDOName.PORTL_MOT_RUN).ToString("X2"),"--"
|
||||
});
|
||||
|
||||
titles.AddRange(new string[] {
|
||||
"Upper Limit","Reel Detect","Lower Limit",
|
||||
"Motor Direction(1=DN,0=UP)","Motor Run","--",
|
||||
});
|
||||
piname.AddRange(new string[] {
|
||||
"X"+((int)eDIName.PORTC_LIM_UP).ToString("X2"),
|
||||
"X"+((int)eDIName.PORTC_DET_UP).ToString("X2"),
|
||||
"X"+((int)eDIName.PORTC_LIM_DN).ToString("X2"),
|
||||
"Y"+((int)eDOName.PORTC_MOT_DIR).ToString("X2"),
|
||||
"Y"+((int)eDOName.PORTC_MOT_RUN).ToString("X2"),"--"
|
||||
});
|
||||
|
||||
|
||||
titles.AddRange(new string[] {
|
||||
"Upper Limit","Reel Detect","Lower Limit",
|
||||
"Motor Direction(1=DN,0=UP)","Motor Run","--"
|
||||
});
|
||||
piname.AddRange(new string[] {
|
||||
"X"+((int)eDIName.PORTR_LIM_UP).ToString("X2"),
|
||||
"X"+((int)eDIName.PORTR_DET_UP).ToString("X2"),
|
||||
"X"+((int)eDIName.PORTR_LIM_DN).ToString("X2"),
|
||||
"Y"+((int)eDOName.PORTR_MOT_DIR).ToString("X2"),
|
||||
"Y"+((int)eDOName.PORTR_MOT_RUN).ToString("X2"),"--"
|
||||
});
|
||||
|
||||
for (int i = 0; i < titles.Count; i++)
|
||||
values.Add(false);
|
||||
|
||||
ioPanel1.ColorList = new arDev.AjinEXTEK.UI.ColorListItem[] {
|
||||
new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.DimGray, BackColor2 = Color.FromArgb(30,30,30), Remark="False" },
|
||||
new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.Lime, BackColor2 = Color.Green, Remark="True" },
|
||||
new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.Magenta, BackColor2 = Color.Green, Remark="True" },
|
||||
new arDev.AjinEXTEK.UI.ColorListItem{ BackColor1 = Color.SkyBlue, BackColor2 = Color.LightSkyBlue, Remark="True" },
|
||||
};
|
||||
|
||||
this.ioPanel1.setTitle(titles.ToArray());
|
||||
this.ioPanel1.setNames(piname.ToArray());
|
||||
this.ioPanel1.setValue(values.ToArray());
|
||||
this.ioPanel1.Invalidate();
|
||||
|
||||
//내부버퍼확인
|
||||
titles.Clear();
|
||||
piname.Clear();
|
||||
var valueb = new List<ushort>();
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
var addr = (eswPLCAddr)i;
|
||||
piname.Add(i.ToString("X2"));
|
||||
titles.Add(addr.ToString());
|
||||
valueb.Add(0);
|
||||
}
|
||||
|
||||
gridView1.ColorList = new arCtl.GridView.ColorListItem[] {
|
||||
new arCtl.GridView.ColorListItem{ BackColor1 = Color.DimGray, BackColor2 = Color.FromArgb(30,30,30), Remark="False" },
|
||||
new arCtl.GridView.ColorListItem{ BackColor1 = Color.Lime, BackColor2 = Color.Green, Remark="True" },
|
||||
new arCtl.GridView.ColorListItem{ BackColor1 = Color.Magenta, BackColor2 = Color.Green, Remark="True" },
|
||||
new arCtl.GridView.ColorListItem{ BackColor1 = Color.SkyBlue, BackColor2 = Color.LightSkyBlue, Remark="True" },
|
||||
};
|
||||
|
||||
this.gridView1.setTitle(titles.ToArray());
|
||||
this.gridView1.setNames(piname.ToArray());
|
||||
this.gridView1.setValue(valueb.ToArray());
|
||||
this.gridView1.ShowValueString = true;
|
||||
this.gridView1.ShowNameString = true;
|
||||
this.gridView1.ShowIndexString = false;
|
||||
this.gridView1.Invalidate();
|
||||
|
||||
}
|
||||
|
||||
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (exitforce == false)
|
||||
{
|
||||
this.WindowState = FormWindowState.Minimized;
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
|
||||
timer1.Stop();
|
||||
dio.Dispose();
|
||||
sm.Stop();
|
||||
log.AddI("Program terminated");
|
||||
log.Flush();
|
||||
}
|
||||
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
log.AddI("Program started");
|
||||
dio = new arDev.AjinEXTEK.DIO(arDev.AjinEXTEK.ELibraryType.AXT);// arDev.AjinEXTEK.DIO();
|
||||
if (dio.Init())
|
||||
{
|
||||
dio.IOValueChanged += Dio_IOValueChanged;
|
||||
dio.RunMonitor();
|
||||
log.Add($"DI:{dio.GetDICount}/DO:{dio.GetDOCount}");
|
||||
}
|
||||
else log.AddE($"DIO initialization failed");
|
||||
|
||||
swplc = new AR.MemoryMap.Server(PUB.Setting.swplc_name, PUB.Setting.swplc_size);
|
||||
swplc.ValueChanged += Plc_ValueChanged;
|
||||
swplc.Start();
|
||||
|
||||
ioPanel1.ItemClick += IoPanel1_ItemClick;
|
||||
|
||||
sm = new AR.StateMachine();
|
||||
sm.StepChanged += Sm_StepChanged;
|
||||
sm.Running += Sm_Running;
|
||||
sm.SPS += Sm_SPS;
|
||||
if (dio.IsInit == false) log.AddE($"DIO initialization failed");
|
||||
log.Add($"State machine started");
|
||||
sm.Start();
|
||||
sm.SetNewStep((byte)eSMStep.RUN);
|
||||
|
||||
this.starttime = DateTime.Now;
|
||||
timer1.Start();
|
||||
}
|
||||
|
||||
private void Plc_ValueChanged(object sender, AR.MemoryMap.Core.monitorvalueargs e)
|
||||
{
|
||||
|
||||
}
|
||||
private void Dio_IOValueChanged(object sender, arDev.DIO.IOValueEventArgs e)
|
||||
{
|
||||
if (e.Direction == arDev.DIO.eIOPINDIR.INPUT)
|
||||
{
|
||||
var pin = (eDIName)e.ArrIDX;
|
||||
|
||||
//센서가 활성화될때는 이값을 설정해준다
|
||||
//나머지조건은 autocontrol 에서 처리된다.
|
||||
var value = GetDIValue(pin);
|
||||
if (value)
|
||||
{
|
||||
if (pin == eDIName.PORTL_LIM_DN) WriteBuffer(eswPLCAddr.LPort, 1);
|
||||
if (pin == eDIName.PORTL_DET_UP) WriteBuffer(eswPLCAddr.LPort, 2);
|
||||
if (pin == eDIName.PORTL_LIM_UP) WriteBuffer(eswPLCAddr.LPort, 3);
|
||||
|
||||
if (pin == eDIName.PORTC_LIM_DN) WriteBuffer(eswPLCAddr.CPort, 1);
|
||||
if (pin == eDIName.PORTC_DET_UP) WriteBuffer(eswPLCAddr.CPort, 2);
|
||||
if (pin == eDIName.PORTC_LIM_UP) WriteBuffer(eswPLCAddr.CPort, 3);
|
||||
|
||||
if (pin == eDIName.PORTR_LIM_DN) WriteBuffer(eswPLCAddr.RPort, 1);
|
||||
if (pin == eDIName.PORTR_DET_UP) WriteBuffer(eswPLCAddr.RPort, 2);
|
||||
if (pin == eDIName.PORTR_LIM_UP) WriteBuffer(eswPLCAddr.RPort, 3);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var pin = (eDOName)e.ArrIDX;
|
||||
|
||||
if (pin == eDOName.PORTL_MOT_RUN)
|
||||
{
|
||||
if (e.NewValue == false) WriteBuffer(eswPLCAddr.LMotor, 3);
|
||||
else
|
||||
{
|
||||
//방향을 확인해야한다
|
||||
var value = GetDOValue(eDOName.PORTL_MOT_DIR) ? 2 : 1;
|
||||
WriteBuffer(eswPLCAddr.LMotor, (byte)value);
|
||||
}
|
||||
}
|
||||
else if (pin == eDOName.PORTC_MOT_RUN)
|
||||
{
|
||||
if (e.NewValue == false) WriteBuffer(eswPLCAddr.CMotor, 3);
|
||||
else
|
||||
{
|
||||
//방향을 확인해야한다
|
||||
var value = GetDOValue(eDOName.PORTC_MOT_DIR) ? 2 : 1;
|
||||
WriteBuffer(eswPLCAddr.CMotor, (byte)value);
|
||||
}
|
||||
}
|
||||
else if (pin == eDOName.PORTR_MOT_RUN)
|
||||
{
|
||||
if (e.NewValue == false) WriteBuffer(eswPLCAddr.RMotor, 3);
|
||||
else
|
||||
{
|
||||
//방향을 확인해야한다
|
||||
var value = GetDOValue(eDOName.PORTR_MOT_DIR) ? 2 : 1;
|
||||
WriteBuffer(eswPLCAddr.RMotor, (byte)value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void IoPanel1_ItemClick(object sender, arDev.AjinEXTEK.UI.IOPanel.ItemClickEventArgs e)
|
||||
{
|
||||
if (dio != null && dio.IsInit == false) return;
|
||||
var name = this.ioPanel1.Names[e.idx];
|
||||
if (name.StartsWith("Y"))
|
||||
{
|
||||
var pinno = Convert.ToInt32(name.Substring(1), 16);
|
||||
var pin = (eDOName)pinno;
|
||||
var cur = dio.GetDOValue(pinno);
|
||||
dio.SetOutput(pinno, !cur);
|
||||
log.Add($"value change [X{pinno:X2}] {pin} to {!cur}");
|
||||
}
|
||||
}
|
||||
bool GetDOValue(eDOName pin)
|
||||
{
|
||||
return dio.GetDOValue((int)pin);
|
||||
}
|
||||
bool GetDIValue(eDIName pin)
|
||||
{
|
||||
if (pin == eDIName.PORTL_LIM_DN || pin == eDIName.PORTC_LIM_DN || pin == eDIName.PORTR_LIM_DN)
|
||||
{
|
||||
return !dio.GetDIValue((int)pin);
|
||||
}
|
||||
else if (pin == eDIName.PORTL_LIM_UP || pin == eDIName.PORTC_LIM_UP || pin == eDIName.PORTR_LIM_UP)
|
||||
{
|
||||
return !dio.GetDIValue((int)pin);
|
||||
}
|
||||
else if (pin == eDIName.PORTL_DET_UP || pin == eDIName.PORTC_DET_UP || pin == eDIName.PORTR_DET_UP)
|
||||
{
|
||||
return !dio.GetDIValue((int)pin);
|
||||
}
|
||||
else if (pin == eDIName.BUT_EMGF)
|
||||
{
|
||||
return !dio.GetDIValue((int)pin);
|
||||
}
|
||||
else return dio.GetDIValue((int)pin);
|
||||
}
|
||||
|
||||
|
||||
private void Sm_SPS(object sender, EventArgs e)
|
||||
{
|
||||
//limit 센서에 의해 자동 멈춤
|
||||
if (swplc.Init)
|
||||
{
|
||||
AutoStop();
|
||||
WriteBuffer();
|
||||
CommandProcess();
|
||||
}
|
||||
}
|
||||
void CommandProcess()
|
||||
{
|
||||
//시스템 상태값 0:7 기록
|
||||
swplc.Write(0, buffer, 0, 12);
|
||||
|
||||
//명령어 가져오기 7:3개의 데이터 확인
|
||||
if (swplc.ReadBytes(12, 3, out byte[] plcbuffer))
|
||||
{
|
||||
//내부버퍼에 상태를 기록한다
|
||||
Array.Copy(plcbuffer, 0, this.buffer, 12, plcbuffer.Length);
|
||||
}
|
||||
|
||||
//command value
|
||||
var lcmd = ReadBuffer(eswPLCAddr.LCmd);
|
||||
var ccmd = ReadBuffer(eswPLCAddr.CCmd);
|
||||
var rcmd = ReadBuffer(eswPLCAddr.RCmd);
|
||||
|
||||
//left command check
|
||||
if (lcmd == 1) MotorControl(eMotList.Left, eMotControl.Down);
|
||||
else if (lcmd == 2) MotorControl(eMotList.Left, eMotControl.Up);
|
||||
else if (lcmd == 3) MotorControl(eMotList.Left, eMotControl.Stop);
|
||||
else if (lcmd == 4) MotorRefresh(eMotList.Left);
|
||||
if (lcmd < 4 && ReadBuffer(eswPLCAddr.LSts) != 0) WriteBuffer(eswPLCAddr.LSts, 0);
|
||||
|
||||
//center command check
|
||||
if (ccmd == 1) MotorControl(eMotList.Center, eMotControl.Down);
|
||||
else if (ccmd == 2) MotorControl(eMotList.Center, eMotControl.Up);
|
||||
else if (ccmd == 3) MotorControl(eMotList.Center, eMotControl.Stop);
|
||||
else if (ccmd == 4) MotorRefresh(eMotList.Center);
|
||||
if (ccmd < 4 && ReadBuffer(eswPLCAddr.CSts) != 0) WriteBuffer(eswPLCAddr.CSts, 0);
|
||||
|
||||
//right command check
|
||||
if (rcmd == 1) MotorControl(eMotList.Right, eMotControl.Down);
|
||||
else if (rcmd == 2) MotorControl(eMotList.Right, eMotControl.Up);
|
||||
else if (rcmd == 3) MotorControl(eMotList.Right, eMotControl.Stop);
|
||||
else if (rcmd == 4) MotorRefresh(eMotList.Right);
|
||||
if (rcmd < 4 && ReadBuffer(eswPLCAddr.RSts) != 0) WriteBuffer(eswPLCAddr.RSts, 0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 모터를 down -> up 합니다.
|
||||
/// </summary>
|
||||
/// <param name="mot"></param>
|
||||
/// <param name="cmd"></param>
|
||||
void MotorRefresh(eMotList mot)
|
||||
{
|
||||
eswPLCAddr address = (eswPLCAddr)((int)eswPLCAddr.LSts + (int)mot);
|
||||
var Sts = ReadBuffer(address);
|
||||
|
||||
//상태값을 변경한다
|
||||
if (Sts == 0) //처음시작하는경우이다
|
||||
{
|
||||
motortime[(int)mot] = DateTime.Now;
|
||||
MotorControl(mot, eMotControl.Down);
|
||||
WriteBuffer(address, 1);
|
||||
log.Add($"Motor[{mot}] Refresh #1 : Down,Addr={address}");
|
||||
}
|
||||
else if (Sts == 1) //3초간 내린다. 센서가 감지되면 계속 내려야 한다
|
||||
{
|
||||
//low limit check
|
||||
if (mot == eMotList.Left && GetDIValue(eDIName.PORTL_LIM_DN))
|
||||
{
|
||||
log.Add($"Motor[{mot}] Refresh #2 : Down Limit,Addr={address}");
|
||||
MotorControl(mot, eMotControl.Stop);
|
||||
WriteBuffer(address, 2);
|
||||
}
|
||||
else if (mot == eMotList.Center && GetDIValue(eDIName.PORTC_LIM_DN))
|
||||
{
|
||||
log.Add($"Motor[{mot}] Refresh #2 : Down Limit,Addr={address}");
|
||||
MotorControl(mot, eMotControl.Stop);
|
||||
WriteBuffer(address, 2);
|
||||
}
|
||||
else if (mot == eMotList.Right && GetDIValue(eDIName.PORTR_LIM_DN))
|
||||
{
|
||||
log.Add($"Motor[{mot}] Refresh #2 : Down Limit,Addr={address}");
|
||||
MotorControl(mot, eMotControl.Stop);
|
||||
WriteBuffer(address, 2);
|
||||
}
|
||||
else if (mot == eMotList.Left && GetDIValue(eDIName.PORTL_DET_UP))
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (mot == eMotList.Center && GetDIValue(eDIName.PORTC_DET_UP))
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (mot == eMotList.Right && GetDIValue(eDIName.PORTR_DET_UP))
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
var ts = DateTime.Now - motortime[(int)mot];
|
||||
if (ts.TotalSeconds > 3)
|
||||
{
|
||||
log.Add($"Motor[{mot}] Refresh #2 : Down Time Over,Addr={address}");
|
||||
MotorControl(mot, eMotControl.Stop);
|
||||
WriteBuffer(address, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (Sts == 2) //다시 올린다
|
||||
{
|
||||
log.Add($"Motor[{mot}] Refresh #3 : Up Addr={address}");
|
||||
MotorControl(mot, eMotControl.Up);
|
||||
motortime[(int)mot] = DateTime.Now;
|
||||
WriteBuffer(address, 3);
|
||||
}
|
||||
else if (Sts == 3) //올라가는건
|
||||
{
|
||||
WriteBuffer(address, 0);
|
||||
eswPLCAddr addressCmd = (eswPLCAddr)((int)eswPLCAddr.LCmd + (int)mot);
|
||||
if (addressCmd == eswPLCAddr.CCmd)
|
||||
{
|
||||
|
||||
}
|
||||
log.Add($"Refresh[{mot}] Complete Addr={address}/{addressCmd} Reset");
|
||||
swplc.Write((int)addressCmd, 0);
|
||||
}
|
||||
}
|
||||
int[] motorseq = new int[] { 0, 0, 0 };
|
||||
DateTime[] motortime = new DateTime[] { DateTime.Now, DateTime.Now, DateTime.Now };
|
||||
|
||||
void MotorControl(eMotList mot, eMotControl cmd)
|
||||
{
|
||||
if (cmd == eMotControl.Stop)
|
||||
{
|
||||
eDOName pin = eDOName.PORTL_MOT_RUN;
|
||||
if (mot == eMotList.Center) pin = eDOName.PORTC_MOT_RUN;
|
||||
else if (mot == eMotList.Right) pin = eDOName.PORTR_MOT_RUN;
|
||||
|
||||
//출력이켜져있다면 끈다
|
||||
if (GetDOValue(pin)) SetOutput(pin, false);
|
||||
}
|
||||
else if (cmd == eMotControl.Down || cmd == eMotControl.Up)
|
||||
{
|
||||
var dir = cmd == eMotControl.Down ? true : false;
|
||||
eDOName pinDir = eDOName.PORTL_MOT_DIR;
|
||||
if (mot == eMotList.Center) pinDir = eDOName.PORTC_MOT_DIR;
|
||||
else if (mot == eMotList.Right) pinDir = eDOName.PORTR_MOT_DIR;
|
||||
|
||||
eDOName pinRun = eDOName.PORTL_MOT_RUN;
|
||||
if (mot == eMotList.Center) pinRun = eDOName.PORTC_MOT_RUN;
|
||||
else if (mot == eMotList.Right) pinRun = eDOName.PORTR_MOT_RUN;
|
||||
|
||||
if (GetDOValue(pinDir) != dir) SetOutput(pinDir, dir);
|
||||
if (GetDOValue(pinRun) == false) SetOutput(pinRun, true);
|
||||
}
|
||||
|
||||
}
|
||||
bool SetOutput(eDOName pin, bool value)
|
||||
{
|
||||
return dio.SetOutput((int)pin, value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check the value of internal temporary buffer
|
||||
/// </summary>
|
||||
/// <param name="addr"></param>
|
||||
/// <returns></returns>
|
||||
byte ReadBuffer(eswPLCAddr addr)
|
||||
{
|
||||
return buffer[(int)addr];
|
||||
}
|
||||
void WriteBuffer(eswPLCAddr addr, byte value)
|
||||
{
|
||||
if (addr >= eswPLCAddr.LCmd) throw new Exception("Command must be written directly to swplc");
|
||||
buffer[(int)addr] = value;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void WriteBuffer()
|
||||
{
|
||||
var idx = 0;
|
||||
|
||||
//현재상태를 기록합니다
|
||||
var bReady = dio != null && dio.IsInit;
|
||||
buffer[idx++] = bReady ? (byte)1 : (byte)2;
|
||||
|
||||
//모터상태값3개는 동작시 발생한다
|
||||
idx++;
|
||||
idx++;
|
||||
idx++;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Automatically stops when limit sensor and detect are detected.
|
||||
/// </summary>
|
||||
void AutoStop()
|
||||
{
|
||||
if (dio == null || dio.IsInit == false || autocontrol == false) return;
|
||||
|
||||
//모터가 동작중에만 처리한다.
|
||||
var motrunL = dio.GetDOValue((int)eDOName.PORTL_MOT_RUN);
|
||||
var motrunC = dio.GetDOValue((int)eDOName.PORTC_MOT_RUN);
|
||||
var motrunR = dio.GetDOValue((int)eDOName.PORTR_MOT_RUN);
|
||||
if (motrunL)
|
||||
{
|
||||
if (GetDIValue(eDIName.BUT_EMGF))
|
||||
{
|
||||
dio.SetOutput((int)eDOName.PORTL_MOT_RUN, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
var dirDn = dio.GetDOValue((int)eDOName.PORTL_MOT_DIR);
|
||||
var limUp = GetDIValue(eDIName.PORTL_LIM_UP);
|
||||
var detect = GetDIValue(eDIName.PORTL_DET_UP);
|
||||
var limDn = GetDIValue(eDIName.PORTL_LIM_DN);
|
||||
if (dirDn == false)
|
||||
{
|
||||
if (detect)
|
||||
dio.SetOutput((int)eDOName.PORTL_MOT_RUN, false);
|
||||
else if (limUp)
|
||||
dio.SetOutput((int)eDOName.PORTL_MOT_RUN, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (limDn)
|
||||
dio.SetOutput((int)eDOName.PORTL_MOT_RUN, false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (motrunC)
|
||||
{
|
||||
if (GetDIValue(eDIName.BUT_EMGF))
|
||||
{
|
||||
dio.SetOutput((int)eDOName.PORTC_MOT_RUN, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
var dirDn = dio.GetDOValue((int)eDOName.PORTC_MOT_DIR);
|
||||
var limUp = GetDIValue(eDIName.PORTC_LIM_UP);
|
||||
var detect = GetDIValue(eDIName.PORTC_DET_UP);
|
||||
var limDn = GetDIValue(eDIName.PORTC_LIM_DN);
|
||||
if (dirDn == false)
|
||||
{
|
||||
if (detect)
|
||||
dio.SetOutput((int)eDOName.PORTC_MOT_RUN, false);
|
||||
else if (limUp)
|
||||
dio.SetOutput((int)eDOName.PORTC_MOT_RUN, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (limDn)
|
||||
dio.SetOutput((int)eDOName.PORTC_MOT_RUN, false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (motrunR)
|
||||
{
|
||||
if (GetDIValue(eDIName.BUT_EMGF))
|
||||
{
|
||||
dio.SetOutput((int)eDOName.PORTR_MOT_RUN, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
var dirDn = dio.GetDOValue((int)eDOName.PORTR_MOT_DIR);
|
||||
var limUp = GetDIValue(eDIName.PORTR_LIM_UP);
|
||||
var detect = GetDIValue(eDIName.PORTR_DET_UP);
|
||||
var limDn = GetDIValue(eDIName.PORTR_LIM_DN);
|
||||
if (dirDn == false)
|
||||
{
|
||||
if (detect)
|
||||
dio.SetOutput((int)eDOName.PORTR_MOT_RUN, false);
|
||||
else if (limUp)
|
||||
dio.SetOutput((int)eDOName.PORTR_MOT_RUN, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (limDn)
|
||||
dio.SetOutput((int)eDOName.PORTR_MOT_RUN, false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
private void Sm_Running(object sender, AR.StateMachine.RunningEventArgs e)
|
||||
{
|
||||
//throw new NotImplementedException();
|
||||
var step = (eSMStep)e.Step;
|
||||
switch (step)
|
||||
{
|
||||
case eSMStep.RUN:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void Sm_StepChanged(object sender, AR.StateMachine.StepChangeEventArgs e)
|
||||
{
|
||||
var step = (eSMStep)e.New;
|
||||
log.Add($"Step Changed : {step}");
|
||||
|
||||
}
|
||||
|
||||
DateTime starttime;
|
||||
bool startminimize = false;
|
||||
private void timer1_Tick(object sender, EventArgs e)
|
||||
{
|
||||
//io상태표시 시작시 최소한한다 230823
|
||||
if (startminimize == false && this.IsDisposed == false && this.Disposing == false)
|
||||
{
|
||||
var ts = DateTime.Now - starttime;
|
||||
if (ts.TotalSeconds > 3)
|
||||
{
|
||||
this.WindowState = FormWindowState.Minimized;
|
||||
startminimize = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var idx = 0;
|
||||
if (dio != null && dio.IsInit)
|
||||
{
|
||||
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTL_LIM_UP));
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTL_DET_UP));
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTL_LIM_DN));
|
||||
ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTL_MOT_DIR));
|
||||
ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTL_MOT_RUN));
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.BUT_EMGF));
|
||||
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTC_LIM_UP));
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTC_DET_UP));
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTC_LIM_DN));
|
||||
ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTC_MOT_DIR));
|
||||
ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTC_MOT_RUN));
|
||||
ioPanel1.setValue(idx++, false);
|
||||
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTR_LIM_UP));
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTR_DET_UP));
|
||||
ioPanel1.setValue(idx++, GetDIValue(eDIName.PORTR_LIM_DN));
|
||||
ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTR_MOT_DIR));
|
||||
ioPanel1.setValue(idx++, GetDOValue(eDOName.PORTR_MOT_RUN));
|
||||
ioPanel1.setValue(idx++, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
ioPanel1.setValue(idx++, false);
|
||||
}
|
||||
ioPanel1.Invalidate();
|
||||
|
||||
//내부버퍼표시
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
var addr = (eswPLCAddr)i;
|
||||
var val = ReadBuffer(addr);
|
||||
var title = addr.ToString();
|
||||
if (addr == eswPLCAddr.LCmd || addr == eswPLCAddr.CCmd || addr == eswPLCAddr.RCmd)
|
||||
{
|
||||
if (val == 0) title += "(--)";
|
||||
else if (val == 1) title += "(up)";
|
||||
else if (val == 2) title += "(up)";
|
||||
else if (val == 3) title += "(stop)";
|
||||
else if (val == 4) title += "(refresh)";
|
||||
gridView1.setTitle(i, title);
|
||||
}
|
||||
else if (addr == eswPLCAddr.LSts || addr == eswPLCAddr.CSts || addr == eswPLCAddr.RSts)
|
||||
{
|
||||
if (val == 0) title += "(--)";
|
||||
else title += "(~run~)";
|
||||
gridView1.setTitle(i, title);
|
||||
}
|
||||
else if (addr == eswPLCAddr.LMotor || addr == eswPLCAddr.CMotor || addr == eswPLCAddr.RMotor)
|
||||
{
|
||||
if (val == 0) title += "(--)";
|
||||
else if (val == 1) title += "(Down)";
|
||||
else if (val == 2) title += "(up)";
|
||||
else if (val == 3) title += "(stop)";
|
||||
gridView1.setTitle(i, title);
|
||||
}
|
||||
else if (addr == eswPLCAddr.LPort || addr == eswPLCAddr.CPort || addr == eswPLCAddr.RPort)
|
||||
{
|
||||
if (val == 0) title += "(--)";
|
||||
else if (val == 1) title += "(Limit -)";
|
||||
else if (val == 2) title += "(Reel Detect)";
|
||||
else if (val == 3) title += "(Limit +)";
|
||||
gridView1.setTitle(i, title);
|
||||
}
|
||||
gridView1.setValue(i, val);
|
||||
}
|
||||
gridView1.Invalidate();
|
||||
|
||||
toolStripStatusLabel1.ForeColor = autocontrol ? Color.Green : Color.Black;
|
||||
toolStripStatusLabel2.Text = swplc.Init ? "Connected" : "Disconnected";
|
||||
toolStripStatusLabel2.ForeColor = swplc.Init ? Color.Black : Color.Red;
|
||||
toolStripStatusLabel3.Text = $"Loop({sm.Loop_ms:N0}ms)";
|
||||
}
|
||||
|
||||
bool autocontrol = true;
|
||||
|
||||
private void toolStripStatusLabel1_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.autocontrol = !this.autocontrol;
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
var but = sender as Button;
|
||||
var butno = int.Parse(but.Tag.ToString());
|
||||
swplc.Write((int)eswPLCAddr.LCmd + butno, 4); //refresh port
|
||||
}
|
||||
|
||||
private void button4_Click(object sender, EventArgs e)
|
||||
{
|
||||
var but = sender as Button;
|
||||
var butno = int.Parse(but.Tag.ToString());
|
||||
if (butno == 0)
|
||||
MotorControl(eMotList.Left, eMotControl.Up);
|
||||
else if (butno == 1)
|
||||
MotorControl(eMotList.Center, eMotControl.Up);
|
||||
else if (butno == 2)
|
||||
MotorControl(eMotList.Right, eMotControl.Up);
|
||||
}
|
||||
|
||||
private void button9_Click(object sender, EventArgs e)
|
||||
{
|
||||
var but = sender as Button;
|
||||
var butno = int.Parse(but.Tag.ToString());
|
||||
if (butno == 0)
|
||||
MotorControl(eMotList.Left, eMotControl.Down);
|
||||
else if (butno == 1)
|
||||
MotorControl(eMotList.Center, eMotControl.Down);
|
||||
else if (butno == 2)
|
||||
MotorControl(eMotList.Right, eMotControl.Down);
|
||||
}
|
||||
|
||||
private void button11_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void button12_Click(object sender, EventArgs e)
|
||||
{
|
||||
var but = sender as Button;
|
||||
var butno = int.Parse(but.Tag.ToString());
|
||||
if (butno == 0)
|
||||
MotorControl(eMotList.Left, eMotControl.Stop);
|
||||
else if (butno == 1)
|
||||
MotorControl(eMotList.Center, eMotControl.Stop);
|
||||
else if (butno == 2)
|
||||
MotorControl(eMotList.Right, eMotControl.Stop);
|
||||
}
|
||||
|
||||
private void button13_Click(object sender, EventArgs e)
|
||||
{
|
||||
var dlg =UTIL.MsgQ("Do you want to exit the program?\nThis is a program that monitors I/O malfunction.It is recommended to run at all times");
|
||||
if (dlg != DialogResult.Yes) return;
|
||||
this.exitforce = true;
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
126
Handler/swPLC/Form1.resx
Normal file
@@ -0,0 +1,126 @@
|
||||
<?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="timer1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>104, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
26
Handler/swPLC/PUB.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.PerformanceData;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Project
|
||||
{
|
||||
public static class PUB
|
||||
{
|
||||
private static CSetting setting;
|
||||
public static CSetting Setting
|
||||
{
|
||||
get
|
||||
{
|
||||
if(setting == null)
|
||||
{
|
||||
setting = new CSetting();
|
||||
setting.Load();
|
||||
}
|
||||
return setting;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
88
Handler/swPLC/Program.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Project
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// 해당 애플리케이션의 주 진입점입니다.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
|
||||
Application.EnableVisualStyles();
|
||||
if (CheckSingleInstance(false) == false) return;
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new Form1());
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 중복실행 방지 체크
|
||||
/// </summary>
|
||||
/// <returns>단일 인스턴스인 경우 true, 중복실행인 경우 false</returns>
|
||||
static bool CheckSingleInstance(bool prompt = true)
|
||||
{
|
||||
string processName = Process.GetCurrentProcess().ProcessName;
|
||||
Process[] processes = Process.GetProcessesByName(processName);
|
||||
|
||||
if (processes.Length > 1)
|
||||
{
|
||||
if (prompt == false) return false;
|
||||
|
||||
// 중복실행 감지
|
||||
string message = $"⚠️ {Application.ProductName} 프로그램이 이미 실행 중입니다!\n\n" +
|
||||
"동시에 여러 개의 프로그램을 실행할 수 없습니다.\n\n" +
|
||||
"해결방법을 선택하세요:";
|
||||
|
||||
var result = MessageBox.Show(message + "\n\n예(Y): 기존 프로그램을 종료하고 새로 시작\n아니오(N): 현재 실행을 취소",
|
||||
"중복실행 감지",
|
||||
MessageBoxButtons.YesNo,
|
||||
MessageBoxIcon.Warning);
|
||||
|
||||
if (result == DialogResult.Yes)
|
||||
{
|
||||
// 기존 프로세스들을 종료
|
||||
try
|
||||
{
|
||||
int currentProcessId = Process.GetCurrentProcess().Id;
|
||||
foreach (Process process in processes)
|
||||
{
|
||||
if (process.Id != currentProcessId)
|
||||
{
|
||||
process.Kill();
|
||||
process.WaitForExit(3000); // 3초 대기
|
||||
}
|
||||
}
|
||||
|
||||
// 잠시 대기 후 계속 진행
|
||||
Thread.Sleep(1000);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"기존 프로그램 종료 중 오류가 발생했습니다:\n{ex.Message}\n\n" +
|
||||
"작업관리자에서 수동으로 종료해주세요.",
|
||||
"오류", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 현재 실행을 취소
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true; // 단일 인스턴스
|
||||
}
|
||||
}
|
||||
}
|
||||
36
Handler/swPLC/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
|
||||
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
|
||||
// 이러한 특성 값을 변경하세요.
|
||||
[assembly: AssemblyTitle("Sofware PLC")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("ATK")]
|
||||
[assembly: AssemblyProduct("swPLC")]
|
||||
[assembly: AssemblyCopyright("Copyright © ATK 2023")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
|
||||
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
|
||||
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
|
||||
[assembly: Guid("efe600a7-d7b3-4d0a-a6a5-e95032733d11")]
|
||||
|
||||
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
|
||||
//
|
||||
// 주 버전
|
||||
// 부 버전
|
||||
// 빌드 번호
|
||||
// 수정 버전
|
||||
//
|
||||
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
|
||||
// 기본값으로 할 수 있습니다.
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("23.07.24.0000")]
|
||||
[assembly: AssemblyFileVersion("23.07.24.0000")]
|
||||
63
Handler/swPLC/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
// 런타임 버전:4.0.30319.42000
|
||||
//
|
||||
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
// 이러한 변경 내용이 손실됩니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Project.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
|
||||
/// </summary>
|
||||
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
|
||||
// 클래스에서 자동으로 생성되었습니다.
|
||||
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
|
||||
// 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Project.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
|
||||
/// 재정의합니다.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
Handler/swPLC/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?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.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: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" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</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" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
26
Handler/swPLC/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
// 런타임 버전:4.0.30319.42000
|
||||
//
|
||||
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
// 이러한 변경 내용이 손실됩니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Project.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.6.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
Handler/swPLC/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
1
Handler/swPLC/README.md
Normal file
@@ -0,0 +1 @@
|
||||
# swPLC
|
||||
3
Handler/swPLC/app.config
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>
|
||||
28
Handler/swPLC/enumData.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Project
|
||||
{
|
||||
|
||||
public enum eSMStep
|
||||
{
|
||||
IDLE,
|
||||
RUN,
|
||||
}
|
||||
public enum eMotList
|
||||
{
|
||||
Left=0,
|
||||
Center,
|
||||
Right,
|
||||
}
|
||||
public enum eMotControl
|
||||
{
|
||||
Stop,
|
||||
Down,
|
||||
Up,
|
||||
|
||||
}
|
||||
}
|
||||
1
Handler/swPLC/run_claude.bat
Normal file
@@ -0,0 +1 @@
|
||||
claude --dangerously-skip-permissions
|
||||
111
Handler/swPLC/swPLC.csproj
Normal file
@@ -0,0 +1,111 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<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>{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>Project</RootNamespace>
|
||||
<AssemblyName>SoftwarePLC</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\..\..\STDLabelAttach%28ATV%29\swPLC\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="arCommUtil">
|
||||
<HintPath>..\DLL\arCommUtil.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="arControl.Net4, Version=18.7.27.1500, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\DLL\arControl.Net4.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CSetting.cs" />
|
||||
<Compile Include="enumData.cs" />
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="PUB.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Sub\arAjinextek\Library\arAjinextek_Union\arAjinextek_Union.csproj">
|
||||
<Project>{62370293-92aa-4b73-b61f-5c343eeb4ded}</Project>
|
||||
<Name>arAjinextek_Union</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Sub\CommData\CommData.csproj">
|
||||
<Project>{14e8c9a5-013e-49ba-b435-efefc77dd623}</Project>
|
||||
<Name>CommData</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Sub\CommSM\arCommSM.csproj">
|
||||
<Project>{d54444f7-1d85-4d5d-b1d1-10d040141a91}</Project>
|
||||
<Name>arCommSM</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Sub\MemoryMapCore\MemoryMapCore.csproj">
|
||||
<Project>{140af52a-5986-4413-bf02-8ea55a61891b}</Project>
|
||||
<Name>MemoryMapCore</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
78
Handler/swPLC/swPLC.sln
Normal file
@@ -0,0 +1,78 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Express 15 for Windows Desktop
|
||||
VisualStudioVersion = 15.0.28307.1000
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "swPLC", "swPLC.csproj", "{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arCommSM", "..\Sub\CommSM\arCommSM.csproj", "{D54444F7-1D85-4D5D-B1D1-10D040141A91}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommData", "..\Sub\CommData\CommData.csproj", "{14E8C9A5-013E-49BA-B435-EFEFC77DD623}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Import", "Import", "{946678A3-F25F-44B8-82E7-2E8437C6B33D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MemoryMapCore", "..\Sub\MemoryMapCore\MemoryMapCore.csproj", "{140AF52A-5986-4413-BF02-8EA55A61891B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "arAjinextek_Union", "..\Sub\arAjinextek\Library\arAjinextek_Union\arAjinextek_Union.csproj", "{62370293-92AA-4B73-B61F-5C343EEB4DED}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{EFE600A7-D7B3-4D0A-A6A5-E95032733D79}.Release|x86.Build.0 = Release|Any CPU
|
||||
{D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{D54444F7-1D85-4D5D-B1D1-10D040141A91}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D54444F7-1D85-4D5D-B1D1-10D040141A91}.Release|x86.Build.0 = Release|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{14E8C9A5-013E-49BA-B435-EFEFC77DD623}.Release|x86.Build.0 = Release|Any CPU
|
||||
{140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{140AF52A-5986-4413-BF02-8EA55A61891B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{140AF52A-5986-4413-BF02-8EA55A61891B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{140AF52A-5986-4413-BF02-8EA55A61891B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{62370293-92AA-4B73-B61F-5C343EEB4DED}.Debug|x86.Build.0 = Debug|x86
|
||||
{62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|x86.ActiveCfg = Release|x86
|
||||
{62370293-92AA-4B73-B61F-5C343EEB4DED}.Release|x86.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{D54444F7-1D85-4D5D-B1D1-10D040141A91} = {946678A3-F25F-44B8-82E7-2E8437C6B33D}
|
||||
{140AF52A-5986-4413-BF02-8EA55A61891B} = {946678A3-F25F-44B8-82E7-2E8437C6B33D}
|
||||
{62370293-92AA-4B73-B61F-5C343EEB4DED} = {946678A3-F25F-44B8-82E7-2E8437C6B33D}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {A1453016-E3CB-4CF9-97A2-94AAAAD23E11}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
28
QRValidation/CapCleaningControl/CIcon.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public class CIcon
|
||||
{
|
||||
public string Text { get; set; }
|
||||
public string Tag { get; set; }
|
||||
public RectangleF Rect { get; set; }
|
||||
public Boolean Focus { get; set; }
|
||||
public Boolean Select { get; set; }
|
||||
public CIcon() : this(string.Empty, RectangleF.Empty) { }
|
||||
public CIcon(string tag,RectangleF rect)
|
||||
{
|
||||
Text = string.Empty;
|
||||
Tag = tag;
|
||||
Rect = rect;
|
||||
}
|
||||
public float X { get { return Rect.X; } }
|
||||
public float Y { get { return Rect.Y; } }
|
||||
public float W { get { return Rect.Width; } }
|
||||
public float H { get { return Rect.Height; } }
|
||||
}
|
||||
}
|
||||
208
QRValidation/CapCleaningControl/CItem.cs
Normal file
@@ -0,0 +1,208 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
namespace UIControl
|
||||
{
|
||||
[Serializable]
|
||||
public class CItem
|
||||
{
|
||||
public Boolean Active { get; set; }
|
||||
public Boolean PLCWriteNo { get; set; }
|
||||
public Boolean PLCWriteSize { get; set; }
|
||||
public Boolean Delete { get; set; }
|
||||
/// <summary>
|
||||
/// 어떠한 포트에서 픽업 되었는지
|
||||
/// </summary>
|
||||
public int iPort { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 출력 포트
|
||||
/// </summary>
|
||||
public int oPort { get; set; }
|
||||
|
||||
public Boolean ExistError { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 배출여부
|
||||
/// </summary>
|
||||
public int ErrorOut { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 크기는 어떠한지(7 or 13)
|
||||
/// </summary>
|
||||
public string Size { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 존번호 0~10
|
||||
/// </summary>
|
||||
public int ZoneIndex { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 피커에의해서 드랍된 시간
|
||||
/// </summary>
|
||||
public DateTime DropTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 차수별 일련번호
|
||||
/// </summary>
|
||||
public UInt16 Seq { get; set; }
|
||||
|
||||
public DateTime BarcodeStart { get; set; }
|
||||
public DateTime BarcodeEnd { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 바코드 처리가 완료디었는가?
|
||||
/// 종료일자가 설정되면 처리완료로 합니다.
|
||||
/// 201028
|
||||
/// </summary>
|
||||
public Boolean BarcodeProcess
|
||||
{
|
||||
get
|
||||
{
|
||||
if (BarcodeEnd.Year == 1982) return false;
|
||||
else if (BarcodeEnd <= BarcodeStart) return false;
|
||||
else return true;
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime PlcStartTime { get; set; }
|
||||
public DateTime PlcEndTime { get; set; }
|
||||
|
||||
public DateTime ZoneIntime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 컨베이어에 들어온 시간
|
||||
/// 피커에서 드랍되면 dropTime 과 동일하며, 외부에서 들어오면 센서가 최초 감지한 시간이 된다
|
||||
/// </summary>
|
||||
public DateTime InTime { get; set; }
|
||||
public DateTime OutTime { get; set; }
|
||||
public Rectangle Rect { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// jobhistory에 연결되는 데이터 키
|
||||
/// </summary>
|
||||
public string JGUID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 바코드 데이터와 연결되는 키값
|
||||
/// </summary>
|
||||
public string BGUID { get; set; }
|
||||
public string RID { get; set; }
|
||||
public string SID { get; set; }
|
||||
public string VLOT { get; set; }
|
||||
public string BarcodeRaw { get; set; }
|
||||
public string BarcodeMsg { get; set; }
|
||||
public Boolean Processing { get; set; }
|
||||
public Boolean Complete { get; set; }
|
||||
public string GUID { get; private set; }
|
||||
public int Qty { get; set; }
|
||||
public int QtyAcc { get; set; }
|
||||
public int QtyMax { get; set; }
|
||||
public List<string> UnloaderMsg { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 바코드의 완료여부, timeout 혻은 설정 되었을때 적용
|
||||
/// </summary>
|
||||
public Boolean BarcodeDone { get; set; }
|
||||
|
||||
public Boolean hasBarcode
|
||||
{
|
||||
get
|
||||
{
|
||||
return !string.IsNullOrEmpty(RID);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 지정한 문자가 포함되어잇다면 true 반환
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
/// <returns></returns>
|
||||
public Boolean CheckMessage(string msg)
|
||||
{
|
||||
if (UnloaderMsg == null || UnloaderMsg.Count < 1) return false;
|
||||
foreach (var item in UnloaderMsg)
|
||||
if (item.Contains(msg)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public void AddMessage(string msg)
|
||||
{
|
||||
if (this.UnloaderMsg.Contains(msg) == false)
|
||||
UnloaderMsg.Add(msg);
|
||||
}
|
||||
public void ClearMessage()
|
||||
{
|
||||
this.UnloaderMsg.Clear();
|
||||
}
|
||||
|
||||
public CItem()
|
||||
{
|
||||
ExistError = false;
|
||||
Active = true;
|
||||
Complete = false;
|
||||
PLCWriteNo = false;
|
||||
PLCWriteSize = false;
|
||||
Qty = 0;
|
||||
QtyAcc = 0; //200913 누계
|
||||
QtyMax = 0; //200913 최대값
|
||||
UnloaderMsg = new List<string>();
|
||||
ErrorOut = 0;
|
||||
this.GUID = Guid.NewGuid().ToString();
|
||||
BGUID = string.Empty;
|
||||
JGUID = string.Empty;
|
||||
VLOT = string.Empty;
|
||||
Seq = 0;
|
||||
SID = string.Empty;
|
||||
BarcodeRaw = string.Empty;
|
||||
BarcodeMsg = string.Empty;
|
||||
RID = string.Empty;
|
||||
Rect = Rectangle.Empty;
|
||||
Delete = false;
|
||||
Processing = false;
|
||||
DropTime = DateTime.Parse("1982-11-23");
|
||||
BarcodeStart = DateTime.Parse("1982-11-23");
|
||||
BarcodeEnd = DateTime.Parse("1982-11-23");
|
||||
PlcStartTime = DateTime.Parse("1982-11-23");
|
||||
PlcEndTime = DateTime.Parse("1982-11-23");
|
||||
InTime = DateTime.Parse("1982-11-23");
|
||||
OutTime = DateTime.Parse("1982-11-23");
|
||||
ZoneIntime = DateTime.Parse("1982-11-23");
|
||||
|
||||
ZoneIndex = -1;
|
||||
oPort = -1;
|
||||
iPort = -1;
|
||||
Size = string.Empty;
|
||||
}
|
||||
public CItem Clone()
|
||||
{
|
||||
var item = new CItem();
|
||||
item.Qty = Qty;
|
||||
item.Seq = Seq;//0;
|
||||
item.SID = SID;// string.Empty;
|
||||
item.VLOT = VLOT;
|
||||
item.BarcodeRaw = BarcodeRaw;//string.Empty;
|
||||
item.BarcodeMsg = BarcodeMsg;//string.Empty;
|
||||
item.RID = RID;//string.Empty;
|
||||
item.Rect = Rect;//Rectangle.Empty;
|
||||
item.Delete = Delete;//DropTime;//;
|
||||
item.ExistError = ExistError;
|
||||
|
||||
item.DropTime = DropTime;// DateTime.Parse("1982-11-23");
|
||||
item.BarcodeStart = BarcodeStart;// DateTime.Parse("1982-11-23");
|
||||
item.BarcodeEnd = BarcodeEnd;//DropTime;//.Parse("1982-11-23");
|
||||
item.PlcStartTime = PlcStartTime;//DateTime.Parse("1982-11-23");
|
||||
item.PlcEndTime = PlcEndTime;// DateTime.Parse("1982-11-23");
|
||||
item.InTime = InTime;//DropTime;//.Parse("1982-11-23");
|
||||
item.OutTime = OutTime;//DateTime.Parse("1982-11-23");
|
||||
item.ZoneIntime = ZoneIntime;//DateTime.Parse("1982-11-23");
|
||||
item.ZoneIndex = ZoneIndex;
|
||||
item.oPort = oPort;
|
||||
item.iPort = iPort;
|
||||
item.Size = Size;
|
||||
return item;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
84
QRValidation/CapCleaningControl/CMenu.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
|
||||
|
||||
[Serializable]
|
||||
public class CMenuButton
|
||||
{
|
||||
public eButtonType Shape { get; set; }
|
||||
public string Text { get; set; }
|
||||
public string Tag { get; set; }
|
||||
public Rectangle Rect { get; set; }
|
||||
public Color BackColor { get; set; }
|
||||
public Color ForeColor { get; set; }
|
||||
public Color OverColor { get; set; }
|
||||
public Color BorderColor { get; set; }
|
||||
public byte BorderSize { get; set; }
|
||||
public Font Font { get; set; }
|
||||
public CMenuButton() : this(string.Empty, string.Empty) { }
|
||||
public CMenuButton(string text, string tag)
|
||||
{
|
||||
Font = null;
|
||||
BorderColor = Color.Black;
|
||||
BorderSize = 5;
|
||||
Shape = eButtonType.Rectangle;
|
||||
this.Text = text;
|
||||
this.Tag = tag;
|
||||
BackColor = Color.White;
|
||||
OverColor = Color.Gold;
|
||||
ForeColor = Color.Black;
|
||||
text = "Button";
|
||||
}
|
||||
public string menutag { get; set; }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class CMenu
|
||||
{
|
||||
public string Title { get; set; }
|
||||
public string Text { get; set; }
|
||||
public string Tag { get; set; }
|
||||
public RectangleF Rect { get; set; }
|
||||
public Boolean Focus { get; set; }
|
||||
public Boolean Select { get; set; }
|
||||
public eMsgIcon Icon { get; set; }
|
||||
public CMenuButton[] buttons { get; set; }
|
||||
public Font Font { get; set; }
|
||||
public Color BackColor { get; set; }
|
||||
public Color ForeColor { get; set; }
|
||||
public Color BorderColor { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 반드시 사용자의 허가를 받아야 넘어갈 수 있는 메뉴
|
||||
/// </summary>
|
||||
public Boolean RequireInput { get; set; }
|
||||
|
||||
public CMenu() : this("Contents", "Title", "tag", eMsgIcon.Info, null) { }
|
||||
|
||||
public CMenu(string text_, string title_, string tag_, eMsgIcon icon_, params CMenuButton[] buttons_)
|
||||
{
|
||||
this.Tag = tag_;
|
||||
this.Title = title_;
|
||||
this.Text = text_;
|
||||
this.Icon = icon_;
|
||||
this.buttons = buttons_;
|
||||
this.Font = new Font("맑은 고딕", 15, FontStyle.Bold);
|
||||
BackColor = Color.White;
|
||||
ForeColor = Color.Black;
|
||||
BorderColor = Color.Orange;
|
||||
RequireInput = false;
|
||||
|
||||
}
|
||||
public float X { get { return Rect.X; } }
|
||||
public float Y { get { return Rect.Y; } }
|
||||
public float W { get { return Rect.Width; } }
|
||||
public float H { get { return Rect.Height; } }
|
||||
}
|
||||
}
|
||||
86
QRValidation/CapCleaningControl/CPicker.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public class CPicker
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// 릴의 크기가 들어있음 (7 or 13)
|
||||
/// </summary>
|
||||
public string ReelSize { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 릴이 있는 경우 해당 릴이 어느 포트에서 왔는지의 번호
|
||||
/// </summary>
|
||||
public short PortIndex { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 현재 작업이 프론트 포트의 작업인가? (portindex 값을 가지고 판단함)
|
||||
/// </summary>
|
||||
public Boolean isFrontJob
|
||||
{
|
||||
get
|
||||
{
|
||||
if (PortIndex <= 1) return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
|
||||
public Boolean Overload { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// VAC센서의 값을 가지고 있음, 현재 릴이 감지되었는가?
|
||||
/// </summary>
|
||||
public Boolean isReelDetect
|
||||
{
|
||||
get
|
||||
{
|
||||
return VacDetect.Where(t => t == true).Count() > 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// PICK후 60mm위치에서 미리 확인한 감지 상태값
|
||||
/// 이값을 가지고 도중에 떨궜을 상황을 감지한다
|
||||
/// </summary>
|
||||
public Boolean PreCheckItemOn { get; set; }
|
||||
public Boolean HasRealItemOn { get; set; }
|
||||
public Boolean ItemOn { get; set; }
|
||||
public Boolean[] VacDetect { get; set; }
|
||||
public Boolean[] VacOutput { get; set; }
|
||||
public CPicker()
|
||||
{
|
||||
this.Overload = false;
|
||||
ReelSize = "7";
|
||||
PortIndex = -1;
|
||||
HasRealItemOn = false;
|
||||
PreCheckItemOn = false;
|
||||
}
|
||||
public void Clear()
|
||||
{
|
||||
this.Overload = false;
|
||||
ItemOn = false;
|
||||
ReelSize = "--";
|
||||
PortIndex = -1;
|
||||
if(VacDetect != null && VacDetect.Length > 0)
|
||||
{
|
||||
for (int i = 0; i < VacDetect.Length; i++)
|
||||
VacDetect[i] = false;
|
||||
}
|
||||
if (VacOutput != null && VacOutput.Length > 0)
|
||||
{
|
||||
for (int i = 0; i < VacOutput.Length; i++)
|
||||
VacOutput[i] = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
334
QRValidation/CapCleaningControl/CPort.cs
Normal file
@@ -0,0 +1,334 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public class CPort
|
||||
{
|
||||
public Boolean Safty1Err { get; set; }
|
||||
public Boolean Safty2Err { get; set; }
|
||||
public Boolean SaftyErr { get { return Safty1Err || Safty2Err; } }
|
||||
public Boolean MotorRun { get; set; }
|
||||
public Boolean MotorDir { get; set; }
|
||||
public int arrowIndex { get; set; }
|
||||
public Boolean LimitUpper { get; set; }
|
||||
public Boolean LimitLower { get; set; }
|
||||
public Boolean OverLoad
|
||||
{
|
||||
get
|
||||
{
|
||||
return LimitLower && DetectUp;
|
||||
}
|
||||
}
|
||||
public byte AlignOK { get; set; }
|
||||
public Boolean Ready { get; set; }
|
||||
|
||||
public Boolean DetectUp { get; set; } //상단에 있는 자재 감지 센서
|
||||
public Boolean DetectDn { get; set; } //하단에 있는 자재 감지 센서
|
||||
// public List<CItem> Items { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 7인치 13인치의 크기 정보를 표시한다
|
||||
/// </summary>
|
||||
public string title { get; set; }
|
||||
public int reelNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 차수별 릴 작업 수량이 표시됨
|
||||
/// </summary>
|
||||
public int reelCount { get; set; }
|
||||
|
||||
public int errorCount { get; set; }
|
||||
|
||||
|
||||
|
||||
public System.Drawing.Color bgColor { get; set; }
|
||||
private Boolean _enable = false;
|
||||
|
||||
public Color fgColor { get; set; }
|
||||
public Color fgColorCount { get; set; }
|
||||
|
||||
public Rectangle rect_title { get; set; }
|
||||
public RectangleF Rect { get; set; }
|
||||
public Rectangle rect_count { get; set; }
|
||||
public int AnimationStepPort { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 0:notcart , 1:ready, 2:full
|
||||
/// </summary>
|
||||
public ushort State { get; set; }
|
||||
|
||||
public Boolean Enable
|
||||
{
|
||||
get { return _enable; }
|
||||
set
|
||||
{
|
||||
_enable = value;
|
||||
this.bgColor = value ? Color.Lime : Color.FromArgb(43, 43, 43);
|
||||
this.fgColor = value ? Color.White : Color.DimGray;
|
||||
}
|
||||
}
|
||||
|
||||
public CPort()
|
||||
{
|
||||
Ready = false;
|
||||
Enable = false;
|
||||
rect_title = Rectangle.Empty;
|
||||
rect_count = Rectangle.Empty;
|
||||
Rect = RectangleF.Empty;
|
||||
reelNo = -1;
|
||||
arrowIndex = 2;
|
||||
reelCount = 0;
|
||||
fgColor = Color.Black;
|
||||
Clear();
|
||||
AlignOK = 0;
|
||||
AnimationStepPort = 9;
|
||||
//Items.Clear();
|
||||
}
|
||||
//public void ClearItem()
|
||||
//{
|
||||
// Items.Clear();
|
||||
//}
|
||||
public void Clear()
|
||||
{
|
||||
Enable = true;
|
||||
Safty1Err = false;
|
||||
Safty2Err = false;
|
||||
MotorRun = false;
|
||||
MotorDir = false;
|
||||
LimitUpper = false;
|
||||
LimitLower = false;
|
||||
reelNo = 0;
|
||||
reelCount = 0;
|
||||
DetectUp = false;
|
||||
DetectDn = false;
|
||||
}
|
||||
|
||||
public void Display(Graphics g, Font fCnt, Font fMsg, Boolean InputMode,Boolean InputActive)
|
||||
{
|
||||
if (Enable == false)
|
||||
{
|
||||
g.DrawLine(Pens.DimGray, Rect.Left, Rect.Top, Rect.Right, Rect.Bottom);
|
||||
g.DrawLine(Pens.DimGray, Rect.Right, Rect.Top, Rect.Left, Rect.Bottom);
|
||||
}
|
||||
|
||||
//모터사용시 화살표
|
||||
eDirection DirL = MotorDir == false ? eDirection.TopToBottom : eDirection.BottomToTop;
|
||||
if (MotorRun) UIControl.Common.Draw_Arrow(g, Rect, DirL, arrowIndex, AnimationStepPort, Color.Gold, fMsg);
|
||||
|
||||
//글자표시 (크기 및 작업 수량)
|
||||
var sf = new StringFormat
|
||||
{
|
||||
Alignment = StringAlignment.Center,
|
||||
LineAlignment = StringAlignment.Center,
|
||||
};
|
||||
|
||||
|
||||
//리밋영역표시(상/하)
|
||||
var limitSizeH = (int)(Rect.Height * 0.2);
|
||||
|
||||
|
||||
if (OverLoad == true)//과적
|
||||
{
|
||||
g.FillRectangle(Brushes.Red, Rect);
|
||||
if (InputMode)
|
||||
{
|
||||
using (Font f = new Font("맑은 고딕", 20, FontStyle.Bold))
|
||||
{
|
||||
g.DrawString("적재초과",
|
||||
f,
|
||||
new SolidBrush(fgColor), Rect, sf);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
g.DrawString("OVER\nLOAD", fMsg, new SolidBrush(fgColor), Rect, sf);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//입력모드에서는 별도 처리를 한다
|
||||
if (InputMode)
|
||||
{
|
||||
if(InputActive)
|
||||
{
|
||||
using (Font f = new Font("맑은 고딕", 20, FontStyle.Bold))
|
||||
{
|
||||
var msg = "투입준비";
|
||||
g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.Black)), Rect);
|
||||
g.DrawString(msg, f, new SolidBrush(fgColor), Rect, sf);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using (Font f = new Font("맑은 고딕", 20, FontStyle.Bold))
|
||||
{
|
||||
var msg = "--";
|
||||
g.FillRectangle(new SolidBrush(Color.FromArgb(100, Color.Black)), Rect);
|
||||
g.DrawString(msg, f, new SolidBrush(fgColor), Rect, sf);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (errorCount > 5)
|
||||
{
|
||||
g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Gold)), Rect);
|
||||
}
|
||||
else
|
||||
{
|
||||
g.FillRectangle(new SolidBrush(Color.FromArgb(150, Color.Black)), Rect);
|
||||
}
|
||||
|
||||
|
||||
if (errorCount > 0)
|
||||
{
|
||||
if (errorCount > 05)
|
||||
{
|
||||
g.DrawString(reelCount.ToString() + "\n(ERROR)", fCnt, new SolidBrush(Color.Red), Rect, sf);
|
||||
}
|
||||
else g.DrawString(reelCount.ToString() + "\nE:" + errorCount.ToString(), fCnt, new SolidBrush(Color.Red), Rect, sf);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
g.DrawString(reelCount.ToString(), fCnt, new SolidBrush(fgColor), Rect, sf);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//데두리표시 ( 비활성 회색, 활성 감지 : 라임, 미감지 흰색)
|
||||
Color borderL = Enable ? (LimitUpper ? Color.Red : (LimitLower ? Color.Blue : (DetectUp ? Color.Lime : Color.White))) : Color.DimGray;
|
||||
if (OverLoad) borderL = Color.White;
|
||||
int bordersize = (InputMode ? 10 : 7);//ortL.enable ? 7 : 1;
|
||||
|
||||
|
||||
|
||||
if (OverLoad == false)
|
||||
{
|
||||
var fontsize = InputMode ? 9 : 9;
|
||||
using (Font fnt = new Font("Consolas", fontsize, FontStyle.Bold))
|
||||
{
|
||||
//상단 리밋은 상단에
|
||||
if (LimitUpper)
|
||||
{
|
||||
var msgLU = "+ LIMIT";
|
||||
var fsize = g.MeasureString(msgLU, fnt);
|
||||
var msgW = fsize.Width * 1.5f;
|
||||
var msgH = fsize.Height * 1.5f;
|
||||
if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f;
|
||||
|
||||
var RectMsgL = new RectangleF(
|
||||
Rect.Left + (Rect.Width - msgW) / 2.0f,
|
||||
Rect.Top - msgH - bordersize / 2.0f + 1,
|
||||
msgW, msgH);
|
||||
|
||||
g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Red)), RectMsgL);
|
||||
// g.DrawRectangle(Pens.Black, RectMsgL);
|
||||
g.DrawString(msgLU, fnt, Color.White, RectMsgL);
|
||||
|
||||
}
|
||||
|
||||
//아이템 감지신호는 상단 아래쪽으로
|
||||
if (Ready)
|
||||
{
|
||||
var msgLU = "PORT READY";
|
||||
var fsize = g.MeasureString(msgLU, fnt);
|
||||
var msgW = fsize.Width * 1.5f;
|
||||
var msgH = fsize.Height * 1.5f;
|
||||
if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f;
|
||||
|
||||
var RectMsgL = new RectangleF(
|
||||
Rect.Left + (Rect.Width - msgW) / 2.0f,
|
||||
Rect.Top + bordersize / 2.0f - 1,
|
||||
msgW, msgH);
|
||||
|
||||
g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Lime)), RectMsgL);
|
||||
// g.DrawRectangle(Pens.Black, RectMsgL);
|
||||
g.DrawString(msgLU, fnt, Color.Black, RectMsgL);
|
||||
}
|
||||
|
||||
|
||||
//하단 리밋은 하단에표시
|
||||
if (LimitLower)
|
||||
{
|
||||
var msgLU = "- LIMIT";
|
||||
var fsize = g.MeasureString(msgLU, fnt);
|
||||
var msgW = fsize.Width * 1.5f;
|
||||
var msgH = fsize.Height * 1.5f;
|
||||
if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f;
|
||||
|
||||
var RectMsgL = new RectangleF(
|
||||
Rect.Left + (Rect.Width - msgW) / 2.0f,
|
||||
Rect.Bottom + bordersize / 2.0f - 1,
|
||||
msgW, msgH);
|
||||
|
||||
g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Blue)), RectMsgL);
|
||||
//g.DrawString(msgLU, fnt, Brushes.White, RectMsgL, sf);
|
||||
g.DrawString(msgLU, fnt, Color.White, RectMsgL);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//아이템 감지
|
||||
if (DetectUp)
|
||||
{
|
||||
var msgLU = "ITEM DETECT";
|
||||
var fsize = g.MeasureString(msgLU, fnt);
|
||||
var msgW = fsize.Width * 1.5f;
|
||||
var msgH = fsize.Height * 1.5f;
|
||||
if (msgW > this.Rect.Width * 0.70f) msgW = this.Rect.Width * 0.7f;
|
||||
|
||||
var RectMsgL = new RectangleF(
|
||||
Rect.Left + (Rect.Width - msgW) / 2.0f,
|
||||
Rect.Bottom - msgH - bordersize / 2.0f + 1,
|
||||
msgW, msgH);
|
||||
|
||||
g.FillRectangle(new SolidBrush(Color.FromArgb(250, Color.Lime)), RectMsgL);
|
||||
//g.DrawRectangle(Pens.Black, RectMsgL);
|
||||
g.DrawString(msgLU, fnt, Color.Black, RectMsgL);
|
||||
|
||||
}
|
||||
|
||||
//안전 오류는 중앙에
|
||||
|
||||
if (SaftyErr && InputMode == false)
|
||||
{
|
||||
var msgS = "SAFTY ERROR";
|
||||
var fsize = g.MeasureString(msgS, fMsg);
|
||||
var msgW = fsize.Width * 1.5f;
|
||||
var msgH = fsize.Height * 1.5f;
|
||||
if (msgW > this.Rect.Width * 0.80f) msgW = this.Rect.Width * 0.8f;
|
||||
|
||||
var RectMsgL = new RectangleF(
|
||||
Rect.Left + (Rect.Width - msgW) / 2.0f,
|
||||
Rect.Top + (Rect.Height - msgH) / 2.0f,
|
||||
msgW, msgH);
|
||||
|
||||
g.FillRectangle(new SolidBrush(Color.FromArgb(240, Color.Khaki)), RectMsgL);
|
||||
g.DrawRectangle(Pens.Black, RectMsgL);
|
||||
g.DrawString(msgS, fMsg, Color.Maroon, RectMsgL);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//테두리가 리밋영역을 감추도록 그린다
|
||||
g.DrawRectangle(new Pen(borderL, bordersize), Rect.Left, Rect.Top, Rect.Width, Rect.Height);
|
||||
|
||||
|
||||
|
||||
|
||||
sf.Dispose();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
41
QRValidation/CapCleaningControl/CUnPortData.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public partial class Unloader
|
||||
{
|
||||
public class CPortData
|
||||
{
|
||||
/// <summary>
|
||||
/// sid
|
||||
/// </summary>
|
||||
public string sid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 현재진행된 수량
|
||||
/// </summary>
|
||||
public int qty { get; set; }
|
||||
|
||||
public string towername { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 전체기준수량
|
||||
/// </summary>
|
||||
public int kpc { get; set; }
|
||||
public CPortData(string sid, int qty, int kpc,string tower_)
|
||||
{
|
||||
this.sid = sid;
|
||||
this.qty = qty;
|
||||
this.kpc = kpc;
|
||||
this.Active = true;
|
||||
this.towername = tower_;
|
||||
}
|
||||
public CPortData(string sid,string towr) : this(sid, 0, 0,towr) { }
|
||||
public Boolean Active { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
73
QRValidation/CapCleaningControl/CUnPortInfo.cs
Normal file
@@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public partial class Unloader
|
||||
{
|
||||
public class CPort
|
||||
{
|
||||
public int SortKey { get; set; }
|
||||
public int portNo { get; set; }
|
||||
public string portName { get; set; }
|
||||
|
||||
public int idx { get; set; }
|
||||
[Browsable(false)]
|
||||
public Rectangle rect_title { get; set; }
|
||||
[Browsable(false)]
|
||||
public Rectangle rect { get; set; }
|
||||
[Browsable(false)]
|
||||
public Rectangle rect_count { get; set; }
|
||||
[Browsable(false)]
|
||||
public Rectangle rect_signL { get; set; }
|
||||
[Browsable(false)]
|
||||
public Rectangle rect_signR { get; set; }
|
||||
|
||||
public List<CPortData> reelSID;
|
||||
|
||||
public int cartSize { get; set; }
|
||||
public ushort cartState { get; set; }
|
||||
public Boolean SIDUpdate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 이값은 PLC에서 읽은 값이다
|
||||
/// </summary>
|
||||
public int reelCount { get; set; }
|
||||
public int reelCountPLC { get; set; }
|
||||
|
||||
public string Mode { get; set; }
|
||||
|
||||
public CPort()
|
||||
{
|
||||
SortKey = 0;
|
||||
idx = -1;
|
||||
Mode = "AUTO";// ePortMode.Auto;
|
||||
rect_title = Rectangle.Empty;
|
||||
rect = Rectangle.Empty;
|
||||
rect_count = Rectangle.Empty;
|
||||
rect_signL = Rectangle.Empty;
|
||||
rect_signR = Rectangle.Empty;
|
||||
reelSID = new List<CPortData>();
|
||||
cartSize = 0;
|
||||
cartState = 0;
|
||||
Clear();
|
||||
SIDUpdate = true;
|
||||
|
||||
}
|
||||
public void Clear()
|
||||
{
|
||||
reelSID.Clear();// = new string[0];// string.Empty;
|
||||
reelCount = 0;
|
||||
reelCountPLC = 0;
|
||||
|
||||
//기존에 있었는데 지웠다면 업데이트해야함
|
||||
if (reelSID.Count > 0) SIDUpdate = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
126
QRValidation/CapCleaningControl/Common.cs
Normal file
@@ -0,0 +1,126 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public static class Common
|
||||
{
|
||||
public static void Draw_Arrow(Graphics g, RectangleF rect, eDirection dir, int arrowindex, int animstep, Color basecolor,Font f )
|
||||
{
|
||||
//컨베어 RUN 표시기 표시
|
||||
var paddingX = rect.Height * 0.15f; //상하단에 이만큼의 여백을 준다
|
||||
var paddingY = rect.Height * 0.15f;
|
||||
var sigHeight = rect.Height - (paddingX * 2.0f);
|
||||
var sigWidth = rect.Width / animstep;
|
||||
|
||||
if (dir == eDirection.BottomToTop || dir == eDirection.TopToBottom)
|
||||
{
|
||||
paddingX = rect.Width * 0.15f;
|
||||
paddingY = rect.Height / 10.0f;
|
||||
sigWidth = rect.Width - (paddingX * 2.0f);
|
||||
sigHeight = rect.Height / 4.5f;
|
||||
}
|
||||
List<PointF> pts = new List<PointF>();
|
||||
|
||||
//사각영역을 표시해준다.
|
||||
//if (dir == eDirection.LeftToRight || dir == eDirection.RightToLeft)
|
||||
//{
|
||||
// var rect2width = rect.Width / animstep;
|
||||
// for (int i = 0; i < animstep; i++)
|
||||
// {
|
||||
// var rect2 = new RectangleF(rect.X + i * rect2width, rect.Y, rect2width, rect.Height);
|
||||
// g.DrawRectangle(new Pen(Color.FromArgb(100, Color.Gray)), rect2.Left, rect2.Top, rect2.Width, rect2.Height);
|
||||
// g.DrawString(i.ToString(), this.Font, Brushes.White, rect2.Left, rect2.Top);
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// var rect2width = rect.Height / animstep;
|
||||
// for (int i = 0; i < animstep; i++)
|
||||
// {
|
||||
// var rect2 = new RectangleF(rect.X, rect.Y + i * rect2width, rect.Width, rect2width);
|
||||
// g.DrawRectangle(new Pen(Color.FromArgb(100, Color.Gray)), rect2.Left, rect2.Top, rect2.Width, rect2.Height);
|
||||
// g.DrawString(i.ToString(), this.Font, Brushes.White, rect2.Left, rect2.Top);
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
|
||||
var bX = rect.X + paddingX;
|
||||
var bY = rect.Y + paddingY;
|
||||
|
||||
if (dir == eDirection.LeftToRight)
|
||||
{
|
||||
var gridSize = rect.Width / animstep;
|
||||
pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth), rect.Y + paddingX));
|
||||
pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX));
|
||||
pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth * 2.0f, rect.Y + paddingX + sigHeight / 2.0f));
|
||||
pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX + sigHeight));
|
||||
pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth), rect.Y + paddingX + sigHeight));
|
||||
pts.Add(new PointF(rect.X + paddingX + (arrowindex * sigWidth) + sigWidth, rect.Y + paddingX + sigHeight / 2.0f));
|
||||
}
|
||||
else if (dir == eDirection.RightToLeft)
|
||||
{
|
||||
var gridSize = rect.Width / animstep;
|
||||
paddingY = rect.Height * 0.1f; //상,하 여백을 10%크기로 한다
|
||||
sigHeight = rect.Height - paddingY * 2.0f;
|
||||
|
||||
bX = rect.X + ((animstep - 1) - arrowindex) * gridSize;
|
||||
bY = rect.Y + paddingY;
|
||||
|
||||
pts.Add(new PointF(bX, bY));
|
||||
pts.Add(new PointF(bX - gridSize, bY + sigHeight / 2.0f));
|
||||
pts.Add(new PointF(bX, bY + sigHeight));
|
||||
pts.Add(new PointF(bX + gridSize, bY + sigHeight));
|
||||
pts.Add(new PointF(bX, bY + sigHeight / 2.0f));
|
||||
pts.Add(new PointF(bX + gridSize, bY));
|
||||
}
|
||||
else if (dir == eDirection.TopToBottom)
|
||||
{
|
||||
var gridSize = rect.Height / animstep;
|
||||
paddingX = rect.Width * 0.2f; //상,하 여백을 10%크기로 한다
|
||||
sigWidth = rect.Width - paddingX * 2.0f;
|
||||
|
||||
bX = rect.X + paddingX;
|
||||
bY = rect.Y + (arrowindex + 1) * gridSize;
|
||||
|
||||
|
||||
pts.Add(new PointF(bX, bY));
|
||||
pts.Add(new PointF(bX + (sigWidth / 2.0f), bY + gridSize));
|
||||
pts.Add(new PointF(bX + sigWidth, bY));
|
||||
pts.Add(new PointF(bX + sigWidth, bY - gridSize));
|
||||
pts.Add(new PointF(bX + (sigWidth / 2.0f), bY));
|
||||
pts.Add(new PointF(bX, bY - gridSize));
|
||||
|
||||
}
|
||||
else if (dir == eDirection.BottomToTop)
|
||||
{
|
||||
var gridSize = rect.Height / animstep;
|
||||
paddingX = rect.Width * 0.2f; //상,하 여백을 10%크기로 한다
|
||||
sigWidth = rect.Width - paddingX * 2.0f;
|
||||
|
||||
bX = rect.X + paddingX;
|
||||
bY = rect.Y + ((animstep - 1) - arrowindex) * gridSize;
|
||||
|
||||
|
||||
pts.Add(new PointF(bX, bY));
|
||||
pts.Add(new PointF(bX + (sigWidth / 2.0f), bY - gridSize));
|
||||
pts.Add(new PointF(bX + sigWidth, bY));
|
||||
pts.Add(new PointF(bX + sigWidth, bY + gridSize));
|
||||
pts.Add(new PointF(bX + (sigWidth / 2.0f), bY));
|
||||
pts.Add(new PointF(bX, bY + gridSize));
|
||||
}
|
||||
if (pts.Count > 0)
|
||||
{
|
||||
g.FillPolygon(new SolidBrush(Color.FromArgb(10, basecolor)), pts.ToArray());
|
||||
g.DrawPolygon(new Pen(Color.FromArgb(100, basecolor)), pts.ToArray());
|
||||
}
|
||||
|
||||
//g.DrawString(arrowindex.ToString(), f, Brushes.Yellow, rect.Left, rect.Top - 20);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
41
QRValidation/CapCleaningControl/CtlMotor.Designer.cs
generated
Normal file
@@ -0,0 +1,41 @@
|
||||
namespace UIControl
|
||||
{
|
||||
partial class CtlMotor
|
||||
{
|
||||
/// <summary>
|
||||
/// 필수 디자이너 변수입니다.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 사용 중인 모든 리소스를 정리합니다.
|
||||
/// </summary>
|
||||
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 구성 요소 디자이너에서 생성한 코드
|
||||
|
||||
/// <summary>
|
||||
/// 디자이너 지원에 필요한 메서드입니다.
|
||||
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// CtlMotor
|
||||
//
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
79
QRValidation/CapCleaningControl/CtlMotor.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public partial class CtlMotor : Control
|
||||
{
|
||||
public int Length { get; set; }
|
||||
public Boolean Pin_Run { get; set; }
|
||||
public Boolean Pin_DirCW { get; set; }
|
||||
public Boolean Pin_Max { get; set; }
|
||||
public Boolean Pin_Min { get; set; }
|
||||
|
||||
[Browsable(true)]
|
||||
public new string Text { get; set; }
|
||||
[Browsable(true)]
|
||||
public new Font Font { get; set; }
|
||||
public CtlMotor()
|
||||
{
|
||||
InitializeComponent();
|
||||
Length = 100;
|
||||
this.Size = new Size(80, 80);
|
||||
this.MaximumSize = new Size(80, 80);
|
||||
this.MinimumSize = new Size(40, 40);
|
||||
if (this.Font == null) this.Font = new Font("맑은 고딕", 10);
|
||||
if (this.Text == null) this.Text = string.Empty;
|
||||
}
|
||||
|
||||
int anim = 0;
|
||||
protected override void OnPaint(PaintEventArgs pe)
|
||||
{
|
||||
base.OnPaint(pe);
|
||||
pe.Graphics.DrawRect(DisplayRectangle, Color.Gray, 2);
|
||||
var rect = new Rectangle(DisplayRectangle.Left + 2, DisplayRectangle.Top + 2, 10, 10);
|
||||
var rect2 = new Rectangle(DisplayRectangle.Right - 2 - 10, DisplayRectangle.Top + 2, 10, 10);
|
||||
if (this.Pin_Run)
|
||||
{
|
||||
if (this.Pin_DirCW)
|
||||
{
|
||||
if (anim % 2 == 0)
|
||||
pe.Graphics.FillEllipse(Brushes.Lime, rect2);
|
||||
else
|
||||
pe.Graphics.FillEllipse(Brushes.Yellow, rect2);
|
||||
pe.Graphics.DrawEllipse(Pens.Black, rect2);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (anim % 2 == 0)
|
||||
pe.Graphics.FillEllipse(Brushes.Lime, rect);
|
||||
else
|
||||
pe.Graphics.FillEllipse(Brushes.Blue, rect);
|
||||
pe.Graphics.DrawEllipse(Pens.Black, rect);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
pe.Graphics.FillEllipse(Brushes.Red, rect);
|
||||
pe.Graphics.DrawEllipse(Pens.Black, rect);
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(Text) == false)
|
||||
{
|
||||
pe.Graphics.DrawString(Text,
|
||||
this.Font,
|
||||
Brushes.Black,
|
||||
DisplayRectangle,
|
||||
new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
||||
}
|
||||
anim += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
123
QRValidation/CapCleaningControl/CtlMotor.resx
Normal file
@@ -0,0 +1,123 @@
|
||||
<?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="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
</root>
|
||||
36
QRValidation/CapCleaningControl/CtlSensor.Designer.cs
generated
Normal file
@@ -0,0 +1,36 @@
|
||||
namespace UIControl
|
||||
{
|
||||
partial class CtlSensor
|
||||
{
|
||||
/// <summary>
|
||||
/// 필수 디자이너 변수입니다.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 사용 중인 모든 리소스를 정리합니다.
|
||||
/// </summary>
|
||||
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 구성 요소 디자이너에서 생성한 코드
|
||||
|
||||
/// <summary>
|
||||
/// 디자이너 지원에 필요한 메서드입니다.
|
||||
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
57
QRValidation/CapCleaningControl/CtlSensor.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public partial class CtlSensor : Control
|
||||
{
|
||||
string text_ = string.Empty;
|
||||
Font font_ = new Font("맑은 고딕", 10);
|
||||
[Browsable(true)]
|
||||
public new string Text { get { return text_; } set { text_ = value; this.Invalidate(); } }
|
||||
[Browsable(true)]
|
||||
public new Font Font { get { return font_; } set { font_ = value; this.Invalidate(); } }
|
||||
|
||||
public Color ColorOn { get; set; }
|
||||
public Color ColorOff { get; set; }
|
||||
public Boolean Value { get; set; }
|
||||
public CtlSensor()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.MaximumSize = new Size(80, 80);
|
||||
this.MinimumSize = new Size(40, 40);
|
||||
this.ColorOn = Color.Lime;
|
||||
this.ColorOff = Color.DimGray;
|
||||
//if (this.Font == null) this.Font = new Font("맑은 고딕", 10);
|
||||
//if (this.Text == null) this.Text = string.Empty;
|
||||
Value = false;
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs pe)
|
||||
{
|
||||
base.OnPaint(pe);
|
||||
// pe.Graphics.DrawRect( this.DisplayRectangle,Color.Gray,2);
|
||||
|
||||
var rect = new Rectangle(this.DisplayRectangle.Left + 1, DisplayRectangle.Top + 1, DisplayRectangle.Width - 2, DisplayRectangle.Height - 2);
|
||||
if (Value) pe.Graphics.FillEllipse(new SolidBrush(ColorOn), rect);
|
||||
else pe.Graphics.FillEllipse(new SolidBrush(ColorOff), rect);
|
||||
pe.Graphics.DrawEllipse(Pens.Black, rect);
|
||||
|
||||
|
||||
if (string.IsNullOrEmpty(Text) == false)
|
||||
{
|
||||
pe.Graphics.DrawString(Text,
|
||||
this.Font,
|
||||
Brushes.Black,
|
||||
DisplayRectangle,
|
||||
new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
45
QRValidation/CapCleaningControl/EnumStruct.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public enum eMsgIcon
|
||||
{
|
||||
None,
|
||||
Info,
|
||||
Alert,
|
||||
Error,
|
||||
Help
|
||||
}
|
||||
public enum eButtonType
|
||||
{
|
||||
Rectangle = 0,
|
||||
Circle,
|
||||
}
|
||||
public enum eDirection
|
||||
{
|
||||
LeftToRight,
|
||||
RightToLeft,
|
||||
BottomToTop,
|
||||
TopToBottom
|
||||
}
|
||||
public partial class Loader
|
||||
{
|
||||
enum eAxis : byte
|
||||
{
|
||||
Y_P = 0,
|
||||
Z_F,
|
||||
Z_R,
|
||||
X_F,
|
||||
X_R,
|
||||
}
|
||||
public enum eScean : byte
|
||||
{
|
||||
Nomal = 0,
|
||||
MotHome,
|
||||
Input,
|
||||
}
|
||||
}
|
||||
}
|
||||
25
QRValidation/CapCleaningControl/Events.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public partial class Loader
|
||||
{
|
||||
public class MessageArgs : EventArgs
|
||||
{
|
||||
public string Message { get; set; }
|
||||
public Boolean isError { get; set; }
|
||||
public MessageArgs(string m, Boolean err)
|
||||
{
|
||||
this.Message = m;
|
||||
this.isError = err;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public event EventHandler<MessageArgs> Message;
|
||||
|
||||
}
|
||||
}
|
||||
38
QRValidation/CapCleaningControl/Loader.Designer.cs
generated
Normal file
@@ -0,0 +1,38 @@
|
||||
namespace UIControl
|
||||
{
|
||||
partial class Loader
|
||||
{
|
||||
/// <summary>
|
||||
/// 필수 디자이너 변수입니다.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 사용 중인 모든 리소스를 정리합니다.
|
||||
/// </summary>
|
||||
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 구성 요소 디자이너에서 생성한 코드
|
||||
|
||||
/// <summary>
|
||||
/// 디자이너 지원에 필요한 메서드입니다.
|
||||
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
2323
QRValidation/CapCleaningControl/Loader.cs
Normal file
36
QRValidation/CapCleaningControl/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
|
||||
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
|
||||
// 이러한 특성 값을 변경하세요.
|
||||
[assembly: AssemblyTitle("CapCleaningControl")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CapCleaningControl")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2019")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
|
||||
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
|
||||
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
|
||||
[assembly: Guid("9264cd2e-7cf8-4237-a69f-dcda984e0613")]
|
||||
|
||||
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
|
||||
//
|
||||
// 주 버전
|
||||
// 부 버전
|
||||
// 빌드 번호
|
||||
// 수정 버전
|
||||
//
|
||||
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
|
||||
// 기본값으로 할 수 있습니다.
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
243
QRValidation/CapCleaningControl/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,243 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 이 코드는 도구를 사용하여 생성되었습니다.
|
||||
// 런타임 버전:4.0.30319.42000
|
||||
//
|
||||
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
|
||||
// 이러한 변경 내용이 손실됩니다.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace UIControl.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
|
||||
/// </summary>
|
||||
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
|
||||
// 클래스에서 자동으로 생성되었습니다.
|
||||
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
|
||||
// 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("UIControl.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
|
||||
/// 재정의합니다.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap air {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("air", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap alert {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("alert", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap bcd {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("bcd", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap bg_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("bg_blue", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap bg_red {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("bg_red", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap debug {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("debug", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap debug40 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("debug40", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap emg {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("emg", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap erase {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("erase", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap error {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("error", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap help {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("help", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap icons8_pause_button_30 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("icons8_pause_button_30", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap info {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("info", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap mot {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("mot", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap plc {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("plc", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap reel_big {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("reel_big", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap reel_small {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("reel_small", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap safty {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("safty", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
435
QRValidation/CapCleaningControl/Properties/Resources.resx
Normal file
@@ -0,0 +1,435 @@
|
||||
<?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="air" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABXRJREFUWEft
|
||||
WHlM22UYxmMeMWo8ojPxH2E6l02dqPFWsrgZ2WaWsbiLjcTEOc8tGq9t0f3hkajTMGJBEDY2GFA3xmCj
|
||||
COUqpXd/pa1dyzoJjGsgx2DGxOn4fN7m/fWADtNC2WL2JE8gv/f73vf5rvd7v8ZdxqUGu91+h9VqXQQu
|
||||
t1gsiS6X6xo2XVxAzFK9RdLnqN1iR0WbeL+sQ3xZeVKUNTnOwqYA7+KmMwulUnkVgud8W+UVD+cMi3sU
|
||||
ZydwZWGvqGh2jpjN5sXcbeaApcx9p/RUWGHBXPDjiChudJ2TJOlJ7hp7YOZWfK3yhghZU9wrdle3itxa
|
||||
t/gUS/147pDftjB7WNTpbW1er/dadhFbNJkk60MIKgsgsZjRDCxlvMPhuAUDWNJokNzJ+/v8bWhvwr6R
|
||||
XcQOQogrihpc5+XAqw/0CgjazWY/jEbjbapmx8AcxaivXWLOEAksZ3NsYbRIVWklXWJ5wWmham7p1ul0
|
||||
t7IpBBD0xYrC0/5ZrNbbO9kUW2i12hsRfDsJAOP58wTA9vbGkm6/wHLMKJsuDWDpC5/OG/SJS8gcFdiX
|
||||
LjZdfGD2krPV7jF59l7c1097VcHm6EGbGyfyFXBTNKRlhZADWTWesfnIgbLADKQg5MJHOUx0MBgMd6u0
|
||||
9sF3SzvEpoNdUZEOz3N7BvzCiGuLeygN7eMw0QMjfy81aFNPB0mc1mST6GBxmOiB5Vm182hb2ECRkA7E
|
||||
S/v7haKmdQyDzp8WcQRKwnD4TWWzva9cax+NhkebnYNNRpsTS5oBX4ns+n8OjHYlcpTjcJOjZyZYq7d1
|
||||
aAwSwlpzwWVYuStZykSYTKbZRSiH5mYFUsJMMAF3dNLe332Vj8Zo80DHUywpFLRPvlKdDOtkpkiFREGD
|
||||
62/M5nqWFUB9ff3VWF7zB2XtYfNaLEi5cilKMTrtssh78X9+3fF/kEmSWFoAEHkdDCkYQdjbIQZ8C/xO
|
||||
pXMMrC7q9Yt8MPuMwP5s9xe2ELV4XMdJifZrwAtWL5ECN9dNBqPl2Hokc1kkF7YbaO/totdXakmPWIcG
|
||||
/8UNuGHoDZJZ4xF6s6WarkWOMyXguXqDWt/SNTeLC9ufhqmoqIgr0zj+kFVHykU4fRVax9CUL38GBO2g
|
||||
N43sv1LnHIjDwbA/EfSwiZSJeGqq8RBCNX09x4kaWNJVVKDIvpWaX89Rcp6nN1vVuJ66wyXT8SzTOvqy
|
||||
1Z6xpKBKhU4kRv8xxwkBvq9D4HJwJ/6fxZ/DAvY3X/05UKTg0T/KpsgARwlqg/3UApw2cnQ/9o3OLJnY
|
||||
7AcG/+wP1R7xANptPthJg8hkU1gYTJKW9h75pL1oNEl6NkUOBNuSpgyM9ojWOcImP6hNanGgTUbNiTHM
|
||||
5Fo2hwDfP/wsqIKiNwz6f8Lm8ECDRLXB9ptS4/oL/6cH35WYnc9Tgl5qlTp7H5v8wLU1P682UO7TNapQ
|
||||
t46hby5sz0NUPPwuMVkspZRJ4jlhU+I+1OT8ExniTnYVHhqjZKJfA6jT1sMdNCIlnCbh75YC3NvyW/cR
|
||||
XFEIUsHdQoD2379xqNPXTmYyakSarfTqE74fmigbBNvpXsYgtrKLC6NOL7nuCyoelhX0ie3lbeJ17Ce6
|
||||
kuTvVNxCSAp3CwEGM0tntvyyeZzIcIwHt8E/+uRw98mBhmm7qry+juEcEmmZkQVqqMjlbhNAIsF0Ov0v
|
||||
5IfOFpH8v4zHf2G9kwqFbZP5mgDavLnYR8/wu1bmPLzUPjrSLgxmqRHBb+bmkwL7biH85VXqHGeyaty+
|
||||
F15OrUeodC39NACIm8NNIwMcPwYHymNae/+eOrcobDh+HoWmHQ5fo98HuVlEgM/ZEEuH5Hb+ND2gh8+M
|
||||
/Xx2GVNGXNy/B7Gt3iRjVn4AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="alert" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-automatic-gearbox-warning-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="bcd" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAsxJREFUWEft
|
||||
ll1IU1EcwBdGBUFvPfRUD0VBjaAeerCHCMyHHkrXsZwhohOE2q6F835s0jUlg6h7J2rp7hJsICzQHiJI
|
||||
LGePfdFLDyVEEEG9SEEguez0P/Nfzu3cfRjn+rIf/OAw/uec38O2e11lypQpEcWMBRXTWgSpQ75X++9u
|
||||
x+sLo5rWC84hYo3EavD6wihmdIJ7iFgJXl8Y1Yz1cQ4QbfGBcsTycg4QbfGBmjG8g3OAaIsPZMAv+Tnn
|
||||
EGHKkegpvLo45EjMzztIgClwRu+Pb8Ori6PjxthW2Pgl46D/tvPmCJWuD9C27lu0OdxHz3depWcv6efw
|
||||
ytJRjFgD76JCdvXfXhoY6aWDd0K0vaeXNso9tK49TM8EtBw9kjaE160N+AO9ApcuZUegC7IZfaUY1his
|
||||
ZdmwTirG6C76aPfmxeSB8VTSTb9NHaKh7jZuHNMT0N7hVWtHNaxKNWINQcQ92bTCqhGtDUZG95BEogJH
|
||||
cqAJUpGadU+zyPmpw7Q52MENZNZeCO3Ebc7yc8a9DwJ/s8j4YB03jkkktQW3OA/EvWGBrxPHuXHoOI47
|
||||
D8RNssC5B5W8sGUl9SuMblje4TC/Zt0N8F18+SxePceNQ2v88kHcsj5AxLXsqExJIHQZR9cHiPicHbVK
|
||||
SXuIo+sDRKRyolb7/Ziub8Rx54EAH/gxIyhHj6QewfH8VHlb3zLZ+oTXp1d5fbS6vnU/k63ZZytzPrpi
|
||||
S/qVKb2u991n60yamvQt8OQY5sUx4f9QwdH8iApksEiImc+OWzb0GMfyIzKQATHTuXFpfxBd34Rj9ogO
|
||||
JH5tkhOXlkihozhmj+hACElmh2XYhWP2OBD4IStqRUl9gmP2iAwkUngvNwwlAe0pjtojNDCgSbywv8J3
|
||||
8CKO2iMyEB5pjbwwNEEIsX0J/ofIQPY4gxD24sCeKgvgJ3DC066expEyZcqUhsv1B6iAtIhPh2shAAAA
|
||||
AElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="bg_blue" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAAAsFJREFUeF7t
|
||||
nL1uE0EUhS0QvBDvYCcVCHAQeRoXId4N1IBrRyClSiSwgR7vFoCgQHZkp4wpDUqo+Bnm7M5AFM1aa07n
|
||||
OUf6uvG17ifvrKvTUBRFUZan3fl8vdnN7rXS/FkrySetJDu3mDXD7mR3K3bMtrCzW59Lq5vf2UhGJ5e+
|
||||
LAZmG2l222lYPe2Dg6utNHvkB24/+WR2h3PT//DdHB3/NIPZ77UCO2E37Ihd/d72x/Ow0zFXnJb68fI2
|
||||
93KTvPliBtPwF68jL6e/TPf1vNgdDpppvue01AseWy+vN/oa/JIY6I0WFySObjk9y4PL0995xS8vMDgm
|
||||
dl/N/eM8rfViKd629gO4B/BTDg2NCTjYfvyxvA+7o7bTVJ1mkj3HYZgPDYyRneGpE5jtO03VsQePcXjf
|
||||
vpFCw2Kk//7cPcb5xGmqjj14hsOHkx/BYTFyZF2UArMzp6k67mBwUMx4L05TdSQwjASSSCCJBJJIIIkE
|
||||
kkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkE
|
||||
kkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCCJBJJIIIkEkkggiQSSSCDJKgKL0gkU
|
||||
LYQGxcjh+G/pxDenqTr2kGpPLrFa7UnZn2ceDE+Dw2JkZ1AW7zSTrO80Vcce3MJh1B2p+qmsfrrvqp+a
|
||||
aX7XaaoOCrbs4Rk+gAq40NCYQJ8gXFimN3rvrjlNy4PmRnyorL9bBAfHwNO3C7OZlvV39v676fTUC5ob
|
||||
vUQUkcX0OL+wu+KX909eljot9YPaSzQ3ugHFnYgWM7yR1rFXCzthN7w8/Z3n5f1XBagPmhvtkOmFgbFg
|
||||
d17xsa0KLk+UD6I/zw4eW4o/22sGdhpjR7xta78wFEVRok2j8Qfk0Qty9BRILAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="bg_red" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAAAsFJREFUeF7t
|
||||
nMFOE1EYhRuMvozLtok+gxq1UMDAri7EXaXs2WkpbO3MGiyKb6EriVsD9g68AwFcSa73n/mnMeROM8PZ
|
||||
zT0n+XZ37uT/OnOnq9NgGIZh5ufh0a8H7ShZaUXJxHHaisyVw9YMN5PMlkzaY7MsM+v4WFrj6aLb/OzW
|
||||
zUIgaUfTjmqonu6Rved+id18w5W9b/ZwMLRnvZ79s/bS2tUntUJmktlkRpk1n7sZTUeNbbugWsonl/f4
|
||||
46n9+u69vVl96r1xHbl59cx+2fyQzp6JTHZUS7noa5tucPym771JCBxv9GcSm3HyQvXMjxye7oL0zJMn
|
||||
z7dxSHzeHGZPYWxMqQ9L9rXNzjx5lH2bhoQ4WN77rk+h6aqm4rTi6aEslsPUt2GIfBqMMoGROVBNxXEL
|
||||
f8vic/dF8m0WIknvdfYau/+Jqqk4buGlLL6u4V+Vu3K93lGB5lI1FUcXejcKmdyLaioOBfqhQBAKBKFA
|
||||
EAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFA
|
||||
EAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKFAEAoEoUAQCgShQBAKBKki
|
||||
MCudWO94NwqRq7XFXOCFaiqOW8Tak1tUrD2RjkBjJ4Md72Yhsr+1mz+B+6qpOFI+KIul7ojVT1n1U1er
|
||||
nxxLqqk4Wj6WyAVSAefbNCSkAiuVFxvTjH/eV03zI82NclFaf7cRbv3dj7d9+2icdwia56qnXKS5MZco
|
||||
FXAhvc5/3azy5M3kxclQtVTItl2Q5ka1n56J0mImX6Q69mrJTDLbwdbo/zMvk3eXCtA80two7/9sw1DI
|
||||
Zq722hZFDk8pH5T+PLfpiSP9s10zZKYTnXGp9AeDYRgm2DQa/wBGopc1FSaqkQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="debug" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-bug-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="debug40" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-bug-40.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="emg" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABOJJREFUWEft
|
||||
WOtvFFUUb6Ifff8HRv8AE9xZmqJsd0ZgW0BCWWp4tDxcKIK8FFsSEx/VAlXjB1NrNWpCMUSiSLR0i00w
|
||||
EEHlIeq3on4UE40K2Z2ZfR/PuXvnzr0z03Vf9VNP8ktn5575nd/ce+fcc9oyb/NWwf6Khe8yDa0zHdX6
|
||||
zaj2Nv79iMCv+2mMfLj7/2MQidye0sNPpPXQl2ldKyDgP5BHTKX0UDfE47dxmrkxFLYmpWu/egRUDVPX
|
||||
fkkZodWcrnl2a2nrfSjsVFBQgrkyClZvHOydW8HevQ3sJ9fjPT3Ql4BcJ28uWnQvp2/MbkVaHwyaNbMr
|
||||
Brk3DkPxi9MAV34EuPqTD8WpafQZBqt7ufIse97Qfr4ZXfAAD1OfkTgk+10hXhGF/OgIwKVrgaICgS+Q
|
||||
f2c0aFZv1C2SL6syc3ZiA5TOnlcCFz49CdlDg2DvSoC1uRusresgs7cPskMv4+xOKEJL575Gjo2yQDaT
|
||||
/0QeuoeHrd6C9pzVuxbgm8ssWOHoUbA2rlHGg2BtWA2Fj0+4Qi99z16Atkh26CXmY+qhT3jY6iwV1eLe
|
||||
QA7s3QnIDOwLHKuEzMFnAC7/IESWzl+A/IcfiHH8wlfx8JWtnOekpTXCYO/YLIgagf10golzZlMWiLhe
|
||||
VZ4sJ+HyQ7SEtMeIzFq3SiarHfiiucOvKF+8RyBgjlzLZcxudEKwL3XkLYUs9+ZrClmtMDseZdsjO/gi
|
||||
5N8bg+LnE5B/d8zrl+Qygu1vY8Hd6FQwOxezPVOaPisEls5dgPSSVi9hs5H/s63tTi7Hb+zglx4onp4q
|
||||
i5v+Cq+TYO/pk8nmBGb04RiX47e0ERoQjsvb3eV9/Uj5XsdihaxhLGtjqSsde8S9Z2gHuBy/pQxt1HGk
|
||||
hOsIpPNVEDQJdt8mscetHjefmnp4hMvxGzocEwS4oYXALesFQbNgbep2+Z/aIo2Fx7kcv6FDoECaTZeg
|
||||
OVAEYhXkjlUQKC+xrSxxQiJoDljS5vzVLzGW6cLxcV0Q5IaHBEGzkKWkTfy4DynvirFo+Fkux29me7hD
|
||||
JqF6jkjoNJHvNwPFz04xbqp41LHQMi7Hb9TgoBP1EMyZik1nFmnPuCSNgZbU4c0NH5LHchUTNRnmoTOC
|
||||
CCthJxUUxsdlooZAXEwgFg5m11JpLDzJZcxu1H3JZPmxUfG29ZRZXmSf7xd8VJnLY1TmcRmzG5U8VOU6
|
||||
D9GJIqrob6+wBCuT1gKWnL+7yrjobPe0ADNVt6UpI9wlPQj2th63B8EAmef2ysR+yEcXBytYHQ78a2/v
|
||||
UcbN9oUrefjqjFpDmYCOO+ftCbSPgkp+M96Jdd774jedtWrJfw0y+3epzxjaCR62eqO+VV5qgr29V22a
|
||||
EJl9O9xAWKYVJ6ewnL9YbkknJhVfWlbvzCFmqMzjYWszagmR4IZMaK6IuG0n9hiU0NnYYwuhcPy4IkgA
|
||||
fekZavBlLsx5v9lLtPt5uPqMRHpnkkDpITOwX/zOHNijisL0VJxMQu7Iq7jsMeVZjpmGxTlGfSu1hgFB
|
||||
FNBXWkyeYQIpnQT5EGjP1b2slYxaQwxw3RtQAS519oWD2PMOBo3P1Py11mqUq6j7wmBJhDgWfcAujl/n
|
||||
6ISgJDzn/37zGp2b1ENQmU5lEoqhevIYu8Z7dPD/EYncwd3nbd781tLyLxOgcrDBNHH8AAAAAElFTkSu
|
||||
QmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="erase" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK
|
||||
YQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAJrSURBVEhLvdZd
|
||||
b9JQGAdwEr3wTm9M/AheqJlfxWSfQudMBnYaWarQ8WIyMBlUWoSp0CkzawWM6C5G0aiZzhfoMCZidIu6
|
||||
bG5DL8yc0mMPO8cwOIUyWv/J/6aF55eekifYzMogHT424AqdoGl6H7pkfSgvn/bzYu36XVmlfNHNU3Tk
|
||||
MLplXRwe7mn0zqw6pyyCuYUlIL+sgLPe6O+BS+xx9BHzA1GGnVLThTJ4UvxUh2ELrypg2BezBseomFeA
|
||||
JCsg84iMn2FCfegrvacZxW3BtWMf9se2TMH10B14aSdO+a719uSdUFxTcaMorg7e3bHbPZH0yBVBlfIl
|
||||
IqLX7OMyeNbwzvPz74HDw//UlsxeNFo/rnCSCgnZqjNwE9x6ME8E2jXThN+QCurgxXA/Gk8OROPizFr1
|
||||
lwreLa2CnnFtyVzmp2unGfYIIlrTiP7YAvX+wx/uAtfeOZeaUbWjTiOiNe6Q4Elm5Y3vCGxs5es6GNHw
|
||||
yfvPiQCp4mwJXAgmVDvD3UZEa9qhuBgXci+IUGNNQ3GN4KajuO1wQyjDCkPNPySjJeEQdWqow8uJiGiN
|
||||
wx8/FJyQlneD4kLcObaNG0Jhzvu5PuGevEoa2E3fLq7Un9wZTKpDTCSLxuunP5XaM8pOvi5/XK6RBhot
|
||||
PLHxRKZq9/ASGt05lDey380KpTeVz39IQzt1Y7OmLYfcmms8cRKNNJ46HhaUbvGeUByMFytfDOGmoDhG
|
||||
cVNRnE44RKNTuW+mojh0IH6AhFuK4kCcCQsLxQ/b+H9Bcc6Nxg66rwqKtsfXAxPTK3C9olvWB/5Hosbi
|
||||
R+F6RZd6jM32F+J393EUKic/AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-hazard-warning-flasher-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="help" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-help-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="icons8_pause_button_30" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAK
|
||||
YQAACmEB/MxKJQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKmSURBVEhL1ZfL
|
||||
bxJRFMbrwvj4a4wLXdRUXZo4vGkxtDst0MQFGKMwMB1eKdVNI9CdaNQmxkWtIQyvqRTqprU8VpZuNLFt
|
||||
FOq0tbpo7ALvCbch0gsZ4Frjl3wJmTnn/HIvl3MPff+F9NZXZxi7cFnBCka1K3lf7Uzcg88KNjZwhc+c
|
||||
xmH0pOFSar17Pmfwvd0YCxertsjavmPmUw1se1zeh2cGf2Z90D2fVXMJJU7rXhoucVXPi2vm6dKe/021
|
||||
9jC+29YQYw4X9/QesazhkwO4TGfSuUXXSCD3zfe6QoS0s3euUhtGuTo+5cDl5EnHi89NofzuA2GHWFiO
|
||||
IdcULOwg+FNctr104ym/JVz6QSrWjS2hwne09RwuT5aajV8yBhalXlbabKhlDOQkrSt2EWOaVTuhd6dX
|
||||
fTIOUaf2z1VrWj79ARgY1pDKmVTBd0JKfLn0s3aoz9LBkffw7FAQ2/webArmtxln8jrGNTToSb9rtVoa
|
||||
YPh16N1iFuPqYvjoWYN/YZOUAKYBBhu8C5t/dDhoeZbpkkQKBtMCm0NFSWEX+jEWTrNgvBMpH5CCwbTA
|
||||
tsjqL4aN3cBY1BpRl7K/+EgMBtMC21FvR33fhbHQk5Pj9pljAqNFYmx9q2EbSMFgWmArYihZYQhj/+Hh
|
||||
unZbODXky2yQgsG0wAZvZn10dOUkxtaF2mXubzcQHZ/OYFxD0DLNocI2KYkG2PSoRcsEocu/4Jn9Skzs
|
||||
xZ7ZL9AuVzDmqDQuod84kduifS0OT2SrKjZ6AWPIQrPS2K2p9y1PeKe+ObUsabi4CZdvL3R3PqM1+mh5
|
||||
8QkuK09aLn13ZLKHYW9ycUvrTltxuc7EOKLnUfIyGlkrssfbYL6KBrwllSN2DpfpXjCkyx3olVySwWn0
|
||||
dOx/Yeirr+83SXRvTbd4pKkAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-info-80.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="mot" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABF1JREFUWEft
|
||||
Vt1PU2ccZtebu5gXy7Ys2TJ3vf9id5rtZhdeumQxQbaQQQnooAWhxZaPtpSV0p5+QG0nLT0gVaHGQqQF
|
||||
lkgUK6UyQJSYbZmaqVkCi5ydp/m97Hh62h5LSxazJ3mSk/M+z+/39LwffateOySCX22lr317rxTCS2Uq
|
||||
h3Ss+o+d9T6hFMJLZSqH/wPuF//pgDVnLJ/09bU/dwx2PyuF8KIGlSsvTp2xftxs9qdH40sCP5MqiZH4
|
||||
baHFHMjUt9k/pbLlQTnCMZY9ZDnDMZYtZCXCMe47ZCXDMZYc8iDCMb5yyIMMx6g6JM6oZvP5ZRiUCknJ
|
||||
jSWeGRyRVTU0cRcfFKuJcfQueE42mrw31YT7MXj1UZ3e2UG2oqAfnlYTEhnIlovmXv+MklFK6/Dkb/Ud
|
||||
Tg1ZVANL54fe4ksHGciSi3qD2x2O31I0gl3c+P269oHjJH9lFAuJ9w0GzkXyXJxq6z/mjszuyI2R6ZSg
|
||||
t4+u1bcNfE7SklEoJMdf/7tGZztK0lyc0HQeOufk78mNLZZApqbV/hnJ9g2syRZxTcr7oDcykEwZzRZ/
|
||||
Um4UN4SHhssG1JT3EUMnaDg/Gjpdgcj0y7tNKeCggW8K2q9tXnDMbBQiNNCSbQ/ygOjZcI7z03B+fNfa
|
||||
f9w7nnwhNcsD9mgDH0U8iY1f7jwV1JD3JDZt2qEjZM9CHtA7lnxRq+0vvgG/1na/Y3Jf3JKa5QHdXdHp
|
||||
zNKTvQCrqafC8o3Hwu2FR1niGe/Y+F1R6zZGp4Uq4Q0qkRPQxI1vVTf2HabhwtBZAj9LzdKAg/rI9wvx
|
||||
jb9Y8yUx0NzUQ+FSMCWEXfPbIJ7xDmGZDh54qUxOQK01sEBDxdFgdId5yTpkAbtPez8Ic7NrrOni7O/C
|
||||
ZGh519cbW7ad5Y8a63xvgnbx2WeeSk+G0rvQMD28qIFa0oA4xhqNnhG8V4XaVvvJoej8rjwgZ4zGVmhq
|
||||
8eUQzmO6wmVNCuCMV7xToZVdaOGBFzUwJg04HJ0Xas86TmZNavBNU897vZ7or9KAg+189dzV9edohPWF
|
||||
KcSXI0teiJqVudhD0fNnNiRqoJY0YI/Y64TG+j5Z1EFnDS6yAho9FxxxzqyiAYhNgHWGaSV5Xgy0hb64
|
||||
/FNKuHPj302FWqjJ6uusgUWSq0edwTXCrktave/+ys3Hew0wZSHn3LZNe+EtkudFp8Z1SNTuSDdM5tYT
|
||||
oUXve8DqoxfJS4PbOHFZIeCOmoCWmuG3lQK6TdEJkuwfvU3n31WaYuxWkuSFQxf+UmmKUZMk5YHiJhGP
|
||||
EhrOiyFLLKO0SWi4vJAeM5gynHM4Smg4B+6uS/5YnmOmIlA6qHHO4Uv2d4wdw5oEMa0+cyyDcPkO6opB
|
||||
8a9OnEKss1FufhvEM96xLwfK/+oqCs40EcdOZM2xvrAJMO0gntmaA3FZEKf2pctCRWE7HfiQ9ybXWYBi
|
||||
5D3JTVzRyH4wwCU0zF1f472J1UKERunC+pqgquofdvoa6+LDQkwAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="plc" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAnhJREFUWEft
|
||||
ls1rE1EUxd/eP0BcigvBpS5sQcVdFEVTUFuoOi1pG8ViotSkBGea1tSQzJBObEhSMOmHMYm2JqmlWgNq
|
||||
IoiLdiXBD1zozmVx6cJc33u+DIozNZ1JYsU58CMhN/eew7tvYJApU1tZMIe2wRSaw6w1lDh6jj/3Mhv9
|
||||
ghgaxMOgKcRQidnoFx7iVR3eGCrMRr/++YDvvAgWL6pTvorgW0y9j9H8gPJpBMEObT6Oq/cxmh/wlQvB
|
||||
LKdO/gKCrxH1PoZ5B41iBjSKGdAoZkCjmAGNYgY0yv8RcOu98vd6pT0cL+0juH3uA6/Du5ffT+5800je
|
||||
yrtWs+KxrrOeiR3Mtn71jYY+9fAitIpeQfrACVI3s/+zAsl7n8dvp6EV8JEZ6B+TqzSsII6xCBur8Oxl
|
||||
BQPzKyVw+SQYuMaDP5YA8tvPTM5mwe4SwDnih9TSk19qm+lN5pbBKcbIaVbP82I7i6EtPIAG7By4DPst
|
||||
JxW8oahicGsmC20Wq1KzdHIwXywp9c32JguP2cqlaRZDW3hIJfWwSJs5hwvuLK7AoRNn4JTtkmJidwu0
|
||||
Hs88gCteP/0uT6dpTW+v/Ua4ygniKouhLTykQlbUfrQDjnfbwBMIQ9sRK5wbHFJMHCM36WBiUDutqUyO
|
||||
1vT0xtM5sI2GyF18wWJoCw+hKx72TyirOGztUgIQyJ0jqyE1Qv/QdaWmpzeSKbAnWvSxGNrCQ2hAQnJh
|
||||
CUKJFGQfPVUMaiwUyyAn72Lz/G81Qj298XSehvtxetJ6n0fezmJoa1hOfHEGo9BsHIFoba3k4Vjv4YMH
|
||||
WYSNhf98HzettQRBLJO11nVypkz9FSH0HdsLU8gVsNwDAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="reel_big" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABGdBTUEAALGPC/xhBQAADlRJREFUeF7t
|
||||
XOlzFMcV96dcH5L8BTm+53alkg+5/oNUkvJ3V0VoDyGMsGFXO7urlbQ6kXbn2FurvXQghGStThsMso2N
|
||||
IWAS4jJg7LKNMT6CQRDQEYOh079mZMFs7zkzwgev6le1pZnu9/qpu9/Rr+eRh/SQvr5U74t/x+oM/sni
|
||||
DFhtLjnU4A0dafAo521u+ZJVkFYszeJnAH7jb3hmp+/g3fpm0bKlOfBH9KF29/WgOqH/txZBbKeK+LfF
|
||||
JX7a5I9f84gjK10DeSIOHyCxiRfJwNTLJD17jGQXjjPgN/6GZ3gH73rE4ZWm9vg19GHzKKfq3VIbVepv
|
||||
VDZfLapzKz+2CHIrnUUfbmuNXm+LjN+UR58jmbl/kKFnXtUF9IG+2sLjNxt9kRt2t/KB1SX56Mz+kcr+
|
||||
y0t1TulRm0d+lipu1SvvWYuMP89VgpEIjy+SFnlszeqW1+weeaHeFfyVKs6Xh6A4q1t50e5Rlulyu23E
|
||||
TKsW4NmTnL5D981V+g88bHX2/1IV74tLj/uC37e5pSQVeKV3cPZ2bv44d3CbCcjQm5q5Q/dJzMpEvaP7
|
||||
e6q4XyyyCeJjVHlXPeLoanrmGHcwDxKpmaPEHRyhs1G6ahXEv6liP3h63Of7lk2QB7Z6Q8vhvebvcXoR
|
||||
HlskW73hFTudjY2N8jfVYTwYgnWly+INZ192OT33xZt1xZCibpGjN7NKjczZB2atLY7+n9sEaal7IP9Z
|
||||
boEvKFDqmdkoJ1dXIn/L6pau1LnEn6nD2hxCBECVdyOQW7jDE24d0sh+8mRnnDnCvOdmAjzBOzj0LPf5
|
||||
OjAGui/esDjEP6jDM5egPLpsV+C88gQCBqePEG8wSzy7Q0ROREhnbB/3PTPRQXlKlLe3L8RkSeZf4b4H
|
||||
YCwYk+lKrHcEfkqn/HV55ABXEACzrrFFJk9PJ8itT3Lk6oUs2eaTSw7AaIAXeII3ZJjMJ5hMUgm5lT0H
|
||||
CWbiFlfwF+pwjSUYDOx5pZZtd3KK7OoMkXfPpAlZGvocGIBPGeG2MQPgNTmVuE+Gd8+kyK4OhfQM5rlt
|
||||
AIwNe6LhhkV1Vc7BYPAYI+CH0L7+MLn2fvY+wYG1j3OkqU1hyQBeeyMBHuAFnlo5MCNb+kOkjcqamz/B
|
||||
bQ/DYndLZwx1cRBdOHrSK3yrdoK0SDnSF4lwhV7HwecGiDuQ4rQ3Fu7+NDl08P7Zdy/+958cCcQjTGbI
|
||||
rm2PMTp3Z1ZsHimuDl8fIcJo8IZWivl57eExEohFyGef8AVeB/YiZ1eI7TW8fowA+gYP8OLJsA7I2h+N
|
||||
UNn3cPuBn9hAne0tzsBfVDXURmpse7VYhNERnyStgRD7r/IE1eLE0STZ1RWnbfnLRw8wcxzdcfLq0UEu
|
||||
by2wWloCYdJFx8DrLzR2iBoVeUlX7Gx3K0mPNLrKYyAO76cGQyH/5ex5xXDnyhDxi2HSn10o6E8v0Gdb
|
||||
MMJ48HjzgP16Jx1DMLef26cQHF21CUpUVUd1VOeUHqXxIjcxkJp+hWxvC5HzGmtbCd58LUWa2sMsS6Lt
|
||||
t1bAiO3wh8kbpyqbfffivbNpOhaFjUnbLxIQyGXW5NpQ5b3Um5otcFmwVIT+DJmeLb5Rl4MYj5Z0J6pF
|
||||
TzJPneYol1clyM8kiNCX4oZ+PcmZ2za38ryqlsoIyUe6fFeznFnSl56j+164rNEohQ/fypBtrQoxIgGB
|
||||
PtAX+uTxqgQYC1ywvvR8Qf9YKXavsoIVqaqnPDV4lWe7B6ZvazuDQpvo0sW05wlSDTIjMeKPjd/Xfy3w
|
||||
R8dJZjTG5VENsB1hW+JNmi7q/9o9yryqntLEIg667nlpeOpIk9Bg7UvlXmADZyHe1JECPpUCMTf6WHqv
|
||||
ckNWCkoyhmOAAj7QBc5Y/i70/VBVU3HC6RkOgHidPNEaIu+fq32paDE1HSc+ufYQr0UaJlN0/+L1XQs+
|
||||
eDNDnvAp3NNC6MTqkjyqmooTnX0f8E7P8J+JZvQvlXuhJ8QrFbLpQSRFZ+Fg4SyEL0yNyUVVTXzCoTfO
|
||||
bbWNgV1dsZrchHI4dJCGeDT84vEsBVjNxUMD3D714My/UsTZA2f/fn6w0Ftbwje2OMVfq+oqJKsr6G8L
|
||||
77upbRyfPEx2tCvk9mU+Uz2ABXR2KUQZrTzEQ8gGJ75cyFYL4Ig/6VfYmLV8W5XxT6mOfKq6CgnlFrxE
|
||||
KZKTE5r0kJE4eSxJdlYc4p1gIdvJY8avhnWMT8ZZmKrljTyo3R06qarrfkKRDupMeBvoUx2Rghyfkbgb
|
||||
4kUqCvHwDt6tJmSrFu+cTtMxRwt4Qzesnqcp8G1VbRuEKikU+mgbDdIQp8Ej0eVr/HK5F2+/nmYhXpQa
|
||||
sPbIGN1zo4wvgN/+8BiJTrxAl1eYvPWaef9MANuK3S2ysWv10dSeuMZN/aPEDFVS2gaB3DOkU4lwGRmJ
|
||||
W5eGiNCrkO2tMpmbT5ALb6RZlge4QB13/O0J+sxN3zFj79OiQ44QkXMg5Q6OLG9pFreoatsgqyCFUTam
|
||||
bdARmyBPU3+Nx8QoQHn9UTr70qWTsngWSYVJIFY+56cXk3m6D8YK90Gqozt2ISSpatsgFDfyDl1axCw5
|
||||
fiTJZWIUhvdGSYwqr5J9De9E02GyZ58xEVExHHs5SceeKdAH6hO3epXDqto2yOZV3uM5tA7qE507leIy
|
||||
MQIXz9EN2y9V5RCvfpRlbRA58J4bgbPUH3T0JAr0Edv3AqHeyruq2jbIJsiXB/IvFzRArkxPpqMc9k7E
|
||||
yDzd33jPSmF2Lk7GaVveMyOAMSO5oNXHAI3dabR2SVXbBqEOGWcB2gawgviP85gYgZY+mbxPDQbvWSnA
|
||||
sPj6Ze4zI7DyUY6NXasPJFmtbvmGqrYNQjE3MrvaBtTvIfXNQdNgE4IVn6ncCyx5uBq8Po2CVRAL9IH8
|
||||
INXJLVVtG1RMgWajwVvd/rcOtOHNELNRVIHFlrDZ2NkZYT4fT0mlgKTuTupg8/o0E0WXcDEjYjYQYczW
|
||||
cL4yMxMn7WH9Ge1qUdSI2D2h85tReqFFfOJw1Xk9GDVELLyMidko6sbAkYaTyGtkNlAhoCSjFTvS8kCU
|
||||
xcu8vsyGOLSf70hTixPuTuZLFkyaBRgv1+5BpsRSLhOe4R0XjiCLFAeZjaKhXLFkwmYhQ63bU9SgNLWK
|
||||
zEmGkYB7g6WN3/gbniG1lp17MMoDiiYTUHna5E8UpLM2Cz2DM+y8GQ4yIgw4yY1ekQG/xydjLOzzS2HS
|
||||
myo8s9gsbPfHr9U1B36vqm2DSiVUzQYMCVJVH79dPmT85B2cnMlsM+f1ZSZKJlRBNq9yqlTtsxmAUE91
|
||||
RsnRlyrP+Bx/ZZDs8Ee4x49mAtkqaoFfVdVVSLiGipuUvMZmAZWtg0PVJwWStE1raPPKhgFfCIdKUouq
|
||||
rkLCfVtcGeU1NgO4goCCyFpCORgYV0/IlFI5HtaPNcvWyODweDOupSbzR+i+p7Dib56CKgGsM/pAdMDj
|
||||
YSTCexeJ3aNcUNVUnHBZmVfaYSRyCyeIs2eAHNiv/6j0wP4Blvg02y/0SqNrlmbRraqpOKHEv1hxkVHA
|
||||
OUt/rLLIoxzQB+oNO+PmXeaBLqxuaa3eIf1AVVNpogp8pntgmnulQS9Qe7yjTa6qNLgcrl/MscoJswrY
|
||||
uxJTKG+bU9VTnlDSWqzAUg+QCkKaHPUnPEXoAc5tcPwwOH2Uy7tWQAdUeStVfzqAKvBFGh0UFFnWClgx
|
||||
TyBjaonIvqk4K1QCL54MtaA7OY0S30OqWionlPliL8Ss4XVcLVAyhlDNzPNcVE+wUI9TnlYLUHiOQvua
|
||||
r8PaBCnuFod1JxiqCdX0wshQTwiOrFoFJayqo3rCJRN20WZskcugEtQSqumFEaHe3Ys20lKjT/6uqo7a
|
||||
yNIc/CuuPdV6XtIq01Bt2NzSEB4QHrbWeEMUd2Nwvc3iCPxZVYM+srrlRPHLhsWhJ1TTi1pDPYzRsTu7
|
||||
TP2+iDp8/YSrn3aPdBZXQXlMeTAiVNOLWkK9zvjULWo4Xn/M5/uGOnxjCBGKVZAv0/9oWdfGyFBNL6oJ
|
||||
9QJZ9v2EyxVHHNUSjZN/YhWk61KZnKE/NkncvSFTaqqrBWSALJCJJ+s6UKNNlXcDXyNRh2sOoTqT7okl
|
||||
PzqBT9U1706SDuqTIQ3PG9hmAHda4Be6qCyQiScrgNpnjInOvN+pwzSXcB0CM7EvM1fiFO8E2Z2eI9vp
|
||||
HgQrfOW8eQVKWlw+n2FWGLwhQynj159ZuI2xcM85zCR455TxFRiWUgLi+y347AlzbjMxVsDNG7QRePt0
|
||||
il0GguHAzYJSfiBkhsHAnoetSR3W5tLd1Jd0xtGbWS7nJ2Iw3ck8c6qbe8JkZjbBTuD0pLTQFpYWV2+b
|
||||
u0NkJ+0bN6rKOdDw8xy96VWbRz5tmsGolODiWF1yDB8fg/fOE1iLyN5FdssShUUI8YLxKJmeuXtdH7MI
|
||||
X9dY+TDHFATgN/6GSn68k6fvBuMxss0nsQIj9IUPL/J4aQEZG7zKql1Qooa7KnoIH2iwueUlfGKumgQE
|
||||
blyiXMIfmyA+KUtcvQmW8mpskYjFFWT1ifiNv+GZT86yd9Gmmo/5IDEgBBDbykuGRRhGE4udPVIUWRzc
|
||||
9DY6n1gLIANSUsiqILrQHdtuBiEhaxPkRSo0PgF6S09QXyvYnnv3ojRdrvLipn+hzQhSM9vz1Mda88h7
|
||||
1sz+QCMsK07PcACEM4wGtzJrumO8GYSb3pZm0Ust9kWcrbYqe2/CeTViZqIPVAzg0Bt94+jR6gp6Hrh1
|
||||
NYtw3xan+zav8k9WZ9KeuCYER7DU736Ie98LLGqAW4SyNwC/2Ye46TMYD+p7EiE4vIxCH/SBG5R0y/DW
|
||||
VfNhiK8CoUgHoaHFGaxHzV2DN/RSg0d5hxqhS1TJn38K3iKIy/gbnqG4Ee+iDaKHooU+D+khfQ3okUf+
|
||||
D1WHWk/swkxBAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
<comment>rell icon ( 80x80)</comment>
|
||||
</data>
|
||||
<data name="reel_small" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAABe5JREFUWEfd
|
||||
mF1zE1UYxzOjd+r38AVH/TBcOIgX3sggQtJqgQIlpQn2vSSbwiabzW42zXvSNiUJjjJKodBC6oXjgKDA
|
||||
ADpjWxTEGwWkx/Pf7gm7ydlkU+SGZ+Y3k9lznv95Nuftedb1wtqOfcH3uv3S8N4htXrwWGqpL5i5TLlp
|
||||
cPngxNQS2tBnZ+/Eu4bb87WPeoZe8/ijg/snEstjavVBbG6RJE4ttwR9RtXqnwfGEsuegcjgTu/kq4bc
|
||||
/2der/dlj0/y9wXTP0Vnz6/zAnGCNLuwTjWueXyRAWga8s9mu72BLXuHleVw8exj3qCbQSzMP+4ZVmvd
|
||||
R8U3jWE2Z3v84of9ofxtrVrjDvQsQPNIKH+ryy99YAzXmXn8kT3Dcmm1Lli5RILxPBmX002DOQW+0IAW
|
||||
ezYolVa7ByKfGsM6s939ke3D8txvTEQuLZCQqpK1Gyo5fVohkeKZ+gBOgQ98oRFSFF2TtQ1F59Yc/5NY
|
||||
c5hW5ixR4VgqRh7f1Qi5lyBPftdIUNHq4k6BD3yhAS2ZakrF+Xp7fyh3yz0w+YYRBt+ws7Ah2JqLzi4Q
|
||||
JRMj638kdGFGbVEhxzNf1cXbgb6XFlWLBjSVlKyPgT5apUawcVrubhwlbLdinUzSaf33rjU4xnE1ToWd
|
||||
bJ6a3pengX8SSyde3ViTYn7+kXsgfMQIx2o4hHHOMeGAmiN3b/KFwfUfVCIky6ZA+AjJk+Rn2penAdZu
|
||||
xEkgnq33p7fQVe5hjhuCHcLRmQUyV45xBc1Ek4plRzaCNvTh+ZoplRUc4rpPdOb8epc/ctQI66ntn5ha
|
||||
ZsIBJUUervHFzKzQHRnUpi1BmUEb+vB8zfyzSjeemqr79Y5pNSOsDcPFj7sVjWr5IslMt39rxlReIbGT
|
||||
S5bAgFJeIql8+1lgJGlfjA3fMbVyf9ch4W0jPExveJRd/MJUhdy52v6tGX/9qtF//OkaYuAZ2ng+PG5f
|
||||
UYiQqui+sdIF0u2TvjDCc7n2jcQrTBh/deOx0o7sdJQE5Lh+XoKJaJz+ezK3rx0YUzBN894RtWyE53Id
|
||||
HJ+6yBrklPO3BvduqyRXDJNHxkEO8DtbEPU2c992ROnYLA4a06IRnsvVF8hcYQ1arjPRwrRoCY6BZ8UZ
|
||||
sel5KzA2iwNJrxEevUGE7HXW4Bckkp9RHaMm7YNQUyLXxw6/EKkH6BUy143wrAF2CtYcLzigpGNcHydY
|
||||
AjRPcacEYhvT2RgcngnKFNfHCZYpNm+STpFmzpJYMmYJEr9lPRG4wPVxgmWT9JiOmc0wKqVIMnuC5It0
|
||||
zVHSOZGMRTef2ALLMdN1NDLipELjEc59Tc6dab55LiwoRMw6T8nM4KC23McfHwq+g9KQ17kVeCklbX8t
|
||||
xlL0GqSD8XxbMaqU7+/oDWwxwtuwA+OJGq+zHVoVG0Qjf6/YH+xIAo7Jmt6Xp2FHU7IAQ1GNupXnwAOZ
|
||||
Sqs8j3HzCs0bE/YZTyPSzPknbr/YnG4hSURRzXNqJFz4llROOc94ylWF+nzD1WqkL5C8uv2zkVeMsKzm
|
||||
8Yn9kcLZhzxHBlIiUVM6SijQFz4snbJDzJ951DUQ9hrhNBsKlp4htdaqUJ+QU+TBL/algB0badnTbKUR
|
||||
FE2fDyqXtm7NvWSEwzd8jkDFzxOZpPnadxedT20j39cUqnGySRd4adm5yyu8boTR2ty+E9toMV0v3AFd
|
||||
vDTr7SzH4wENaJm1h6TSqtsX2WYM78y6fOHdg9G5FSaCKQgliqRQotfamv3RYgdKzMqXKjmm5Ejc+ulj
|
||||
xd3ppw9mbp+8DRW/eU1Ks+eIoGVIqqjqpUGrzYK2Oz+qet9QPE0rtnN1HbwwptXtE983htuc4XMEKn4U
|
||||
1UwcYEdOpqskSAeW0zTZzKokWVB08BuZOdqwbht3bzg//xAbwvGaa2cbHzAj/SiqUbeaB+sEHMI459x+
|
||||
6XDb3boZw2GOU37/uFZDaejknpVLi/rd2juWqMH3uXwC5hkuc1yPPcNKBbkbEszDQuYGwG88Q5uHlo+f
|
||||
HAq9Zbi9aOZy/Qe4xYHxvg6NpAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
<comment>reel icon (40x40)</comment>
|
||||
</data>
|
||||
<data name="safty" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAALGPC/xhBQAAAW9JREFUWEfl
|
||||
2E1qwlAUBeBndygvC9CdCHHcuIkWqp27DK3toLiIOrRkkno1B6TcJO/e95fSA2fiUfgwPogx/yLNYvGw
|
||||
K4rqOJt9UPfWPtJr7Zw3BNlPpy+nsvw+V1VD/SrL+s3a1+zIxpjJBfJ8j0NPy2V9KIpNNmQfDs2GdMGh
|
||||
yZESHJoMqcGh0ZE+ODQaMgQODY6U4BBuu28wpPSbQ7jtd72RmsuKcBtXNVL7m0O4ratipM+BQLitr85I
|
||||
HxwV4bahDiJ9cVSE21zaiQyBoyLc5loWSTebdA/HfUBShNskJQuZWp4xx/n8nXujtAi3Sft5MbW8PwAc
|
||||
4yWm/zUt73ZIDtY+jeiQrNmTHALp004ckhM5iEPUyNWqqbfba9m9p844RIMkGCJBinGIFKkBqnGIBpkM
|
||||
h8Q4OMFwSEhkcBwSAhkNh/ggo+MQDTIZDpEgk+MQF2Q2HNKHzI5DCDDaR8AIQeiml+6CqaN6iB43xvwA
|
||||
iFk1KsvXeuAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
QRValidation/CapCleaningControl/Resources/air.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
QRValidation/CapCleaningControl/Resources/bcd.png
Normal file
|
After Width: | Height: | Size: 789 B |
BIN
QRValidation/CapCleaningControl/Resources/bg_blue.png
Normal file
|
After Width: | Height: | Size: 778 B |
BIN
QRValidation/CapCleaningControl/Resources/bg_red.png
Normal file
|
After Width: | Height: | Size: 778 B |
BIN
QRValidation/CapCleaningControl/Resources/emg.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
QRValidation/CapCleaningControl/Resources/erase.png
Normal file
|
After Width: | Height: | Size: 750 B |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 865 B |
BIN
QRValidation/CapCleaningControl/Resources/icons8-bug-40.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
QRValidation/CapCleaningControl/Resources/icons8-bug-80.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
QRValidation/CapCleaningControl/Resources/icons8-code-30.png
Normal file
|
After Width: | Height: | Size: 667 B |
|
After Width: | Height: | Size: 816 B |
|
After Width: | Height: | Size: 1.7 KiB |
BIN
QRValidation/CapCleaningControl/Resources/icons8-erase-30.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
BIN
QRValidation/CapCleaningControl/Resources/icons8-help-80.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 648 B |
BIN
QRValidation/CapCleaningControl/Resources/icons8-info-80.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 825 B |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 997 B |
BIN
QRValidation/CapCleaningControl/Resources/icons8-settings-30.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
QRValidation/CapCleaningControl/Resources/icons8-start-30.png
Normal file
|
After Width: | Height: | Size: 570 B |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 809 B |
BIN
QRValidation/CapCleaningControl/Resources/mot.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
QRValidation/CapCleaningControl/Resources/plc.png
Normal file
|
After Width: | Height: | Size: 705 B |
BIN
QRValidation/CapCleaningControl/Resources/reel_big.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
QRValidation/CapCleaningControl/Resources/reel_small.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
QRValidation/CapCleaningControl/Resources/safty.png
Normal file
|
After Width: | Height: | Size: 440 B |
187
QRValidation/CapCleaningControl/UIControl.csproj
Normal file
@@ -0,0 +1,187 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<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>{9264CD2E-7CF8-4237-A69F-DCDA984E0613}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>UIControl</RootNamespace>
|
||||
<AssemblyName>UIControl</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<Deterministic>true</Deterministic>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CItem.cs" />
|
||||
<Compile Include="CMenu.cs" />
|
||||
<Compile Include="Common.cs" />
|
||||
<Compile Include="CPicker.cs" />
|
||||
<Compile Include="CIcon.cs" />
|
||||
<Compile Include="CPort.cs" />
|
||||
<Compile Include="CUnPortData.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CUnPortInfo.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="EnumStruct.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Events.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Loader.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Loader.Designer.cs">
|
||||
<DependentUpon>Loader.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Unloader.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Unloader.Designer.cs">
|
||||
<DependentUpon>Unloader.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Utility.cs" />
|
||||
<Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-code-30.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-erase-30.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-pause-button-30.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-settings-30.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-start-30.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-assembly-machine-40.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-rounded-square-80.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-rounded-square-80_blue.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-rounded-square-80_red.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-high-priority-40.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-wind-40.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-emergency-stop-button-40.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-deployment-40.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-barcode-reader-40.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\reel_big.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\reel_small.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\bg_red.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\air.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\bcd.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\bg_blue.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\emg.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\erase.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8_pause_button_30.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\mot.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\plc.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\safty.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-automatic-gearbox-warning-80.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-hazard-warning-flasher-80.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-info-80.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-help-80.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-bug-80.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\icons8-bug-40.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
38
QRValidation/CapCleaningControl/Unloader.Designer.cs
generated
Normal file
@@ -0,0 +1,38 @@
|
||||
namespace UIControl
|
||||
{
|
||||
partial class Unloader
|
||||
{
|
||||
/// <summary>
|
||||
/// 필수 디자이너 변수입니다.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 사용 중인 모든 리소스를 정리합니다.
|
||||
/// </summary>
|
||||
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 구성 요소 디자이너에서 생성한 코드
|
||||
|
||||
/// <summary>
|
||||
/// 디자이너 지원에 필요한 메서드입니다.
|
||||
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
343
QRValidation/CapCleaningControl/Unloader.cs
Normal file
@@ -0,0 +1,343 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public partial class Unloader : UserControl
|
||||
{
|
||||
public Boolean bRemakeRect = true;
|
||||
public CPort[] ports;
|
||||
|
||||
public Font Font_Alert { get; set; }
|
||||
public Font Font_SIDLIST { get; set; }
|
||||
public Font Font_Sign { get; set; }
|
||||
|
||||
private Color _portback = Color.FromArgb(32, 32, 32);
|
||||
public Color arPortBack { get { return _portback; } set { _portback = value; this.Invalidate(); } }
|
||||
|
||||
private Color _titleback = Color.DeepSkyBlue;
|
||||
public Color arTitleBack { get { return _titleback; } set { _titleback = value; this.Invalidate(); } }
|
||||
|
||||
public Boolean arStop { get; set; }
|
||||
public Boolean arBusy { get; set; }
|
||||
|
||||
public Boolean debugMode { get; set; }
|
||||
double port_width, port_height, space_width;
|
||||
|
||||
public Unloader()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
// Set Optimized Double Buffer to reduce flickering
|
||||
this.SetStyle(ControlStyles.UserPaint, true);
|
||||
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
||||
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
|
||||
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
|
||||
this.SetStyle(ControlStyles.ContainerControl, false);
|
||||
this.SetStyle(ControlStyles.Selectable, true);
|
||||
|
||||
// Redraw when resized
|
||||
this.SetStyle(ControlStyles.ResizeRedraw, true);
|
||||
Font_SIDLIST = new Font("Consolas", 30, FontStyle.Bold);
|
||||
this.Padding = new Padding(5, 5, 5, 5);
|
||||
this.Font_Sign = new Font("Consolas", 15, FontStyle.Bold);
|
||||
this.Font_Alert = new Font("Consolas", 30, FontStyle.Bold);
|
||||
}
|
||||
|
||||
protected override void OnResize(EventArgs e)
|
||||
{
|
||||
bRemakeRect = true;
|
||||
Invalidate();
|
||||
// base.OnResize(e);
|
||||
}
|
||||
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
base.OnPaint(e);
|
||||
|
||||
if (ports == null || ports.Length == 0)
|
||||
{
|
||||
this.ports = new CPort[]
|
||||
{
|
||||
new CPort(){ cartSize=7, cartState = 1, Mode="USER", portName="#11", portNo=1 },
|
||||
new CPort(){ cartSize=7, cartState = 1, Mode="USER", portName="#21", portNo=2 },
|
||||
new CPort(){ cartSize=13, cartState = 0, Mode="USER", portName="#12", portNo=3 },
|
||||
new CPort(){ cartSize=13, cartState = 2, Mode="USER", portName="#22", portNo=4 },
|
||||
};
|
||||
|
||||
this.ports[0].reelSID.Add(new CPortData("012345678",30,100,"릴#6"));
|
||||
//e.Graphics.DrawString("PORT가 설정되지 않았습니다", this.Font, Brushes.White, DisplayRectangle,
|
||||
// new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center });
|
||||
//return;
|
||||
}
|
||||
|
||||
//Set Optimized Double Buffer to reduce flickering
|
||||
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
|
||||
e.Graphics.InterpolationMode = InterpolationMode.High;
|
||||
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
|
||||
//e.Graphics.DrawString(DisplayRectangle.ToString(), this.Font, Brushes.White, 1, 1);
|
||||
//포트영역생성
|
||||
if (bRemakeRect)
|
||||
{
|
||||
space_width = 10;
|
||||
|
||||
int row = 2;
|
||||
int col = 2;
|
||||
port_width = (DisplayRectangle.Width - (col - 1) * space_width) / 2f;
|
||||
port_height = (DisplayRectangle.Height - (row - 1) * space_width) / 2f;
|
||||
//space_width = (DisplayRectangle.Width - (port_width * 2.0)) / 3.0;
|
||||
//space_height = (DisplayRectangle.Height - (port_height * 2.0)) / 3.0;
|
||||
|
||||
var signSize = e.Graphics.MeasureString("13\"", this.Font_Sign);
|
||||
var titlesize = e.Graphics.MeasureString("1.01234567890", this.Font);
|
||||
var idx = 0;
|
||||
for (int c = 0; c < col; c++)
|
||||
{
|
||||
for (int r = 0; r < row; r++)
|
||||
{
|
||||
|
||||
ports[idx].rect = new Rectangle(
|
||||
(int)(DisplayRectangle.Left + (c * space_width) + (c * port_width)),
|
||||
(int)(DisplayRectangle.Top + (r * space_width) + (r * port_height)),
|
||||
(int)port_width,
|
||||
(int)port_height);
|
||||
|
||||
ports[idx].rect_signL = new Rectangle(
|
||||
(int)(DisplayRectangle.Left + (c * space_width) + (c * port_width)),
|
||||
(int)(DisplayRectangle.Top + (r * space_width) + (r * port_height)),
|
||||
(int)(signSize.Width * 1.05f),
|
||||
(int)(signSize.Height * 1.05f));
|
||||
|
||||
ports[idx].rect_signR = new Rectangle(
|
||||
(int)(ports[idx].rect.Right - ports[idx].rect_signL.Width),
|
||||
ports[idx].rect_signL.Top,
|
||||
ports[idx].rect_signL.Width,
|
||||
ports[idx].rect_signL.Height);
|
||||
|
||||
ports[idx].rect_title = new Rectangle(
|
||||
(int)(ports[idx].rect.Left),
|
||||
(int)(ports[idx].rect.Top), //Bottom - (titlesize.Height * 1.2f)),
|
||||
ports[idx].rect.Width,
|
||||
(int)(signSize.Height * 1.05f));
|
||||
|
||||
ports[idx].rect_count = new Rectangle(
|
||||
ports[idx].rect.Left + 2,
|
||||
ports[idx].rect_title.Bottom + 2,
|
||||
ports[idx].rect.Width - 4,
|
||||
ports[idx].rect.Height - ports[idx].rect_title.Height - 4
|
||||
);
|
||||
|
||||
idx += 1;
|
||||
|
||||
}
|
||||
}
|
||||
bRemakeRect = false;
|
||||
}
|
||||
|
||||
|
||||
//포트그리기 (총 4개의 포트가 있다)
|
||||
var sfCenter = new StringFormat
|
||||
{
|
||||
Alignment = StringAlignment.Center,
|
||||
LineAlignment = StringAlignment.Center,
|
||||
};
|
||||
var sfLeft = new StringFormat
|
||||
{
|
||||
Alignment = StringAlignment.Near,
|
||||
LineAlignment = StringAlignment.Center,
|
||||
};
|
||||
|
||||
foreach (var port in ports)
|
||||
{
|
||||
//배경영역 칠하기
|
||||
e.Graphics.FillRectangle(new SolidBrush(this._portback), port.rect);
|
||||
|
||||
|
||||
if (port.Mode == "USER")
|
||||
e.Graphics.FillRectangle(new SolidBrush(Color.SkyBlue), port.rect_title);
|
||||
else
|
||||
e.Graphics.FillRectangle(new SolidBrush(this._titleback), port.rect_title);
|
||||
|
||||
//글자영역 칠하기
|
||||
if(port.cartSize ==13)
|
||||
e.Graphics.FillRectangle(Brushes.Gold, port.rect_signL);
|
||||
else
|
||||
e.Graphics.FillRectangle(Brushes.WhiteSmoke, port.rect_signL);
|
||||
|
||||
e.Graphics.FillRectangle(Brushes.WhiteSmoke, port.rect_signR);
|
||||
|
||||
|
||||
var portSize = port.cartSize == 0 ? "--" : port.cartSize + "\"";
|
||||
e.Graphics.DrawString(portSize, this.Font_Sign, Brushes.Black, port.rect_signL, sfCenter);
|
||||
|
||||
//sign R 에는 카운트를 넣는다
|
||||
//var portStat = port.cartState == 0 ? "STP" : (port.cartState == 1 ? "RDY" : "MAX");
|
||||
var portStatBG = port.cartState == 0 ? Color.Gray : (port.cartState == 1 ? Color.Green : Color.Tomato);
|
||||
e.Graphics.DrawString(port.reelCount.ToString(), this.Font_Sign, new SolidBrush(portStatBG), port.rect_signR, sfCenter);
|
||||
|
||||
|
||||
//타이틀 글자
|
||||
var title = "[ " + port.portNo.ToString() + " ]";
|
||||
|
||||
if (string.IsNullOrEmpty(port.portName) == false && port.portName != port.portNo.ToString())
|
||||
{
|
||||
title = "[" + port.portNo.ToString() + ":" + port.portName + "]";
|
||||
}
|
||||
//if (port.Mode == "DISABLE") title += " (사용안함)";
|
||||
//else if (port.Mode == "EXIT") title += " (배출전용)";
|
||||
//if (port.Mode == "USER") title = "* " + port.portNo.ToString() + " *";
|
||||
//else if (port.Mode == "DISABLE") title = "# " + port.portNo.ToString() + " #";
|
||||
//else
|
||||
//{
|
||||
//if (port.reelSID.Count == 0) title += " (할당안됨)";
|
||||
//else if (port.reelSID.Count == 1) title += " " + port.reelSID[0];
|
||||
//else title += " " + port.reelSID[0] + "(" + (port.reelSID.Count - 1).ToString() + ")";
|
||||
//}
|
||||
|
||||
if (string.IsNullOrEmpty(title) == false)
|
||||
{
|
||||
|
||||
e.Graphics.DrawString(title, Font_Sign, new SolidBrush(Color.Black), port.rect_title, sfCenter);
|
||||
}
|
||||
|
||||
//SID목록 가져온다
|
||||
//port.reelSID.Clear();
|
||||
//port.reelSID.AddRange(new CPortData[] {
|
||||
// new CPortData("0123456789A",1,10),
|
||||
// new CPortData("0123456789B",2,10),
|
||||
// new CPortData("0123456789C",3,10),
|
||||
// new CPortData("0123456789D",4,10)
|
||||
//});
|
||||
Color cntColor = ForeColor;
|
||||
string SidList = string.Empty;
|
||||
if (port.Mode == "USER") SidList = "";// cntColor = Color.FromArgb(50, 50, 50);
|
||||
foreach (var sid in port.reelSID)
|
||||
{
|
||||
if (sid.Active == false) continue; //비활성화된것은 표시하지 않는다
|
||||
if (string.IsNullOrEmpty(SidList) == false) SidList += "\n";
|
||||
SidList += string.Format(" {0} ({1}/{2})→{3}", sid.sid, sid.qty, sid.kpc,sid.towername);
|
||||
}
|
||||
|
||||
e.Graphics.DrawString(SidList,
|
||||
Font_SIDLIST,
|
||||
new SolidBrush(cntColor),
|
||||
port.rect_count, new StringFormat { Alignment = StringAlignment.Near, LineAlignment = StringAlignment.Near });
|
||||
|
||||
//e.Graphics.DrawRect(port.rect_count, Color.DarkBlue, 5);
|
||||
|
||||
///테두리
|
||||
e.Graphics.DrawRectangle(Pens.Gray, port.rect);
|
||||
|
||||
using (Font fsta = new Font("맑은 고딕", 25f, FontStyle.Regular))
|
||||
{
|
||||
//장비상태는 추가로 표시해준다.
|
||||
//STOP혹은 MAX라면 별도 표기한다. //미사용도 마찬가지
|
||||
if (port.Mode == "DISABLE")
|
||||
{
|
||||
|
||||
using (var sb = new SolidBrush(Color.FromArgb(220, Color.White)))
|
||||
{
|
||||
e.Graphics.FillRectangle(sb, port.rect_count);
|
||||
}
|
||||
if (string.IsNullOrEmpty(port.portName) == false && port.portName != port.portNo.ToString())
|
||||
e.Graphics.DrawString(title + "\nDISABLE", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter);
|
||||
else e.Graphics.DrawString(title + "\nDISABLE", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter);
|
||||
}
|
||||
else if (port.cartState == 0)
|
||||
{
|
||||
//stop
|
||||
|
||||
using (var sb = new SolidBrush(Color.FromArgb(220, Color.Yellow)))
|
||||
{
|
||||
e.Graphics.FillRectangle(sb, port.rect_count);
|
||||
}
|
||||
if (string.IsNullOrEmpty(port.portName) == false && port.portName != port.portNo.ToString())
|
||||
e.Graphics.DrawString(title + "\nSTOP", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter);
|
||||
else
|
||||
e.Graphics.DrawString(title + "\nSTOP", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter);
|
||||
}
|
||||
else if (port.cartState == 2)
|
||||
{
|
||||
//max
|
||||
using (var sb = new SolidBrush(Color.FromArgb(220, Color.Red)))
|
||||
{
|
||||
e.Graphics.FillRectangle(sb, port.rect_count);
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(port.portName) == false && port.portName != port.portNo.ToString())
|
||||
e.Graphics.DrawString(title + "\nFULL", fsta, new SolidBrush(Color.Black), port.rect_count, sfCenter);
|
||||
else
|
||||
e.Graphics.DrawString(title + "\nFULL", fsta, new SolidBrush(Color.White), port.rect_count, sfCenter);
|
||||
|
||||
}
|
||||
}
|
||||
//var portStat = port.cartState == 0 ? "STP" : (port.cartState == 1 ? "RDY" : "MAX");
|
||||
//var portStatBG = port.cartState == 0 ? Color.Gray : (port.cartState == 1 ? Color.Green : Color.Tomato);
|
||||
//e.Graphics.DrawString(portStat, this.Font_Sign, new SolidBrush(portStatBG), port.rect_signR, sfCenter);
|
||||
}
|
||||
|
||||
|
||||
if (this.arStop)
|
||||
{
|
||||
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(240, Color.Black)), DisplayRectangle);
|
||||
e.Graphics.DrawString("STOP", this.Font_Alert, Brushes.Orange, DisplayRectangle, sfCenter);
|
||||
}
|
||||
else if (this.arBusy)
|
||||
{
|
||||
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(240, Color.Black)), DisplayRectangle);
|
||||
e.Graphics.DrawString("BUSY", this.Font_Alert, Brushes.Aqua, DisplayRectangle, sfCenter);
|
||||
}
|
||||
|
||||
if (debugMode)
|
||||
{
|
||||
var sb = new System.Text.StringBuilder();
|
||||
sb.AppendLine("unloader ctonrol");
|
||||
sb.AppendLine(string.Format("port size {0}x{1}", port_width, port_height));
|
||||
sb.AppendLine(string.Format("space size {0}x{1}", space_width, space_width));
|
||||
sb.AppendLine(string.Format("display rect {0}", DisplayRectangle));
|
||||
e.Graphics.DrawString(sb.ToString(), this.Font, Brushes.White, 10, 10);
|
||||
}
|
||||
//e.Graphics.DrawRectangle(Pens.White, DisplayRectangle);
|
||||
sfCenter.Dispose();
|
||||
sfLeft.Dispose();
|
||||
|
||||
}
|
||||
|
||||
public class ClickEventArgs : EventArgs
|
||||
{
|
||||
public int idx { get; set; }
|
||||
public ClickEventArgs(int idx_)
|
||||
{
|
||||
this.idx = idx_;
|
||||
}
|
||||
}
|
||||
public event EventHandler<ClickEventArgs> ItemClick;
|
||||
|
||||
protected override void OnMouseClick(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseClick(e);
|
||||
|
||||
if (e.Button == System.Windows.Forms.MouseButtons.Left)
|
||||
{
|
||||
|
||||
var item = this.ports.Where(t => t.rect.Contains(e.Location)).FirstOrDefault();
|
||||
if (item != null)
|
||||
{
|
||||
//이 영역을 클릭한것으로 한다
|
||||
if (ItemClick != null)
|
||||
ItemClick(this, new ClickEventArgs(item.idx));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
168
QRValidation/CapCleaningControl/Utility.cs
Normal file
@@ -0,0 +1,168 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace UIControl
|
||||
{
|
||||
public static class Utility
|
||||
{
|
||||
|
||||
public static Rectangle OffsetRect(this Rectangle rect, int x,int y)
|
||||
{
|
||||
var retval = new Rectangle(rect.X + x, rect.Y + y, rect.Width, rect.Height);
|
||||
return retval;
|
||||
}
|
||||
|
||||
public static void DrawString(this Graphics g,
|
||||
string msg,
|
||||
Font font,
|
||||
Color fcolor,
|
||||
RectangleF rect,
|
||||
ContentAlignment textalign = ContentAlignment.MiddleCenter,
|
||||
Color? ShadowColor = null,
|
||||
Brush BackBrush = null,
|
||||
Pen BorderPen = null)
|
||||
{
|
||||
DrawString(g, msg, font, fcolor, rect.toRect(), textalign, ShadowColor, BackBrush, BorderPen);
|
||||
}
|
||||
|
||||
public static void DrawRectangle(this Graphics g, Pen pen, RectangleF rect)
|
||||
{
|
||||
g.DrawRectangle(pen, rect.Left, rect.Top, rect.Width, rect.Height);
|
||||
}
|
||||
|
||||
public static void DrawString(this Graphics g,
|
||||
string msg,
|
||||
Font font,
|
||||
Color fcolor,
|
||||
Rectangle rect,
|
||||
ContentAlignment textalign = ContentAlignment.MiddleCenter,
|
||||
Color? ShadowColor = null,
|
||||
Brush BackBrush = null,
|
||||
Pen BorderPen = null)
|
||||
{
|
||||
//배경색 지정되어 있다면
|
||||
if (BackBrush != null) g.FillRectangle(BackBrush, rect);
|
||||
|
||||
//테두리 지정되어 있다면
|
||||
if (BorderPen != null) g.DrawRectangle(BorderPen, rect);
|
||||
|
||||
//그립자가 지정되있다면 별도 처리를 한다
|
||||
if (ShadowColor != null && ShadowColor != Color.Transparent)
|
||||
{
|
||||
SizeF fsize;
|
||||
var drawPT = GetTextPosition(g, msg, font, rect, textalign, out fsize);
|
||||
|
||||
//그림자를 먼저 그린다
|
||||
g.DrawString(msg, font, new SolidBrush((Color)ShadowColor), drawPT.X + 1, drawPT.Y + 1);
|
||||
g.DrawString(msg, font, new SolidBrush(fcolor), drawPT.X, drawPT.Y);
|
||||
}
|
||||
else
|
||||
{
|
||||
var sf = new StringFormat();
|
||||
|
||||
if (textalign == ContentAlignment.BottomCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Near; }
|
||||
else if (textalign == ContentAlignment.BottomLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Near; }
|
||||
else if (textalign == ContentAlignment.BottomRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Near; }
|
||||
else if (textalign == ContentAlignment.MiddleCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; }
|
||||
else if (textalign == ContentAlignment.MiddleLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Center; }
|
||||
else if (textalign == ContentAlignment.MiddleRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Center; }
|
||||
else if (textalign == ContentAlignment.TopCenter) { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Far; }
|
||||
else if (textalign == ContentAlignment.TopLeft) { sf.Alignment = StringAlignment.Near; sf.LineAlignment = StringAlignment.Far; }
|
||||
else if (textalign == ContentAlignment.TopRight) { sf.Alignment = StringAlignment.Far; sf.LineAlignment = StringAlignment.Far; }
|
||||
else { sf.Alignment = StringAlignment.Center; sf.LineAlignment = StringAlignment.Center; }
|
||||
|
||||
|
||||
g.DrawString(msg, font, new SolidBrush(fcolor), rect, sf);
|
||||
|
||||
sf.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public static void DrawRect(this Graphics g, Rectangle rect, Color color, Color shadowColor, int pensize = 1)
|
||||
{
|
||||
//우측하단에 선을 그려준다. 일단은 검은색
|
||||
g.DrawLine(new Pen(shadowColor, pensize), rect.Left + 1, rect.Bottom + 1, rect.Right - 1, rect.Bottom + 1);
|
||||
g.DrawLine(new Pen(shadowColor, pensize), rect.Right + 1, rect.Top + 1, rect.Right + 1, rect.Bottom - 1);
|
||||
DrawRect(g, rect, color, pensize);
|
||||
}
|
||||
public static void DrawRect(this Graphics g, Rectangle rect, Color color, int pensize = 1)
|
||||
{
|
||||
g.DrawRectangle(new Pen(color, pensize), rect);
|
||||
}
|
||||
|
||||
public static void DrawRect(this Graphics g, RectangleF rect, Color color, int pensize = 1, Boolean shadow = false)
|
||||
{
|
||||
g.DrawRectangle(new Pen(color, pensize), rect.Left, rect.Top, rect.Width, rect.Height);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Rectangle 개체를 반환 합니다. 단순 float -> int 로 값을 변환 합니다.
|
||||
/// </summary>
|
||||
/// <param name="rect"></param>
|
||||
/// <returns></returns>
|
||||
public static Rectangle toRect(this RectangleF rect)
|
||||
{
|
||||
return new Rectangle((int)rect.Left, (int)rect.Top, (int)rect.Width, (int)rect.Height); ;
|
||||
}
|
||||
|
||||
static PointF GetTextPosition(Graphics g, string data, Font f, Rectangle rect, ContentAlignment align, System.Windows.Forms.Padding Padding, out SizeF fsize)
|
||||
{
|
||||
float x = 0;
|
||||
float y = 0;
|
||||
fsize = g.MeasureString(data, f);
|
||||
if (align == ContentAlignment.MiddleCenter)
|
||||
{
|
||||
x = (rect.Width - fsize.Width) / 2 + Padding.Left - Padding.Right;
|
||||
y = (rect.Height - fsize.Height) / 2 + Padding.Top - Padding.Bottom;
|
||||
}
|
||||
else if (align == ContentAlignment.MiddleLeft)
|
||||
{
|
||||
x = Padding.Left;
|
||||
y = (rect.Height - fsize.Height) / 2;
|
||||
}
|
||||
else if (align == ContentAlignment.MiddleRight)
|
||||
{
|
||||
x = rect.Width - fsize.Width - Padding.Right;
|
||||
y = (rect.Height - fsize.Height) / 2;
|
||||
}
|
||||
else if (align == ContentAlignment.BottomLeft)
|
||||
{
|
||||
x = Padding.Left;
|
||||
y = rect.Height - fsize.Height - Padding.Bottom;
|
||||
}
|
||||
else if (align == ContentAlignment.BottomRight)
|
||||
{
|
||||
x = rect.Width - fsize.Width - Padding.Right;
|
||||
y = rect.Height - fsize.Height - Padding.Bottom;
|
||||
}
|
||||
else if (align == ContentAlignment.BottomCenter)
|
||||
{
|
||||
x = (rect.Width - fsize.Width) / 2;
|
||||
y = rect.Height - fsize.Height - Padding.Bottom;
|
||||
}
|
||||
else if (align == ContentAlignment.TopLeft)
|
||||
{
|
||||
x = Padding.Left;
|
||||
y = Padding.Top;
|
||||
}
|
||||
else if (align == ContentAlignment.TopRight)
|
||||
{
|
||||
x = rect.Width - fsize.Width - Padding.Right;
|
||||
y = Padding.Top;
|
||||
}
|
||||
else if (align == ContentAlignment.TopCenter)
|
||||
{
|
||||
x = (rect.Width - fsize.Width) / 2;
|
||||
y = Padding.Top;
|
||||
}
|
||||
return new PointF(x + rect.Left, y + rect.Top);
|
||||
}
|
||||
static PointF GetTextPosition(Graphics g, string data, Font f, Rectangle rect, ContentAlignment align, out SizeF fsize)
|
||||
{
|
||||
return GetTextPosition(g, data, f, rect, align, new System.Windows.Forms.Padding(0), out fsize);
|
||||
}
|
||||
}
|
||||
}
|
||||