diff --git a/Document/DLL/InModbus.dll b/Document/DLL/InModbus.dll new file mode 100644 index 0000000..17c332e Binary files /dev/null and b/Document/DLL/InModbus.dll differ diff --git a/INT89DB_26.suo b/INT89DB_26.suo index 12b0e22..64b4ae0 100644 Binary files a/INT89DB_26.suo and b/INT89DB_26.suo differ diff --git a/INT89DB_26/Controls/ControlMainDisplay5.Designer.cs b/INT89DB_26/Controls/ControlMainDisplay5.Designer.cs index a6c67fb..7178a27 100644 --- a/INT89DB_26/Controls/ControlMainDisplay5.Designer.cs +++ b/INT89DB_26/Controls/ControlMainDisplay5.Designer.cs @@ -110,11 +110,6 @@ this.smartLabel70 = new SmartX.SmartLabel(); this.pictureBoxZero5 = new System.Windows.Forms.PictureBox(); this.pictureBoxGap5 = new System.Windows.Forms.PictureBox(); - this.labelFeedBack1 = new SmartX.SmartLabel(); - this.labelFeedBack2 = new SmartX.SmartLabel(); - this.labelFeedBack3 = new SmartX.SmartLabel(); - this.labelFeedBack4 = new SmartX.SmartLabel(); - this.labelFeedBack5 = new SmartX.SmartLabel(); this.SuspendLayout(); // // pictureBox1 @@ -141,7 +136,9 @@ this.buttonZero1.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonZero1.Name = "buttonZero1"; this.buttonZero1.NestedClickEventPrevent = false; + this.buttonZero1.OutlinePixel = 1; this.buttonZero1.RepeatInterval = 200; + this.buttonZero1.RepeatIntervalAccelerate = null; this.buttonZero1.SafeInterval = 200; this.buttonZero1.Size = new System.Drawing.Size(51, 72); this.buttonZero1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; @@ -172,7 +169,9 @@ this.buttonZero2.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonZero2.Name = "buttonZero2"; this.buttonZero2.NestedClickEventPrevent = false; + this.buttonZero2.OutlinePixel = 1; this.buttonZero2.RepeatInterval = 200; + this.buttonZero2.RepeatIntervalAccelerate = null; this.buttonZero2.SafeInterval = 200; this.buttonZero2.Size = new System.Drawing.Size(51, 72); this.buttonZero2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; @@ -203,7 +202,9 @@ this.buttonZero3.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonZero3.Name = "buttonZero3"; this.buttonZero3.NestedClickEventPrevent = false; + this.buttonZero3.OutlinePixel = 1; this.buttonZero3.RepeatInterval = 200; + this.buttonZero3.RepeatIntervalAccelerate = null; this.buttonZero3.SafeInterval = 200; this.buttonZero3.Size = new System.Drawing.Size(51, 72); this.buttonZero3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; @@ -234,7 +235,9 @@ this.buttonZero4.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonZero4.Name = "buttonZero4"; this.buttonZero4.NestedClickEventPrevent = false; + this.buttonZero4.OutlinePixel = 1; this.buttonZero4.RepeatInterval = 200; + this.buttonZero4.RepeatIntervalAccelerate = null; this.buttonZero4.SafeInterval = 200; this.buttonZero4.Size = new System.Drawing.Size(51, 72); this.buttonZero4.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; @@ -265,7 +268,9 @@ this.buttonZero5.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonZero5.Name = "buttonZero5"; this.buttonZero5.NestedClickEventPrevent = false; + this.buttonZero5.OutlinePixel = 1; this.buttonZero5.RepeatInterval = 200; + this.buttonZero5.RepeatIntervalAccelerate = null; this.buttonZero5.SafeInterval = 200; this.buttonZero5.Size = new System.Drawing.Size(51, 72); this.buttonZero5.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; @@ -300,7 +305,7 @@ this.smartLabel35.BackPictureBox2 = null; this.smartLabel35.BorderColor = System.Drawing.Color.Black; this.smartLabel35.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel35.Font = new System.Drawing.Font("굴림", 35F, System.Drawing.FontStyle.Bold); + this.smartLabel35.Font = new System.Drawing.Font("Gulim", 35F, System.Drawing.FontStyle.Bold); this.smartLabel35.ForeColor = System.Drawing.Color.White; this.smartLabel35.InitVisible = true; this.smartLabel35.LineSpacing = 0F; @@ -320,7 +325,7 @@ this.smartLabel34.BackPictureBox2 = null; this.smartLabel34.BorderColor = System.Drawing.Color.Black; this.smartLabel34.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel34.Font = new System.Drawing.Font("굴림", 10F, System.Drawing.FontStyle.Regular); + this.smartLabel34.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Regular); this.smartLabel34.ForeColor = System.Drawing.Color.White; this.smartLabel34.InitVisible = true; this.smartLabel34.LineSpacing = 0F; @@ -340,7 +345,7 @@ this.labelProductionSpeed1.BackPictureBox2 = null; this.labelProductionSpeed1.BorderColor = System.Drawing.Color.Black; this.labelProductionSpeed1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelProductionSpeed1.Font = new System.Drawing.Font("굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelProductionSpeed1.Font = new System.Drawing.Font("Gulim", 14F, System.Drawing.FontStyle.Bold); this.labelProductionSpeed1.ForeColor = System.Drawing.Color.White; this.labelProductionSpeed1.InitVisible = true; this.labelProductionSpeed1.LineSpacing = 0F; @@ -752,7 +757,7 @@ this.labelProductionSpeed2.BackPictureBox2 = null; this.labelProductionSpeed2.BorderColor = System.Drawing.Color.Black; this.labelProductionSpeed2.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelProductionSpeed2.Font = new System.Drawing.Font("굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelProductionSpeed2.Font = new System.Drawing.Font("Gulim", 14F, System.Drawing.FontStyle.Bold); this.labelProductionSpeed2.ForeColor = System.Drawing.Color.White; this.labelProductionSpeed2.InitVisible = true; this.labelProductionSpeed2.LineSpacing = 0F; @@ -772,7 +777,7 @@ this.smartLabel23.BackPictureBox2 = null; this.smartLabel23.BorderColor = System.Drawing.Color.Black; this.smartLabel23.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel23.Font = new System.Drawing.Font("굴림", 10F, System.Drawing.FontStyle.Regular); + this.smartLabel23.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Regular); this.smartLabel23.ForeColor = System.Drawing.Color.White; this.smartLabel23.InitVisible = true; this.smartLabel23.LineSpacing = 0F; @@ -792,7 +797,7 @@ this.smartLabel24.BackPictureBox2 = null; this.smartLabel24.BorderColor = System.Drawing.Color.Black; this.smartLabel24.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel24.Font = new System.Drawing.Font("굴림", 35F, System.Drawing.FontStyle.Bold); + this.smartLabel24.Font = new System.Drawing.Font("Gulim", 35F, System.Drawing.FontStyle.Bold); this.smartLabel24.ForeColor = System.Drawing.Color.White; this.smartLabel24.InitVisible = true; this.smartLabel24.LineSpacing = 0F; @@ -1022,7 +1027,7 @@ this.labelProductionSpeed3.BackPictureBox2 = null; this.labelProductionSpeed3.BorderColor = System.Drawing.Color.Black; this.labelProductionSpeed3.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelProductionSpeed3.Font = new System.Drawing.Font("굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelProductionSpeed3.Font = new System.Drawing.Font("Gulim", 14F, System.Drawing.FontStyle.Bold); this.labelProductionSpeed3.ForeColor = System.Drawing.Color.White; this.labelProductionSpeed3.InitVisible = true; this.labelProductionSpeed3.LineSpacing = 0F; @@ -1042,7 +1047,7 @@ this.smartLabel41.BackPictureBox2 = null; this.smartLabel41.BorderColor = System.Drawing.Color.Black; this.smartLabel41.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel41.Font = new System.Drawing.Font("굴림", 10F, System.Drawing.FontStyle.Regular); + this.smartLabel41.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Regular); this.smartLabel41.ForeColor = System.Drawing.Color.White; this.smartLabel41.InitVisible = true; this.smartLabel41.LineSpacing = 0F; @@ -1062,7 +1067,7 @@ this.smartLabel42.BackPictureBox2 = null; this.smartLabel42.BorderColor = System.Drawing.Color.Black; this.smartLabel42.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel42.Font = new System.Drawing.Font("굴림", 35F, System.Drawing.FontStyle.Bold); + this.smartLabel42.Font = new System.Drawing.Font("Gulim", 35F, System.Drawing.FontStyle.Bold); this.smartLabel42.ForeColor = System.Drawing.Color.White; this.smartLabel42.InitVisible = true; this.smartLabel42.LineSpacing = 0F; @@ -1292,7 +1297,7 @@ this.labelProductionSpeed4.BackPictureBox2 = null; this.labelProductionSpeed4.BorderColor = System.Drawing.Color.Black; this.labelProductionSpeed4.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelProductionSpeed4.Font = new System.Drawing.Font("굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelProductionSpeed4.Font = new System.Drawing.Font("Gulim", 14F, System.Drawing.FontStyle.Bold); this.labelProductionSpeed4.ForeColor = System.Drawing.Color.White; this.labelProductionSpeed4.InitVisible = true; this.labelProductionSpeed4.LineSpacing = 0F; @@ -1312,7 +1317,7 @@ this.smartLabel55.BackPictureBox2 = null; this.smartLabel55.BorderColor = System.Drawing.Color.Black; this.smartLabel55.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel55.Font = new System.Drawing.Font("굴림", 10F, System.Drawing.FontStyle.Regular); + this.smartLabel55.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Regular); this.smartLabel55.ForeColor = System.Drawing.Color.White; this.smartLabel55.InitVisible = true; this.smartLabel55.LineSpacing = 0F; @@ -1332,7 +1337,7 @@ this.smartLabel56.BackPictureBox2 = null; this.smartLabel56.BorderColor = System.Drawing.Color.Black; this.smartLabel56.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel56.Font = new System.Drawing.Font("굴림", 35F, System.Drawing.FontStyle.Bold); + this.smartLabel56.Font = new System.Drawing.Font("Gulim", 35F, System.Drawing.FontStyle.Bold); this.smartLabel56.ForeColor = System.Drawing.Color.White; this.smartLabel56.InitVisible = true; this.smartLabel56.LineSpacing = 0F; @@ -1562,7 +1567,7 @@ this.labelProductionSpeed5.BackPictureBox2 = null; this.labelProductionSpeed5.BorderColor = System.Drawing.Color.Black; this.labelProductionSpeed5.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelProductionSpeed5.Font = new System.Drawing.Font("굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelProductionSpeed5.Font = new System.Drawing.Font("Gulim", 14F, System.Drawing.FontStyle.Bold); this.labelProductionSpeed5.ForeColor = System.Drawing.Color.White; this.labelProductionSpeed5.InitVisible = true; this.labelProductionSpeed5.LineSpacing = 0F; @@ -1582,7 +1587,7 @@ this.smartLabel69.BackPictureBox2 = null; this.smartLabel69.BorderColor = System.Drawing.Color.Black; this.smartLabel69.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel69.Font = new System.Drawing.Font("굴림", 10F, System.Drawing.FontStyle.Regular); + this.smartLabel69.Font = new System.Drawing.Font("Gulim", 10F, System.Drawing.FontStyle.Regular); this.smartLabel69.ForeColor = System.Drawing.Color.White; this.smartLabel69.InitVisible = true; this.smartLabel69.LineSpacing = 0F; @@ -1602,7 +1607,7 @@ this.smartLabel70.BackPictureBox2 = null; this.smartLabel70.BorderColor = System.Drawing.Color.Black; this.smartLabel70.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel70.Font = new System.Drawing.Font("굴림", 35F, System.Drawing.FontStyle.Bold); + this.smartLabel70.Font = new System.Drawing.Font("Gulim", 35F, System.Drawing.FontStyle.Bold); this.smartLabel70.ForeColor = System.Drawing.Color.White; this.smartLabel70.InitVisible = true; this.smartLabel70.LineSpacing = 0F; @@ -1629,115 +1634,10 @@ this.pictureBoxGap5.Name = "pictureBoxGap5"; this.pictureBoxGap5.Size = new System.Drawing.Size(32, 26); // - // labelFeedBack1 - // - this.labelFeedBack1.BackPictureBox = this.pictureBox1; - this.labelFeedBack1.BackPictureBox1 = null; - this.labelFeedBack1.BackPictureBox2 = null; - this.labelFeedBack1.BorderColor = System.Drawing.Color.Black; - this.labelFeedBack1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelFeedBack1.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular); - this.labelFeedBack1.ForeColor = System.Drawing.Color.White; - this.labelFeedBack1.InitVisible = true; - this.labelFeedBack1.LineSpacing = 0F; - this.labelFeedBack1.Location = new System.Drawing.Point(744, 8); - this.labelFeedBack1.Name = "labelFeedBack1"; - this.labelFeedBack1.Size = new System.Drawing.Size(45, 25); - this.labelFeedBack1.TabIndex = 421; - this.labelFeedBack1.Text = "+A"; - this.labelFeedBack1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelFeedBack1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelFeedBack1.Wordwrap = false; - // - // labelFeedBack2 - // - this.labelFeedBack2.BackPictureBox = this.pictureBox1; - this.labelFeedBack2.BackPictureBox1 = null; - this.labelFeedBack2.BackPictureBox2 = null; - this.labelFeedBack2.BorderColor = System.Drawing.Color.Black; - this.labelFeedBack2.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelFeedBack2.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular); - this.labelFeedBack2.ForeColor = System.Drawing.Color.White; - this.labelFeedBack2.InitVisible = true; - this.labelFeedBack2.LineSpacing = 0F; - this.labelFeedBack2.Location = new System.Drawing.Point(744, 95); - this.labelFeedBack2.Name = "labelFeedBack2"; - this.labelFeedBack2.Size = new System.Drawing.Size(45, 25); - this.labelFeedBack2.TabIndex = 421; - this.labelFeedBack2.Text = "+A"; - this.labelFeedBack2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelFeedBack2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelFeedBack2.Wordwrap = false; - // - // labelFeedBack3 - // - this.labelFeedBack3.BackPictureBox = this.pictureBox1; - this.labelFeedBack3.BackPictureBox1 = null; - this.labelFeedBack3.BackPictureBox2 = null; - this.labelFeedBack3.BorderColor = System.Drawing.Color.Black; - this.labelFeedBack3.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelFeedBack3.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular); - this.labelFeedBack3.ForeColor = System.Drawing.Color.White; - this.labelFeedBack3.InitVisible = true; - this.labelFeedBack3.LineSpacing = 0F; - this.labelFeedBack3.Location = new System.Drawing.Point(744, 182); - this.labelFeedBack3.Name = "labelFeedBack3"; - this.labelFeedBack3.Size = new System.Drawing.Size(45, 25); - this.labelFeedBack3.TabIndex = 421; - this.labelFeedBack3.Text = "+A"; - this.labelFeedBack3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelFeedBack3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelFeedBack3.Wordwrap = false; - // - // labelFeedBack4 - // - this.labelFeedBack4.BackPictureBox = this.pictureBox1; - this.labelFeedBack4.BackPictureBox1 = null; - this.labelFeedBack4.BackPictureBox2 = null; - this.labelFeedBack4.BorderColor = System.Drawing.Color.Black; - this.labelFeedBack4.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelFeedBack4.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular); - this.labelFeedBack4.ForeColor = System.Drawing.Color.White; - this.labelFeedBack4.InitVisible = true; - this.labelFeedBack4.LineSpacing = 0F; - this.labelFeedBack4.Location = new System.Drawing.Point(744, 269); - this.labelFeedBack4.Name = "labelFeedBack4"; - this.labelFeedBack4.Size = new System.Drawing.Size(45, 25); - this.labelFeedBack4.TabIndex = 421; - this.labelFeedBack4.Text = "+A"; - this.labelFeedBack4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelFeedBack4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelFeedBack4.Wordwrap = false; - // - // labelFeedBack5 - // - this.labelFeedBack5.BackPictureBox = this.pictureBox1; - this.labelFeedBack5.BackPictureBox1 = null; - this.labelFeedBack5.BackPictureBox2 = null; - this.labelFeedBack5.BorderColor = System.Drawing.Color.Black; - this.labelFeedBack5.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelFeedBack5.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Regular); - this.labelFeedBack5.ForeColor = System.Drawing.Color.White; - this.labelFeedBack5.InitVisible = true; - this.labelFeedBack5.LineSpacing = 0F; - this.labelFeedBack5.Location = new System.Drawing.Point(744, 356); - this.labelFeedBack5.Name = "labelFeedBack5"; - this.labelFeedBack5.Size = new System.Drawing.Size(45, 25); - this.labelFeedBack5.TabIndex = 421; - this.labelFeedBack5.Text = "+A"; - this.labelFeedBack5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelFeedBack5.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelFeedBack5.Wordwrap = false; - // // ControlMainDisplay5 // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.Controls.Add(this.labelFeedBack5); - this.Controls.Add(this.labelFeedBack4); - this.Controls.Add(this.labelFeedBack3); - this.Controls.Add(this.labelFeedBack2); - this.Controls.Add(this.labelFeedBack1); this.Controls.Add(this.pictureBoxGap5); this.Controls.Add(this.pictureBoxGap4); this.Controls.Add(this.pictureBoxGap3); @@ -1908,10 +1808,5 @@ private SmartX.SmartLabel smartLabel70; private System.Windows.Forms.PictureBox pictureBoxZero5; private System.Windows.Forms.PictureBox pictureBoxGap5; - private SmartX.SmartLabel labelFeedBack1; - private SmartX.SmartLabel labelFeedBack2; - private SmartX.SmartLabel labelFeedBack3; - private SmartX.SmartLabel labelFeedBack4; - private SmartX.SmartLabel labelFeedBack5; } } diff --git a/INT89DB_26/Controls/ControlMainDisplay5.cs b/INT89DB_26/Controls/ControlMainDisplay5.cs index 40c8b06..8b38196 100644 --- a/INT89DB_26/Controls/ControlMainDisplay5.cs +++ b/INT89DB_26/Controls/ControlMainDisplay5.cs @@ -23,7 +23,6 @@ namespace INT89DB_26.Controls private Collection CollectionLabelWeightValue; private Collection CollectionLabelProductionSpeed; private Collection CollectionProgressBar; - private Collection CollectionLabelFeedBack; #endregion #region Constructor @@ -88,15 +87,6 @@ namespace INT89DB_26.Controls this.CollectionProgressBar.Add(this.progressBar3); this.CollectionProgressBar.Add(this.progressBar4); this.CollectionProgressBar.Add(this.progressBar5); - - // LabelFeedBack - this.CollectionLabelFeedBack = new Collection(); - this.CollectionLabelFeedBack.Clear(); - this.CollectionLabelFeedBack.Add(this.labelFeedBack1); - this.CollectionLabelFeedBack.Add(this.labelFeedBack2); - this.CollectionLabelFeedBack.Add(this.labelFeedBack3); - this.CollectionLabelFeedBack.Add(this.labelFeedBack4); - this.CollectionLabelFeedBack.Add(this.labelFeedBack5); } private void InitializeControl() { @@ -115,9 +105,6 @@ namespace INT89DB_26.Controls foreach (SmartProgressBar bar in this.CollectionProgressBar) bar.Value = bar.Minimum; - foreach (SmartLabel label in this.CollectionLabelFeedBack) - label.Visible = false; - this.SetCount(this.ParentForm.ParentForm.CollectionWeightData); } private void SetCount(Collection weightDatas) @@ -341,12 +328,6 @@ namespace INT89DB_26.Controls label.Text = "0"; } - if (status == DataStore.EquipmentStatus.Stop) - { - foreach (SmartLabel label in this.CollectionLabelFeedBack) - label.Visible = false; - } - this.RescaleProgressBar(); } public void UpdateCurrentProductDisplay(DataStore.EquipmentStatus status, Collection weightDatas) @@ -657,46 +638,6 @@ namespace INT89DB_26.Controls else this.pictureBoxGap5.Visible = false; } - public void UpdateFeedBack1(string temp) - { - if (this.labelFeedBack1.Visible == false) - this.labelFeedBack1.Visible = true; - - if (this.labelFeedBack1.Text != temp) - this.labelFeedBack1.Text = temp; - } - public void UpdateFeedBack2(string temp) - { - if (this.labelFeedBack2.Visible == false) - this.labelFeedBack2.Visible = true; - - if (this.labelFeedBack2.Text != temp) - this.labelFeedBack2.Text = temp; - } - public void UpdateFeedBack3(string temp) - { - if (this.labelFeedBack3.Visible == false) - this.labelFeedBack3.Visible = true; - - if (this.labelFeedBack3.Text != temp) - this.labelFeedBack3.Text = temp; - } - public void UpdateFeedBack4(string temp) - { - if (this.labelFeedBack4.Visible == false) - this.labelFeedBack4.Visible = true; - - if (this.labelFeedBack4.Text != temp) - this.labelFeedBack4.Text = temp; - } - public void UpdateFeedBack5(string temp) - { - if (this.labelFeedBack5.Visible == false) - this.labelFeedBack5.Visible = true; - - if (this.labelFeedBack5.Text != temp) - this.labelFeedBack5.Text = temp; - } #endregion #region Event Handler diff --git a/INT89DB_26/Controls/ControlMainDisplay5.resx b/INT89DB_26/Controls/ControlMainDisplay5.resx index ab2b9e8..03ed615 100644 --- a/INT89DB_26/Controls/ControlMainDisplay5.resx +++ b/INT89DB_26/Controls/ControlMainDisplay5.resx @@ -165,180 +165,162 @@ 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 @@ -388,32 +370,34 @@ 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 @@ -463,10 +447,10 @@ RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK - j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIZJREFUaEPt2qERwlAU - RcH0X0IEMpnBISJoAiaUAvEhLRz3xb454skt4E73x3oOdr/je1vm6fq292uonp/9wpGVyHpkPbIeWY+s - R9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHrDywZdrS7z - Hw7V4C6e+oSJAAAAAElFTkSuQmCC + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIRJREFUaEPt2rENwkAA + BEH3XwIBIUhkBA5owhaUYjt/apjsgz1NAVvALa/3c0y28zruj9syxlj3bSqf3/e8jspEZa4yV5mrzFXm + KnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZW76smlfq38O + 1eAujOMWhgAAAABJRU5ErkJggg== @@ -516,32 +500,34 @@ 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 @@ -591,10 +577,10 @@ RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK - j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIZJREFUaEPt2qERwlAU - RcH0X0IEMpnBISJoAiaUAvEhLRz3xb454skt4E73x3oOdr/je1vm6fq292uonp/9wpGVyHpkPbIeWY+s - R9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHrDywZdrS7z - Hw7V4C6e+oSJAAAAAElFTkSuQmCC + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIRJREFUaEPt2rENwkAA + BEH3XwIBIUhkBA5owhaUYjt/apjsgz1NAVvALa/3c0y28zruj9syxlj3bSqf3/e8jspEZa4yV5mrzFXm + KnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZW76smlfq38O + 1eAujOMWhgAAAABJRU5ErkJggg== @@ -644,32 +630,34 @@ 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 @@ -719,10 +707,10 @@ RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK - j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIZJREFUaEPt2qERwlAU - RcH0X0IEMpnBISJoAiaUAvEhLRz3xb454skt4E73x3oOdr/je1vm6fq292uonp/9wpGVyHpkPbIeWY+s - R9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHrDywZdrS7z - Hw7V4C6e+oSJAAAAAElFTkSuQmCC + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIRJREFUaEPt2rENwkAA + BEH3XwIBIUhkBA5owhaUYjt/apjsgz1NAVvALa/3c0y28zruj9syxlj3bSqf3/e8jspEZa4yV5mrzFXm + KnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZW76smlfq38O + 1eAujOMWhgAAAABJRU5ErkJggg== @@ -772,32 +760,34 @@ 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 @@ -847,10 +837,10 @@ RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK - j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIZJREFUaEPt2qERwlAU - RcH0X0IEMpnBISJoAiaUAvEhLRz3xb454skt4E73x3oOdr/je1vm6fq292uonp/9wpGVyHpkPbIeWY+s - R9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHrDywZdrS7z - Hw7V4C6e+oSJAAAAAElFTkSuQmCC + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIRJREFUaEPt2rENwkAA + BEH3XwIBIUhkBA5owhaUYjt/apjsgz1NAVvALa/3c0y28zruj9syxlj3bSqf3/e8jspEZa4yV5mrzFXm + KnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZW76smlfq38O + 1eAujOMWhgAAAABJRU5ErkJggg== @@ -900,32 +890,34 @@ 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 @@ -975,10 +967,10 @@ RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK - j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIZJREFUaEPt2qERwlAU - RcH0X0IEMpnBISJoAiaUAvEhLRz3xb454skt4E73x3oOdr/je1vm6fq292uonp/9wpGVyHpkPbIeWY+s - R9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHpkPbIeWY+sR9Yj65H1yHrDywZdrS7z - Hw7V4C6e+oSJAAAAAElFTkSuQmCC + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAIRJREFUaEPt2rENwkAA + BEH3XwIBIUhkBA5owhaUYjt/apjsgz1NAVvALa/3c0y28zruj9syxlj3bSqf3/e8jspEZa4yV5mrzFXm + KnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZa4yV5mrzFXmKnOVucpcZW76smlfq38O + 1eAujOMWhgAAAABJRU5ErkJggg== @@ -1028,18 +1020,18 @@ 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 + rkJggg== @@ -1089,13 +1081,13 @@ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAVdJREFUSEvllE2VAkEM - hFsCEpCABCQgAQlIQAISkIAEDghAAgcEcOfAfv0yW2QzYWB75rJv69Whp38qSXWmy//AbFY2m3I8dtzv - y2rVLU2AxaLcbuXxiDwcauCxmM9zdSMxxgI3JMeYeOt1dUmTfLYDOQmhLuCMyjqfu8kWcLEKQDCP7fbl - 0i8gf/AkwBf3qUvIha3y2vsjyCWqEayh8S3pY8uXYwxoTXC5JBJCCI8iTWUzMAHpaxlKHQ4HuF5jK1PB - ctnxx8Irpv2OStiWMn6nTO9AFdzvz51GCmLV+KzFdx70CQ5bdDpVe/1+xgn6l6wzwwF2u26GU4ztPpKf - A10S8e+XJNI7sCXYD4+OpfgGpGMSdFQA5xWgtkobfOMGFfPT2P5o+0et9sM3fPpjX2xfBEZhms+d8B95 - PQyvGDiBuqEfg9wpbkrQ1zyTdCTkXWu/2L+GUr4AYf7QcsMe95sAAAAASUVORK5CYII= + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAU5JREFUSEvlVLGxwyAM + ZQSPwAiMkBEYgRE8AiN4BEbICC4yACNQZAD1KZzTwQlZUZzY/s2/vFOBETyhJ1nG/ASGwYyjmedmKRnv + 5ZnjcM4AmGWRdr1i4LOwVmenGGeRUqdLCeOFgCrRZgjyyg5Yu2InDENPK2d+YyfGsQewduWK8a1rB0if + eZYunty3KqUkj5LWXB8CqRRj36wNnbPWx/W9ALhwDndKUSgIIrz32FSUloIQuntZOvvHAPe7bOWczeXS + bOV4Z2q/5yyPqSa/VVNrQBk8HvI8QJ8rPRfeeTVNWm9LdLuhvPy8/nO8FpnubAeYprbjHK5rPZSfo7Yp + n19EodZgI78Q2hM/YJoaRSnS5VwPgK1yDLxxBQsfgseHNh9qfFrw56vq7QBPohQUjb8d4Dutt8EZhf0B + e8VrDAA5Gc/CWhyTMaJ5f6Kw/w9PYf7QcpLXzokAAAAASUVORK5CYII= @@ -1145,13 +1137,13 @@ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAVdJREFUSEvllE2VAkEM - hFsCEpCABCQgAQlIQAISkIAEDghAAgcEcOfAfv0yW2QzYWB75rJv69Whp38qSXWmy//AbFY2m3I8dtzv - y2rVLU2AxaLcbuXxiDwcauCxmM9zdSMxxgI3JMeYeOt1dUmTfLYDOQmhLuCMyjqfu8kWcLEKQDCP7fbl - 0i8gf/AkwBf3qUvIha3y2vsjyCWqEayh8S3pY8uXYwxoTXC5JBJCCI8iTWUzMAHpaxlKHQ4HuF5jK1PB - ctnxx8Irpv2OStiWMn6nTO9AFdzvz51GCmLV+KzFdx70CQ5bdDpVe/1+xgn6l6wzwwF2u26GU4ztPpKf - A10S8e+XJNI7sCXYD4+OpfgGpGMSdFQA5xWgtkobfOMGFfPT2P5o+0et9sM3fPpjX2xfBEZhms+d8B95 - PQyvGDiBuqEfg9wpbkrQ1zyTdCTkXWu/2L+GUr4AYf7QcsMe95sAAAAASUVORK5CYII= + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAU5JREFUSEvlVLGxwyAM + ZQSPwAiMkBEYgRE8AiN4BEbICC4yACNQZAD1KZzTwQlZUZzY/s2/vFOBETyhJ1nG/ASGwYyjmedmKRnv + 5ZnjcM4AmGWRdr1i4LOwVmenGGeRUqdLCeOFgCrRZgjyyg5Yu2InDENPK2d+YyfGsQewduWK8a1rB0if + eZYunty3KqUkj5LWXB8CqRRj36wNnbPWx/W9ALhwDndKUSgIIrz32FSUloIQuntZOvvHAPe7bOWczeXS + bOV4Z2q/5yyPqSa/VVNrQBk8HvI8QJ8rPRfeeTVNWm9LdLuhvPy8/nO8FpnubAeYprbjHK5rPZSfo7Yp + n19EodZgI78Q2hM/YJoaRSnS5VwPgK1yDLxxBQsfgseHNh9qfFrw56vq7QBPohQUjb8d4Dutt8EZhf0B + e8VrDAA5Gc/CWhyTMaJ5f6Kw/w9PYf7QcpLXzokAAAAASUVORK5CYII= @@ -1201,18 +1193,18 @@ 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 + rkJggg== @@ -1262,13 +1254,13 @@ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAVdJREFUSEvllE2VAkEM - hFsCEpCABCQgAQlIQAISkIAEDghAAgcEcOfAfv0yW2QzYWB75rJv69Whp38qSXWmy//AbFY2m3I8dtzv - y2rVLU2AxaLcbuXxiDwcauCxmM9zdSMxxgI3JMeYeOt1dUmTfLYDOQmhLuCMyjqfu8kWcLEKQDCP7fbl - 0i8gf/AkwBf3qUvIha3y2vsjyCWqEayh8S3pY8uXYwxoTXC5JBJCCI8iTWUzMAHpaxlKHQ4HuF5jK1PB - ctnxx8Irpv2OStiWMn6nTO9AFdzvz51GCmLV+KzFdx70CQ5bdDpVe/1+xgn6l6wzwwF2u26GU4ztPpKf - A10S8e+XJNI7sCXYD4+OpfgGpGMSdFQA5xWgtkobfOMGFfPT2P5o+0et9sM3fPpjX2xfBEZhms+d8B95 - PQyvGDiBuqEfg9wpbkrQ1zyTdCTkXWu/2L+GUr4AYf7QcsMe95sAAAAASUVORK5CYII= + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAU5JREFUSEvlVLGxwyAM + ZQSPwAiMkBEYgRE8AiN4BEbICC4yACNQZAD1KZzTwQlZUZzY/s2/vFOBETyhJ1nG/ASGwYyjmedmKRnv + 5ZnjcM4AmGWRdr1i4LOwVmenGGeRUqdLCeOFgCrRZgjyyg5Yu2InDENPK2d+YyfGsQewduWK8a1rB0if + eZYunty3KqUkj5LWXB8CqRRj36wNnbPWx/W9ALhwDndKUSgIIrz32FSUloIQuntZOvvHAPe7bOWczeXS + bOV4Z2q/5yyPqSa/VVNrQBk8HvI8QJ8rPRfeeTVNWm9LdLuhvPy8/nO8FpnubAeYprbjHK5rPZSfo7Yp + n19EodZgI78Q2hM/YJoaRSnS5VwPgK1yDLxxBQsfgseHNh9qfFrw56vq7QBPohQUjb8d4Dutt8EZhf0B + e8VrDAA5Gc/CWhyTMaJ5f6Kw/w9PYf7QcpLXzokAAAAASUVORK5CYII= @@ -1318,18 +1310,18 @@ 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 + rkJggg== @@ -1379,13 +1371,13 @@ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAVdJREFUSEvllE2VAkEM - hFsCEpCABCQgAQlIQAISkIAEDghAAgcEcOfAfv0yW2QzYWB75rJv69Whp38qSXWmy//AbFY2m3I8dtzv - y2rVLU2AxaLcbuXxiDwcauCxmM9zdSMxxgI3JMeYeOt1dUmTfLYDOQmhLuCMyjqfu8kWcLEKQDCP7fbl - 0i8gf/AkwBf3qUvIha3y2vsjyCWqEayh8S3pY8uXYwxoTXC5JBJCCI8iTWUzMAHpaxlKHQ4HuF5jK1PB - ctnxx8Irpv2OStiWMn6nTO9AFdzvz51GCmLV+KzFdx70CQ5bdDpVe/1+xgn6l6wzwwF2u26GU4ztPpKf - A10S8e+XJNI7sCXYD4+OpfgGpGMSdFQA5xWgtkobfOMGFfPT2P5o+0et9sM3fPpjX2xfBEZhms+d8B95 - PQyvGDiBuqEfg9wpbkrQ1zyTdCTkXWu/2L+GUr4AYf7QcsMe95sAAAAASUVORK5CYII= + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAU5JREFUSEvlVLGxwyAM + ZQSPwAiMkBEYgRE8AiN4BEbICC4yACNQZAD1KZzTwQlZUZzY/s2/vFOBETyhJ1nG/ASGwYyjmedmKRnv + 5ZnjcM4AmGWRdr1i4LOwVmenGGeRUqdLCeOFgCrRZgjyyg5Yu2InDENPK2d+YyfGsQewduWK8a1rB0if + eZYunty3KqUkj5LWXB8CqRRj36wNnbPWx/W9ALhwDndKUSgIIrz32FSUloIQuntZOvvHAPe7bOWczeXS + bOV4Z2q/5yyPqSa/VVNrQBk8HvI8QJ8rPRfeeTVNWm9LdLuhvPy8/nO8FpnubAeYprbjHK5rPZSfo7Yp + n19EodZgI78Q2hM/YJoaRSnS5VwPgK1yDLxxBQsfgseHNh9qfFrw56vq7QBPohQUjb8d4Dutt8EZhf0B + e8VrDAA5Gc/CWhyTMaJ5f6Kw/w9PYf7QcpLXzokAAAAASUVORK5CYII= @@ -1435,18 +1427,18 @@ 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 + rkJggg== @@ -1496,13 +1488,13 @@ XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAVdJREFUSEvllE2VAkEM - hFsCEpCABCQgAQlIQAISkIAEDghAAgcEcOfAfv0yW2QzYWB75rJv69Whp38qSXWmy//AbFY2m3I8dtzv - y2rVLU2AxaLcbuXxiDwcauCxmM9zdSMxxgI3JMeYeOt1dUmTfLYDOQmhLuCMyjqfu8kWcLEKQDCP7fbl - 0i8gf/AkwBf3qUvIha3y2vsjyCWqEayh8S3pY8uXYwxoTXC5JBJCCI8iTWUzMAHpaxlKHQ4HuF5jK1PB - ctnxx8Irpv2OStiWMn6nTO9AFdzvz51GCmLV+KzFdx70CQ5bdDpVe/1+xgn6l6wzwwF2u26GU4ztPpKf - A10S8e+XJNI7sCXYD4+OpfgGpGMSdFQA5xWgtkobfOMGFfPT2P5o+0et9sM3fPpjX2xfBEZhms+d8B95 - PQyvGDiBuqEfg9wpbkrQ1zyTdCTkXWu/2L+GUr4AYf7QcsMe95sAAAAASUVORK5CYII= + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOwgAADsIBFShKgAAAAU5JREFUSEvlVLGxwyAM + ZQSPwAiMkBEYgRE8AiN4BEbICC4yACNQZAD1KZzTwQlZUZzY/s2/vFOBETyhJ1nG/ASGwYyjmedmKRnv + 5ZnjcM4AmGWRdr1i4LOwVmenGGeRUqdLCeOFgCrRZgjyyg5Yu2InDENPK2d+YyfGsQewduWK8a1rB0if + eZYunty3KqUkj5LWXB8CqRRj36wNnbPWx/W9ALhwDndKUSgIIrz32FSUloIQuntZOvvHAPe7bOWczeXS + bOV4Z2q/5yyPqSa/VVNrQBk8HvI8QJ8rPRfeeTVNWm9LdLuhvPy8/nO8FpnubAeYprbjHK5rPZSfo7Yp + n19EodZgI78Q2hM/YJoaRSnS5VwPgK1yDLxxBQsfgseHNh9qfFrw56vq7QBPohQUjb8d4Dutt8EZhf0B + e8VrDAA5Gc/CWhyTMaJ5f6Kw/w9PYf7QcpLXzokAAAAASUVORK5CYII= @@ -1552,18 +1544,18 @@ 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 + rkJggg== diff --git a/INT89DB_26/DataStore.cs b/INT89DB_26/DataStore.cs index c6aa199..1fff49f 100644 --- a/INT89DB_26/DataStore.cs +++ b/INT89DB_26/DataStore.cs @@ -360,6 +360,7 @@ namespace INT89DB_26 private int m_EthernetServerPort; private int m_EthernetMode; private int m_EthernetOperationMode; + private int m_ModbusTcpStartAddress; private string m_EthernetServerAddress; #endregion @@ -505,6 +506,11 @@ namespace INT89DB_26 get { return this.m_EthernetOperationMode; } set { this.m_EthernetOperationMode = value; } } + public int ModbusTcpStartAddress + { + get { return this.m_ModbusTcpStartAddress; } + set { this.m_ModbusTcpStartAddress = value; } + } public string EthernetServerAddress { get { return this.m_EthernetServerAddress; } @@ -544,6 +550,7 @@ namespace INT89DB_26 this.EthernetServerPort = 5002; this.EthernetMode = 0; this.EthernetOperationMode = 0; + this.ModbusTcpStartAddress = 1010; this.EthernetServerAddress = "0.0.0.0"; } #endregion @@ -592,7 +599,7 @@ namespace INT89DB_26 public int DummyInt1; public int DummyInt2; - public int DummyInt8; + public int ModbusTcpStartAddress; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] public string EthernetServerAddress; @@ -784,6 +791,8 @@ namespace INT89DB_26 private bool m_IsStart; private string m_WeightString; + + private ushort m_UpdateCount; #endregion #region Constructor @@ -943,7 +952,13 @@ namespace INT89DB_26 { get { return this.m_WeightString; } set { this.m_WeightString = value; } - } + } + + public ushort UpdateCount + { + get { return this.m_UpdateCount; } + set { this.m_UpdateCount = value; } + } #endregion #region Mehtod @@ -953,6 +968,7 @@ namespace INT89DB_26 this.PassCount = 0; this.OverCount = 0; this.ExNGCount = 0; + this.UpdateCount = 0; } public void Initialization() @@ -966,6 +982,7 @@ namespace INT89DB_26 this.JudgmentStatus = DataStore.JudgmentStatus.Empty; this.ProductionSpeed = 0; this.WeightString = "0"; + this.UpdateCount = 0; } private void ProductionSpeedCalculation() @@ -1621,110 +1638,6 @@ namespace INT89DB_26 #endregion } #endregion - #region FeedBackRangeItem - public class FeedBackRangeItem - { - #region Field - private int m_Level1Min; - private int m_Level1Max; - - private int m_Level2Min; - private int m_Level2Max; - - private int m_Level3Min; - private int m_Level3Max; - - private int m_Level4Min; - private int m_Level4Max; - #endregion - - #region Constructor - public FeedBackRangeItem() - { - this.Level1Max = 0; - this.Level1Min = 0; - this.Level2Max = 0; - this.Level2Min = 0; - this.Level3Max = 0; - this.Level3Min = 0; - this.Level4Max = 0; - this.Level4Min = 0; - } - #endregion - - #region Property - public int Level1Min - { - get { return this.m_Level1Min; } - private set { this.m_Level1Min = value; } - } - public int Level1Max - { - get { return this.m_Level1Max; } - private set { this.m_Level1Max = value; } - } - - public int Level2Min - { - get { return this.m_Level2Min; } - private set { this.m_Level2Min = value; } - } - public int Level2Max - { - get { return this.m_Level2Max; } - private set { this.m_Level2Max = value; } - } - - public int Level3Min - { - get { return this.m_Level3Min; } - private set { this.m_Level3Min = value; } - } - public int Level3Max - { - get { return this.m_Level3Max; } - private set { this.m_Level3Max = value; } - } - - public int Level4Min - { - get { return this.m_Level4Min; } - private set { this.m_Level4Min = value; } - } - public int Level4Max - { - get { return this.m_Level4Max; } - private set { this.m_Level4Max = value; } - } - #endregion - - #region Method - public void SetRange(int overRange, int passRange, int underRange) - { - int gap = 0, range = 0; - - if (overRange <= underRange) - return; - - gap = passRange - underRange; - range = gap / 2; - - this.Level1Min = underRange; - this.Level1Max = this.Level1Min + range; - this.Level2Min = this.Level1Max++; - this.Level2Max = passRange; - - gap = overRange - passRange; - range = gap / 2; - - this.Level3Min = this.Level2Max++; - this.Level3Max = this.Level3Min + range; - this.Level4Min = this.Level3Max++; - this.Level4Max = overRange; - } - #endregion - } - #endregion #region AlarmList public class AlarmList { diff --git a/INT89DB_26/Forms/FormCommunication.cs b/INT89DB_26/Forms/FormCommunication.cs index 84be30e..3db6e38 100644 --- a/INT89DB_26/Forms/FormCommunication.cs +++ b/INT89DB_26/Forms/FormCommunication.cs @@ -106,8 +106,9 @@ namespace INT89DB_26.Forms this.comboBoxMode.Items.Clear(); this.comboBoxMode.SelectedIndexChanged -= new EventHandler(this.comboBoxMode_SelectedIndexChanged); this.comboBoxMode.Items.Add("-"); - this.comboBoxMode.Items.Add("OPT1"); - this.comboBoxMode.Items.Add("OPT2"); + this.comboBoxMode.Items.Add("STD1"); + this.comboBoxMode.Items.Add("STD2"); + this.comboBoxMode.Items.Add("Modbus"); this.comboBoxMode.SelectedIndex = 0; this.comboBoxMode.SelectedIndexChanged += new EventHandler(this.comboBoxMode_SelectedIndexChanged); @@ -123,8 +124,8 @@ namespace INT89DB_26.Forms this.comboBoxSerial3Mode.Items.Clear(); this.comboBoxSerial3Mode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerial3Mode_SelectedIndexChanged); this.comboBoxSerial3Mode.Items.Add("-"); - this.comboBoxSerial3Mode.Items.Add("OPT1"); - this.comboBoxSerial3Mode.Items.Add("OPT2"); + this.comboBoxSerial3Mode.Items.Add("STD1"); + this.comboBoxSerial3Mode.Items.Add("STD2"); this.comboBoxSerial3Mode.SelectedIndex = 0; this.comboBoxSerial3Mode.SelectedIndexChanged += new EventHandler(this.comboBoxSerial3Mode_SelectedIndexChanged); } @@ -267,16 +268,8 @@ namespace INT89DB_26.Forms } else { - if (this.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) - { - this.labelProtocolDescriptionCOM3_1.Text = "COM3协议说明"; - this.labelProtocolDescriptionCOM3_2.Text = "COM3协议说明"; - } - else - { - this.labelProtocolDescriptionCOM3_1.Text = "COM3 Protocol Description"; - this.labelProtocolDescriptionCOM3_2.Text = "COM3 Protocol Description"; - } + this.labelProtocolDescriptionCOM3_1.Text = ""; + this.labelProtocolDescriptionCOM3_2.Text = ""; } } private void UpdateProtocolDescriptionEthernet() @@ -294,16 +287,8 @@ namespace INT89DB_26.Forms } else { - if (this.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) - { - this.labelProtocolDescriptionEthernet_1.Text = "Ethernet协议说明"; - this.labelProtocolDescriptionEthernet_2.Text = "Ethernet协议说明"; - } - else - { - this.labelProtocolDescriptionEthernet_1.Text = "Ethernet Protocol Description"; - this.labelProtocolDescriptionEthernet_2.Text = "Ethernet Protocol Description"; - } + this.labelProtocolDescriptionEthernet_1.Text = ""; + this.labelProtocolDescriptionEthernet_2.Text = ""; } } @@ -394,22 +379,6 @@ namespace INT89DB_26.Forms this.labelLocalGateway4.Text = sValue[3]; } } - private void UpdateLocalIPConfigurationDisplay() - { - this.radioButtonLocalIpDHCP.Click -= new EventHandler(this.radioButtonLocalIpConfig_Click); - // Local IP DHCP - if (this.ParentForm.smartConfigs.IPSettings.DHCPEnable == 1) - { - this.radioButtonLocalIpDHCP.Checked = true; - this.LocalIPEnable(false); - } - else - { - this.radioButtonLocalIpStatic.Checked = true; - this.LocalIPEnable(true); - } - this.radioButtonLocalIpDHCP.Click += new EventHandler(this.radioButtonLocalIpConfig_Click); - } public void DisplayLabelLocalPort(bool bValue) { if (bValue == false) @@ -434,15 +403,16 @@ namespace INT89DB_26.Forms this.ParentForm.SystemConfig.CurrentForm = DataStore.FormStore.FormCommunication; #region TCP - // Local IP DHCP - this.UpdateLocalIPConfigurationDisplay(); // Local IP this.UpdateLocalIPAddressDisplay(); this.comboBoxMode.SelectedIndexChanged -= new EventHandler(this.comboBoxMode_SelectedIndexChanged); this.comboBoxOperationMode.SelectedIndexChanged -= new EventHandler(this.comboBoxOperationMode_SelectedIndexChanged); - this.comboBoxMode.SelectedIndex = this.ParentForm.SystemConfig.EthernetMode; + if (this.ParentForm.SystemConfig.EthernetMode == 99) + this.comboBoxMode.SelectedText = "Modbus"; + else + this.comboBoxMode.SelectedIndex = this.ParentForm.SystemConfig.EthernetMode; this.comboBoxOperationMode.SelectedIndex = this.ParentForm.SystemConfig.EthernetOperationMode; this.comboBoxMode.SelectedIndexChanged += new EventHandler(this.comboBoxMode_SelectedIndexChanged); @@ -520,9 +490,9 @@ namespace INT89DB_26.Forms string data = ""; if (this.ParentForm.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_OPT1) - data = this.ParentForm.Protocol_OPT1(1, this.ParentForm.CollectionWeightData[0]); + data = this.ParentForm.Protocol_STD1(1, this.ParentForm.CollectionWeightData[0]); else if (this.ParentForm.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_OPT2) - data = this.ParentForm.Protocol_OPT2(1, this.ParentForm.CollectionWeightData[0]); + data = this.ParentForm.Protocol_STD2(1, this.ParentForm.CollectionWeightData[0]); switch (this.ParentForm.SystemConfig.EthernetOperationMode) { @@ -609,64 +579,15 @@ namespace INT89DB_26.Forms } private void comboBoxMode_SelectedIndexChanged(object sender, EventArgs e) { - this.ParentForm.SystemConfig.EthernetMode = this.comboBoxMode.SelectedIndex; + if (this.comboBoxMode.SelectedText == "Modbus") + this.ParentForm.SystemConfig.EquipmentMode = 99; + else + this.ParentForm.SystemConfig.EthernetMode = this.comboBoxMode.SelectedIndex; + this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); - this.UpdateProtocolDescriptionEthernet(); } - private void radioButtonLocalIpConfig_Click(object sender, EventArgs e) - { - DialogFormYesNo myDlg; - - if (this.radioButtonLocalIpStatic.Checked == true) - myDlg = new DialogFormYesNo(this.ParentForm.SystemConfig.Language, 15); // 로컬IP주소 수동으로 설정하시겠습니까? - else - myDlg = new DialogFormYesNo(this.ParentForm.SystemConfig.Language, 16); // 로컬IP주소 자동으로 설정하시겠습니까? - - if (myDlg.ShowDialog() == DialogResult.Yes) - { - if (this.radioButtonLocalIpDHCP.Checked == true) - { - this.ParentForm.smartConfigs.IPSettings.DHCPEnable = 1; - - this.ParentForm.smartConfigs.IPSettings.Save(); - this.ParentForm.smartConfigs.IPSettings.SetApply(); - - this.LocalIPEnable(false); - this.UpdateLocalIPAddressDisplay(); - } - else - { - this.ParentForm.smartConfigs.IPSettings.DHCPEnable = 0; - - this.ParentForm.smartConfigs.IPSettings.Save(); - this.ParentForm.smartConfigs.IPSettings.SetApply(); - - this.LocalIPEnable(true); - - try - { - this.UpdateLocalIPAddressDisplay(); - } - catch - { - this.ParentForm.smartConfigs.IPSettings.DeviceIP = "192.168.3.10"; - this.ParentForm.smartConfigs.IPSettings.SubNetMask = "255.255.255.0"; - this.ParentForm.smartConfigs.IPSettings.GateWay = "192.168.3.1"; - - this.UpdateLocalIPAddressDisplay(); - } - } - - DialogFormMessage msg = new DialogFormMessage(18, this.ParentForm.SystemConfig.Language, ""); - msg.ShowDialog(); - } - else - { - this.DisplayRefresh(); - } - } private void labelLocalIP1_Click(object sender, EventArgs e) { string temp = ""; @@ -1094,9 +1015,9 @@ namespace INT89DB_26.Forms private void buttonSerialSend_Click(object sender, EventArgs e) { if (this.ParentForm.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_OPT1) - this.ParentForm.SerialCom3Write(this.ParentForm.Protocol_OPT1(1, this.ParentForm.CollectionWeightData[0])); + this.ParentForm.SerialCom3Write(this.ParentForm.Protocol_STD1(1, this.ParentForm.CollectionWeightData[0])); else if (this.ParentForm.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_OPT2) - this.ParentForm.SerialCom3Write(this.ParentForm.Protocol_OPT2(1, this.ParentForm.CollectionWeightData[0])); + this.ParentForm.SerialCom3Write(this.ParentForm.Protocol_STD2(1, this.ParentForm.CollectionWeightData[0])); } private void comboBoxSerial3BaudRate_SelectedIndexChanged(object sender, EventArgs e) diff --git a/INT89DB_26/Forms/FormCommunication.designer.cs b/INT89DB_26/Forms/FormCommunication.designer.cs index d3ac5ce..f7ab948 100644 --- a/INT89DB_26/Forms/FormCommunication.designer.cs +++ b/INT89DB_26/Forms/FormCommunication.designer.cs @@ -44,14 +44,13 @@ this.smartLabel4 = new SmartX.SmartLabel(); this.labelStaticBaudrate = new SmartX.SmartLabel(); this.groupBoxEthernet = new SmartX.SmartGroupBox(); + this.buttonEthernetSend = new System.Windows.Forms.Button(); + this.buttonEthernetStop = new System.Windows.Forms.Button(); + this.buttonEthernetStart = new System.Windows.Forms.Button(); this.labelProtocolDescriptionEthernet_2 = new SmartX.SmartLabel(); this.labelProtocolDescriptionEthernet_1 = new SmartX.SmartLabel(); this.buttonTcpSave1 = new System.Windows.Forms.Button(); this.labelHelp = new SmartX.SmartLabel(); - this.panel2 = new System.Windows.Forms.Panel(); - this.radioButtonLocalIpStatic = new SmartX.SmartRadioButton(); - this.radioButtonLocalIpDHCP = new SmartX.SmartRadioButton(); - this.labelTitleIPConfiguration = new SmartX.SmartLabel(); this.labelLocalSubnetMask4 = new SmartX.SmartLabel(); this.labelLocalSubnetMask3 = new SmartX.SmartLabel(); this.labelLocalSubnetMask2 = new SmartX.SmartLabel(); @@ -88,13 +87,11 @@ this.labelHostIP4 = new SmartX.SmartLabel(); this.labelTitleClientServerPort = new SmartX.SmartLabel(); this.timerServer = new System.Windows.Forms.Timer(); - this.buttonEthernetStart = new System.Windows.Forms.Button(); - this.buttonEthernetStop = new System.Windows.Forms.Button(); - this.buttonEthernetSend = new System.Windows.Forms.Button(); + this.labelStartAddress = new SmartX.SmartLabel(); + this.labelTitleStartAddress = new SmartX.SmartLabel(); ((System.ComponentModel.ISupportInitialize)(this.smartForm1)).BeginInit(); this.groupBoxSerial.SuspendLayout(); this.groupBoxEthernet.SuspendLayout(); - this.panel2.SuspendLayout(); this.groupBoxServer.SuspendLayout(); this.groupBoxClient.SuspendLayout(); this.SuspendLayout(); @@ -339,6 +336,8 @@ // this.groupBoxEthernet.BackPictureBox = this.smartForm1; this.groupBoxEthernet.BackPictureBox1 = null; + this.groupBoxEthernet.Controls.Add(this.labelStartAddress); + this.groupBoxEthernet.Controls.Add(this.labelTitleStartAddress); this.groupBoxEthernet.Controls.Add(this.buttonEthernetSend); this.groupBoxEthernet.Controls.Add(this.buttonEthernetStop); this.groupBoxEthernet.Controls.Add(this.buttonEthernetStart); @@ -346,8 +345,6 @@ this.groupBoxEthernet.Controls.Add(this.labelProtocolDescriptionEthernet_1); this.groupBoxEthernet.Controls.Add(this.buttonTcpSave1); this.groupBoxEthernet.Controls.Add(this.labelHelp); - this.groupBoxEthernet.Controls.Add(this.panel2); - this.groupBoxEthernet.Controls.Add(this.labelTitleIPConfiguration); this.groupBoxEthernet.Controls.Add(this.labelLocalSubnetMask4); this.groupBoxEthernet.Controls.Add(this.labelLocalSubnetMask3); this.groupBoxEthernet.Controls.Add(this.labelLocalSubnetMask2); @@ -382,6 +379,39 @@ this.groupBoxEthernet.Text = "TCP_Local"; this.groupBoxEthernet.TextColor = System.Drawing.Color.Black; // + // buttonEthernetSend + // + this.buttonEthernetSend.Enabled = false; + this.buttonEthernetSend.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); + this.buttonEthernetSend.Location = new System.Drawing.Point(260, 400); + this.buttonEthernetSend.Name = "buttonEthernetSend"; + this.buttonEthernetSend.Size = new System.Drawing.Size(100, 30); + this.buttonEthernetSend.TabIndex = 264; + this.buttonEthernetSend.Text = "Send"; + this.buttonEthernetSend.Click += new System.EventHandler(this.buttonEthernetSend_Click); + // + // buttonEthernetStop + // + this.buttonEthernetStop.Enabled = false; + this.buttonEthernetStop.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); + this.buttonEthernetStop.Location = new System.Drawing.Point(154, 400); + this.buttonEthernetStop.Name = "buttonEthernetStop"; + this.buttonEthernetStop.Size = new System.Drawing.Size(100, 30); + this.buttonEthernetStop.TabIndex = 263; + this.buttonEthernetStop.Text = "STOP"; + this.buttonEthernetStop.Click += new System.EventHandler(this.buttonEthernetStop_Click); + // + // buttonEthernetStart + // + this.buttonEthernetStart.Enabled = false; + this.buttonEthernetStart.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); + this.buttonEthernetStart.Location = new System.Drawing.Point(48, 400); + this.buttonEthernetStart.Name = "buttonEthernetStart"; + this.buttonEthernetStart.Size = new System.Drawing.Size(100, 30); + this.buttonEthernetStart.TabIndex = 25; + this.buttonEthernetStart.Text = "START"; + this.buttonEthernetStart.Click += new System.EventHandler(this.buttonEthernetStart_Click); + // // labelProtocolDescriptionEthernet_2 // this.labelProtocolDescriptionEthernet_2.BackPictureBox = this.smartForm1; @@ -423,7 +453,7 @@ // buttonTcpSave1 // this.buttonTcpSave1.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); - this.buttonTcpSave1.Location = new System.Drawing.Point(285, 313); + this.buttonTcpSave1.Location = new System.Drawing.Point(285, 291); this.buttonTcpSave1.Name = "buttonTcpSave1"; this.buttonTcpSave1.Size = new System.Drawing.Size(106, 28); this.buttonTcpSave1.TabIndex = 254; @@ -441,7 +471,7 @@ this.labelHelp.ForeColor = System.Drawing.Color.Red; this.labelHelp.InitVisible = true; this.labelHelp.LineSpacing = 0F; - this.labelHelp.Location = new System.Drawing.Point(28, 347); + this.labelHelp.Location = new System.Drawing.Point(28, 325); this.labelHelp.Name = "labelHelp"; this.labelHelp.Size = new System.Drawing.Size(363, 60); this.labelHelp.TabIndex = 253; @@ -450,89 +480,6 @@ this.labelHelp.TextVAlign = SmartX.SmartLabel.TextVerAlign.Top; this.labelHelp.Wordwrap = true; // - // panel2 - // - this.panel2.BackColor = System.Drawing.Color.Black; - this.panel2.Controls.Add(this.radioButtonLocalIpStatic); - this.panel2.Controls.Add(this.radioButtonLocalIpDHCP); - this.panel2.Location = new System.Drawing.Point(173, 177); - this.panel2.Name = "panel2"; - this.panel2.Size = new System.Drawing.Size(218, 28); - // - // radioButtonLocalIpStatic - // - this.radioButtonLocalIpStatic.BackColor = System.Drawing.Color.Black; - this.radioButtonLocalIpStatic.BackPictureBox = null; - this.radioButtonLocalIpStatic.BackPictureBox1 = null; - this.radioButtonLocalIpStatic.BackPictureBox2 = null; - this.radioButtonLocalIpStatic.Checked = false; - this.radioButtonLocalIpStatic.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold); - this.radioButtonLocalIpStatic.ForeColor = System.Drawing.Color.White; - this.radioButtonLocalIpStatic.GroupID = 0; - this.radioButtonLocalIpStatic.ImageCheckRadioButton = null; - this.radioButtonLocalIpStatic.ImageUnCheckRadioButton = null; - this.radioButtonLocalIpStatic.InitVisible = true; - this.radioButtonLocalIpStatic.Location = new System.Drawing.Point(112, 0); - this.radioButtonLocalIpStatic.Name = "radioButtonLocalIpStatic"; - this.radioButtonLocalIpStatic.OutputOnly = false; - this.radioButtonLocalIpStatic.RadioBackColor = System.Drawing.Color.White; - this.radioButtonLocalIpStatic.RadioCheckColor = System.Drawing.Color.Green; - this.radioButtonLocalIpStatic.RadioForeColor = System.Drawing.Color.Black; - this.radioButtonLocalIpStatic.RadioSymbolSize = 14; - this.radioButtonLocalIpStatic.Shadow = false; - this.radioButtonLocalIpStatic.Size = new System.Drawing.Size(100, 25); - this.radioButtonLocalIpStatic.TabIndex = 0; - this.radioButtonLocalIpStatic.Text = "Static"; - this.radioButtonLocalIpStatic.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; - this.radioButtonLocalIpStatic.Click += new System.EventHandler(this.radioButtonLocalIpConfig_Click); - // - // radioButtonLocalIpDHCP - // - this.radioButtonLocalIpDHCP.BackColor = System.Drawing.Color.Black; - this.radioButtonLocalIpDHCP.BackPictureBox = null; - this.radioButtonLocalIpDHCP.BackPictureBox1 = null; - this.radioButtonLocalIpDHCP.BackPictureBox2 = null; - this.radioButtonLocalIpDHCP.Checked = false; - this.radioButtonLocalIpDHCP.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold); - this.radioButtonLocalIpDHCP.ForeColor = System.Drawing.Color.White; - this.radioButtonLocalIpDHCP.GroupID = 0; - this.radioButtonLocalIpDHCP.ImageCheckRadioButton = null; - this.radioButtonLocalIpDHCP.ImageUnCheckRadioButton = null; - this.radioButtonLocalIpDHCP.InitVisible = true; - this.radioButtonLocalIpDHCP.Location = new System.Drawing.Point(3, 0); - this.radioButtonLocalIpDHCP.Name = "radioButtonLocalIpDHCP"; - this.radioButtonLocalIpDHCP.OutputOnly = false; - this.radioButtonLocalIpDHCP.RadioBackColor = System.Drawing.Color.White; - this.radioButtonLocalIpDHCP.RadioCheckColor = System.Drawing.Color.Green; - this.radioButtonLocalIpDHCP.RadioForeColor = System.Drawing.Color.Black; - this.radioButtonLocalIpDHCP.RadioSymbolSize = 14; - this.radioButtonLocalIpDHCP.Shadow = false; - this.radioButtonLocalIpDHCP.Size = new System.Drawing.Size(100, 28); - this.radioButtonLocalIpDHCP.TabIndex = 0; - this.radioButtonLocalIpDHCP.Text = "DHCP"; - this.radioButtonLocalIpDHCP.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; - this.radioButtonLocalIpDHCP.Click += new System.EventHandler(this.radioButtonLocalIpConfig_Click); - // - // labelTitleIPConfiguration - // - this.labelTitleIPConfiguration.BackPictureBox = this.smartForm1; - this.labelTitleIPConfiguration.BackPictureBox1 = null; - this.labelTitleIPConfiguration.BackPictureBox2 = null; - this.labelTitleIPConfiguration.BorderColor = System.Drawing.Color.Black; - this.labelTitleIPConfiguration.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleIPConfiguration.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); - this.labelTitleIPConfiguration.ForeColor = System.Drawing.Color.Black; - this.labelTitleIPConfiguration.InitVisible = true; - this.labelTitleIPConfiguration.LineSpacing = 0F; - this.labelTitleIPConfiguration.Location = new System.Drawing.Point(27, 177); - this.labelTitleIPConfiguration.Name = "labelTitleIPConfiguration"; - this.labelTitleIPConfiguration.Size = new System.Drawing.Size(140, 28); - this.labelTitleIPConfiguration.TabIndex = 252; - this.labelTitleIPConfiguration.Text = "IP Configuration"; - this.labelTitleIPConfiguration.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelTitleIPConfiguration.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleIPConfiguration.Wordwrap = false; - // // labelLocalSubnetMask4 // this.labelLocalSubnetMask4.BackColor = System.Drawing.SystemColors.Window; @@ -544,7 +491,7 @@ this.labelLocalSubnetMask4.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalSubnetMask4.InitVisible = true; this.labelLocalSubnetMask4.LineSpacing = 0F; - this.labelLocalSubnetMask4.Location = new System.Drawing.Point(341, 245); + this.labelLocalSubnetMask4.Location = new System.Drawing.Point(341, 223); this.labelLocalSubnetMask4.Name = "labelLocalSubnetMask4"; this.labelLocalSubnetMask4.Size = new System.Drawing.Size(50, 28); this.labelLocalSubnetMask4.TabIndex = 251; @@ -565,7 +512,7 @@ this.labelLocalSubnetMask3.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalSubnetMask3.InitVisible = true; this.labelLocalSubnetMask3.LineSpacing = 0F; - this.labelLocalSubnetMask3.Location = new System.Drawing.Point(285, 245); + this.labelLocalSubnetMask3.Location = new System.Drawing.Point(285, 223); this.labelLocalSubnetMask3.Name = "labelLocalSubnetMask3"; this.labelLocalSubnetMask3.Size = new System.Drawing.Size(50, 28); this.labelLocalSubnetMask3.TabIndex = 250; @@ -586,7 +533,7 @@ this.labelLocalSubnetMask2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalSubnetMask2.InitVisible = true; this.labelLocalSubnetMask2.LineSpacing = 0F; - this.labelLocalSubnetMask2.Location = new System.Drawing.Point(229, 245); + this.labelLocalSubnetMask2.Location = new System.Drawing.Point(229, 223); this.labelLocalSubnetMask2.Name = "labelLocalSubnetMask2"; this.labelLocalSubnetMask2.Size = new System.Drawing.Size(50, 28); this.labelLocalSubnetMask2.TabIndex = 249; @@ -607,7 +554,7 @@ this.labelLocalSubnetMask1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalSubnetMask1.InitVisible = true; this.labelLocalSubnetMask1.LineSpacing = 0F; - this.labelLocalSubnetMask1.Location = new System.Drawing.Point(173, 245); + this.labelLocalSubnetMask1.Location = new System.Drawing.Point(173, 223); this.labelLocalSubnetMask1.Name = "labelLocalSubnetMask1"; this.labelLocalSubnetMask1.Size = new System.Drawing.Size(50, 28); this.labelLocalSubnetMask1.TabIndex = 248; @@ -628,7 +575,7 @@ this.labelTitleSubnetMask.ForeColor = System.Drawing.Color.Black; this.labelTitleSubnetMask.InitVisible = true; this.labelTitleSubnetMask.LineSpacing = 0F; - this.labelTitleSubnetMask.Location = new System.Drawing.Point(27, 245); + this.labelTitleSubnetMask.Location = new System.Drawing.Point(27, 223); this.labelTitleSubnetMask.Name = "labelTitleSubnetMask"; this.labelTitleSubnetMask.Size = new System.Drawing.Size(140, 28); this.labelTitleSubnetMask.TabIndex = 247; @@ -648,7 +595,7 @@ this.labelLocalGateway4.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalGateway4.InitVisible = true; this.labelLocalGateway4.LineSpacing = 0F; - this.labelLocalGateway4.Location = new System.Drawing.Point(341, 279); + this.labelLocalGateway4.Location = new System.Drawing.Point(341, 257); this.labelLocalGateway4.Name = "labelLocalGateway4"; this.labelLocalGateway4.Size = new System.Drawing.Size(50, 28); this.labelLocalGateway4.TabIndex = 246; @@ -669,7 +616,7 @@ this.labelLocalGateway3.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalGateway3.InitVisible = true; this.labelLocalGateway3.LineSpacing = 0F; - this.labelLocalGateway3.Location = new System.Drawing.Point(285, 279); + this.labelLocalGateway3.Location = new System.Drawing.Point(285, 257); this.labelLocalGateway3.Name = "labelLocalGateway3"; this.labelLocalGateway3.Size = new System.Drawing.Size(50, 28); this.labelLocalGateway3.TabIndex = 245; @@ -690,7 +637,7 @@ this.labelLocalGateway2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalGateway2.InitVisible = true; this.labelLocalGateway2.LineSpacing = 0F; - this.labelLocalGateway2.Location = new System.Drawing.Point(229, 279); + this.labelLocalGateway2.Location = new System.Drawing.Point(229, 257); this.labelLocalGateway2.Name = "labelLocalGateway2"; this.labelLocalGateway2.Size = new System.Drawing.Size(50, 28); this.labelLocalGateway2.TabIndex = 244; @@ -711,7 +658,7 @@ this.labelLocalGateway1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalGateway1.InitVisible = true; this.labelLocalGateway1.LineSpacing = 0F; - this.labelLocalGateway1.Location = new System.Drawing.Point(173, 279); + this.labelLocalGateway1.Location = new System.Drawing.Point(173, 257); this.labelLocalGateway1.Name = "labelLocalGateway1"; this.labelLocalGateway1.Size = new System.Drawing.Size(50, 28); this.labelLocalGateway1.TabIndex = 243; @@ -732,7 +679,7 @@ this.labelTitleGateway.ForeColor = System.Drawing.Color.Black; this.labelTitleGateway.InitVisible = true; this.labelTitleGateway.LineSpacing = 0F; - this.labelTitleGateway.Location = new System.Drawing.Point(27, 279); + this.labelTitleGateway.Location = new System.Drawing.Point(27, 257); this.labelTitleGateway.Name = "labelTitleGateway"; this.labelTitleGateway.Size = new System.Drawing.Size(140, 28); this.labelTitleGateway.TabIndex = 242; @@ -752,7 +699,7 @@ this.labelLocalIP4.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalIP4.InitVisible = true; this.labelLocalIP4.LineSpacing = 0F; - this.labelLocalIP4.Location = new System.Drawing.Point(341, 211); + this.labelLocalIP4.Location = new System.Drawing.Point(341, 189); this.labelLocalIP4.Name = "labelLocalIP4"; this.labelLocalIP4.Size = new System.Drawing.Size(50, 28); this.labelLocalIP4.TabIndex = 241; @@ -773,7 +720,7 @@ this.labelLocalIP3.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalIP3.InitVisible = true; this.labelLocalIP3.LineSpacing = 0F; - this.labelLocalIP3.Location = new System.Drawing.Point(285, 211); + this.labelLocalIP3.Location = new System.Drawing.Point(285, 189); this.labelLocalIP3.Name = "labelLocalIP3"; this.labelLocalIP3.Size = new System.Drawing.Size(50, 28); this.labelLocalIP3.TabIndex = 240; @@ -794,7 +741,7 @@ this.labelLocalIP2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalIP2.InitVisible = true; this.labelLocalIP2.LineSpacing = 0F; - this.labelLocalIP2.Location = new System.Drawing.Point(229, 211); + this.labelLocalIP2.Location = new System.Drawing.Point(229, 189); this.labelLocalIP2.Name = "labelLocalIP2"; this.labelLocalIP2.Size = new System.Drawing.Size(50, 28); this.labelLocalIP2.TabIndex = 239; @@ -815,7 +762,7 @@ this.labelLocalIP1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelLocalIP1.InitVisible = true; this.labelLocalIP1.LineSpacing = 0F; - this.labelLocalIP1.Location = new System.Drawing.Point(173, 211); + this.labelLocalIP1.Location = new System.Drawing.Point(173, 189); this.labelLocalIP1.Name = "labelLocalIP1"; this.labelLocalIP1.Size = new System.Drawing.Size(50, 28); this.labelLocalIP1.TabIndex = 238; @@ -836,7 +783,7 @@ this.labelTitleIPAddress.ForeColor = System.Drawing.Color.Black; this.labelTitleIPAddress.InitVisible = true; this.labelTitleIPAddress.LineSpacing = 0F; - this.labelTitleIPAddress.Location = new System.Drawing.Point(27, 211); + this.labelTitleIPAddress.Location = new System.Drawing.Point(27, 189); this.labelTitleIPAddress.Name = "labelTitleIPAddress"; this.labelTitleIPAddress.Size = new System.Drawing.Size(140, 28); this.labelTitleIPAddress.TabIndex = 237; @@ -1238,38 +1185,45 @@ this.timerServer.Interval = 1000; this.timerServer.Tick += new System.EventHandler(this.timerServer_Tick); // - // buttonEthernetStart + // labelStartAddress // - this.buttonEthernetStart.Enabled = false; - this.buttonEthernetStart.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); - this.buttonEthernetStart.Location = new System.Drawing.Point(48, 400); - this.buttonEthernetStart.Name = "buttonEthernetStart"; - this.buttonEthernetStart.Size = new System.Drawing.Size(100, 30); - this.buttonEthernetStart.TabIndex = 25; - this.buttonEthernetStart.Text = "START"; - this.buttonEthernetStart.Click += new System.EventHandler(this.buttonEthernetStart_Click); + this.labelStartAddress.BackColor = System.Drawing.SystemColors.Window; + this.labelStartAddress.BackPictureBox = null; + this.labelStartAddress.BackPictureBox1 = null; + this.labelStartAddress.BackPictureBox2 = null; + this.labelStartAddress.BorderColor = System.Drawing.Color.Black; + this.labelStartAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelStartAddress.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelStartAddress.InitVisible = true; + this.labelStartAddress.LineSpacing = 0F; + this.labelStartAddress.Location = new System.Drawing.Point(173, 291); + this.labelStartAddress.Name = "labelStartAddress"; + this.labelStartAddress.Size = new System.Drawing.Size(106, 28); + this.labelStartAddress.TabIndex = 266; + this.labelStartAddress.Text = "100"; + this.labelStartAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelStartAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelStartAddress.Wordwrap = false; // - // buttonEthernetStop + // labelTitleStartAddress // - this.buttonEthernetStop.Enabled = false; - this.buttonEthernetStop.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); - this.buttonEthernetStop.Location = new System.Drawing.Point(154, 400); - this.buttonEthernetStop.Name = "buttonEthernetStop"; - this.buttonEthernetStop.Size = new System.Drawing.Size(100, 30); - this.buttonEthernetStop.TabIndex = 263; - this.buttonEthernetStop.Text = "STOP"; - this.buttonEthernetStop.Click += new System.EventHandler(this.buttonEthernetStop_Click); - // - // buttonEthernetSend - // - this.buttonEthernetSend.Enabled = false; - this.buttonEthernetSend.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); - this.buttonEthernetSend.Location = new System.Drawing.Point(260, 400); - this.buttonEthernetSend.Name = "buttonEthernetSend"; - this.buttonEthernetSend.Size = new System.Drawing.Size(100, 30); - this.buttonEthernetSend.TabIndex = 264; - this.buttonEthernetSend.Text = "Send"; - this.buttonEthernetSend.Click += new System.EventHandler(this.buttonEthernetSend_Click); + this.labelTitleStartAddress.BackPictureBox = this.smartForm1; + this.labelTitleStartAddress.BackPictureBox1 = null; + this.labelTitleStartAddress.BackPictureBox2 = null; + this.labelTitleStartAddress.BorderColor = System.Drawing.Color.Black; + this.labelTitleStartAddress.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleStartAddress.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); + this.labelTitleStartAddress.ForeColor = System.Drawing.Color.Black; + this.labelTitleStartAddress.InitVisible = true; + this.labelTitleStartAddress.LineSpacing = 0F; + this.labelTitleStartAddress.Location = new System.Drawing.Point(27, 291); + this.labelTitleStartAddress.Name = "labelTitleStartAddress"; + this.labelTitleStartAddress.Size = new System.Drawing.Size(140, 28); + this.labelTitleStartAddress.TabIndex = 265; + this.labelTitleStartAddress.Text = "Start Address"; + this.labelTitleStartAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleStartAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleStartAddress.Wordwrap = false; // // FormCommunication // @@ -1290,7 +1244,6 @@ ((System.ComponentModel.ISupportInitialize)(this.smartForm1)).EndInit(); this.groupBoxSerial.ResumeLayout(false); this.groupBoxEthernet.ResumeLayout(false); - this.panel2.ResumeLayout(false); this.groupBoxServer.ResumeLayout(false); this.groupBoxClient.ResumeLayout(false); this.ResumeLayout(false); @@ -1318,10 +1271,6 @@ private SmartX.SmartLabel labelProtocolDescriptionEthernet_1; private System.Windows.Forms.Button buttonTcpSave1; private SmartX.SmartLabel labelHelp; - private System.Windows.Forms.Panel panel2; - private SmartX.SmartRadioButton radioButtonLocalIpStatic; - private SmartX.SmartRadioButton radioButtonLocalIpDHCP; - private SmartX.SmartLabel labelTitleIPConfiguration; public SmartX.SmartLabel labelLocalSubnetMask4; public SmartX.SmartLabel labelLocalSubnetMask3; public SmartX.SmartLabel labelLocalSubnetMask2; @@ -1361,5 +1310,7 @@ private System.Windows.Forms.Button buttonEthernetSend; private System.Windows.Forms.Button buttonEthernetStop; private System.Windows.Forms.Button buttonEthernetStart; + public SmartX.SmartLabel labelStartAddress; + private SmartX.SmartLabel labelTitleStartAddress; } } \ No newline at end of file diff --git a/INT89DB_26/Forms/FormCommunication.resx b/INT89DB_26/Forms/FormCommunication.resx index 5e581d1..3628710 100644 --- a/INT89DB_26/Forms/FormCommunication.resx +++ b/INT89DB_26/Forms/FormCommunication.resx @@ -165,52 +165,53 @@ RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK - j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAACmlJREFUeF7t1jENgEAU - QLFv50YknGWCIoIEwoyJNzapiM6xFwAAIcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAx - wQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEA - xAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIF - ABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJ - FgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAg - JlgAADHBAgCICRYAQEywAABiggUAEJvvuQAACAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHB - AgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDE - BAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUA - EBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkW - AEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAm - WAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACA - mGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAA - AGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHB - AgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDE - BAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUA - EBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkW - AEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAm - WAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACA - mGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAA - AGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHB - AgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDE - BAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUA - EBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkW - AEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAm - WAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACA - mGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAA - AGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHB - AgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDE - BAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUA - EBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkW - AEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAm - WAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACA - mGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAA - AGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHB - AgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDE - BAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUA - EBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkW - AEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAm - WAAAMcECAIgJFgBAbN77BAAgNMdeAACEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQE - CwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQ - EywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYA - QEywAABiggUAEBMsAICYYAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZY - AAAxwQIAiAkWAEBMsAAAYoIFABATLACAmGABAMQECwAgJlgAADHBAgCICRYAQEywAABiggUAEBMsAICY - YAEAxAQLACAmWAAAMcECAIgJFgBATLAAAGKCBQAQEywAgJhgAQDEBAsAICZYAAAxwQIAiAkWAEBMsAAA - YoIFABATLACA1F4/V1c/5sLrLKMAAAAASUVORK5CYII= + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAACrZJREFUeF7t1jENgAAQ + wMC3w4gELBMUESQQZgQw0vGSm6qgs24LAACh+SYAAP4wWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAz + WAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMF + ABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAA + MYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAz + WAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMF + ABAzWAAAMYMFABAzWAAAMYMFABAzWAAAMYMFABAzWAAAsXmuAwCAkMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACA + mMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZ + LACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMECAIgZLACAmMEC + AIgZLACAmMECAIgZLACAmMECAIjNfe4AAIRm3RYAAEIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIG + CwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAA + AGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAg + ZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIG + CwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAA + AGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAg + ZrAAAGIGCwAgZrAAAGIGCwAgZrAAAGIGCwAg9gJXVz/mZFbNFwAAAABJRU5ErkJggg== @@ -260,27 +261,28 @@ RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK - j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAABIRJREFUaEPtm+lTIkcY - h/PvrMkmtbvZHJW4WS6huAShRFxwFBWQKIg4iMYqz/Ioscr7ilcsb/3iF8uP5ot/V35uv8GBXV22tpmZ - 3uKp5sP09AzvU93zdveI37wwPHuivDY/11v50fS8JMiS8hGlnyw/OP3WcNu7eFc8oUti8eg7KWhrML8y - fVcSPEqR0ktDjdNvi8djdGki8acuoeASic5Yp8XzVqmA8qAE42apiTXt7e3NZrNDQ0N/6RIEJstyKpVi - 0fqC9eiMgggpoYr5oB1k6FLd09/fz6wamtylSg6/lfkMDg5Sc0HI5XLMyuj6/UHptfn7aCyKWoH6R0km - k0Hwbe0SG373SshvqEqn09REQJLJJBQMzt9ICfla3C5isI5CnmBKNWz+0W1+K4eBgQEooG/ulTAZ4wDJ - nk6KCbIaLNo7I1+PEoYYLLCqqCrpmKqSCFSVREBjJSxesNakA05oqRSPx2022/T0NB1zQjOlSCTicDiw - hTk+PqYqTmijFI1G4YPF2PLy8sXFBdVyQgMlj8fjcrmwCYXP2tra+fk5neCEqkqxWMxisQSDwYmJCfis - rKysr6+fnZ3RaU6opyRJEpIBHp75+XnIMKB0enpKLTihkpLdbvd6vVj2s84psLGxcXJyQo04UXElzDx1 - dXWhUAjJmjwUbG5uCpbxWltbrdb7lxn5fJ4kioHS4eEhteZEBZXMZjMGWzabXVpaIoMPQMY7ODigCzhR - ESVMoyaTSZKkubk5iv0R8GihDV3GCf5Kfr/f7XbLsrywsECBPw6UJicnMfO+eRJMYnT3MuCphHshTTc2 - No6OjpZkti/ks1YY3JQCgQAeHgy22dlZCoQfaithQe10On0+3/Dw8OLiIkXBFVWVwuEwptHu7u6ZmRn6 - /gqgttLY2NgTaZoLqiohBWOu3NnZwQxD318B1H6Wpqam/nkPlgIUAm/UVmJg7B0dHVWou7RRAuPj49vb - 27DCloFi4YRmSgz0UvmDEI2vrq5ub2//fZK7uzu6exnwVwLY5JWZM2B+fX1Nl3GiIkpgZGRkd3f3k921 - tbWFJ5Cu4USllBhY6e3v7yPu1dVVkigGu1oxNhdKsNCG1WODEIlEpC2gEgy/vb099Amp/A88BX41iYnr - w0EIJfFepyjBvgPDDN1VmLigJ+pLLyXwQTIsDEKBX00qyefzWGew/C72C2QlGIR/v+fy8pKqOKGZEsDG - 5ObmBqshOuaElkoVoqokAlUlEagqicBXqFT0E0N8IIdjiNJ5ASn6ISg+wZYAjmVZpvMC0tfXBwVPwElK - Vq8Rx6lUis4LSE9PDxTe2H8hpVfGbzs621H1WX+l0g/pdBrBh1qb4UJKKBbPW9QCDEpqKAh4XhB2V1dX - rf3nIiUUX7CeWQn0s37WP8DWYC6IPCi9MNTUBxysRTKZzGQyuVwOyRGZUFcgJAwl5AP2TwnoH7vPorAo - UrovRldtpKONiemflki4MN4KpVQJ5aWxxuSu9Td7pUhLR7Q9GovqqiCTtbSFvE3uPxy/lkTOykeUxC6G - Z/8BKGeNyS3v/jQAAAAASUVORK5CYII= + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAABLBJREFUaEPtm9tP6kgc + gM+/I3vcjXrOXrLr2YOANoAIQkRUrKAWmFWQS4G2Jt6ISIBEqbSU5bYGvL/4Ys6j++LftZHxsDisrifl + 0hq+zFPnN/T3ZSbTdph5N6QceKF8VA9KrXxQDbbm2VzetV76UfOD3jJhd8y7PW4gSVxuYh63YdPqEdX7 + 1vyfKA0rFXoL5na7Go3/kCSN9FZdqxrj52eVRlTv5/BZGLqxsREOh2maZiQJTdMkSfp8Ppit2TY1rFSg + SsNKBfTx+XzhcBj9DakSCoWg1fSsAVXSWSagD0VRaDtpE41GodXY5G//Kn1Uf0+4CACAjPqnmWAwCABw + LONw+D0o6etd5Pf70Vj54PV6AQBK/a+PSnbHvHy7CAI7ymybgkoK+PyR7Pz2GiKRCADA7ph/UPqgGoTP + HzRKVlAUBQBYXnW+HSWapuFbRV9JwvSV5EBfSQ70WMnr9UajUfSqOHqp5Ha7MQyLx+NohTh6puR0OnU6 + nc/nOz09RevE0RslgiB0Ol0kEmFZ9urqCq0WRw+UjEbj5ORkKBRiWZbjuMvLSzRCHF1VcrlcGo3GZrPt + 7e2xLHt8fMzz/MXFBRonju4p4TiOYZjP50un08df4Xn+/PwcDRVHl5S0Wq3JZKIoCnZOg1wud3Z2hkaL + o+NKXq93fHx8YWEhHo83y0AEQZDZjLe0tDQx8bCYkUqlUJs6giBUq1W0mTg6qKRWq00mUzgczmQyqMpX + OI47OTlBW4qjI0pOp1OlUuE4nkwmUYmnsCybTCbR9uJov5LFYjEYDCRJHh4eogYtsCwbi8UIgvj0IqFQ + CL3N87RTiaZpDMNmZma2t7eRmU0k3/SG0TYlq9WqVqtxHE8kEmhGoum2ktvt1uv1ZrN5c3Pz6OgITacd + dFXJbrdrtdq1tbWDgwM0kfbRbaWdnZ0Xpum20FWlZDJZrVaLxSLHcWgi7aOrSgzD7O/v/1VHEAQ0lzbR + bSVIJpOp1Wod6q7eKDEMs7u7WygUisUiz/NoUuLomRKE47jXD0KO425ubu7u7v5+kfv7e/Q2z9N+JYZh + 0un0K+cMQRBub2/R9uLoiBLDMFtbW6VS6X+7K5/P12o1tLE4OqUEYVm2Uqnk8/lsNova1MnlcvL4uGgm + FotVKpXnBiHP83L6BGxGEIRyuZzL5RAljuNk9qHeTCaTaR2EHMfJbzmlmUQiUa1Wy+Vy48GVzWbluujV + DM/zpVKpMQhlvDTZTCqVKhQKcH6X9wJyM4lE4s8619fXaJ04eqYEP0y+fPlyd3eHVoijl0odoq8kB/pK + cqCvJAfeoNKTLYZDygGX+2H78dvZCDqkHLAtWgEAJEmigfIhEAgAAIxW/aPShGkM7ntHA+XD+vo6AOCT + 9udHpZGx71ZWlwEA3/QvlXTw+/0AgIWluScHFDTGz3CbfyQSQVtIG5IkAQAej2dU+xN6MsZsm4JWMtrW + D/sHAIBNq9FjJPWimLLqYITX6w0Gg9FolKIoWmJQFBWJRAKBADyU4PF4tGZNk0XLKbOxyVHnigOKSZ9F + p70x3p5VejjLNKZQGUYtcybcubhCLBMuQlJlZXV50bFgmjX8rvulNfn/VpJ7+QcoZ43JL5we4wAAAABJ + RU5ErkJggg== @@ -330,98 +332,103 @@ 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 - EPAlSQAAAABJRU5ErkJggg== + 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 @@ -471,39 +478,43 @@ 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 - /75aOx5brnAAAAAASUVORK5CYII= + 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 + RK5CYII= @@ -553,35 +564,36 @@ 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 - 6AJaAAAAAElFTkSuQmCC + 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 + ku/cAAAAAElFTkSuQmCC diff --git a/INT89DB_26/Forms/FormFactoryReset.cs b/INT89DB_26/Forms/FormFactoryReset.cs index 4ee0dbb..08c3614 100644 --- a/INT89DB_26/Forms/FormFactoryReset.cs +++ b/INT89DB_26/Forms/FormFactoryReset.cs @@ -142,7 +142,7 @@ namespace INT89DB_26.Forms structItem.DummyBool4 = false; structItem.DummyInt1 = 0; structItem.DummyInt2 = 0; - structItem.DummyInt8 = 0; + structItem.ModbusTcpStartAddress = 0; structItem.Serial3BaudRate = this.ParentForm.SystemConfig.Serial3BaudRate; structItem.Serial3Mode = this.ParentForm.SystemConfig.Serial3Mode; structItem.EthernetServerAddress = ""; diff --git a/INT89DB_26/Forms/FormInformation.cs b/INT89DB_26/Forms/FormInformation.cs index 4d13f0f..5cd4ac3 100644 --- a/INT89DB_26/Forms/FormInformation.cs +++ b/INT89DB_26/Forms/FormInformation.cs @@ -107,7 +107,7 @@ namespace INT89DB_26.Forms } private void DefaultSetting() { - this.labelDisplayVer.Text = "8.3.2"; + this.labelDisplayVer.Text = "8.4.0"; this.labelSerialNo.Text = this.ParentForm.SystemConfig.SerialNumber; this.CollectionControlVerLabel = new Collection(); diff --git a/INT89DB_26/Forms/FormMain.cs b/INT89DB_26/Forms/FormMain.cs index fca1f89..e25416e 100644 --- a/INT89DB_26/Forms/FormMain.cs +++ b/INT89DB_26/Forms/FormMain.cs @@ -12,8 +12,10 @@ using System.Threading; using System.Windows.Forms; using SmartX; +using InModbus; using INT89DB_26.DialogForms; using INT89DB_26_ImageDll; +using INT89DB_26.Int_Modbus; namespace INT89DB_26.Forms { @@ -75,8 +77,6 @@ namespace INT89DB_26.Forms public ZeroParameterItem CurrentZeroParameterItem; // 옵션 파라미터 설정값 public OptionParameterItem CurrentOptionParameterItem; - // FeedBack Range (아남자동기 PLC) - public FeedBackRangeItem CurrentFeedBackRangeItem; // User public CollectionUser CurrentCollectionUser; // 열별 중량 데이터 @@ -118,6 +118,12 @@ namespace INT89DB_26.Forms private delegate void TextStatusCallback(string strtext); private delegate void UIControlCallback(bool bEnable); private delegate void UIServerStatusCallback(bool bEnable); + + // Modbus + private bool IsModbusCommonDataSend; // Modbus 공통 데이터 Start 시 한번 전송용 + public Modbus_30000_Data Current30000ModbusData; + public Modbus_40000_Data Current40000ModbusData; + public Modbus Modbus; #endregion #region Constructor @@ -282,6 +288,7 @@ namespace INT89DB_26.Forms this.BufferSmartUart = 1000000; // 1MB this.ColorLogOff = Color.Red; this.ColorLogOn = Color.Yellow; + this.IsModbusCommonDataSend = false; this.SystemConfig = new SystemConfigurationItem(); this.CurrentProductItem = new ProductItem(); @@ -289,7 +296,6 @@ namespace INT89DB_26.Forms this.CurrentCalibrationItem = new CalibrationItem(); this.CurrentZeroParameterItem = new ZeroParameterItem(); this.CurrentOptionParameterItem = new OptionParameterItem(); - this.CurrentFeedBackRangeItem = new FeedBackRangeItem(); this.CurrentCollectionUser = new CollectionUser(); this.CurrentAlarmList = new AlarmList(); @@ -307,6 +313,19 @@ namespace INT89DB_26.Forms } private void DefaultSetting2() { + // Ethernet Static setting + if (this.smartConfigs.IPSettings.DHCPEnable == 1) + { + this.smartConfigs.IPSettings.DHCPEnable = 0; + + this.smartConfigs.IPSettings.DeviceIP = "192.168.3.10"; + this.smartConfigs.IPSettings.SubNetMask = "255.255.255.0"; + this.smartConfigs.IPSettings.GateWay = "192.168.3.1"; + + this.smartConfigs.IPSettings.Save(); + this.smartConfigs.IPSettings.SetApply(); + } + // 이더넷 if (this.SystemConfig.IsEthernetEnable == true) { @@ -370,409 +389,6 @@ namespace INT89DB_26.Forms this.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress._9048_ParameterProduct, sb.ToString()); } - #region Communication Protocol - public string Protocol_OPT1(int lane, WeightData data) - { - string value = ""; - StringBuilder sb = new StringBuilder(); - - sb.Append((char)0x02); - sb.Append(string.Format("IN{0:D3}", this.SystemConfig.EquipmentID)); - sb.Append(string.Format("{0:D4}", this.SystemConfig.ProductNumber)); - sb.Append(string.Format("{0:D2}", lane)); - - if (data.JudgmentStatus == DataStore.JudgmentStatus.Under) - sb.Append("U"); - else if (data.JudgmentStatus == DataStore.JudgmentStatus.Over) - sb.Append("O"); - else if (data.JudgmentStatus == DataStore.JudgmentStatus.Double) - sb.Append("D"); - else - sb.Append("P"); - - value = Helper.DoubleToString(data.Weight, this.SystemConfig.DecimalPlaces); - sb.Append(value.PadLeft(6, ' ')); - sb.Append((char)0x03); - - return sb.ToString(); - } - public string Protocol_OPT2(int lane, WeightData data) - { - int value = 0, passWeight = 0, weight = 0; - string value2 = ""; - StringBuilder sb = new StringBuilder(); - - sb.Append((char)0x02); - sb.Append(string.Format("IN{0:D3}", this.SystemConfig.EquipmentID)); - sb.Append(string.Format("{0:D4}", this.SystemConfig.ProductNumber)); - sb.Append(string.Format("{0:D2}", lane)); - - passWeight = int.Parse(this.CurrentProductItem.PassRange.Trim()); - weight = int.Parse(data.WeightString.Trim()); - value = weight - passWeight; - - // SIGN - if (value < 0) - sb.Append("-"); - else - sb.Append("+"); - - // WEIGHT - value = Math.Abs(value); - value2 = Helper.StringToDecimalPlaces(value.ToString(), this.SystemConfig.DecimalPlaces); - sb.Append(value2.PadLeft(6, ' ')); - - sb.Append((char)0x03); - - return sb.ToString(); - } - #endregion - #region Serial CH3 - private void SerialUart3Open() - { - if (this.serialPort3.IsOpen == true) - this.serialPort3.Close(); - - if (this.SystemConfig.Serial3Mode != 0) - { - this.serialPort3.BaudRate = this.SystemConfig.Serial3BaudRate; - this.serialPort3.Open(); - } - } - - public void SerialCom3Write(string data) - { - this.serialPort3.Write(data); - } - #endregion - #region Ethernet - private void TreatEthernetCommunication(int lane, WeightData data) - { - if (this.SystemConfig.IsEthernetEnable == false) - return; - - string sendData = ""; - - if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_OPT1) - { - sendData = this.Protocol_OPT1(lane, data); - this.EthernetWrite(sendData); - } - else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_OPT2) - { - sendData = this.Protocol_OPT2(lane, data); - this.EthernetWrite(sendData); - } - } - private void EthernetWrite(string etherData) - { - if (this.SystemConfig.EthernetOperationMode == 1) - { - if (this.smartTCPMultiServer.ClientInfoList != null) - { - foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList) - this.EthernetServerSendMessage(client, etherData); - } - } - else - this.EthernetClientWeightData(etherData); - } - - #region Server - public void EthernetServerStart() - { - if (this.smartTCPMultiServer.IsStart == false) - { - this.ChildFormCommunication.DisplayLabelLocalPort(false); - this.smartTCPMultiServer.Port = this.SystemConfig.EthernetLocalPort; - this.smartTCPMultiServer.Start(); - } - } - public void EthernetServerStop() - { - if (this.smartTCPMultiServer.IsStart == true) - { - this.ChildFormCommunication.DisplayLabelLocalPort(true); - this.smartTCPMultiServer.Stop(); - } - } - public void EthernetServerSendMessage(SmartTCPMultiServer.CLIENTSINFOS client, string msg) - { - this.smartTCPMultiServer.SendStringASCIIID(client.strID, msg); - } - public void EthernetServerSendMessage(SmartTCPMultiServer.CLIENTSINFOS client, byte[] bytes) - { - this.smartTCPMultiServer.SendByteByClientID(client.strID, bytes); - } - #endregion - - #region Client - Thread cpClientThread; - - public void EthernetClientConnect() - { - if (this.IsEthernetThreadStop == false) - return; // Online 경우 - if (this.SystemConfig.IsEthernetEnable == false) - { - this.TextStatusOut("Thread Error"); - } - } - public void EthernetClientDisconnect() - { - this.IsEthernetThreadStop = true; - this.DelegateUISeverStatus(false); - if (null != this.EthernetStmReader) - this.EthernetStmReader.Close(); - - if (null != this.EthernetStmWriter) - this.EthernetStmWriter.Close(); - - if (null != this.EthernetNetStream) - this.EthernetNetStream.Close(); - - if (null != this.EthernetTcpClient) - this.EthernetTcpClient.Close(); - - if (this.IsCommunicationLogOpen == true) - this.smartFileCommunicationLog.WriteString(string.Format("Client ({0:yyyy-MM-dd HH:mm:ss}): Disconnect", DateTime.Now)); - } - - private void EthernetClientReceiveThread() - { - //this.cpClientThread.Abort(); - - int nConnectPort = Convert.ToInt32(this.SystemConfig.EthernetServerPort); - try - { - this.DelegateTextStatusOut(">Now Connecting.."); - this.EthernetTcpClient = new TcpClient(this.SystemConfig.EthernetServerAddress, nConnectPort); - - this.EthernetNetStream = EthernetTcpClient.GetStream(); - this.EthernetStmReader = new StreamReader(EthernetNetStream); - this.EthernetStmWriter = new StreamWriter(EthernetNetStream); - - this.DelegateUISeverStatus(true); - this.DelegateTextStatusOut(">Connected Server"); - - if (this.IsCommunicationLogOpen == true) - this.smartFileCommunicationLog.WriteString(string.Format("Client ({0:yyyy-MM-dd HH:mm:ss}): Connect", DateTime.Now)); - - this.IsEthernetThreadStop = false; - - // 판정 데이터 전송 - if (this.IsEthernetTransferData == true) - { - this.IsEthernetTransferData = false; - Type type = this.EthernetTransferData.GetType(); - if (type == typeof(string)) - this.DelegateTransferData((string)this.EthernetTransferData); - else if (type == typeof(byte[])) - this.DelegateTransferData((byte[])this.EthernetTransferData); - else if (type == typeof(byte)) - this.DelegateTransferData((byte)this.EthernetTransferData); - } - - while (this.IsEthernetThreadStop == false) - { - string strRecvMsg = ""; - char[] datas = new char[12]; - int sum = 0; - - try - { - //strRecvMsg = this.EthernetStmReader.ReadLine(); - this.EthernetStmReader.Read(datas, 0, datas.Length); - for (int i = 0; i < datas.Length; i++) - sum += datas[i]; - if (sum == 0) - return; - - strRecvMsg = BitConverter.ToString(Encoding.UTF8.GetBytes(datas)); - - if (this.IsCommunicationLogOpen == true) - this.smartFileCommunicationLog.WriteString(string.Format("Client Receive ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, strRecvMsg)); - - if (null == strRecvMsg) - { - this.DelegateTextStatusOut(">Server Out"); - this.IsEthernetThreadStop = true; - break; - } - - this.DelegateTextStatusOut(strRecvMsg); - } - catch - { - this.DelegateTextStatusOut(">Server Out"); - this.IsEthernetThreadStop = true; - } - } - } - catch - { - this.DelegateTextStatusOut(">Connect Fail !"); - } - finally - { - this.IsEthernetThreadStop = true; - this.DelegateUISeverStatus(false); - this.DelegateTextStatusOut(">Disconnected Server"); - if (null != this.EthernetStmReader) - this.EthernetStmReader.Close(); - - if (null != this.EthernetStmWriter) - this.EthernetStmWriter.Close(); - - if (null != this.EthernetNetStream) - this.EthernetNetStream.Close(); - - if (null != this.EthernetTcpClient) - this.EthernetTcpClient.Close(); - - if (this.IsCommunicationLogOpen == true) - this.smartFileCommunicationLog.WriteString(string.Format("Client ({0:yyyy-MM-dd HH:mm:ss}): Disconnect", DateTime.Now)); - } - - return; - } - - private void UIServerStatus(bool status) - { - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateEthernetStatusDisplay(status); - } - private void DelegateUISeverStatus(bool status) - { - this.Invoke(new UIServerStatusCallback(this.UIServerStatus), status); - } - - private void TextStatusOut(string value) - { - if (this.ChildFormCommunication != null) - this.ChildFormCommunication.UpdateEthernetStatusDisplay(value); - } - private void DelegateTextStatusOut(string value) - { - this.Invoke(new TextStatusCallback(this.TextStatusOut), value); - } - - private void DelegateTransferData(string data) - { - this.Invoke(new TransferDataStringCallback(this.EthernetClientSendMessage), data); - } - private void DelegateTransferData(byte[] data) - { - this.Invoke(new TransferDataByteArrayCallback(this.EthernetClientSendMessage), data); - } - private void DelegateTransferData(byte data) - { - this.Invoke(new TransferDataStringCallback(this.EthernetClientSendMessage), data); - } - public void EthernetClientSendMessage(string msg) - { - try - { - this.EthernetStmWriter.Write(msg); - this.EthernetStmWriter.Flush(); - - // 로그 - if (this.IsCommunicationLogOpen == true) - this.smartFileCommunicationLog.WriteString(string.Format("Client Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, msg)); - } - catch - { - this.DelegateUISeverStatus(false); - this.DelegateTextStatusOut("> Disconnect"); - } - } - public void EthernetClientSendMessage(byte[] msg) - { - try - { - this.EthernetStmWriter.BaseStream.Write(msg, 0, msg.Length); - this.EthernetStmWriter.Flush(); - - // 로그 - if (this.IsCommunicationLogOpen == true) - this.smartFileCommunicationLog.WriteString(string.Format("Client Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(msg))); - } - catch - { - this.DelegateUISeverStatus(false); - this.DelegateTextStatusOut("> Disconnect"); - } - } - public void EthernetClientSendMessage(byte msg) - { - try - { - this.EthernetStmWriter.WriteLine(msg); - this.EthernetStmWriter.Flush(); - - // 로그 - if (this.IsCommunicationLogOpen == true) - this.smartFileCommunicationLog.WriteString(string.Format("Client Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, msg)); - } - catch - { - this.DelegateUISeverStatus(false); - this.DelegateTextStatusOut("> Disconnect"); - } - } - public void EthernetClientWeightData(string strTemp) - { - this.IsEthernetTransferData = true; - this.EthernetTransferData = strTemp; - - if (this.IsEthernetThreadStop == true) - this.EthernetClientConnect(); - else - this.EthernetClientSendMessage((string)this.EthernetTransferData); - } - public void EthernetClientWeightData(byte temp) - { - this.IsEthernetTransferData = true; - this.EthernetTransferData = temp; - - if (this.IsEthernetThreadStop == true) - this.EthernetClientConnect(); - else - this.EthernetClientSendMessage((byte)this.EthernetTransferData); - } - public void EthernetClientWeightDataForModbus(byte[] bytes) - { - this.IsEthernetTransferData = true; - this.EthernetTransferData = bytes; - - if (this.IsEthernetThreadStop == true) - this.EthernetClientConnect(); - else - this.EthernetClientSendMessage(bytes); - } - #endregion - #endregion - #region Uart Communication private void OpenSmartUartLink() { @@ -1469,17 +1085,17 @@ namespace INT89DB_26.Forms // CH3 if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.SerialCom3Write(this.Protocol_OPT1(1, this.CollectionWeightData[0])); + this.SerialCom3Write(this.Protocol_STD1(1, this.CollectionWeightData[0])); else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.SerialCom3Write(this.Protocol_OPT2(1, this.CollectionWeightData[0])); + this.SerialCom3Write(this.Protocol_STD2(1, this.CollectionWeightData[0])); // Ethernet if (this.SystemConfig.IsEthernetEnable == true) { if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.EthernetWrite(this.Protocol_OPT1(1, this.CollectionWeightData[0])); + this.EthernetWrite(this.Protocol_STD1(1, this.CollectionWeightData[0])); else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.EthernetWrite(this.Protocol_OPT2(1, this.CollectionWeightData[0])); + this.EthernetWrite(this.Protocol_STD2(1, this.CollectionWeightData[0])); } } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) @@ -1511,17 +1127,17 @@ namespace INT89DB_26.Forms // CH3 if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.SerialCom3Write(this.Protocol_OPT1(2, this.CollectionWeightData[1])); + this.SerialCom3Write(this.Protocol_STD1(2, this.CollectionWeightData[1])); else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.SerialCom3Write(this.Protocol_OPT2(2, this.CollectionWeightData[1])); + this.SerialCom3Write(this.Protocol_STD2(2, this.CollectionWeightData[1])); // Ethernet if (this.SystemConfig.IsEthernetEnable == true) { if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.EthernetWrite(this.Protocol_OPT1(2, this.CollectionWeightData[1])); + this.EthernetWrite(this.Protocol_STD1(2, this.CollectionWeightData[1])); else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.EthernetWrite(this.Protocol_OPT2(2, this.CollectionWeightData[1])); + this.EthernetWrite(this.Protocol_STD2(2, this.CollectionWeightData[1])); } } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) @@ -1553,17 +1169,17 @@ namespace INT89DB_26.Forms // CH3 if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.SerialCom3Write(this.Protocol_OPT1(3, this.CollectionWeightData[2])); + this.SerialCom3Write(this.Protocol_STD1(3, this.CollectionWeightData[2])); else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.SerialCom3Write(this.Protocol_OPT2(3, this.CollectionWeightData[2])); + this.SerialCom3Write(this.Protocol_STD2(3, this.CollectionWeightData[2])); // Ethernet if (this.SystemConfig.IsEthernetEnable == true) { if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.EthernetWrite(this.Protocol_OPT1(3, this.CollectionWeightData[2])); + this.EthernetWrite(this.Protocol_STD1(3, this.CollectionWeightData[2])); else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.EthernetWrite(this.Protocol_OPT2(3, this.CollectionWeightData[2])); + this.EthernetWrite(this.Protocol_STD2(3, this.CollectionWeightData[2])); } } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) @@ -1595,17 +1211,17 @@ namespace INT89DB_26.Forms // CH3 if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.SerialCom3Write(this.Protocol_OPT1(4, this.CollectionWeightData[3])); + this.SerialCom3Write(this.Protocol_STD1(4, this.CollectionWeightData[3])); else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.SerialCom3Write(this.Protocol_OPT2(4, this.CollectionWeightData[3])); + this.SerialCom3Write(this.Protocol_STD2(4, this.CollectionWeightData[3])); // Ethernet if (this.SystemConfig.IsEthernetEnable == true) { if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.EthernetWrite(this.Protocol_OPT1(4, this.CollectionWeightData[3])); + this.EthernetWrite(this.Protocol_STD1(4, this.CollectionWeightData[3])); else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.EthernetWrite(this.Protocol_OPT2(4, this.CollectionWeightData[3])); + this.EthernetWrite(this.Protocol_STD2(4, this.CollectionWeightData[3])); } } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) @@ -1637,17 +1253,17 @@ namespace INT89DB_26.Forms // CH3 if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.SerialCom3Write(this.Protocol_OPT1(5, this.CollectionWeightData[4])); + this.SerialCom3Write(this.Protocol_STD1(5, this.CollectionWeightData[4])); else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.SerialCom3Write(this.Protocol_OPT2(5, this.CollectionWeightData[4])); + this.SerialCom3Write(this.Protocol_STD2(5, this.CollectionWeightData[4])); // Ethernet if (this.SystemConfig.IsEthernetEnable == true) { if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.EthernetWrite(this.Protocol_OPT1(5, this.CollectionWeightData[4])); + this.EthernetWrite(this.Protocol_STD1(5, this.CollectionWeightData[4])); else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.EthernetWrite(this.Protocol_OPT2(5, this.CollectionWeightData[4])); + this.EthernetWrite(this.Protocol_STD2(5, this.CollectionWeightData[4])); } } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) @@ -1679,17 +1295,17 @@ namespace INT89DB_26.Forms // CH3 if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.SerialCom3Write(this.Protocol_OPT1(6, this.CollectionWeightData[5])); + this.SerialCom3Write(this.Protocol_STD1(6, this.CollectionWeightData[5])); else if (this.SystemConfig.Serial3Mode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.SerialCom3Write(this.Protocol_OPT2(6, this.CollectionWeightData[5])); + this.SerialCom3Write(this.Protocol_STD2(6, this.CollectionWeightData[5])); // Ethernet if (this.SystemConfig.IsEthernetEnable == true) { if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_OPT1) // OPT1 - this.EthernetWrite(this.Protocol_OPT1(6, this.CollectionWeightData[5])); + this.EthernetWrite(this.Protocol_STD1(6, this.CollectionWeightData[5])); else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_OPT2) // OPT2 - this.EthernetWrite(this.Protocol_OPT2(6, this.CollectionWeightData[5])); + this.EthernetWrite(this.Protocol_STD2(6, this.CollectionWeightData[5])); } } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) @@ -1925,6 +1541,2998 @@ namespace INT89DB_26.Forms } #endregion + #region Communication Protocol + public string Protocol_STD1(int lane, WeightData data) + { + string value = ""; + StringBuilder sb = new StringBuilder(); + + sb.Append((char)0x02); + sb.Append(string.Format("IN{0:D3}", this.SystemConfig.EquipmentID)); + sb.Append(string.Format("{0:D4}", this.SystemConfig.ProductNumber)); + sb.Append(string.Format("{0:D2}", lane)); + + if (data.JudgmentStatus == DataStore.JudgmentStatus.Under) + sb.Append("U"); + else if (data.JudgmentStatus == DataStore.JudgmentStatus.Over) + sb.Append("O"); + else if (data.JudgmentStatus == DataStore.JudgmentStatus.Double) + sb.Append("D"); + else + sb.Append("P"); + + value = Helper.DoubleToString(data.Weight, this.SystemConfig.DecimalPlaces); + sb.Append(value.PadLeft(6, ' ')); + sb.Append((char)0x03); + + return sb.ToString(); + } + public string Protocol_STD2(int lane, WeightData data) + { + int value = 0, passWeight = 0, weight = 0; + string value2 = ""; + StringBuilder sb = new StringBuilder(); + + sb.Append((char)0x02); + sb.Append(string.Format("IN{0:D3}", this.SystemConfig.EquipmentID)); + sb.Append(string.Format("{0:D4}", this.SystemConfig.ProductNumber)); + sb.Append(string.Format("{0:D2}", lane)); + + passWeight = int.Parse(this.CurrentProductItem.PassRange.Trim()); + weight = int.Parse(data.WeightString.Trim()); + value = weight - passWeight; + + // SIGN + if (value < 0) + sb.Append("-"); + else + sb.Append("+"); + + // WEIGHT + value = Math.Abs(value); + value2 = Helper.StringToDecimalPlaces(value.ToString(), this.SystemConfig.DecimalPlaces); + sb.Append(value2.PadLeft(6, ' ')); + + sb.Append((char)0x03); + + return sb.ToString(); + } + + public byte[] Protocol_Modbus_Client_Write_Common_Data_TCP() + { + int index = 0; + byte[] madeData = new byte[40]; + byte[] length4Value = new byte[4]; + byte[] length2Value = new byte[2]; + + double underValue = this.Current30000ModbusData.UnderValue; + double passValue = this.Current30000ModbusData.PassValue; + double overValue = this.Current30000ModbusData.OverValue; + double tareValue = this.Current30000ModbusData.TareValue; + + #region 고정 Data(10개, 40 bytes) + // 하한값 + length4Value = GetBytes((Single)underValue); + for (int i = 0; i < 4; i++) + madeData[i] = length4Value[3 - i]; + + // 기준값 + length4Value = GetBytes((Single)passValue); + for (int i = 0; i < 4; i++) + madeData[4 + i] = length4Value[3 - i]; + + // 상한값 + length4Value = GetBytes((Single)overValue); + for (int i = 0; i < 4; i++) + madeData[8 + i] = length4Value[3 - i]; + + // 용기값 + length4Value = GetBytes((Single)tareValue); + for (int i = 0; i < 4; i++) + madeData[12 + i] = length4Value[3 - i]; + #endregion + + return madeData; + } + public byte[] Protocol_Modbus_Client_Write_Lane_Data_TCP(int laneIndex) + { + int index = 0; + byte[] madeData = new byte[32]; + byte[] length4Value = new byte[4]; + byte[] length2Value = new byte[2]; + + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].Update); + for (int i = 0; i < 2; i++) + madeData[i] = length2Value[1 - i]; + + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].Grade); + for (int i = 0; i < 2; i++) + madeData[2 + i] = length2Value[1 - i]; + + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[laneIndex].Weight); + for (int i = 0; i < 4; i++) + madeData[4 + i] = length4Value[3 - i]; + + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].UnderCount); + for (int i = 0; i < 4; i++) + madeData[8 + i] = length4Value[3 - i]; + + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].PassCount); + for (int i = 0; i < 4; i++) + madeData[12 + i] = length4Value[3 - i]; + + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].OverCount); + for (int i = 0; i < 4; i++) + madeData[16 + i] = length4Value[3 - i]; + + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].NGCount); + for (int i = 0; i < 4; i++) + madeData[20 + i] = length4Value[3 - i]; + + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].ExNGCount); + for (int i = 0; i < 4; i++) + madeData[24 + i] = length4Value[3 - i]; + + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].TotalCount); + for (int i = 0; i < 4; i++) + madeData[28 + i] = length4Value[3 - i]; + + return madeData; + } + private byte[] Protocol_Modbus_Server_Read_Lane_Data_TCP(byte[] readByte) + { + byte[] startAddressByte = new byte[2] { readByte[8], readByte[9] }; + byte[] numberOfRegisterByte = new byte[2] { readByte[10], readByte[11] }; + int startAddressInt; + int numberOfRegisterInt; + int madeDataIndex = 0; + byte[] length2Value = new byte[2]; + byte[] length4Value = new byte[4]; + + startAddressInt = Modbus.ToBigEndianAndInt(startAddressByte); + numberOfRegisterInt = Modbus.ToBigEndianAndInt(numberOfRegisterByte); + + byte[] madeData = new byte[numberOfRegisterInt * 2]; + + if (readByte[7] == ModbusFunctionCode.FunctionCode_03) + { + #region Read Holding Register(0x03) + for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++) + { + switch (j) + { + #region Make data + case Modbus_40000_Address._01_Clear: + length2Value = GetBytes(this.Current40000ModbusData._40011_Clear); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._02_ClearResult: + length2Value = GetBytes(this.Current40000ModbusData._40012_ClearResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._03_Operation: + length2Value = GetBytes(this.Current40000ModbusData._40013_Operation); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._04_OperationResult: + length2Value = GetBytes(this.Current40000ModbusData._40014_OperationResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._05_ProductChange_High: + length4Value = GetBytes(this.Current40000ModbusData._40015_ProductChange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._06_ProductChange_Low: + length4Value = GetBytes(this.Current40000ModbusData._40015_ProductChange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._07_ProductChangeResult: + length2Value = GetBytes(this.Current40000ModbusData._40017_ProductChangeResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._08_UnderRange_High: + length4Value = GetBytes(this.Current40000ModbusData._40018_UnderRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._09_UnderRange_Low: + length4Value = GetBytes(this.Current40000ModbusData._40018_UnderRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._10_UnderRangeResult: + length2Value = GetBytes(this.Current40000ModbusData._40020_UnderRangeResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._11_PassRange_High: + length4Value = GetBytes(this.Current40000ModbusData._40021_PassRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._12_PassRange_Low: + length4Value = GetBytes(this.Current40000ModbusData._40021_PassRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._13_PassRangeResult: + length2Value = GetBytes(this.Current40000ModbusData._40023_PassRangeResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._14_OverRange_High: + length4Value = GetBytes(this.Current40000ModbusData._40024_OverRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._15_OverRange_Low: + length4Value = GetBytes(this.Current40000ModbusData._40024_OverRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._16_OverRangeResult: + length2Value = GetBytes(this.Current40000ModbusData._40026_OverRangeResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._17_TareWeight_High: + length4Value = GetBytes(this.Current40000ModbusData._40027_TareWeight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._18_TareWeight_Low: + length4Value = GetBytes(this.Current40000ModbusData._40027_TareWeight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._19_TareWeightResult: + length2Value = GetBytes(this.Current40000ModbusData._40029_TareWeightResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + default: + break; + #endregion + } + madeDataIndex += 2; + } + #endregion + } + else if (readByte[7] == ModbusFunctionCode.FunctionCode_04) + { + #region Read Input Register(0x04) + double underValue = this.Current30000ModbusData.UnderValue; + double passValue = this.Current30000ModbusData.PassValue; + double overValue = this.Current30000ModbusData.OverValue; + double tareValue = this.Current30000ModbusData.TareValue; + + int equipmentStatus; + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + equipmentStatus = 1; + else + equipmentStatus = 0; + + for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++) + { + switch (j) + { + #region Common data + case (int)ModbusDefine._30000_Modbus.UnderRange_High: + length4Value = GetBytes((Single)underValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.UnderRange_Low: + length4Value = GetBytes((Single)underValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus.PassRange_High: + length4Value = GetBytes((Single)passValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.PassRange_Low: + length4Value = GetBytes((Single)passValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus.OverRange_High: + length4Value = GetBytes((Single)overValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.OverRange_Low: + length4Value = GetBytes((Single)overValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus.TareRange_High: + length4Value = GetBytes((Single)tareValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.TareRange_Low: + length4Value = GetBytes((Single)tareValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #1 + case (int)ModbusDefine._30000_Modbus._1_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[0].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[0].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #2 + case (int)ModbusDefine._30000_Modbus._2_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[1].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[1].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #3 + case (int)ModbusDefine._30000_Modbus._3_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[2].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[2].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #4 + case (int)ModbusDefine._30000_Modbus._4_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[3].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[3].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #5 + case (int)ModbusDefine._30000_Modbus._5_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[4].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[4].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #6 + case (int)ModbusDefine._30000_Modbus._6_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[5].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[5].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #7 + case (int)ModbusDefine._30000_Modbus._7_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[6].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[6].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._7_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[6].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #8 + case (int)ModbusDefine._30000_Modbus._8_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[7].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[7].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._8_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[7].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #9 + case (int)ModbusDefine._30000_Modbus._9_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[8].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[8].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._9_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[8].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #10 + case (int)ModbusDefine._30000_Modbus._10_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[9].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[9].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._10_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[9].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #11 + case (int)ModbusDefine._30000_Modbus._11_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[10].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[10].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._11_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[10].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #12 + case (int)ModbusDefine._30000_Modbus._12_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[11].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[11].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._12_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[11].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + default: + length2Value = GetBytes(0); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + } + madeDataIndex += 2; + } + #endregion + } + + return madeData; + } + private byte[] Protocol_Modbus_Read_Lane_Data_RTU(byte[] readByte) + { + byte[] startAddressByte = new byte[2] { readByte[2], readByte[3] }; + byte[] numberOfRegisterByte = new byte[2] { readByte[4], readByte[5] }; + int startAddressInt; + int numberOfRegisterInt; + int madeDataIndex = 0; + byte[] length2Value = new byte[2]; + byte[] length4Value = new byte[4]; + + startAddressInt = Modbus.ToBigEndianAndInt(startAddressByte); + numberOfRegisterInt = Modbus.ToBigEndianAndInt(numberOfRegisterByte); + + byte[] madeData = new byte[numberOfRegisterInt * 2]; + + if (readByte[1] == ModbusFunctionCode.FunctionCode_03) + { + #region Read Holding Register(0x03) + for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++) + { + switch (j) + { + #region Make data + case Modbus_40000_Address._01_Clear: + length2Value = GetBytes(this.Current40000ModbusData._40011_Clear); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._02_ClearResult: + length2Value = GetBytes(this.Current40000ModbusData._40012_ClearResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._03_Operation: + length2Value = GetBytes(this.Current40000ModbusData._40013_Operation); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._04_OperationResult: + length2Value = GetBytes(this.Current40000ModbusData._40014_OperationResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._05_ProductChange_High: + length4Value = GetBytes(this.Current40000ModbusData._40015_ProductChange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._06_ProductChange_Low: + length4Value = GetBytes(this.Current40000ModbusData._40015_ProductChange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._07_ProductChangeResult: + length2Value = GetBytes(this.Current40000ModbusData._40017_ProductChangeResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._08_UnderRange_High: + length4Value = GetBytes(this.Current40000ModbusData._40018_UnderRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._09_UnderRange_Low: + length4Value = GetBytes(this.Current40000ModbusData._40018_UnderRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._10_UnderRangeResult: + length2Value = GetBytes(this.Current40000ModbusData._40020_UnderRangeResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._11_PassRange_High: + length4Value = GetBytes(this.Current40000ModbusData._40021_PassRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._12_PassRange_Low: + length4Value = GetBytes(this.Current40000ModbusData._40021_PassRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._13_PassRangeResult: + length2Value = GetBytes(this.Current40000ModbusData._40023_PassRangeResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._14_OverRange_High: + length4Value = GetBytes(this.Current40000ModbusData._40024_OverRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._15_OverRange_Low: + length4Value = GetBytes(this.Current40000ModbusData._40024_OverRange); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._16_OverRangeResult: + length2Value = GetBytes(this.Current40000ModbusData._40026_OverRangeResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case Modbus_40000_Address._17_TareWeight_High: + length4Value = GetBytes(this.Current40000ModbusData._40027_TareWeight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case Modbus_40000_Address._18_TareWeight_Low: + length4Value = GetBytes(this.Current40000ModbusData._40027_TareWeight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case Modbus_40000_Address._19_TareWeightResult: + length2Value = GetBytes(this.Current40000ModbusData._40029_TareWeightResult); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + default: + break; + #endregion + } + madeDataIndex += 2; + } + #endregion + } + else if (readByte[1] == ModbusFunctionCode.FunctionCode_04) + { + #region Read Input Register(0x04) + double underValue = this.Current30000ModbusData.UnderValue; + double passValue = this.Current30000ModbusData.PassValue; + double overValue = this.Current30000ModbusData.OverValue; + double tareValue = this.Current30000ModbusData.TareValue; + + int equipmentStatus; + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + equipmentStatus = 1; + else + equipmentStatus = 0; + + for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++) + { + switch (j) + { + #region Common data + case (int)ModbusDefine._30000_Modbus.UnderRange_High: + length4Value = GetBytes((Single)underValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.UnderRange_Low: + length4Value = GetBytes((Single)underValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus.PassRange_High: + length4Value = GetBytes((Single)passValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.PassRange_Low: + length4Value = GetBytes((Single)passValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus.OverRange_High: + length4Value = GetBytes((Single)overValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.OverRange_Low: + length4Value = GetBytes((Single)overValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus.TareRange_High: + length4Value = GetBytes((Single)tareValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus.TareRange_Low: + length4Value = GetBytes((Single)tareValue); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #1 + case (int)ModbusDefine._30000_Modbus._1_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[0].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[0].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._1_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[0].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #2 + case (int)ModbusDefine._30000_Modbus._2_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[1].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[1].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._2_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[1].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #3 + case (int)ModbusDefine._30000_Modbus._3_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[2].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[2].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._3_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[2].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #4 + case (int)ModbusDefine._30000_Modbus._4_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[3].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[3].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._4_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[3].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #5 + case (int)ModbusDefine._30000_Modbus._5_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[4].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[4].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._5_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[4].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + #region #6 + case (int)ModbusDefine._30000_Modbus._6_Update: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].Update); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_Grade: + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].Grade); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_Weight_High: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[5].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_Weight_Low: + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + length4Value = GetBytes((Single)0.0); + else + length4Value = GetBytes((Single)this.Current30000ModbusData.ModbusLaneData[5].Weight); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_UnderCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_UnderCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].UnderCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_PassCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_PassCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].PassCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_OverCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_OverCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].OverCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_NGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_NgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].NGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_ExNGCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_ExNgCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].ExNGCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_TotalCount_High: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[3 - i]; + break; + case (int)ModbusDefine._30000_Modbus._6_TotalCount_Low: + length4Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[5].TotalCount); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length4Value[1 - i]; + break; + #endregion + + default: + length2Value = GetBytes(0); + for (int i = 0; i < 2; i++) + madeData[madeDataIndex + i] = length2Value[1 - i]; + break; + } + madeDataIndex += 2; + } + #endregion + } + + return madeData; + } + #endregion + #region Serial CH3 + private void SerialUart3Open() + { + if (this.serialPort3.IsOpen == true) + this.serialPort3.Close(); + + if (this.SystemConfig.Serial3Mode != 0) + { + this.serialPort3.BaudRate = this.SystemConfig.Serial3BaudRate; + this.serialPort3.Open(); + } + } + + public void SerialCom3Write(string data) + { + this.serialPort3.Write(data); + } + #endregion + #region Ethernet + private void TreatEthernetCommunication(int lane, WeightData data) + { + if (this.SystemConfig.IsEthernetEnable == false) + return; + + string sendData = ""; + + if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f1_OPT1) + { + sendData = this.Protocol_STD1(lane, data); + this.EthernetWrite(sendData); + } + else if (this.SystemConfig.EthernetMode == (int)DataStore.CommunicationMode.f2_OPT2) + { + sendData = this.Protocol_STD2(lane, data); + this.EthernetWrite(sendData); + } + } + private void EthernetWrite(string etherData) + { + if (this.SystemConfig.EthernetOperationMode == 1) + { + if (this.smartTCPMultiServer.ClientInfoList != null) + { + foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList) + this.EthernetServerSendMessage(client, etherData); + } + } + else + this.EthernetClientWeightData(etherData); + } + + #region Server + public void EthernetServerStart() + { + if (this.smartTCPMultiServer.IsStart == false) + { + this.ChildFormCommunication.DisplayLabelLocalPort(false); + this.smartTCPMultiServer.Port = this.SystemConfig.EthernetLocalPort; + this.smartTCPMultiServer.Start(); + } + } + public void EthernetServerStop() + { + if (this.smartTCPMultiServer.IsStart == true) + { + this.ChildFormCommunication.DisplayLabelLocalPort(true); + this.smartTCPMultiServer.Stop(); + } + } + public void EthernetServerSendMessage(SmartTCPMultiServer.CLIENTSINFOS client, string msg) + { + this.smartTCPMultiServer.SendStringASCIIID(client.strID, msg); + } + public void EthernetServerSendMessage(SmartTCPMultiServer.CLIENTSINFOS client, byte[] bytes) + { + this.smartTCPMultiServer.SendByteByClientID(client.strID, bytes); + } + #endregion + + #region Client + Thread cpClientThread; + + public void EthernetClientConnect() + { + if (this.IsEthernetThreadStop == false) + return; // Online 경우 + if (this.SystemConfig.IsEthernetEnable == false) + { + this.TextStatusOut("Thread Error"); + } + } + public void EthernetClientDisconnect() + { + this.IsEthernetThreadStop = true; + this.IsModbusCommonDataSend = false; + this.DelegateUISeverStatus(false); + if (null != this.EthernetStmReader) + this.EthernetStmReader.Close(); + + if (null != this.EthernetStmWriter) + this.EthernetStmWriter.Close(); + + if (null != this.EthernetNetStream) + this.EthernetNetStream.Close(); + + if (null != this.EthernetTcpClient) + this.EthernetTcpClient.Close(); + + if (this.IsCommunicationLogOpen == true) + this.smartFileCommunicationLog.WriteString(string.Format("Client ({0:yyyy-MM-dd HH:mm:ss}): Disconnect", DateTime.Now)); + } + + private void EthernetClientReceiveThread() + { + //this.cpClientThread.Abort(); + + int nConnectPort = Convert.ToInt32(this.SystemConfig.EthernetServerPort); + try + { + this.DelegateTextStatusOut(">Now Connecting.."); + this.EthernetTcpClient = new TcpClient(this.SystemConfig.EthernetServerAddress, nConnectPort); + + this.EthernetNetStream = EthernetTcpClient.GetStream(); + this.EthernetStmReader = new StreamReader(EthernetNetStream); + this.EthernetStmWriter = new StreamWriter(EthernetNetStream); + + this.DelegateUISeverStatus(true); + this.DelegateTextStatusOut(">Connected Server"); + + if (this.IsCommunicationLogOpen == true) + this.smartFileCommunicationLog.WriteString(string.Format("Client ({0:yyyy-MM-dd HH:mm:ss}): Connect", DateTime.Now)); + + this.IsEthernetThreadStop = false; + + // 판정 데이터 전송 + if (this.IsEthernetTransferData == true) + { + this.IsEthernetTransferData = false; + Type type = this.EthernetTransferData.GetType(); + if (type == typeof(string)) + this.DelegateTransferData((string)this.EthernetTransferData); + else if (type == typeof(byte[])) + this.DelegateTransferData((byte[])this.EthernetTransferData); + else if (type == typeof(byte)) + this.DelegateTransferData((byte)this.EthernetTransferData); + } + + while (this.IsEthernetThreadStop == false) + { + string strRecvMsg = ""; + char[] datas = new char[12]; + int sum = 0; + + try + { + //strRecvMsg = this.EthernetStmReader.ReadLine(); + this.EthernetStmReader.Read(datas, 0, datas.Length); + for (int i = 0; i < datas.Length; i++) + sum += datas[i]; + if (sum == 0) + return; + + strRecvMsg = BitConverter.ToString(Encoding.UTF8.GetBytes(datas)); + + if (this.IsCommunicationLogOpen == true) + this.smartFileCommunicationLog.WriteString(string.Format("Client Receive ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, strRecvMsg)); + + if (null == strRecvMsg) + { + this.DelegateTextStatusOut(">Server Out"); + this.IsEthernetThreadStop = true; + break; + } + + this.DelegateTextStatusOut(strRecvMsg); + } + catch + { + this.DelegateTextStatusOut(">Server Out"); + this.IsEthernetThreadStop = true; + } + } + } + catch + { + this.DelegateTextStatusOut(">Connect Fail !"); + } + finally + { + this.IsEthernetThreadStop = true; + this.DelegateUISeverStatus(false); + this.DelegateTextStatusOut(">Disconnected Server"); + if (null != this.EthernetStmReader) + this.EthernetStmReader.Close(); + + if (null != this.EthernetStmWriter) + this.EthernetStmWriter.Close(); + + if (null != this.EthernetNetStream) + this.EthernetNetStream.Close(); + + if (null != this.EthernetTcpClient) + this.EthernetTcpClient.Close(); + + if (this.IsCommunicationLogOpen == true) + this.smartFileCommunicationLog.WriteString(string.Format("Client ({0:yyyy-MM-dd HH:mm:ss}): Disconnect", DateTime.Now)); + } + + return; + } + + private void UIServerStatus(bool status) + { + if (this.ChildFormMainDisplay != null) + this.ChildFormMainDisplay.UpdateEthernetStatusDisplay(status); + } + private void DelegateUISeverStatus(bool status) + { + this.Invoke(new UIServerStatusCallback(this.UIServerStatus), status); + } + + private void TextStatusOut(string value) + { + if (this.ChildFormCommunication != null) + this.ChildFormCommunication.UpdateEthernetStatusDisplay(value); + } + private void DelegateTextStatusOut(string value) + { + this.Invoke(new TextStatusCallback(this.TextStatusOut), value); + } + + private void DelegateTransferData(string data) + { + this.Invoke(new TransferDataStringCallback(this.EthernetClientSendMessage), data); + } + private void DelegateTransferData(byte[] data) + { + this.Invoke(new TransferDataByteArrayCallback(this.EthernetClientSendMessage), data); + } + private void DelegateTransferData(byte data) + { + this.Invoke(new TransferDataStringCallback(this.EthernetClientSendMessage), data); + } + public void EthernetClientSendMessage(string msg) + { + try + { + this.EthernetStmWriter.Write(msg); + this.EthernetStmWriter.Flush(); + + // 로그 + if (this.IsCommunicationLogOpen == true) + this.smartFileCommunicationLog.WriteString(string.Format("Client Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, msg)); + } + catch + { + this.DelegateUISeverStatus(false); + this.DelegateTextStatusOut("> Disconnect"); + } + } + public void EthernetClientSendMessage(byte[] msg) + { + try + { + this.EthernetStmWriter.BaseStream.Write(msg, 0, msg.Length); + this.EthernetStmWriter.Flush(); + + // 로그 + if (this.IsCommunicationLogOpen == true) + this.smartFileCommunicationLog.WriteString(string.Format("Client Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(msg))); + } + catch + { + this.DelegateUISeverStatus(false); + this.DelegateTextStatusOut("> Disconnect"); + } + } + public void EthernetClientSendMessage(byte msg) + { + try + { + this.EthernetStmWriter.WriteLine(msg); + this.EthernetStmWriter.Flush(); + + // 로그 + if (this.IsCommunicationLogOpen == true) + this.smartFileCommunicationLog.WriteString(string.Format("Client Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, msg)); + } + catch + { + this.DelegateUISeverStatus(false); + this.DelegateTextStatusOut("> Disconnect"); + } + } + public void EthernetClientWeightData(string strTemp) + { + this.IsEthernetTransferData = true; + this.EthernetTransferData = strTemp; + + if (this.IsEthernetThreadStop == true) + this.EthernetClientConnect(); + else + this.EthernetClientSendMessage((string)this.EthernetTransferData); + } + public void EthernetClientWeightData(byte temp) + { + this.IsEthernetTransferData = true; + this.EthernetTransferData = temp; + + if (this.IsEthernetThreadStop == true) + this.EthernetClientConnect(); + else + this.EthernetClientSendMessage((byte)this.EthernetTransferData); + } + public void EthernetClientWeightDataForModbus(byte[] bytes) + { + this.IsEthernetTransferData = true; + this.EthernetTransferData = bytes; + + if (this.IsEthernetThreadStop == true) + this.EthernetClientConnect(); + else + this.EthernetClientSendMessage(bytes); + } + #endregion + #endregion + #region Modbus + public static byte[] GetBytes(int argument) + { + byte[] byteArray = BitConverter.GetBytes(argument); + return byteArray; + } + public static byte[] GetBytes(Single argument) + { + byte[] byteArray = BitConverter.GetBytes(argument); + return byteArray; + } + public static byte[] GetBytes(uint argument) + { + byte[] byteArray = BitConverter.GetBytes(argument); + return byteArray; + } + + public ushort Grade(DataStore.JudgmentStatus status) + { + ushort judgmentStatus = 0; + + switch (status) + { + case DataStore.JudgmentStatus.Over: + judgmentStatus = 0; + break; + case DataStore.JudgmentStatus.Pass: + judgmentStatus = 1; + break; + case DataStore.JudgmentStatus.Under: + judgmentStatus = 2; + break; + case DataStore.JudgmentStatus.Double: + judgmentStatus = 3; + break; + case DataStore.JudgmentStatus.EXNg: + judgmentStatus = 4; + break; + case DataStore.JudgmentStatus.SensorError: + judgmentStatus = 5; + break; + default: + judgmentStatus = 0; + break; + } + + return judgmentStatus; + } + + private void Update30000UpdateData(int index) + { + if (this.CollectionWeightData[index].UpdateCount > 65535) + this.CollectionWeightData[index].UpdateCount = 0; + else + this.CollectionWeightData[index].UpdateCount++; + + this.Current30000ModbusData.ModbusLaneData[index].Update = this.CollectionWeightData[index].UpdateCount; + } + public void Update30000ModbusData() + { + for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++) + this.Update30000UpdateData(i); + + this.Current30000ModbusData.UnderValue = Helper.StringToWeight(this.CurrentProductItem.UnderRange, this.SystemConfig.DecimalPlaces); + this.Current30000ModbusData.PassValue = Helper.StringToWeight(this.CurrentProductItem.PassRange, this.SystemConfig.DecimalPlaces); + this.Current30000ModbusData.OverValue = Helper.StringToWeight(this.CurrentProductItem.OverRange, this.SystemConfig.DecimalPlaces); + this.Current30000ModbusData.TareValue = Helper.StringToWeight(this.CurrentProductItem.TareRange, this.SystemConfig.DecimalPlaces); + } + public void Update30000ModbusData(int index) + { + this.Update30000UpdateData(index); + + this.Current30000ModbusData.ModbusLaneData[index].Grade = this.Grade(this.CollectionWeightData[index].JudgmentStatus); + this.Current30000ModbusData.ModbusLaneData[index].Weight = this.CollectionWeightData[index].Weight; + this.Current30000ModbusData.ModbusLaneData[index].UnderCount = (UInt32)this.CollectionWeightData[index].UnderCount; + this.Current30000ModbusData.ModbusLaneData[index].PassCount = (UInt32)this.CollectionWeightData[index].PassCount; + this.Current30000ModbusData.ModbusLaneData[index].OverCount = (UInt32)this.CollectionWeightData[index].OverCount; + this.Current30000ModbusData.ModbusLaneData[index].ExNGCount = (UInt32)this.CollectionWeightData[index].ExNGCount; + } + + // Common 값 변경 시 통신전송 (Client 일때 전송) + public void ModbusCommonDataSend() + { + if (this.SystemConfig.EthernetOperationMode == 2) + { + byte[] etherByteData = this.Modbus.WriteMultipleRegisterTCP( + this.Protocol_Modbus_Client_Write_Common_Data_TCP(), this.SystemConfig.ModbusTcpStartAddress); + this.EthernetClientWeightDataForModbus(etherByteData); + } + } + // Lane Test 통신전송 + public void ModbusLaneTestDataSend(int lane) + { + // 이더넷 + if (this.SystemConfig.EthernetOperationMode == 1) + { + byte[] etherByteData = this.Modbus.WriteMultipleRegisterTCP(this.Protocol_Modbus_Client_Write_Common_Data_TCP(), 1010 + 140 + (lane * 50)); + + if (this.smartTCPMultiServer.ClientInfoList != null) + { + foreach (SmartTCPMultiServer.CLIENTSINFOS info in this.smartTCPMultiServer.ClientInfoList) + this.EthernetServerSendMessage(info, etherByteData); + } + } + else if (this.SystemConfig.EthernetOperationMode == 2) + { + byte[] etherByteData = this.Modbus.WriteMultipleRegisterTCP( + this.Protocol_Modbus_Client_Write_Lane_Test_Data(lane), this.SystemConfig.ModbusTcpStartAddress + 140 + (lane * 50)); + this.EthernetClientWeightDataForModbus(etherByteData); + } + } + public byte[] Protocol_Modbus_Client_Write_Lane_Test_Data(int laneIndex) + { + int index = 0; + byte[] madeData = new byte[32]; + byte[] length4Value = new byte[4]; + byte[] length2Value = new byte[2]; + + var random = new Random(); + Single ranDouble = Single.Parse(string.Format("{0:F2}", random.NextDouble())); + + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].Update); + for (int i = 0; i < 2; i++) + madeData[i] = length2Value[1 - i]; + + length2Value = GetBytes(this.Current30000ModbusData.ModbusLaneData[laneIndex].Grade); + for (int i = 0; i < 2; i++) + madeData[2 + i] = length2Value[1 - i]; + + length4Value = GetBytes(ranDouble + random.Next(999)); + for (int i = 0; i < 4; i++) + madeData[4 + i] = length4Value[3 - i]; + + length4Value = GetBytes(random.Next(9999999)); + for (int i = 0; i < 4; i++) + madeData[8 + i] = length4Value[3 - i]; + + length4Value = GetBytes(random.Next(9999999)); + for (int i = 0; i < 4; i++) + madeData[12 + i] = length4Value[3 - i]; + + length4Value = GetBytes(random.Next(9999999)); + for (int i = 0; i < 4; i++) + madeData[16 + i] = length4Value[3 - i]; + + length4Value = GetBytes(random.Next(9999999)); + for (int i = 0; i < 4; i++) + madeData[20 + i] = length4Value[3 - i]; + + length4Value = GetBytes(random.Next(9999999)); + for (int i = 0; i < 4; i++) + madeData[24 + i] = length4Value[3 - i]; + + length4Value = GetBytes(random.Next(9999999)); + for (int i = 0; i < 4; i++) + madeData[28 + i] = length4Value[3 - i]; + + return madeData; + } + /// + /// Modbus TCP - Write Multiple Register에 대한 Manage 메소드 + /// + /// 전송받은 Modbus Data + public void ReceiveModbusTCPWriteManager(byte[] readByte) + { + int startAddressInt; + int numberOfRegisterInt; + float floatNum; + byte[] startAddressByte = new byte[2] { readByte[8], readByte[9] }; + byte[] numberOfRegisterByte = new byte[2] { readByte[10], readByte[11] }; + + int madeDataIndex = 0; + byte[] Length2Value = new byte[2]; + byte[] Length4Value = new byte[4]; + byte[] Length12Value = new byte[12]; + byte[] Length14Value = new byte[14]; + + startAddressInt = Modbus.ToBigEndianAndInt(startAddressByte); + numberOfRegisterInt = Modbus.ToBigEndianAndInt(numberOfRegisterByte); + + for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++) + { + switch (j) + { + #region Change data + case Modbus_40000_Address._01_Clear: + #region 40011_소거 요청 + for (int i = 0; i < 2; i++) + Length2Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40011_Clear = Modbus.ToBigEndianAndInt(Length2Value); + + if (this.Current40000ModbusData._40011_Clear == 1) + { + try + { + this.ChildFormMainDisplay.Clear(); + + // 변수 초기화 + this.Current40000ModbusData._40011_Clear = 0; + + // 성공 + this.Current40000ModbusData._40012_ClearResult = 1; + + //// Part 11 Log + //if (this.SystemConfig.IsOptPart11 == true) + // this.SetTrackingHistoryData(DataStore.E_TrackingOperation.MB_Clear, ""); + } + catch + { + // 실패 + this.Current40000ModbusData._40012_ClearResult = 2; + } + } + #endregion + break; + case Modbus_40000_Address._02_ClearResult: + #region 40012_소거 요청 결과 + for (int i = 0; i < 2; i++) + Length2Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40012_ClearResult = Modbus.ToBigEndianAndInt(Length2Value); + #endregion + break; + case Modbus_40000_Address._03_Operation: + #region 40013_운전/정지 요청, 1:운전/2:정지 + for (int i = 0; i < 2; i++) + Length2Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40013_Operation = Modbus.ToBigEndianAndInt(Length2Value); + + if (this.Current40000ModbusData._40013_Operation != 0) + { + try + { + if (this.Current40000ModbusData._40013_Operation == 1) + { + this.TransferData(CommunicationCommand.Start, CommunicationID.MainBoard); + + //// Part 11 Log + //if (this.SystemConfig.IsOptPart11 == true) + // this.SetTrackingHistoryData(DataStore.E_TrackingOperation.MB_EquipmentStart, ""); + } + else + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + //// Part 11 Log + //if (this.SystemConfig.IsOptPart11 == true) + // this.SetTrackingHistoryData(DataStore.E_TrackingOperation.MB_EquipmentStop, ""); + } + + // 변수 초기화 + this.Current40000ModbusData._40013_Operation = 0; + + // 성공 + this.Current40000ModbusData._40014_OperationResult = 1; + } + catch + { + // 실패 + this.Current40000ModbusData._40014_OperationResult = 2; + } + } + #endregion + break; + case Modbus_40000_Address._04_OperationResult: + #region 40014_운전/정지 요청 수행 결과 + for (int i = 0; i < 2; i++) + Length2Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40014_OperationResult = Modbus.ToBigEndianAndInt(Length2Value); + #endregion + break; + case Modbus_40000_Address._05_ProductChange_High: + #region 40015_품번 변경 요청 + for (int i = 0; i < 4; i++) + Length4Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40015_ProductChange = Modbus.ToBigEndianAndInt(Length4Value); + + if (this.Current40000ModbusData._40015_ProductChange != 0) + { + try + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Stop) + { + if (this.Current40000ModbusData._40015_ProductChange >= 1 && this.Current40000ModbusData._40015_ProductChange <= 1000) + this.ChildFormMainDisplay.ProductChange(this.Current40000ModbusData._40015_ProductChange); + + //// Part 11 Log + //if (this.SystemConfig.IsOptPart11 == true) + //{ + // string before = "", after = ""; + // before = this.SystemConfig.ProductNumber.ToString(); + // after = this.Current40000ModbusData._40015_ProductChange.ToString(); + + // this.SetTrackingHistoryData(DataStore.TrackingParameter.MB_ProductNumber, "", before, after); + //} + + // 변수 초기화 + this.Current40000ModbusData._40015_ProductChange = 0; + + // 성공 + this.Current40000ModbusData._40017_ProductChangeResult = 1; + } + else + { + this.Current40000ModbusData._40015_ProductChange = 0; + this.Current40000ModbusData._40017_ProductChangeResult = 2; + } + } + catch + { + // 실패 + this.Current40000ModbusData._40017_ProductChangeResult = 2; + } + } + #endregion + break; + case Modbus_40000_Address._07_ProductChangeResult: + #region 40017_품번 변경 요청 수행 결과 + for (int i = 0; i < 2; i++) + Length2Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40017_ProductChangeResult = Modbus.ToBigEndianAndInt(Length2Value); + #endregion + break; + case Modbus_40000_Address._08_UnderRange_High: + #region 40018_Under 중량설정 요청 + for (int i = 0; i < 4; i++) + Length4Value[i] = readByte[13 + madeDataIndex + i]; + floatNum = Modbus.ToBigEndianAndFloat(Length4Value); + this.Current40000ModbusData._40018_UnderRange = + int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig.DecimalPlaces).Replace(".", "")); + + if (this.Current40000ModbusData._40018_UnderRange >= 0 && this.Current40000ModbusData._40018_UnderRange <= int.Parse(this.CurrentProductItem.PassRange)) + { + try + { + string weight = Helper.StringToDecimalPlaces(this.Current40000ModbusData._40018_UnderRange.ToString(), this.SystemConfig.DecimalPlaces); + this.ChildFormMainDisplay.UpdateUnderRangeChange(weight); + + this.Update30000ModbusData(); + this.ModbusCommonDataSend(); + + // 변수 초기화 + this.Current40000ModbusData._40018_UnderRange = 0; + // 성공 + this.Current40000ModbusData._40020_UnderRangeResult = 1; + } + catch + { + // 실패 + this.Current40000ModbusData._40020_UnderRangeResult = 2; + } + } + else + { + // 실패 + this.Current40000ModbusData._40020_UnderRangeResult = 2; + } + #endregion + break; + case Modbus_40000_Address._10_UnderRangeResult: + #region 40020_Under 중량설정 요청 수행 결과 + for (int i = 0; i < 2; i++) + Length2Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40020_UnderRangeResult = Modbus.ToBigEndianAndInt(Length2Value); + #endregion + break; + case Modbus_40000_Address._11_PassRange_High: + #region 40021_Pass 중량설정 요청 + for (int i = 0; i < 4; i++) + Length4Value[i] = readByte[13 + madeDataIndex + i]; + floatNum = Modbus.ToBigEndianAndFloat(Length4Value); + this.Current40000ModbusData._40021_PassRange = + int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig.DecimalPlaces).Replace(".", "")); + + if (this.Current40000ModbusData._40021_PassRange >= int.Parse(this.CurrentProductItem.UnderRange) + && this.Current40000ModbusData._40021_PassRange <= int.Parse(this.CurrentProductItem.OverRange)) + { + try + { + string weight = Helper.StringToDecimalPlaces(this.Current40000ModbusData._40021_PassRange.ToString(), this.SystemConfig.DecimalPlaces); + this.ChildFormMainDisplay.UpdatePassRangeChange(weight); + + this.Update30000ModbusData(); + this.ModbusCommonDataSend(); + + // 변수 초기화 + this.Current40000ModbusData._40021_PassRange = 0; + // 성공 + this.Current40000ModbusData._40023_PassRangeResult = 1; + } + catch + { + // 실패 + this.Current40000ModbusData._40023_PassRangeResult = 2; + } + } + else + { + // 실패 + this.Current40000ModbusData._40023_PassRangeResult = 2; + } + #endregion + break; + case Modbus_40000_Address._13_PassRangeResult: + #region 40023_Pass 중량설정 요청 수행 결과 + for (int i = 0; i < 2; i++) + Length2Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40023_PassRangeResult = Modbus.ToBigEndianAndInt(Length2Value); + #endregion + break; + case Modbus_40000_Address._14_OverRange_High: + #region 40024_Over 중량설정 요청 + for (int i = 0; i < 4; i++) + Length4Value[i] = readByte[13 + madeDataIndex + i]; + floatNum = Modbus.ToBigEndianAndFloat(Length4Value); + this.Current40000ModbusData._40024_OverRange = + int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig.DecimalPlaces).Replace(".", "")); + + if (this.Current40000ModbusData._40024_OverRange >= int.Parse(this.CurrentProductItem.PassRange) + && this.Current40000ModbusData._40024_OverRange <= 99999) + { + try + { + string weight = Helper.StringToDecimalPlaces(this.Current40000ModbusData._40024_OverRange.ToString(), this.SystemConfig.DecimalPlaces); + this.ChildFormMainDisplay.UpdateOverRangeChange(weight); + + this.Update30000ModbusData(); + this.ModbusCommonDataSend(); + + // 변수 초기화 + this.Current40000ModbusData._40024_OverRange = 0; + // 성공 + this.Current40000ModbusData._40026_OverRangeResult = 1; + } + catch + { + // 실패 + this.Current40000ModbusData._40026_OverRangeResult = 2; + } + } + else + { + // 실패 + this.Current40000ModbusData._40026_OverRangeResult = 2; + } + #endregion + break; + case Modbus_40000_Address._16_OverRangeResult: + #region 40026_Over 중량설정 요청 수행 결과 + for (int i = 0; i < 2; i++) + Length2Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40026_OverRangeResult = Modbus.ToBigEndianAndInt(Length2Value); + #endregion + break; + case Modbus_40000_Address._17_TareWeight_High: + #region 40027_Tare 중량설정 요청 + for (int i = 0; i < 4; i++) + Length4Value[i] = readByte[13 + madeDataIndex + i]; + floatNum = Modbus.ToBigEndianAndFloat(Length4Value); + this.Current40000ModbusData._40027_TareWeight = + int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig.DecimalPlaces).Replace(".", "")); + + if (this.Current40000ModbusData._40027_TareWeight >= 0 && this.Current40000ModbusData._40027_TareWeight <= 99999) + { + try + { + string weight = Helper.StringToDecimalPlaces(this.Current40000ModbusData._40027_TareWeight.ToString(), this.SystemConfig.DecimalPlaces); + this.ChildFormMainDisplay.UpdateTareRangeChange(weight); + + this.Update30000ModbusData(); + this.ModbusCommonDataSend(); + + // 변수 초기화 + this.Current40000ModbusData._40027_TareWeight = 0; + // 성공 + this.Current40000ModbusData._40029_TareWeightResult = 1; + } + catch + { + // 실패 + this.Current40000ModbusData._40029_TareWeightResult = 2; + } + } + else + { + // 실패 + this.Current40000ModbusData._40029_TareWeightResult = 2; + } + #endregion + break; + case Modbus_40000_Address._19_TareWeightResult: + #region 40029_Tare 중량설정 요청 수행 결과 + for (int i = 0; i < 2; i++) + Length2Value[i] = readByte[13 + madeDataIndex + i]; + this.Current40000ModbusData._40029_TareWeightResult = Modbus.ToBigEndianAndInt(Length2Value); + #endregion + break; + default: + break; + #endregion + } + madeDataIndex += 2; + } + } + #endregion + #region SystemConfiguration File private void CreateSystemConfigurationFile() { @@ -1964,7 +4572,7 @@ namespace INT89DB_26.Forms structItem.DummyBool4 = false; structItem.DummyInt1 = 0; structItem.DummyInt2 = 0; - structItem.DummyInt8 = 0; + structItem.ModbusTcpStartAddress = this.SystemConfig.ModbusTcpStartAddress; structItem.EthernetServerAddress = this.SystemConfig.EthernetServerAddress; structItem.DummyString2 = ""; @@ -2027,7 +4635,7 @@ namespace INT89DB_26.Forms structItem.DummyBool4 = false; structItem.DummyInt1 = 0; structItem.DummyInt2 = 0; - structItem.DummyInt8 = 0; + structItem.ModbusTcpStartAddress = item.ModbusTcpStartAddress; structItem.EthernetServerAddress = item.EthernetServerAddress; structItem.DummyString2 = ""; @@ -2103,6 +4711,14 @@ namespace INT89DB_26.Forms this.SystemConfig.EthernetOperationMode = structItem.EthernetOperationMode; this.SystemConfig.EthernetServerAddress = structItem.EthernetServerAddress; } + + if (structItem.ModbusTcpStartAddress == 0) + { + save = true; + this.SystemConfig.ModbusTcpStartAddress = 1010; + } + else + this.SystemConfig.ModbusTcpStartAddress = structItem.ModbusTcpStartAddress; } catch { diff --git a/INT89DB_26/Forms/FormMainDisplay.cs b/INT89DB_26/Forms/FormMainDisplay.cs index 20ce3ce..d5fc492 100644 --- a/INT89DB_26/Forms/FormMainDisplay.cs +++ b/INT89DB_26/Forms/FormMainDisplay.cs @@ -579,9 +579,13 @@ namespace INT89DB_26.Forms this.RescaleProgressBar(); - // FeedBack Range Setting - this.ParentForm.CurrentFeedBackRangeItem.SetRange(int.Parse(this.ParentForm.CurrentProductItem.OverRange), - int.Parse(this.ParentForm.CurrentProductItem.PassRange), int.Parse(this.ParentForm.CurrentProductItem.UnderRange)); + this.buttonProductNo.Enabled = true; + this.buttonMenu.Enabled = true; + this.buttonSubMenu.Enabled = true; + this.buttonUnder.Enabled = true; + this.buttonPass.Enabled = true; + this.buttonOver.Enabled = true; + this.buttonTare.Enabled = true; } public void UpdateEquipmentStatusDisplay(DataStore.EquipmentStatus status) { @@ -839,26 +843,6 @@ namespace INT89DB_26.Forms this.SetTotalCount(); } - public void UpdateFeedBack1(string temp) - { - this.MainDisplay5.UpdateFeedBack1(temp); - } - public void UpdateFeedBack2(string temp) - { - this.MainDisplay5.UpdateFeedBack2(temp); - } - public void UpdateFeedBack3(string temp) - { - this.MainDisplay5.UpdateFeedBack3(temp); - } - public void UpdateFeedBack4(string temp) - { - this.MainDisplay5.UpdateFeedBack4(temp); - } - public void UpdateFeedBack5(string temp) - { - this.MainDisplay5.UpdateFeedBack5(temp); - } public void UpdateDisplayAlarmView(AlarmList alarm) { this.MainDisplayAlarmList.listBoxMessage.Items.Clear(); @@ -953,6 +937,94 @@ namespace INT89DB_26.Forms this.timerServer.Enabled = true; } } + public void Clear() + { + switch (this.ParentForm.SystemConfig.EquipmentColumns) + { + case 2: + this.MainDisplay2.Clear(); + break; + case 3: + this.MainDisplay3.Clear(); + break; + case 4: + this.MainDisplay4.Clear(); + break; + case 5: + this.MainDisplay5.Clear(); + break; + case 6: + this.MainDisplay6.Clear(); + break; + default: + break; + } + } + public void ProductChange(int productNumber) + { + this.buttonProductNo.Text = "**"; + + this.buttonProductNo.Enabled = false; + this.buttonMenu.Enabled = false; + this.buttonSubMenu.Enabled = false; + this.buttonUnder.Enabled = false; + this.buttonPass.Enabled = false; + this.buttonOver.Enabled = false; + this.buttonTare.Enabled = false; + this.panelSubMenu.Visible = false; + + this.ParentForm.TransferProductParameter(productNumber); + } + public void UpdateUnderRangeChange(string weight) + { + string value = ""; + + this.buttonUnder.Text = weight; + this.ParentForm.CurrentProductItem.UnderRange = weight.Replace(".", ""); + this.ParentForm.SaveProductFile(this.ParentForm.CurrentProductItem, this.ParentForm.SystemConfig.ProductNumber - 1); + + value = Helper.StringZeroFillDigits7(this.ParentForm.CurrentProductItem.UnderRange); + this.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.UnderRange, value); + + this.RescaleProgressBar(); + } + public void UpdatePassRangeChange(string weight) + { + string value = ""; + + this.buttonPass.Text = weight; + this.ParentForm.CurrentProductItem.PassRange = weight.Replace(".", ""); + this.ParentForm.SaveProductFile(this.ParentForm.CurrentProductItem, this.ParentForm.SystemConfig.ProductNumber - 1); + + value = Helper.StringZeroFillDigits7(this.ParentForm.CurrentProductItem.PassRange); + this.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PassRange, value); + + this.RescaleProgressBar(); + } + public void UpdateOverRangeChange(string weight) + { + string value = ""; + + this.buttonOver.Text = weight; + this.ParentForm.CurrentProductItem.OverRange = weight.Replace(".", ""); + this.ParentForm.SaveProductFile(this.ParentForm.CurrentProductItem, this.ParentForm.SystemConfig.ProductNumber - 1); + + value = Helper.StringZeroFillDigits7(this.ParentForm.CurrentProductItem.OverRange); + this.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OverRange, value); + + this.RescaleProgressBar(); + } + public void UpdateTareRangeChange(string weight) + { + string value = ""; + + this.buttonTare.Text = weight; + this.ParentForm.CurrentProductItem.TareRange = weight.Replace(".", ""); + this.ParentForm.SaveProductFile(this.ParentForm.CurrentProductItem, this.ParentForm.SystemConfig.ProductNumber - 1); + + value = Helper.StringZeroFillDigits7(this.ParentForm.CurrentProductItem.TareRange); + this.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.TareRange, value); + } public void DisplayRefresh() { @@ -1053,16 +1125,12 @@ namespace INT89DB_26.Forms } else { - this.buttonProductNo.Text = "**"; - - this.ParentForm.TransferProductParameter(myKeyPad.IntValue); + this.ProductChange(myKeyPad.IntValue); } } } private void buttonUnder_Click(object sender, EventArgs e) { - string value = ""; - DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.buttonUnder.Text, 5, this.ParentForm.SystemConfig.DecimalPlaces, false, this.ParentForm.SystemConfig.Language); myKeyPad.Location = new Point(270, 70); @@ -1076,26 +1144,12 @@ namespace INT89DB_26.Forms } else { - this.ParentForm.CurrentProductItem.UnderRange = myKeyPad.StringValue.Replace(".", ""); - this.buttonUnder.Text = myKeyPad.StringValue; - - this.RescaleProgressBar(); - - this.ParentForm.SaveProductFile(this.ParentForm.CurrentProductItem, this.ParentForm.SystemConfig.ProductNumber - 1); - - value = Helper.StringZeroFillDigits7(this.ParentForm.CurrentProductItem.UnderRange); - this.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.UnderRange, value); - - // FeedBack Range Setting - this.ParentForm.CurrentFeedBackRangeItem.SetRange(int.Parse(this.ParentForm.CurrentProductItem.OverRange), - int.Parse(this.ParentForm.CurrentProductItem.PassRange), int.Parse(this.ParentForm.CurrentProductItem.UnderRange)); + this.UpdateUnderRangeChange(myKeyPad.StringValue); } } } private void buttonPass_Click(object sender, EventArgs e) { - string value = ""; - DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.buttonPass.Text, 5, this.ParentForm.SystemConfig.DecimalPlaces, false, this.ParentForm.SystemConfig.Language); myKeyPad.Location = new Point(270, 70); @@ -1110,22 +1164,12 @@ namespace INT89DB_26.Forms } else { - this.ParentForm.CurrentProductItem.PassRange = myKeyPad.StringValue.Replace(".", ""); - this.buttonPass.Text = myKeyPad.StringValue; - - this.RescaleProgressBar(); - - this.ParentForm.SaveProductFile(this.ParentForm.CurrentProductItem, this.ParentForm.SystemConfig.ProductNumber - 1); - - value = Helper.StringZeroFillDigits7(this.ParentForm.CurrentProductItem.PassRange); - this.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PassRange, value); + this.UpdatePassRangeChange(myKeyPad.StringValue); } } } private void buttonOver_Click(object sender, EventArgs e) { - string value = ""; - DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.buttonOver.Text, 5, this.ParentForm.SystemConfig.DecimalPlaces, false, this.ParentForm.SystemConfig.Language); myKeyPad.Location = new Point(270, 70); @@ -1139,26 +1183,12 @@ namespace INT89DB_26.Forms } else { - this.ParentForm.CurrentProductItem.OverRange = myKeyPad.StringValue.Replace(".", ""); - this.buttonOver.Text = myKeyPad.StringValue; - - this.RescaleProgressBar(); - - this.ParentForm.SaveProductFile(this.ParentForm.CurrentProductItem, this.ParentForm.SystemConfig.ProductNumber - 1); - - value = Helper.StringZeroFillDigits7(this.ParentForm.CurrentProductItem.OverRange); - this.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OverRange, value); - - // FeedBack Range Setting - this.ParentForm.CurrentFeedBackRangeItem.SetRange(int.Parse(this.ParentForm.CurrentProductItem.OverRange), - int.Parse(this.ParentForm.CurrentProductItem.PassRange), int.Parse(this.ParentForm.CurrentProductItem.UnderRange)); + this.UpdateOverRangeChange(myKeyPad.StringValue); } } } private void buttonTare_Click(object sender, EventArgs e) { - string value = ""; - DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.buttonTare.Text, 5, this.ParentForm.SystemConfig.DecimalPlaces, false, this.ParentForm.SystemConfig.Language); myKeyPad.Location = new Point(270, 70); @@ -1172,13 +1202,7 @@ namespace INT89DB_26.Forms } else { - this.ParentForm.CurrentProductItem.TareRange = myKeyPad.StringValue.Replace(".", ""); - this.buttonTare.Text = myKeyPad.StringValue; - - this.ParentForm.SaveProductFile(this.ParentForm.CurrentProductItem, this.ParentForm.SystemConfig.ProductNumber - 1); - - value = Helper.StringZeroFillDigits7(this.ParentForm.CurrentProductItem.TareRange); - this.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.TareRange, value); + this.UpdateTareRangeChange(myKeyPad.StringValue); } } } @@ -1187,26 +1211,7 @@ namespace INT89DB_26.Forms DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.SystemConfig.Language, 8); if (myDlg.ShowDialog() == DialogResult.Yes) { - switch (this.ParentForm.SystemConfig.EquipmentColumns) - { - case 2: - this.MainDisplay2.Clear(); - break; - case 3: - this.MainDisplay3.Clear(); - break; - case 4: - this.MainDisplay4.Clear(); - break; - case 5: - this.MainDisplay5.Clear(); - break; - case 6: - this.MainDisplay6.Clear(); - break; - default: - break; - } + this.Clear(); } } private void buttonMenu_Click(object sender, EventArgs e) diff --git a/INT89DB_26/INT89DB_26.csproj b/INT89DB_26/INT89DB_26.csproj index 2420708..5e4d412 100644 --- a/INT89DB_26/INT89DB_26.csproj +++ b/INT89DB_26/INT89DB_26.csproj @@ -45,6 +45,10 @@ Off + + False + ..\Document\DLL\InModbus.dll + False ..\INT89DB_26_ImageDll\bin\Release\INT89DB_26_ImageDll.dll @@ -263,6 +267,11 @@ FormUserSetting.cs + + + + + diff --git a/INT89DB_26/InModbus/ModbusDefine.cs b/INT89DB_26/InModbus/ModbusDefine.cs new file mode 100644 index 0000000..dd60855 --- /dev/null +++ b/INT89DB_26/InModbus/ModbusDefine.cs @@ -0,0 +1,238 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; + +namespace INT89DB_26.Int_Modbus +{ + public class ModbusDefine + { + public enum _30000_Modbus + { + UnderRange_High = 1010, + UnderRange_Low = 1011, + PassRange_High = 1012, + PassRange_Low = 1013, + OverRange_High = 1014, + OverRange_Low = 1015, + TareRange_High = 1016, + TareRange_Low = 1017, + HighLimit_High = 1018, + HighLimit_Low = 1019, + DeadZoneHighLimit_High = 1020, + DeadZoneHighLimit_Low = 1021, + DeadZoneLowLimit_High = 1022, + DeadZoneLowLimit_Low = 1023, + LowLimit_High = 1024, + LowLimit_Low = 1025, + SampleCount_High = 1026, + SampleCount_Low = 1027, + IgnoreCount_High = 1028, + IgnoreCount_Low = 1029, + + _1_Update = 1200, + _1_Grade = 1201, + _1_Weight_High = 1202, + _1_Weight_Low = 1203, + _1_UnderCount_High = 1204, + _1_UnderCount_Low = 1205, + _1_PassCount_High = 1206, + _1_PassCount_Low = 1207, + _1_OverCount_High = 1208, + _1_OverCount_Low = 1209, + _1_NGCount_High = 1210, + _1_NgCount_Low = 1211, + _1_ExNGCount_High = 1212, + _1_ExNgCount_Low = 1213, + _1_TotalCount_High = 1214, + _1_TotalCount_Low = 1215, + + _2_Update = 1250, + _2_Grade = 1251, + _2_Weight_High = 1252, + _2_Weight_Low = 1253, + _2_UnderCount_High = 1254, + _2_UnderCount_Low = 1255, + _2_PassCount_High = 1256, + _2_PassCount_Low = 1257, + _2_OverCount_High = 1258, + _2_OverCount_Low = 1259, + _2_NGCount_High = 1260, + _2_NgCount_Low = 1261, + _2_ExNGCount_High = 1262, + _2_ExNgCount_Low = 1263, + _2_TotalCount_High = 1264, + _2_TotalCount_Low = 1265, + + _3_Update = 1300, + _3_Grade = 1301, + _3_Weight_High = 1302, + _3_Weight_Low = 1303, + _3_UnderCount_High = 1304, + _3_UnderCount_Low = 1305, + _3_PassCount_High = 1306, + _3_PassCount_Low = 1307, + _3_OverCount_High = 1308, + _3_OverCount_Low = 1309, + _3_NGCount_High = 1310, + _3_NgCount_Low = 1311, + _3_ExNGCount_High = 1312, + _3_ExNgCount_Low = 1313, + _3_TotalCount_High = 1314, + _3_TotalCount_Low = 1315, + + _4_Update = 1350, + _4_Grade = 1351, + _4_Weight_High = 1352, + _4_Weight_Low = 1353, + _4_UnderCount_High = 1354, + _4_UnderCount_Low = 1355, + _4_PassCount_High = 1356, + _4_PassCount_Low = 1357, + _4_OverCount_High = 1358, + _4_OverCount_Low = 1359, + _4_NGCount_High = 1360, + _4_NgCount_Low = 1361, + _4_ExNGCount_High = 1362, + _4_ExNgCount_Low = 1363, + _4_TotalCount_High = 1364, + _4_TotalCount_Low = 1365, + + _5_Update = 1400, + _5_Grade = 1401, + _5_Weight_High = 1402, + _5_Weight_Low = 1403, + _5_UnderCount_High = 1404, + _5_UnderCount_Low = 1405, + _5_PassCount_High = 1406, + _5_PassCount_Low = 1407, + _5_OverCount_High = 1408, + _5_OverCount_Low = 1409, + _5_NGCount_High = 1410, + _5_NgCount_Low = 1411, + _5_ExNGCount_High = 1412, + _5_ExNgCount_Low = 1413, + _5_TotalCount_High = 1414, + _5_TotalCount_Low = 1415, + + _6_Update = 1450, + _6_Grade = 1451, + _6_Weight_High = 1452, + _6_Weight_Low = 1453, + _6_UnderCount_High = 1454, + _6_UnderCount_Low = 1455, + _6_PassCount_High = 1456, + _6_PassCount_Low = 1457, + _6_OverCount_High = 1458, + _6_OverCount_Low = 1459, + _6_NGCount_High = 1460, + _6_NgCount_Low = 1461, + _6_ExNGCount_High = 1462, + _6_ExNgCount_Low = 1463, + _6_TotalCount_High = 1464, + _6_TotalCount_Low = 1465, + + _7_Update = 1500, + _7_Grade = 1501, + _7_Weight_High = 1502, + _7_Weight_Low = 1503, + _7_UnderCount_High = 1504, + _7_UnderCount_Low = 1505, + _7_PassCount_High = 1506, + _7_PassCount_Low = 1507, + _7_OverCount_High = 1508, + _7_OverCount_Low = 1509, + _7_NGCount_High = 1510, + _7_NgCount_Low = 1511, + _7_ExNGCount_High = 1512, + _7_ExNgCount_Low = 1513, + _7_TotalCount_High = 1514, + _7_TotalCount_Low = 1515, + + _8_Update = 1550, + _8_Grade = 1551, + _8_Weight_High = 1552, + _8_Weight_Low = 1553, + _8_UnderCount_High = 1554, + _8_UnderCount_Low = 1555, + _8_PassCount_High = 1556, + _8_PassCount_Low = 1557, + _8_OverCount_High = 1558, + _8_OverCount_Low = 1559, + _8_NGCount_High = 1560, + _8_NgCount_Low = 1561, + _8_ExNGCount_High = 1562, + _8_ExNgCount_Low = 1563, + _8_TotalCount_High = 1564, + _8_TotalCount_Low = 1565, + + _9_Update = 1600, + _9_Grade = 1601, + _9_Weight_High = 1602, + _9_Weight_Low = 1603, + _9_UnderCount_High = 1604, + _9_UnderCount_Low = 1605, + _9_PassCount_High = 1606, + _9_PassCount_Low = 1607, + _9_OverCount_High = 1608, + _9_OverCount_Low = 1609, + _9_NGCount_High = 1610, + _9_NgCount_Low = 1611, + _9_ExNGCount_High = 1612, + _9_ExNgCount_Low = 1613, + _9_TotalCount_High = 1614, + _9_TotalCount_Low = 1615, + + _10_Update = 1650, + _10_Grade = 1651, + _10_Weight_High = 1652, + _10_Weight_Low = 1653, + _10_UnderCount_High = 1654, + _10_UnderCount_Low = 1655, + _10_PassCount_High = 1656, + _10_PassCount_Low = 1657, + _10_OverCount_High = 1658, + _10_OverCount_Low = 1659, + _10_NGCount_High = 1660, + _10_NgCount_Low = 1661, + _10_ExNGCount_High = 1662, + _10_ExNgCount_Low = 1663, + _10_TotalCount_High = 1664, + _10_TotalCount_Low = 1665, + + _11_Update = 1700, + _11_Grade = 1701, + _11_Weight_High = 1702, + _11_Weight_Low = 1703, + _11_UnderCount_High = 1704, + _11_UnderCount_Low = 1705, + _11_PassCount_High = 1706, + _11_PassCount_Low = 1707, + _11_OverCount_High = 1708, + _11_OverCount_Low = 1709, + _11_NGCount_High = 1710, + _11_NgCount_Low = 1711, + _11_ExNGCount_High = 1712, + _11_ExNgCount_Low = 1713, + _11_TotalCount_High = 1714, + _11_TotalCount_Low = 1715, + + _12_Update = 1750, + _12_Grade = 1751, + _12_Weight_High = 1752, + _12_Weight_Low = 1753, + _12_UnderCount_High = 1754, + _12_UnderCount_Low = 1755, + _12_PassCount_High = 1756, + _12_PassCount_Low = 1757, + _12_OverCount_High = 1758, + _12_OverCount_Low = 1759, + _12_NGCount_High = 1760, + _12_NgCount_Low = 1761, + _12_ExNGCount_High = 1762, + _12_ExNgCount_Low = 1763, + _12_TotalCount_High = 1764, + _12_TotalCount_Low = 1765, + } + } +} diff --git a/INT89DB_26/InModbus/Modbus_30000_Data.cs b/INT89DB_26/InModbus/Modbus_30000_Data.cs new file mode 100644 index 0000000..c8ee47a --- /dev/null +++ b/INT89DB_26/InModbus/Modbus_30000_Data.cs @@ -0,0 +1,121 @@ +using System; +using System.Linq; +using System.Collections.ObjectModel; +using System.Collections.Generic; +using System.Text; + +namespace INT89DB_26.Int_Modbus +{ + public class Modbus_30000_Data + { + #region Field + private double m_UnderValue; + private double m_PassValue; + private double m_OverValue; + private double m_TareValue; + + private Collection m_LaneModbusData; + #endregion + + #region Constructor + public Modbus_30000_Data() + { + this.Initialization(); + } + #endregion + + #region Property + public double UnderValue + { + get { return this.m_UnderValue; } + set { this.m_UnderValue = value; } + } + public double PassValue + { + get { return this.m_PassValue; } + set { this.m_PassValue = value; } + } + public double OverValue + { + get { return this.m_OverValue; } + set { this.m_OverValue = value; } + } + public double TareValue + { + get { return this.m_TareValue; } + set { this.m_TareValue = value; } + } + + public string HexStringUnderValue + { + get + { + byte[] bytes = BitConverter.GetBytes((float)this.UnderValue); + Array.Reverse(bytes); + string hexString = BitConverter.ToString(bytes); + hexString = hexString.Replace("-", ""); + + return hexString; + } + } + public string HexStringPassValue + { + get + { + byte[] bytes = BitConverter.GetBytes((float)this.PassValue); + Array.Reverse(bytes); + string hexString = BitConverter.ToString(bytes); + hexString = hexString.Replace("-", ""); + + return hexString; + } + } + public string HexStringOverValue + { + get + { + byte[] bytes = BitConverter.GetBytes((float)this.OverValue); + Array.Reverse(bytes); + string hexString = BitConverter.ToString(bytes); + hexString = hexString.Replace("-", ""); + + return hexString; + } + } + public string HexStringTareValue + { + get + { + byte[] bytes = BitConverter.GetBytes((float)this.TareValue); + Array.Reverse(bytes); + string hexString = BitConverter.ToString(bytes); + hexString = hexString.Replace("-", ""); + + return hexString; + } + } + + public Collection ModbusLaneData + { + get { return this.m_LaneModbusData; } + set { this.m_LaneModbusData = value; } + } + #endregion + + #region Method + public void Initialization() + { + this.UnderValue = 100.0; + this.PassValue = 200.0; + this.OverValue = 300.0; + this.TareValue = 0.0; + + this.ModbusLaneData = new Collection(); + this.ModbusLaneData.Clear(); + + for (int i = 0; i < 15; i++) + this.ModbusLaneData.Add(new Modbus_30000_LaneData()); + } + #endregion + } +} diff --git a/INT89DB_26/InModbus/Modbus_30000_LaneData.cs b/INT89DB_26/InModbus/Modbus_30000_LaneData.cs new file mode 100644 index 0000000..c0c624e --- /dev/null +++ b/INT89DB_26/InModbus/Modbus_30000_LaneData.cs @@ -0,0 +1,163 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; + +namespace INT89DB_26.Int_Modbus +{ + public class Modbus_30000_LaneData + { + #region Field + private ushort m_Update; + private ushort m_Grade; + private double m_Weight; + private UInt32 m_UnderCount; + private UInt32 m_PassCount; + private UInt32 m_OverCount; + private UInt32 m_ExNGCount; + #endregion + + #region Constructor + public Modbus_30000_LaneData() + { + this.Initialization(); + } + #endregion + + #region Property + public ushort Update + { + get { return this.m_Update; } + set { this.m_Update = value; } + } + public ushort Grade + { + get { return this.m_Grade; } + set { this.m_Grade = value; } + } + public double Weight + { + get { return this.m_Weight; } + set { this.m_Weight = value; } + } + public UInt32 UnderCount + { + get { return this.m_UnderCount; } + set { this.m_UnderCount = value; } + } + public UInt32 PassCount + { + get { return this.m_PassCount; } + set { this.m_PassCount = value; } + } + public UInt32 OverCount + { + get { return this.m_OverCount; } + set { this.m_OverCount = value; } + } + public UInt32 ExNGCount + { + get { return this.m_ExNGCount; } + set { this.m_ExNGCount = value; } + } + public UInt32 NGCount + { + get { return this.m_UnderCount + this.m_OverCount + this.m_ExNGCount; } + } + public UInt32 TotalCount + { + get { return this.m_UnderCount + this.m_PassCount + this.m_OverCount + this.m_ExNGCount; } + } + + public string HexStringUpdate + { + get + { + string hexString = this.Update.ToString("X8"); + return hexString; + } + } + public string HexStringGrade + { + get + { + string hexString = this.Grade.ToString("X8"); + return hexString; + } + } + public string HexStringWeight + { + get + { + byte[] bytes = BitConverter.GetBytes((float)this.Weight); + Array.Reverse(bytes); + string hexString = BitConverter.ToString(bytes); + hexString = hexString.Replace("-", ""); + + return hexString; + } + } + public string HexStringUnderCount + { + get + { + string hexString = this.UnderCount.ToString("X8"); + return hexString; + } + } + public string HexStringPassCount + { + get + { + string hexString = this.PassCount.ToString("X8"); + return hexString; + } + } + public string HexStringOverCount + { + get + { + string hexString = this.OverCount.ToString("X8"); + return hexString; + } + } + public string HexStringExNGCount + { + get + { + string hexString = this.ExNGCount.ToString("X8"); + return hexString; + } + } + public string HexStringNGCount + { + get + { + string hexString = this.NGCount.ToString("X8"); + return hexString; + } + } + public string HexStringTotalCount + { + get + { + string hexString = this.TotalCount.ToString("X8"); + return hexString; + } + } + #endregion + + #region Method + public void Initialization() + { + this.Update = 0; + this.Grade = 0; + this.Weight = 0.0; + this.UnderCount = 0; + this.PassCount = 0; + this.OverCount = 0; + this.ExNGCount = 0; + } + #endregion + } +} diff --git a/INT89DB_26/InModbus/Modbus_40000_Address.cs b/INT89DB_26/InModbus/Modbus_40000_Address.cs new file mode 100644 index 0000000..140e185 --- /dev/null +++ b/INT89DB_26/InModbus/Modbus_40000_Address.cs @@ -0,0 +1,30 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; + +namespace INT89DB_26.Int_Modbus +{ + public class Modbus_40000_Address + { + public const int _01_Clear = 10; + public const int _02_ClearResult = 11; + public const int _03_Operation = 12; + public const int _04_OperationResult = 13; + public const int _05_ProductChange_High = 14; + public const int _06_ProductChange_Low = 15; + public const int _07_ProductChangeResult = 16; + public const int _08_UnderRange_High = 17; + public const int _09_UnderRange_Low = 18; + public const int _10_UnderRangeResult = 19; + public const int _11_PassRange_High = 20; + public const int _12_PassRange_Low = 21; + public const int _13_PassRangeResult = 22; + public const int _14_OverRange_High = 23; + public const int _15_OverRange_Low = 24; + public const int _16_OverRangeResult = 25; + public const int _17_TareWeight_High = 26; + public const int _18_TareWeight_Low = 27; + public const int _19_TareWeightResult = 28; + } +} diff --git a/INT89DB_26/InModbus/Modbus_40000_Data.cs b/INT89DB_26/InModbus/Modbus_40000_Data.cs new file mode 100644 index 0000000..8d07d71 --- /dev/null +++ b/INT89DB_26/InModbus/Modbus_40000_Data.cs @@ -0,0 +1,127 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; + +namespace INT89DB_26.Int_Modbus +{ + public class Modbus_40000_Data + { + #region Field + private int m_40011_Clear; + private int m_40012_ClearResult; + private int m_40013_Operation; + private int m_40014_OperationResult; + private int m_40015_ProductChange; + private int m_40017_ProductChangeResult; + private int m_40018_UnderRange; + private int m_40020_UnderRangeResult; + private int m_40021_PassRange; + private int m_40023_PassRangeResult; + private int m_40024_OverRange; + private int m_40026_OverRangeResult; + private int m_40027_TareWeight; + private int m_40029_TareWeightResult; + #endregion + + #region Constructor + public Modbus_40000_Data() + { + this.Initialization(); + } + #endregion + + #region Property + public int _40011_Clear + { + get { return this.m_40011_Clear; } + set { this.m_40011_Clear = value; } + } + public int _40012_ClearResult + { + get { return this.m_40012_ClearResult; } + set { this.m_40012_ClearResult = value; } + } + public int _40013_Operation + { + get { return this.m_40013_Operation; } + set { this.m_40013_Operation = value; } + } + public int _40014_OperationResult + { + get { return this.m_40014_OperationResult; } + set { this.m_40014_OperationResult = value; } + } + public int _40015_ProductChange + { + get { return this.m_40015_ProductChange; } + set { this.m_40015_ProductChange = value; } + } + public int _40017_ProductChangeResult + { + get { return this.m_40017_ProductChangeResult; } + set { this.m_40017_ProductChangeResult = value; } + } + public int _40018_UnderRange + { + get { return this.m_40018_UnderRange; } + set { this.m_40018_UnderRange = value; } + } + public int _40020_UnderRangeResult + { + get { return this.m_40020_UnderRangeResult; } + set { this.m_40020_UnderRangeResult = value; } + } + public int _40021_PassRange + { + get { return this.m_40021_PassRange; } + set { this.m_40021_PassRange = value; } + } + public int _40023_PassRangeResult + { + get { return this.m_40023_PassRangeResult; } + set { this.m_40023_PassRangeResult = value; } + } + public int _40024_OverRange + { + get { return this.m_40024_OverRange; } + set { this.m_40024_OverRange = value; } + } + public int _40026_OverRangeResult + { + get { return this.m_40026_OverRangeResult; } + set { this.m_40026_OverRangeResult = value; } + } + public int _40027_TareWeight + { + get { return this.m_40027_TareWeight; } + set { this.m_40027_TareWeight = value; } + } + public int _40029_TareWeightResult + { + get { return this.m_40029_TareWeightResult; } + set { this.m_40029_TareWeightResult = value; } + } + #endregion + + #region Method + public void Initialization() + { + this._40011_Clear = 0; + this._40012_ClearResult = 0; + this._40013_Operation = 0; + this._40014_OperationResult = 0; + this._40015_ProductChange = 0; + this._40017_ProductChangeResult = 0; + this._40018_UnderRange = 0; + this._40020_UnderRangeResult = 0; + this._40021_PassRange = 0; + this._40023_PassRangeResult = 0; + this._40024_OverRange = 0; + this._40026_OverRangeResult = 0; + this._40027_TareWeight = 0; + this._40029_TareWeightResult = 0; + } + #endregion + } +} diff --git a/INT89DB_26/Version.txt b/INT89DB_26/Version.txt index edf8993..5a57c8b 100644 --- a/INT89DB_26/Version.txt +++ b/INT89DB_26/Version.txt @@ -13,6 +13,13 @@ Ƽ 2~6 跮 */ +@ Ver 8.4.0 by LSJ + - 2025.11.27 + - Ver 8.3.2 Modify + - Framework : SmartX Framework V3.1.1(update: 2019.03.21) + - ż + Modbus ߰ ( ε 99) + @ Ver 8.3.2 by CJY - 2025.07.31 - Ver 8.3.1 Modify diff --git a/INT89DB_26_ImageDll/obj/Release/INT89DB_26_ImageDll.csproj.FileListAbsolute.txt b/INT89DB_26_ImageDll/obj/Release/INT89DB_26_ImageDll.csproj.FileListAbsolute.txt index 8c3a934..deb694c 100644 --- a/INT89DB_26_ImageDll/obj/Release/INT89DB_26_ImageDll.csproj.FileListAbsolute.txt +++ b/INT89DB_26_ImageDll/obj/Release/INT89DB_26_ImageDll.csproj.FileListAbsolute.txt @@ -159,3 +159,10 @@ D:\INT89DB_26_V8.3.1\INT89DB_26_ImageDll\obj\Release\INT89DB_26_ImageDll.Resourc D:\INT89DB_26_V8.3.1\INT89DB_26_ImageDll\obj\Release\INT89DB_26_ImageDll.csproj.GenerateResource.Cache D:\INT89DB_26_V8.3.1\INT89DB_26_ImageDll\obj\Release\INT89DB_26_ImageDll.dll D:\INT89DB_26_V8.3.1\INT89DB_26_ImageDll\obj\Release\INT89DB_26_ImageDll.pdb +D:\Git\INT89DB_26\INT89DB_26_ImageDll\bin\Release\INT89DB_26_ImageDll.dll +D:\Git\INT89DB_26\INT89DB_26_ImageDll\bin\Release\INT89DB_26_ImageDll.pdb +D:\Git\INT89DB_26\INT89DB_26_ImageDll\obj\Release\ResolveAssemblyReference.cache +D:\Git\INT89DB_26\INT89DB_26_ImageDll\obj\Release\INT89DB_26_ImageDll.Resource1.resources +D:\Git\INT89DB_26\INT89DB_26_ImageDll\obj\Release\INT89DB_26_ImageDll.csproj.GenerateResource.Cache +D:\Git\INT89DB_26\INT89DB_26_ImageDll\obj\Release\INT89DB_26_ImageDll.dll +D:\Git\INT89DB_26\INT89DB_26_ImageDll\obj\Release\INT89DB_26_ImageDll.pdb