diff --git a/ITC81DB.suo b/ITC81DB.suo
index 297b7aa..9224dd3 100644
Binary files a/ITC81DB.suo and b/ITC81DB.suo differ
diff --git a/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.Designer.cs b/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.Designer.cs
index 52cde9a..9e36afe 100644
--- a/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.Designer.cs
+++ b/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.Designer.cs
@@ -175,7 +175,7 @@
this.labelNGCount.BackPictureBox2 = this.smartGroupBox1;
this.labelNGCount.BorderColor = System.Drawing.Color.Black;
this.labelNGCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelNGCount.Font = new System.Drawing.Font("새굴림", 15F, System.Drawing.FontStyle.Bold);
+ this.labelNGCount.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
this.labelNGCount.ForeColor = System.Drawing.Color.White;
this.labelNGCount.InitVisible = true;
this.labelNGCount.LineSpacing = 0F;
@@ -642,7 +642,7 @@
this.labelUnderSumWeight.BackPictureBox2 = this.smartGroupBox1;
this.labelUnderSumWeight.BorderColor = System.Drawing.Color.Black;
this.labelUnderSumWeight.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelUnderSumWeight.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelUnderSumWeight.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelUnderSumWeight.ForeColor = System.Drawing.Color.White;
this.labelUnderSumWeight.InitVisible = true;
this.labelUnderSumWeight.LineSpacing = 0F;
@@ -662,7 +662,7 @@
this.labelPassSumWeight.BackPictureBox2 = this.smartGroupBox1;
this.labelPassSumWeight.BorderColor = System.Drawing.Color.Black;
this.labelPassSumWeight.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelPassSumWeight.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelPassSumWeight.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelPassSumWeight.ForeColor = System.Drawing.Color.White;
this.labelPassSumWeight.InitVisible = true;
this.labelPassSumWeight.LineSpacing = 0F;
@@ -682,7 +682,7 @@
this.labelOverSumWeight.BackPictureBox2 = this.smartGroupBox1;
this.labelOverSumWeight.BorderColor = System.Drawing.Color.Black;
this.labelOverSumWeight.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelOverSumWeight.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelOverSumWeight.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelOverSumWeight.ForeColor = System.Drawing.Color.White;
this.labelOverSumWeight.InitVisible = true;
this.labelOverSumWeight.LineSpacing = 0F;
@@ -765,7 +765,7 @@
this.labelStopTime.BackPictureBox2 = this.smartGroupBox1;
this.labelStopTime.BorderColor = System.Drawing.Color.Black;
this.labelStopTime.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelStopTime.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelStopTime.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelStopTime.ForeColor = System.Drawing.Color.White;
this.labelStopTime.InitVisible = true;
this.labelStopTime.LineSpacing = 0F;
@@ -785,7 +785,7 @@
this.labelTotalCount.BackPictureBox2 = this.smartGroupBox1;
this.labelTotalCount.BorderColor = System.Drawing.Color.Black;
this.labelTotalCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelTotalCount.Font = new System.Drawing.Font("새굴림", 15F, System.Drawing.FontStyle.Bold);
+ this.labelTotalCount.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
this.labelTotalCount.ForeColor = System.Drawing.Color.White;
this.labelTotalCount.InitVisible = true;
this.labelTotalCount.LineSpacing = 0F;
@@ -805,7 +805,7 @@
this.labelStartTime.BackPictureBox2 = this.smartGroupBox1;
this.labelStartTime.BorderColor = System.Drawing.Color.Black;
this.labelStartTime.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelStartTime.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelStartTime.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelStartTime.ForeColor = System.Drawing.Color.White;
this.labelStartTime.InitVisible = true;
this.labelStartTime.LineSpacing = 0F;
@@ -825,7 +825,7 @@
this.labelExNGCount.BackPictureBox2 = this.smartGroupBox1;
this.labelExNGCount.BorderColor = System.Drawing.Color.Black;
this.labelExNGCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelExNGCount.Font = new System.Drawing.Font("새굴림", 15F, System.Drawing.FontStyle.Bold);
+ this.labelExNGCount.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
this.labelExNGCount.ForeColor = System.Drawing.Color.White;
this.labelExNGCount.InitVisible = true;
this.labelExNGCount.LineSpacing = 0F;
@@ -845,7 +845,7 @@
this.labelUnderRatio.BackPictureBox2 = this.smartGroupBox1;
this.labelUnderRatio.BorderColor = System.Drawing.Color.Black;
this.labelUnderRatio.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelUnderRatio.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelUnderRatio.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelUnderRatio.ForeColor = System.Drawing.Color.White;
this.labelUnderRatio.InitVisible = true;
this.labelUnderRatio.LineSpacing = 0F;
@@ -865,7 +865,7 @@
this.labelUnderAverage.BackPictureBox2 = this.smartGroupBox1;
this.labelUnderAverage.BorderColor = System.Drawing.Color.Black;
this.labelUnderAverage.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelUnderAverage.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelUnderAverage.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelUnderAverage.ForeColor = System.Drawing.Color.White;
this.labelUnderAverage.InitVisible = true;
this.labelUnderAverage.LineSpacing = 0F;
@@ -885,7 +885,7 @@
this.labelUnderRange.BackPictureBox2 = this.smartGroupBox1;
this.labelUnderRange.BorderColor = System.Drawing.Color.Black;
this.labelUnderRange.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelUnderRange.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelUnderRange.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelUnderRange.ForeColor = System.Drawing.Color.White;
this.labelUnderRange.InitVisible = true;
this.labelUnderRange.LineSpacing = 0F;
@@ -905,7 +905,7 @@
this.labelUnderCount.BackPictureBox2 = this.smartGroupBox1;
this.labelUnderCount.BorderColor = System.Drawing.Color.Black;
this.labelUnderCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelUnderCount.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelUnderCount.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelUnderCount.ForeColor = System.Drawing.Color.White;
this.labelUnderCount.InitVisible = true;
this.labelUnderCount.LineSpacing = 0F;
@@ -925,7 +925,7 @@
this.labelPassRatio.BackPictureBox2 = this.smartGroupBox1;
this.labelPassRatio.BorderColor = System.Drawing.Color.Black;
this.labelPassRatio.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelPassRatio.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelPassRatio.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelPassRatio.ForeColor = System.Drawing.Color.White;
this.labelPassRatio.InitVisible = true;
this.labelPassRatio.LineSpacing = 0F;
@@ -945,7 +945,7 @@
this.labelPassAverage.BackPictureBox2 = this.smartGroupBox1;
this.labelPassAverage.BorderColor = System.Drawing.Color.Black;
this.labelPassAverage.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelPassAverage.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelPassAverage.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelPassAverage.ForeColor = System.Drawing.Color.White;
this.labelPassAverage.InitVisible = true;
this.labelPassAverage.LineSpacing = 0F;
@@ -965,7 +965,7 @@
this.labelPassRange.BackPictureBox2 = this.smartGroupBox1;
this.labelPassRange.BorderColor = System.Drawing.Color.Black;
this.labelPassRange.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelPassRange.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelPassRange.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelPassRange.ForeColor = System.Drawing.Color.White;
this.labelPassRange.InitVisible = true;
this.labelPassRange.LineSpacing = 0F;
@@ -985,7 +985,7 @@
this.labelPassCount.BackPictureBox2 = this.smartGroupBox1;
this.labelPassCount.BorderColor = System.Drawing.Color.Black;
this.labelPassCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelPassCount.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelPassCount.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelPassCount.ForeColor = System.Drawing.Color.White;
this.labelPassCount.InitVisible = true;
this.labelPassCount.LineSpacing = 0F;
@@ -1005,7 +1005,7 @@
this.labelOverRatio.BackPictureBox2 = this.smartGroupBox1;
this.labelOverRatio.BorderColor = System.Drawing.Color.Black;
this.labelOverRatio.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelOverRatio.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelOverRatio.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelOverRatio.ForeColor = System.Drawing.Color.White;
this.labelOverRatio.InitVisible = true;
this.labelOverRatio.LineSpacing = 0F;
@@ -1025,7 +1025,7 @@
this.labelOverAverage.BackPictureBox2 = this.smartGroupBox1;
this.labelOverAverage.BorderColor = System.Drawing.Color.Black;
this.labelOverAverage.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelOverAverage.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelOverAverage.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelOverAverage.ForeColor = System.Drawing.Color.White;
this.labelOverAverage.InitVisible = true;
this.labelOverAverage.LineSpacing = 0F;
@@ -1045,7 +1045,7 @@
this.labelOverRange.BackPictureBox2 = this.smartGroupBox1;
this.labelOverRange.BorderColor = System.Drawing.Color.Black;
this.labelOverRange.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelOverRange.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelOverRange.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold);
this.labelOverRange.ForeColor = System.Drawing.Color.White;
this.labelOverRange.InitVisible = true;
this.labelOverRange.LineSpacing = 0F;
@@ -1065,7 +1065,7 @@
this.labelOverCount.BackPictureBox2 = this.smartGroupBox1;
this.labelOverCount.BorderColor = System.Drawing.Color.Black;
this.labelOverCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelOverCount.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.labelOverCount.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold);
this.labelOverCount.ForeColor = System.Drawing.Color.White;
this.labelOverCount.InitVisible = true;
this.labelOverCount.LineSpacing = 0F;
diff --git a/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.cs b/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.cs
index 07b8b72..3f141b2 100644
--- a/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.cs
+++ b/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.cs
@@ -354,52 +354,73 @@ namespace ITC81DB.Controls
this.ParentForm.ParentForm.smartFileIO.Open(this.ParentForm.ParentForm.BufferSmartUart);
this.ParentForm.ParentForm.smartFileIO.WriteString("##############################");
- this.ParentForm.ParentForm.smartFileIO.WriteString(" TOTAL PRINT ");
+ this.ParentForm.ParentForm.smartFileIO.WriteString(" TOTAL PRINT ");
this.ParentForm.ParentForm.smartFileIO.WriteString("##############################");
this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" PART = {0}", this.SelectedProductItem.Number));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" LOT = {0}", this.SelectedProductItem.LotNo));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" LOT = {0}", this.SelectedProductItem.LotNo));
this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" START = {0}", this.SelectedWeightData.StartTime.ToString("yyyy-MM-dd HH:mm:ss")));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" END = {0}", this.SelectedWeightData.StopTime.ToString("yyyy-MM-dd HH:mm:ss")));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" END = {0}", this.SelectedWeightData.StopTime.ToString("yyyy-MM-dd HH:mm:ss")));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n UNDER = {0}",
+
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n UNDER = {0}",
Helper.StringToDecimalPlaces(this.SelectedProductItem.UnderRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces)) + this.ParentForm.ParentForm.SystemConfig1.Unit);
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" COUNT = {0}", this.SelectedWeightData.UnderCount));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" COUNT = {0}", this.SelectedWeightData.UnderCount));
if (this.ParentForm.ParentForm.SystemConfig1.Unit != "oz")
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.W = {0}kg", this.SelectedWeightData.UnderSumWeightKG));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.WT = {0}kg", this.SelectedWeightData.UnderSumWeightKG));
else
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.W = {0}oz", this.SelectedWeightData.UnderSumWeight));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" AVG = {0}",
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.WT = {0}oz", this.SelectedWeightData.UnderSumWeight));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" MEAN = {0}",
Helper.DoubleToString(this.SelectedWeightData.UnderAverage, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces)) + this.ParentForm.ParentForm.SystemConfig1.Unit);
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" RATIO = {0}%", this.SelectedWeightData.UnderRatio));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" RATIO = {0}%", this.SelectedWeightData.UnderRatio));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n PASS = {0}",
+
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n PASS = {0}",
Helper.StringToDecimalPlaces(this.SelectedProductItem.PassRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces)) + this.ParentForm.ParentForm.SystemConfig1.Unit);
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" COUNT = {0}", this.SelectedWeightData.PassCount));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" COUNT = {0}", this.SelectedWeightData.PassCount));
if (this.ParentForm.ParentForm.SystemConfig1.Unit != "oz")
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.W = {0}kg", this.SelectedWeightData.PassSumWeightKG));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.WT = {0}kg", this.SelectedWeightData.PassSumWeightKG));
else
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.W = {0}oz", this.SelectedWeightData.PassSumWeight));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" AVG = {0}",
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.WT = {0}oz", this.SelectedWeightData.PassSumWeight));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" MEAN = {0}",
Helper.DoubleToString(this.SelectedWeightData.PassAverage, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces)) + this.ParentForm.ParentForm.SystemConfig1.Unit);
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" RATIO = {0}%", this.SelectedWeightData.PassRatio));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" RATIO = {0}%", this.SelectedWeightData.PassRatio));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" MAX.WT = {0}{1}", Helper.DoubleToString(this.SelectedWeightData.PassMaxWeight,
+ this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces), this.ParentForm.ParentForm.SystemConfig1.Unit));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" MIN.WT = {0}{1}", Helper.DoubleToString(this.SelectedWeightData.PassMinWeight,
+ this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces), this.ParentForm.ParentForm.SystemConfig1.Unit));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" RANGE = {0}{1}", Helper.DoubleToString(this.SelectedWeightData.MaxMinusMinWeight,
+ this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces), this.ParentForm.ParentForm.SystemConfig1.Unit));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n OVER = {0}",
+
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n OVER = {0}",
Helper.StringToDecimalPlaces(this.SelectedProductItem.OverRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces)) + this.ParentForm.ParentForm.SystemConfig1.Unit);
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" COUNT = {0}", this.SelectedWeightData.OverCount));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" COUNT = {0}", this.SelectedWeightData.OverCount));
if (this.ParentForm.ParentForm.SystemConfig1.Unit != "oz")
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.W = {0}kg", this.SelectedWeightData.OverSumWeightKG));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.WT = {0}kg", this.SelectedWeightData.OverSumWeightKG));
else
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.W = {0}oz", this.SelectedWeightData.OverSumWeight));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" AVG = {0}",
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.WT = {0}oz", this.SelectedWeightData.OverSumWeight));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" MEAN = {0}",
Helper.DoubleToString(this.SelectedWeightData.OverAverage, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces)) + this.ParentForm.ParentForm.SystemConfig1.Unit);
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" RATIO = {0}%", this.SelectedWeightData.OverRatio));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" RATIO = {0}%", this.SelectedWeightData.OverRatio));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n TARE = {0}",
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n TARE = {0}",
Helper.StringToDecimalPlaces(this.SelectedProductItem.TareRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces)) + this.ParentForm.ParentForm.SystemConfig1.Unit);
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n Faulty = {0}", this.SelectedWeightData.TotalUnderOverCount));
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" Other.F = {0}", this.SelectedWeightData.ExNGCount));
- this.ParentForm.ParentForm.smartFileIO.WriteString(" TOTAL");
- this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" COUNT = {0}", this.SelectedWeightData.TotalCount));
+
+ this.ParentForm.ParentForm.smartFileIO.WriteString("\n FAULTY(WEIGHT NG : Over+Under)");
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" COUNT = {0}", this.SelectedWeightData.TotalUnderOverCount));
+ this.ParentForm.ParentForm.smartFileIO.WriteString(" MEAN = " +
+ Helper.DoubleToString(this.SelectedWeightData.NGAverage, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces) + this.ParentForm.ParentForm.SystemConfig1.Unit);
+
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n SD(O+P+U)= {0:0.0000}", this.SelectedWeightData.StandardDeviation));
+
+ this.ParentForm.ParentForm.smartFileIO.WriteString("\n OTHER FAULTY(ExNG)");
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" COUNT = {0}", this.SelectedWeightData.ExNGCount));
+
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format("\n TOTAL.COUNT = {0}", this.SelectedWeightData.TotalCount));
+ if (this.ParentForm.ParentForm.SystemConfig1.Unit != "oz")
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.WT = {0}kg", this.SelectedWeightData.TotalWeightKG));
+ else
+ this.ParentForm.ParentForm.smartFileIO.WriteString(string.Format(" TOTAL.WT = {0}oz", this.SelectedWeightData.TotalWeight));
this.ParentForm.ParentForm.smartFileIO.Close();
diff --git a/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.resx b/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.resx
index 5e60db0..910e5ed 100644
--- a/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.resx
+++ b/ITC81DB/Controls/CenterBasic/ControlCenterBasicDataStatistics.resx
@@ -165,41 +165,36 @@
XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS
fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
- 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
+ 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
+ AABJRU5ErkJggg==
@@ -249,53 +244,40 @@
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
- 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
- QWwLZdlW+wAAAABJRU5ErkJggg==
+ 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
+ 0vzVJjsC/wFbd3KLuryVXQAAAABJRU5ErkJggg==
@@ -345,56 +327,46 @@
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
- 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
+ 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
diff --git a/ITC81DB/Controls/CenterConfiguration/ControlCenterConfiSerial.cs b/ITC81DB/Controls/CenterConfiguration/ControlCenterConfiSerial.cs
index 3818fc8..c80441a 100644
--- a/ITC81DB/Controls/CenterConfiguration/ControlCenterConfiSerial.cs
+++ b/ITC81DB/Controls/CenterConfiguration/ControlCenterConfiSerial.cs
@@ -507,7 +507,6 @@ namespace ITC81DB.Controls
this.comboBoxSerialMode.SelectedIndex = item.SerialCOM3Mode;
this.comboBoxSerialMode.SelectedIndexChanged += new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged);
-
if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f16_OPC) // OPC
{
this.comboBoxSerialBaudRate.Enabled = false;
diff --git a/ITC81DB/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs b/ITC81DB/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs
index a1743e9..c99f216 100644
--- a/ITC81DB/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs
+++ b/ITC81DB/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs
@@ -92,6 +92,8 @@ namespace ITC81DB.Controls
this.buttonStartStopLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engOFF));
this.buttonCommunicationLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engON));
this.buttonCommunicationLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engOFF));
+ this.buttonBarcodeLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engON));
+ this.buttonBarcodeLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engOFF));
#endregion
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
@@ -135,6 +137,8 @@ namespace ITC81DB.Controls
this.buttonStartStopLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnOFF));
this.buttonCommunicationLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnON));
this.buttonCommunicationLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnOFF));
+ this.buttonBarcodeLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnON));
+ this.buttonBarcodeLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnOFF));
#endregion
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Czech)
@@ -182,6 +186,8 @@ namespace ITC81DB.Controls
this.buttonStartStopLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusOFF));
this.buttonCommunicationLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusON));
this.buttonCommunicationLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusOFF));
+ this.buttonBarcodeLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusON));
+ this.buttonBarcodeLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusOFF));
#endregion
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
@@ -225,6 +231,8 @@ namespace ITC81DB.Controls
this.buttonStartStopLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerOFF));
this.buttonCommunicationLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerON));
this.buttonCommunicationLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerOFF));
+ this.buttonBarcodeLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerON));
+ this.buttonBarcodeLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerOFF));
#endregion
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Spanish)
@@ -268,6 +276,8 @@ namespace ITC81DB.Controls
this.buttonStartStopLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engOFF));
this.buttonCommunicationLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engON));
this.buttonCommunicationLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engOFF));
+ this.buttonBarcodeLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engON));
+ this.buttonBarcodeLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engOFF));
#endregion
}
else
@@ -311,6 +321,8 @@ namespace ITC81DB.Controls
this.buttonStartStopLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engOFF));
this.buttonCommunicationLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engON));
this.buttonCommunicationLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engOFF));
+ this.buttonBarcodeLog.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engON));
+ this.buttonBarcodeLog.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engOFF));
#endregion
}
}
diff --git a/ITC81DB/Controls/CenterEquipment/ControlCenterEquipInitialize.cs b/ITC81DB/Controls/CenterEquipment/ControlCenterEquipInitialize.cs
index b1aee77..e46bbb9 100644
--- a/ITC81DB/Controls/CenterEquipment/ControlCenterEquipInitialize.cs
+++ b/ITC81DB/Controls/CenterEquipment/ControlCenterEquipInitialize.cs
@@ -128,20 +128,6 @@ namespace ITC81DB.Controls
this.UpdateLabelStatus(this.InitializeStep, this.ParentForm.ParentForm.SystemConfig1.Language);
}
- private void DeleteCounterFile()
- {
- DirectoryInfo dir = new DirectoryInfo(this.ParentForm.ParentForm.PathSDCardSystemFile2Folder);
- FileInfo[] files = dir.GetFiles();
-
- if (files.Length > 0)
- {
- foreach (FileInfo subFile in files)
- {
- if (subFile.Name.StartsWith("counterItem") == true)
- subFile.Delete();
- }
- }
- }
private void DeleteFolder(string address)
{
DirectoryInfo dir = new DirectoryInfo(address);
@@ -210,7 +196,7 @@ namespace ITC81DB.Controls
// Flash Disk - SystemFile2 이동
this.CopyFolder(this.ParentForm.ParentForm.PathFlashDiskSystemFile2Folder, this.ParentForm.ParentForm.PathSDCardSystemFile2Folder);
this.progressBarInitialize.Value += 20;
- this.DeleteCounterFile();
+ this.InitializeCount(this.ParentForm.ParentForm.SystemConfig1.ProductNumber);
this.progressBarInitialize.Value = 100;
this.InitializeStep = DataStore.Step3.Step3;
@@ -234,7 +220,7 @@ namespace ITC81DB.Controls
// Flash Disk - SystemFile2 이동
this.CopyFolder(this.ParentForm.ParentForm.PathFlashDiskSystemFile2Folder, this.ParentForm.ParentForm.PathSDCardSystemFile2Folder);
this.progressBarInitialize.Value += 15;
- this.DeleteCounterFile();
+ this.InitializeCount(this.ParentForm.ParentForm.SystemConfig1.ProductNumber);
this.progressBarInitialize.Value += 15;
this.timer.Enabled = true;
@@ -288,6 +274,23 @@ namespace ITC81DB.Controls
this.ParentForm.Enabled = false;
}
}
+ private void InitializeCount(int productNumber)
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.Append(Helper.StringZeroFillDigits4(productNumber.ToString())); // 품번(4)
+ sb.Append("0000000"); // ExNG 카운트(7)
+ sb.Append("0000000"); // 상한 카운트(7)
+ sb.Append("0000000"); // 기준 카운트(7)
+ sb.Append("0000000"); // 하한 카운트(7)
+ sb.Append("0000"); // Dummy1(4)
+ sb.Append("0000000"); // Dummy1(7)
+ sb.Append("0000000"); // Dummy2(7)
+ sb.Append("0000000"); // Dummy3(7)
+ sb.Append("0000000"); // Dummy4(7)
+
+ this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ParameterCount, sb.ToString());
+ }
private void UpdateLabelStatus(DataStore.Step3 step, DataStore.LanguageID language)
{
@@ -461,197 +464,6 @@ namespace ITC81DB.Controls
this.buttonSystemInitialization.Visible = true;
}
}
-
- #region 사용안함
- //private void InitializeLcd(DialogResult result)
- //{
- // if (result == DialogResult.Yes)
- // {
- // this.InitializeStep = DataStore.Step3.Step2;
- // this.UpdateLabelStatus(this.InitializeStep, this.ParentForm.ParentForm.SystemConfig1.Language);
-
- // this.progressBarInitialize.Value = 0;
- // this.progressBarInitialize.Value += 20;
- // //this.ResetConfigurationFile();
- // this.progressBarInitialize.Value += 20;
- // this.ResetProductFile();
- // this.progressBarInitialize.Value += 20;
- // this.ResetJudgmentSetFile();
- // this.progressBarInitialize.Value += 20;
- // this.ResetCountFile();
- // this.progressBarInitialize.Value = 100;
-
- // this.InitializeStep = DataStore.Step3.Step3;
- // this.UpdateLabelStatus(this.InitializeStep, this.ParentForm.ParentForm.SystemConfig1.Language);
-
- // this.ParentForm.Enabled = false;
- // }
- //}
- //private void InitializeMainBoardLcd(DialogResult result)
- //{
- // if (result == DialogResult.Yes)
- // {
- // this.InitializeStep = DataStore.Step3.Step2;
- // this.UpdateLabelStatus(this.InitializeStep, this.ParentForm.ParentForm.SystemConfig1.Language);
-
- // this.progressBarInitialize.Value = 0;
- // //this.ResetConfigurationFile();
- // this.progressBarInitialize.Value += 15;
- // this.ResetProductFile();
- // this.progressBarInitialize.Value += 15;
- // this.ResetJudgmentSetFile();
- // this.progressBarInitialize.Value += 15;
- // this.ResetCountFile();
- // this.progressBarInitialize.Value += 15;
-
- // this.timer.Enabled = true;
- // this.ParentForm.ParentForm.TransferData(CommunicationCommand.Initialization, CommunicationID.MainBoard);
- // }
- //}
-
- //private void ResetProductFile()
- //{
- // bool fileCheck = false;
- // string fullFilePath = "";
- // StructProductItem structItem;
-
- // fullFilePath = this.ParentForm.ParentForm.PathSDCardSystemFile1Folder + "ProductItem.int";
- // this.ParentForm.ParentForm.smartFileIO.FilePathName = fullFilePath;
-
- // FileInfo fileInfo = new FileInfo(fullFilePath);
- // fileCheck = fileInfo.Exists;
-
- // this.ParentForm.ParentForm.smartFileIO.Open(this.ParentForm.ParentForm.BufferSmartUart);
-
- // this.ParentForm.ParentForm.CurrentProductItem.Initialization();
-
- // for (int i = 0; i < 1000; i++)
- // {
- // structItem.Number = i + 1;
- // structItem.Name = string.Format("Product {0}", i + 1);
- // structItem.LotNo = string.Format("Lot {0}", i + 1);
- // structItem.OverRange = this.ParentForm.ParentForm.CurrentProductItem.OverRange;
- // structItem.PassRange = this.ParentForm.ParentForm.CurrentProductItem.PassRange;
- // structItem.UnderRange = this.ParentForm.ParentForm.CurrentProductItem.UnderRange;
- // structItem.TareRange = this.ParentForm.ParentForm.CurrentProductItem.TareRange;
- // structItem.DummyString1 = "";
- // structItem.DummyString2 = "";
- // structItem.DummyString3 = "";
- // structItem.DummyString4 = "";
-
- // this.ParentForm.ParentForm.smartFileIO.WriteStructure_Begin(structItem, i);
- // }
- // this.ParentForm.ParentForm.smartFileIO.WriteStructure_End();
- // this.ParentForm.ParentForm.smartFileIO.Close();
- //}
- //private void ResetJudgmentSetFile()
- //{
- // bool fileCheck = false;
- // string fullFilePath = "";
- // StructJudgmentSetItem structItem;
-
- // fullFilePath = this.ParentForm.ParentForm.PathSDCardSystemFile1Folder + "JudgmentSetItem.int";
- // this.ParentForm.ParentForm.smartFileIO.FilePathName = fullFilePath;
-
- // FileInfo fileInfo = new FileInfo(fullFilePath);
- // fileCheck = fileInfo.Exists;
-
- // this.ParentForm.ParentForm.smartFileIO.Open(this.ParentForm.ParentForm.BufferSmartUart);
-
- // this.ParentForm.ParentForm.CurrentJudgmentSetItem.Initialization();
-
- // for (int i = 0; i < 1000; i++)
- // {
- // structItem.Filter = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Filter;
- // structItem.JudgmentDelayTime = this.ParentForm.ParentForm.CurrentJudgmentSetItem.JudgmentDelayTime;
- // structItem.DoubleDelayTime = this.ParentForm.ParentForm.CurrentJudgmentSetItem.DoubleDelayTime;
- // structItem.JudgmentCount = this.ParentForm.ParentForm.CurrentJudgmentSetItem.JudgmentCount;
- // structItem.FeedSpeed1 = this.ParentForm.ParentForm.CurrentJudgmentSetItem.FeedSpeed1;
- // structItem.FeedSpeed2 = this.ParentForm.ParentForm.CurrentJudgmentSetItem.FeedSpeed2;
- // structItem.FeedSpeed3 = this.ParentForm.ParentForm.CurrentJudgmentSetItem.FeedSpeed3;
- // structItem.DynamicCorrection = this.ParentForm.ParentForm.CurrentJudgmentSetItem.DynamicCorrection;
-
- // structItem.Sorter1Mode = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1Mode;
- // structItem.Sorter1DelayTime = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1DelayTime;
- // structItem.Sorter1RunTime = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1RunTime;
- // structItem.Sorter2Mode = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2Mode;
- // structItem.Sorter2DelayTime = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2DelayTime;
- // structItem.Sorter2RunTime = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2RunTime;
-
- // structItem.AutoJudgmentLength = this.ParentForm.ParentForm.CurrentJudgmentSetItem.AutoJudgmentLength;
- // structItem.AutoJudgment1 = this.ParentForm.ParentForm.CurrentJudgmentSetItem.AutoJudgment1;
- // structItem.AutoJudgment2 = this.ParentForm.ParentForm.CurrentJudgmentSetItem.AutoJudgment2;
- // structItem.AutoJudgment3 = this.ParentForm.ParentForm.CurrentJudgmentSetItem.AutoJudgment3;
-
- // structItem.DummyInt1 = 0;
- // structItem.DummyInt2 = 0;
- // structItem.DummyInt3 = 0;
- // structItem.DummyInt4 = 0;
- // structItem.DummyInt5 = 0;
- // structItem.DummyString1 = "";
- // structItem.DummyString2 = "";
- // structItem.DummyString3 = "";
- // structItem.DummyString4 = "";
- // structItem.DummyString5 = "";
-
- // this.ParentForm.ParentForm.smartFileIO.WriteStructure_Begin(structItem, i);
- // }
- // this.ParentForm.ParentForm.smartFileIO.WriteStructure_End();
- // this.ParentForm.ParentForm.smartFileIO.Close();
- //}
- //private void ResetCountFile()
- //{
- // string fullFilePath = "";
- // bool fileCheck = false;
- // StructCounterItem structItem;
- // WeightData item = new WeightData();
-
- // fullFilePath = this.ParentForm.ParentForm.PathSDCardSystemFile1Folder + "counterItem.int";
- // this.ParentForm.ParentForm.smartFileIO.FilePathName = fullFilePath;
-
- // FileInfo fileInfo = new FileInfo(fullFilePath);
- // fileCheck = fileInfo.Exists;
-
- // this.ParentForm.ParentForm.smartFileIO.Open(this.ParentForm.ParentForm.BufferSmartUart);
-
- // item.ClearCount();
-
- // for (int i = 0; i < 1000; i++)
- // {
- // structItem.OverCount = item.OverCount;
- // structItem.OverSumWeight = item.OverSumWeight;
- // structItem.PassCount = item.PassCount;
- // structItem.PassSumWeight = item.PassSumWeight;
- // structItem.UnderCount = item.UnderCount;
- // structItem.UnderSumWeight = item.UnderSumWeight;
- // structItem.ExNGCount = item.ExNGCount;
-
- // structItem.NormalDistribution1 = item.CollectionNormalDistributionCount[0];
- // structItem.NormalDistribution2 = item.CollectionNormalDistributionCount[1];
- // structItem.NormalDistribution3 = item.CollectionNormalDistributionCount[2];
- // structItem.NormalDistribution4 = item.CollectionNormalDistributionCount[3];
- // structItem.NormalDistribution5 = item.CollectionNormalDistributionCount[4];
- // structItem.NormalDistribution6 = item.CollectionNormalDistributionCount[5];
- // structItem.NormalDistribution7 = item.CollectionNormalDistributionCount[6];
- // structItem.NormalDistribution8 = item.CollectionNormalDistributionCount[7];
- // structItem.NormalDistribution9 = item.CollectionNormalDistributionCount[8];
- // structItem.NormalDistribution10 = item.CollectionNormalDistributionCount[9];
-
- // structItem.StartTime = item.StartTime;
- // structItem.StopTime = item.StopTime;
-
- // structItem.DummyInt1 = 0;
- // structItem.DummyInt2 = 0;
- // structItem.DummyInt3 = 0;
- // structItem.DummyInt4 = 0;
- // structItem.DummyInt5 = 0;
-
- // this.ParentForm.ParentForm.smartFileIO.WriteStructure_Begin(structItem, i);
- // }
- // this.ParentForm.ParentForm.smartFileIO.WriteStructure_End();
- // this.ParentForm.ParentForm.smartFileIO.Close();
- //}
- #endregion
#endregion
#region Event Handler
diff --git a/ITC81DB/Controls/CenterSystem/ControlCenterSystemCalibration.cs b/ITC81DB/Controls/CenterSystem/ControlCenterSystemCalibration.cs
index 28dd400..9d0a34d 100644
--- a/ITC81DB/Controls/CenterSystem/ControlCenterSystemCalibration.cs
+++ b/ITC81DB/Controls/CenterSystem/ControlCenterSystemCalibration.cs
@@ -548,6 +548,7 @@ namespace ITC81DB.Controls
this.ParentForm.ParentForm.SaveSystemConfigurationFile1(this.ParentForm.ParentForm.SystemConfig1);
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainDataStatistics.LabelUnit();
this.labelMaxWeightUnit.Text = this.labelBalanceWeightUnit.Text = this.labelWeightUnit.Text = this.ParentForm.ParentForm.SystemConfig1.Unit;
}
private void radioButtonDigit_Click(object sender, EventArgs e)
diff --git a/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.Designer.cs b/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.Designer.cs
index 20bf0ba..8cf8077 100644
--- a/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.Designer.cs
+++ b/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.Designer.cs
@@ -107,7 +107,7 @@
this.labelTitleHelp.LineSpacing = 0F;
this.labelTitleHelp.Location = new System.Drawing.Point(18, 311);
this.labelTitleHelp.Name = "labelTitleHelp";
- this.labelTitleHelp.Size = new System.Drawing.Size(82, 30);
+ this.labelTitleHelp.Size = new System.Drawing.Size(104, 30);
this.labelTitleHelp.TabIndex = 196;
this.labelTitleHelp.Text = "도움말";
this.labelTitleHelp.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
@@ -164,9 +164,9 @@
this.labelZeroZoneCount.ForeColor = System.Drawing.Color.White;
this.labelZeroZoneCount.InitVisible = true;
this.labelZeroZoneCount.LineSpacing = 0F;
- this.labelZeroZoneCount.Location = new System.Drawing.Point(477, 151);
+ this.labelZeroZoneCount.Location = new System.Drawing.Point(509, 151);
this.labelZeroZoneCount.Name = "labelZeroZoneCount";
- this.labelZeroZoneCount.Size = new System.Drawing.Size(150, 30);
+ this.labelZeroZoneCount.Size = new System.Drawing.Size(118, 30);
this.labelZeroZoneCount.TabIndex = 193;
this.labelZeroZoneCount.Text = "100";
this.labelZeroZoneCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
@@ -186,7 +186,7 @@
this.labelTitleZeroZoneCount.LineSpacing = 0F;
this.labelTitleZeroZoneCount.Location = new System.Drawing.Point(363, 151);
this.labelTitleZeroZoneCount.Name = "labelTitleZeroZoneCount";
- this.labelTitleZeroZoneCount.Size = new System.Drawing.Size(104, 30);
+ this.labelTitleZeroZoneCount.Size = new System.Drawing.Size(140, 30);
this.labelTitleZeroZoneCount.TabIndex = 192;
this.labelTitleZeroZoneCount.Text = "영점실행개수";
this.labelTitleZeroZoneCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
@@ -205,7 +205,7 @@
this.labelTitleZeroZoneCycle.LineSpacing = 0F;
this.labelTitleZeroZoneCycle.Location = new System.Drawing.Point(363, 113);
this.labelTitleZeroZoneCycle.Name = "labelTitleZeroZoneCycle";
- this.labelTitleZeroZoneCycle.Size = new System.Drawing.Size(104, 30);
+ this.labelTitleZeroZoneCycle.Size = new System.Drawing.Size(140, 30);
this.labelTitleZeroZoneCycle.TabIndex = 191;
this.labelTitleZeroZoneCycle.Text = "영점실행주기";
this.labelTitleZeroZoneCycle.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
@@ -224,7 +224,7 @@
this.labelTitleOutputPort.LineSpacing = 0F;
this.labelTitleOutputPort.Location = new System.Drawing.Point(363, 49);
this.labelTitleOutputPort.Name = "labelTitleOutputPort";
- this.labelTitleOutputPort.Size = new System.Drawing.Size(104, 30);
+ this.labelTitleOutputPort.Size = new System.Drawing.Size(140, 30);
this.labelTitleOutputPort.TabIndex = 190;
this.labelTitleOutputPort.Text = "출력Port";
this.labelTitleOutputPort.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
@@ -262,9 +262,9 @@
this.labelZeroZoneCycle.ForeColor = System.Drawing.Color.White;
this.labelZeroZoneCycle.InitVisible = true;
this.labelZeroZoneCycle.LineSpacing = 0F;
- this.labelZeroZoneCycle.Location = new System.Drawing.Point(477, 113);
+ this.labelZeroZoneCycle.Location = new System.Drawing.Point(509, 113);
this.labelZeroZoneCycle.Name = "labelZeroZoneCycle";
- this.labelZeroZoneCycle.Size = new System.Drawing.Size(150, 30);
+ this.labelZeroZoneCycle.Size = new System.Drawing.Size(118, 30);
this.labelZeroZoneCycle.TabIndex = 187;
this.labelZeroZoneCycle.Text = "100";
this.labelZeroZoneCycle.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
@@ -311,9 +311,9 @@
this.panel1.Controls.Add(this.radioButtonPortNone);
this.panel1.Controls.Add(this.radioButtonPort56);
this.panel1.Controls.Add(this.radioButtonPort78);
- this.panel1.Location = new System.Drawing.Point(477, 18);
+ this.panel1.Location = new System.Drawing.Point(507, 18);
this.panel1.Name = "panel1";
- this.panel1.Size = new System.Drawing.Size(212, 89);
+ this.panel1.Size = new System.Drawing.Size(182, 89);
//
// radioButtonPortNone
//
@@ -336,7 +336,7 @@
this.radioButtonPortNone.RadioForeColor = System.Drawing.Color.Black;
this.radioButtonPortNone.RadioSymbolSize = 14;
this.radioButtonPortNone.Shadow = false;
- this.radioButtonPortNone.Size = new System.Drawing.Size(200, 23);
+ this.radioButtonPortNone.Size = new System.Drawing.Size(176, 23);
this.radioButtonPortNone.TabIndex = 138;
this.radioButtonPortNone.Text = "None";
this.radioButtonPortNone.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle;
@@ -363,7 +363,7 @@
this.radioButtonPort56.RadioForeColor = System.Drawing.Color.Black;
this.radioButtonPort56.RadioSymbolSize = 14;
this.radioButtonPort56.Shadow = false;
- this.radioButtonPort56.Size = new System.Drawing.Size(200, 23);
+ this.radioButtonPort56.Size = new System.Drawing.Size(176, 23);
this.radioButtonPort56.TabIndex = 139;
this.radioButtonPort56.Text = "Output Port 5,6";
this.radioButtonPort56.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle;
@@ -390,7 +390,7 @@
this.radioButtonPort78.RadioForeColor = System.Drawing.Color.Black;
this.radioButtonPort78.RadioSymbolSize = 14;
this.radioButtonPort78.Shadow = false;
- this.radioButtonPort78.Size = new System.Drawing.Size(200, 23);
+ this.radioButtonPort78.Size = new System.Drawing.Size(176, 23);
this.radioButtonPort78.TabIndex = 140;
this.radioButtonPort78.Text = "Output Port 7,8";
this.radioButtonPort78.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle;
@@ -406,9 +406,9 @@
this.labelHelp5.ForeColor = System.Drawing.Color.White;
this.labelHelp5.InitVisible = true;
this.labelHelp5.LineSpacing = 0F;
- this.labelHelp5.Location = new System.Drawing.Point(103, 431);
+ this.labelHelp5.Location = new System.Drawing.Point(123, 430);
this.labelHelp5.Name = "labelHelp5";
- this.labelHelp5.Size = new System.Drawing.Size(585, 15);
+ this.labelHelp5.Size = new System.Drawing.Size(565, 16);
this.labelHelp5.TabIndex = 145;
this.labelHelp5.Text = "5. \'지연시간2\'만큼 지난 후, 다시 A상태로 돌아온다.";
this.labelHelp5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -425,9 +425,9 @@
this.labelHelp4.ForeColor = System.Drawing.Color.White;
this.labelHelp4.InitVisible = true;
this.labelHelp4.LineSpacing = 0F;
- this.labelHelp4.Location = new System.Drawing.Point(103, 410);
+ this.labelHelp4.Location = new System.Drawing.Point(123, 409);
this.labelHelp4.Name = "labelHelp4";
- this.labelHelp4.Size = new System.Drawing.Size(585, 15);
+ this.labelHelp4.Size = new System.Drawing.Size(565, 16);
this.labelHelp4.TabIndex = 144;
this.labelHelp4.Text = "4. D : Dispenser1이 올라옴과 동시에 Dispenser2가 내려간다.";
this.labelHelp4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -444,9 +444,9 @@
this.labelHelp3.ForeColor = System.Drawing.Color.White;
this.labelHelp3.InitVisible = true;
this.labelHelp3.LineSpacing = 0F;
- this.labelHelp3.Location = new System.Drawing.Point(103, 389);
+ this.labelHelp3.Location = new System.Drawing.Point(123, 388);
this.labelHelp3.Name = "labelHelp3";
- this.labelHelp3.Size = new System.Drawing.Size(585, 15);
+ this.labelHelp3.Size = new System.Drawing.Size(565, 16);
this.labelHelp3.TabIndex = 143;
this.labelHelp3.Text = "3. C : \'지연시간1\'만큼 지난 후, Dispenser1이 올라온다.";
this.labelHelp3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -463,9 +463,9 @@
this.labelHelp2.ForeColor = System.Drawing.Color.White;
this.labelHelp2.InitVisible = true;
this.labelHelp2.LineSpacing = 0F;
- this.labelHelp2.Location = new System.Drawing.Point(103, 368);
+ this.labelHelp2.Location = new System.Drawing.Point(123, 367);
this.labelHelp2.Name = "labelHelp2";
- this.labelHelp2.Size = new System.Drawing.Size(585, 15);
+ this.labelHelp2.Size = new System.Drawing.Size(565, 16);
this.labelHelp2.TabIndex = 142;
this.labelHelp2.Text = "2. B : 피계량물이 Dispenser 센서 범위 안에 진입한다.";
this.labelHelp2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -482,9 +482,9 @@
this.labelHelp1.ForeColor = System.Drawing.Color.White;
this.labelHelp1.InitVisible = true;
this.labelHelp1.LineSpacing = 0F;
- this.labelHelp1.Location = new System.Drawing.Point(103, 347);
+ this.labelHelp1.Location = new System.Drawing.Point(123, 346);
this.labelHelp1.Name = "labelHelp1";
- this.labelHelp1.Size = new System.Drawing.Size(585, 15);
+ this.labelHelp1.Size = new System.Drawing.Size(565, 16);
this.labelHelp1.TabIndex = 141;
this.labelHelp1.Text = "1. A : 피계량물이 진입한다.";
this.labelHelp1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
diff --git a/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.cs b/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.cs
index 8c5345f..2938912 100644
--- a/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.cs
+++ b/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.cs
@@ -46,10 +46,13 @@ namespace ITC81DB.Controls
if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.English)
{
+ this.labelTitleSetting.Text = "Settings";
this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold);
this.labelTitleDelayTime1.Text = "Delay 1 time";
this.labelTitleDelayTime2.Text = "Delay 2 time";
+ this.labelTitleHelp.Text = "Help";
+
this.radioButtonPortNone.Text = "None";
this.radioButtonPort56.Text = "Output port 5, 6";
this.radioButtonPort78.Text = "Output port 7, 8";
@@ -66,10 +69,13 @@ namespace ITC81DB.Controls
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
{
+ this.labelTitleSetting.Text = "设置";
this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold);
this.labelTitleDelayTime1.Text = "延迟1时间";
this.labelTitleDelayTime2.Text = "延迟2时间";
+ this.labelTitleHelp.Text = "帮助";
+
this.radioButtonPortNone.Text = "不使用";
this.radioButtonPort56.Text = "输出 5, 6";
this.radioButtonPort78.Text = "输出 7, 8";
@@ -89,10 +95,13 @@ namespace ITC81DB.Controls
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
{
+ this.labelTitleSetting.Text = "Настройки";
this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 10, FontStyle.Bold);
this.labelTitleDelayTime1.Text = "Время задержки 1";
this.labelTitleDelayTime2.Text = "Время задержки 2";
+ this.labelTitleHelp.Text = "Помощь";
+
this.radioButtonPortNone.Text = "Нет";
this.radioButtonPort56.Text = "Порт выхода 5, 6";
this.radioButtonPort78.Text = "Порт выхода 7, 8";
@@ -109,10 +118,13 @@ namespace ITC81DB.Controls
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
{
+ this.labelTitleSetting.Text = "Einstellungen";
this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold);
this.labelTitleDelayTime1.Text = "Vezögerung 1";
this.labelTitleDelayTime2.Text = "Vezögerung 2";
+ this.labelTitleHelp.Text = "Helfen";
+
this.radioButtonPortNone.Text = "Keiner";
this.radioButtonPort56.Text = "Ausgangsport 5, 6";
this.radioButtonPort78.Text = "Ausgangsport 7, 8";
@@ -129,10 +141,13 @@ namespace ITC81DB.Controls
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Spanish)
{
+ this.labelTitleSetting.Text = "Ajustes";
this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 10, FontStyle.Bold);
this.labelTitleDelayTime1.Text = "1 Tiempo de retardo";
this.labelTitleDelayTime2.Text = "2 Tiempo de retardo";
+ this.labelTitleHelp.Text = "Ayuda";
+
this.radioButtonPortNone.Text = "Ninguna";
this.radioButtonPort56.Text = "Puerto de salida 5, 6";
this.radioButtonPort78.Text = "Puerto de salida 7, 8";
@@ -149,10 +164,13 @@ namespace ITC81DB.Controls
}
else
{
+ this.labelTitleSetting.Text = "품목 별 설정";
this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold);
this.labelTitleDelayTime1.Text = "지연시간 1";
this.labelTitleDelayTime2.Text = "지연시간 2";
+ this.labelTitleHelp.Text = "도움말";
+
this.radioButtonPortNone.Text = "None";
this.radioButtonPort56.Text = "Output port 5, 6";
this.radioButtonPort78.Text = "Output port 7, 8";
diff --git a/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.resx b/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.resx
index 51d29b0..42bee1d 100644
--- a/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.resx
+++ b/ITC81DB/Controls/Etc/ControlConfiOptionBoard2.resx
@@ -416,447 +416,447 @@
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
- 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
- t2/v2k/dEIzDhx4L+MvXYFxcXCw95pRWekIEG00b8E/Tpk0lJSXFtZ+6IRiHDz0W8JevwVjvU9xu4qJK
- T4hgo2kD/rnyyivtPd7d+qkbgnH40GMBf/kajPXFW4zlorswoWkD/rnsssvsvd7d+qkbgnH40GMBf/ke
- jJ2/j+CjaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0
- 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4
- t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0
- 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4
- t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0
- 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4
- t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0
- 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4
- t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0
- 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4
- t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0
- 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0KYqiKO/l1k9r4sxJBOMkQzAG/OUlGNNjw4ceC/jLS49NcG7D
- BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj
- w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D
- BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj
- w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D
- BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj
- w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D
- BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj
- w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D
- BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj
- w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D
- BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj
- w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D
- BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj
- w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D
- BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWlaVMURVHey62f1sSZkwjGSYZgDPjLSzCmx4YP
- PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG
- SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP
- PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG
- SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP
- PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG
- SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP
- PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG
- SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP
- PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG
- SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP
- PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+Dchi8p
- GG/YsEEeGVdc6QkRbDRtwD+XXXaZrFu3zrWfuqHHhg89FvCP1x6b4NyGLykY64s/NXlRpSdEsNG0Af9c
- eeWVUlRU5NpP3dBjw4ceC/jHa49NcG7DlxSMi4uLpcec0kpPiGCjaQP+adq0qaSkpLj2Uzf02PChxwL+
- 8dpjE5zb8CUF4969e8uUhWWVnhDBRtMG/NOrVy9p3769az91Q48NH3os4B+vPTbBuQ1fUjD+xS9+IevX
- r5dXZi6t9KQILpo24I9rr71WSkpK5JprrnHtp27oseFDjwX8cTE9NsG5DV9SMFYff/yxzCgp5wKRkKBp
- Aw3v8ssvlwEDBkirVq1c+2hN6LHhQo8FGt6l9Fjl3IYvORiruXPnytj81fLQmHPPhWCiaQMN60/+5E+k
- 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
- EmGKCm8lgrETyzV6pQEqsXyT9Yhi1EqXo3O7VclcVf8WCBaCccRRFEVRFBWcchurERwE44ijKIqiKCo4
- 5TZWIzgIxhFHURRFUVRwym2sRnAQjCOOoiiKoqjglNtYjeAgGEccRVEURVHBKbexGsFBMI44iqIoiqKC
- U25jNYKDYBxxFEVRFEUFp9zGagQHwTjiKIqiKIoKTrmN1QgOgnHEURRFURQVnHIbqxEcBOOIoyiKoigq
- OOU2ViM4CMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYA
- AACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAA
- DIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCM
- AQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAA
- ABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAg
- GAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgA
- AAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACA
- QTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIx
- AAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAA
- AINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgE
- YwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMA
- AAAGwRgAAAAwfA3Gq1atkiuuuMJ1wgAAAICGctlll8m6detcM2tNnFn4koJxbm6u/PznP3edOAAAAKCh
- XHnllVJUVOSaWWvizMKXFIxHjRolTZs2dZ04AAAAoKFoJk1JSXHNrDVxZuFLCsbt2rWTXr16uU4cAAAA
- 0FA0k7Zv3941s9bEmYUvKRhfffXVUlxcLNdee63rBAIAAAD1TbNoSUmJXHPNNa6ZtSbOLHxJwVi1atVK
- BgwYIJdffrnrhAIAAAD1RTOoZlHNpG5Z9UKcWfiSg7H66KOPpEePHvKnf/qnrhMMAAAA1LU/+ZM/sRlU
- s6hbRq0NZxauk2B81VVXSc+ePWXgwIFy3XXXuU44AAAAUFcaNWpks6dmUM2ibhm1NpxZuE6CccITTzwh
- eXl59uRnvTLwZz/7mfzkJz9xnRkAAACgtjRTarbUjKlZUzPnxZ4+4eTMwnUajJVekKd3q9DbZRQWFtob
- LeunkAAAAAAXSzOlZkvNmJo1NXO6ZVGvnFm4zoMxAAAAEBbOLEwwBgAAQNJyZmGCMQAAAJKWMwsTjAEA
- AJC0nFmYYAwAAICk5czCBGMAAAAkLWcWJhgDAAAgaTmzMMEYAAAAScuZhQnGAAAASFrOLEwwBgAAQNJy
- ZmGCMQAAAJKWMwsTjAEAAJC0nFm4UjAGAAAAkhXBGAAAADAIxgAAAMDohfL/Ayer/Ught5jUAAAAAElF
- TkSuQmCC
+ 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
+ HotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhz
+ uyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02b
+ HotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhz
+ uyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02b
+ HotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhz
+ uyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02b
+ HotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhzuyEY+wyNEoguL02bHotI0O/hR156bIhz
+ u4koGG/ZskWemVBU4QkR22iUQPRcd911smnTJtd+6oYei0jQ7+E3XntsiHO7iSgY64u/NG1ZhSdEbKNR
+ AtFz4403SmFhoWs/dUOPRSTo9/Abrz02xLndRBSMi4qKpNfCkgpPiNhGowSip0mTJpKUlOTaT93QYxEJ
+ +j38xmuPDXFuNxEF4759+8qMpaUVnhCxjUYJRE+fPn2kXbt2rv3UDT0WkaDfw2+89tgQ53YTUTD+5S9/
+ KZs3b5Y3566s8KSIXTRKIDpuvfVWKS4ulltuucW1n7qhxyIS9Hv4STg9NsS53UQUjNUXX3whc4rLuEAk
+ TtAogfp3/fXXy6BBg6Rly5aufbQ69FiEi34Pv4ikxyrndhNxMFaLFi2S8Xnr5clxV54LsYlGCdSvP/uz
+ P5NevXrJ559/7to/a4Iei3DQ7+EHtdFjndtNrQTjm2++WdLS0mRucZm8zVt+MY1GCdSfBg0ayODBg6V3
+ 795y0003ufbPmqDHIhz0eyS62uqxzu2mVoJxyB//+Ed7eyG9WKTnwhJpO3WZPMURjphCowTqzk9+8hP5
+ +c9/bq+M1otAcnNzw35rzw09Fl7Q75Fo6qrHOrebWg3GSi8W0Sup9QTo8vJyu2ECgB9oaC0oKLC3C2rb
+ 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
+ 75x/5zw5f1//Xt/v1QsLa3gybB2WLr8Us0xqut6mFMyV6V+/KElm52a4me+xD14n075sJcn5c1wfX1ne
+ ssV2W6ntumTWxdJNy8181KyXLMmeare30Y/9Dxlttr1RxpjmfyeL0ydIsvmZ6+846OtkFsyRw0di+9M6
+ d3232czPtJr3JbN8p/Rodnn56gGI2cPflBTTb9we76SvUbIuN/jKtV8bNq+Q1NypxjSzzk61/dxtOpQu
+ wzlzB8mksR/K5HE9rbnzh9i/hdvj3WzYUhJ85dopt7Ea3hGMEZZ4qUM/7JW3P39Gnn71N560ePmf5JkO
+ vw546dfydMf/4/q4ypqbxw1Mek8uXIjsPGe32vXdFnnyJX0N99eu7KnXfisfPPO38vmT/0M+e+r/sZ57
+ 5Z+luctj3Txl5mVeytjgq0entu4slfZv3S3Pd/mDvNDlVlctuzaw7P93aSDPd/pPad7ml8b/tl9btP+N
+ +XnDy49x+72QNt1ul5LcxXJiY7m9YO7ohiDz/8c2bLBC3zu2Mfj/wZ+FHn/5MZf/vVEOrV0tw/u9Lq1f
+ b1jh9dTlaa/wtYF0f+Fm+eTxn8nHj/21fGS+vtzhN/JCpel1Tn/l5+n4XmP54eiB4F8yejVgzHt2XXJb
+ x9w82elfpHurf5BRj/w3Gd70Bhn98H+TN1v+gzz52r+4Pt5Jt78nOvyzfL+v+osrw6kTp45J5x6P2Ndw
+ e203z5rt7aOn/0Y+D25/vVr8jbTw8rd46Z8lPXdmcApis/qOfNvT3+QJs3zff+7vLy9f/frqizeb5ftb
+ 18c76et0ePueOumvp388Ke/8UceKms+L9tKnHGraW5XOyzt/fDb46rVTbmM1vCMYIyzxUnvMANn5w6bS
+ 6bNG0nfW4570cXD7uVO/2U/IV1OayYvv/od8NbiLnD1X+5+CtH33Rnm07a/lvUH3yoC5T7pOR2UDZjwq
+ Ax3cHlNZv9mP23l5ygzqs5eMDL56dGpVab48YcJBt2/ukJ4jG0uP4Q9c04fGB8OMofcHvho9ht9f8XH2
+ e1e+6nO/8fUd8uTL/ywr1mQFX732SnfQWr9+u7zc8w8Vp2FYpemq9LMPzTyEXP5+5cdd/nfgMb3MvLz2
+ SUNpZtaVPft3BacgevXF4M7ybJd/sduI2/pWmW5vg2Y0k1FTH5aRhn7Vf19rOxww70l5s89d0uzFX8l3
+ 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
+ KbexGt4RjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEA
+ AACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAY
+ BGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgD
+ AAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAA
+ MAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEw
+ BgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAA
+ AGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACD
+ YAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMA
+ AADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAA
+ BsEYAAAAMAjGAAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjG
+ AAAAgEEwBgAAAAyCMQAAAGAQjAEAAACDYAwAAAAYBGMAAADAIBgDAAAABsEYAAAAMAjGAAAAgEEwBgAA
+ AAyCMQAAAGBENRivW7dObrjhBtcJAwAAAOrLddddJ5s2bXLNrNVxZuGIgnFOTo784he/cJ04AAAAoL7c
+ eOONUlhY6JpZq+PMwhEF4zFjxkiTJk1cJw4AAACoL5pJk5KSXDNrdZxZOKJg3LZtW+nTp4/rxAEAAAD1
+ RTNpu3btXDNrdZxZOKJgfPPNN0tRUZHceuutrhMIAAAA1DXNosXFxXLLLbe4ZtbqOLNwRMFYtWzZUgYN
+ GiTXX3+964QCAAAAdUUzqGZRzaRuWfVanFk44mCsPv/8c+nVq5f8+Z//uesEAwAAALXtz/7sz2wG1Szq
+ llFrwpmFayUY33TTTdK7d28ZPHiwNGzY0HXCAQAAgNrSoEEDmz01g2oWdcuoNeHMwrUSjENeeOEFyc3N
+ tSc/65WBP//5z+UnP/mJ68wAAAAANaWZUrOlZkzNmpo5wz19wsmZhWs1GCu9IE/vVqG3yygoKLA3WtZP
+ IQEAAADCpZlSs6VmTM2amjndsqhXzixc68EYAAAAiBfOLEwwBgAAgG85szDBGAAAAL7lzMIEYwAAAPiW
+ MwsTjAEAAOBbzixMMAYAAIBvObMwwRgAAAC+5czCBGMAAAD4ljMLE4wBAADgW84sTDAGAACAbzmzMMEY
+ AAAAvuXMwgRjAAAA+JYzC1cIxgAAAIBfEYwBAAAAg2AMAAAAjF0q/z/QA9QdBapfvAAAAABJRU5ErkJg
+ gg==
diff --git a/ITC81DB/Controls/MainDisplay/ControlMainBarGraph.cs b/ITC81DB/Controls/MainDisplay/ControlMainBarGraph.cs
index 4caa33d..de5b9f4 100644
--- a/ITC81DB/Controls/MainDisplay/ControlMainBarGraph.cs
+++ b/ITC81DB/Controls/MainDisplay/ControlMainBarGraph.cs
@@ -331,10 +331,13 @@ namespace ITC81DB.Controls
public void UpdateStartWeightDisplay(DataStore.EquipmentStatus status, WeightData data)
{
string value = "";
-
- value = data.ProductionSpeed.ToString();
- if (this.labelSpeed.Text != value)
- this.labelSpeed.Text = value;
+
+ if (data.ProductionSpeed <= 500)
+ {
+ value = data.ProductionSpeed.ToString();
+ if (this.labelSpeed.Text != value)
+ this.labelSpeed.Text = value;
+ }
this.SetProgressBarValue(this.progressBar, data.Weight, data.JudgmentStatus, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces);
diff --git a/ITC81DB/Controls/MainDisplay/ControlMainDataStatistics.Designer.cs b/ITC81DB/Controls/MainDisplay/ControlMainDataStatistics.Designer.cs
index 4127b1b..676f1d7 100644
--- a/ITC81DB/Controls/MainDisplay/ControlMainDataStatistics.Designer.cs
+++ b/ITC81DB/Controls/MainDisplay/ControlMainDataStatistics.Designer.cs
@@ -172,9 +172,9 @@
this.labelExNgCount.ForeColor = System.Drawing.Color.White;
this.labelExNgCount.InitVisible = true;
this.labelExNgCount.LineSpacing = 0F;
- this.labelExNgCount.Location = new System.Drawing.Point(337, 175);
+ this.labelExNgCount.Location = new System.Drawing.Point(347, 175);
this.labelExNgCount.Name = "labelExNgCount";
- this.labelExNgCount.Size = new System.Drawing.Size(120, 30);
+ this.labelExNgCount.Size = new System.Drawing.Size(110, 30);
this.labelExNgCount.TabIndex = 26;
this.labelExNgCount.Text = "234567890";
this.labelExNgCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
@@ -472,9 +472,9 @@
this.labelTitleExNG.ForeColor = System.Drawing.Color.White;
this.labelTitleExNG.InitVisible = true;
this.labelTitleExNG.LineSpacing = 0F;
- this.labelTitleExNG.Location = new System.Drawing.Point(252, 175);
+ this.labelTitleExNG.Location = new System.Drawing.Point(247, 175);
this.labelTitleExNG.Name = "labelTitleExNG";
- this.labelTitleExNG.Size = new System.Drawing.Size(80, 30);
+ this.labelTitleExNG.Size = new System.Drawing.Size(97, 30);
this.labelTitleExNG.TabIndex = 40;
this.labelTitleExNG.Text = "기타불량";
this.labelTitleExNG.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
diff --git a/ITC81DB/Controls/MainDisplay/ControlMainDataStatistics.cs b/ITC81DB/Controls/MainDisplay/ControlMainDataStatistics.cs
index b75cb10..5efcf8e 100644
--- a/ITC81DB/Controls/MainDisplay/ControlMainDataStatistics.cs
+++ b/ITC81DB/Controls/MainDisplay/ControlMainDataStatistics.cs
@@ -45,37 +45,88 @@ namespace ITC81DB.Controls
if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.English)
{
- this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engMainStatScreen));
+ this.labelTitleWeight.Font = new Font("새굴림", 15, FontStyle.Bold);
+ this.labelTitleWeight.Text = "Weight value";
+ this.labelTitleCount.Text = "Count";
+ this.labelTitleSumWeight.Text = "Sum(kg)";
+ this.labelTitleAverage.Text = "Average";
+ this.labelTitleNG.Text = "Faulty";
+ this.labelTitleExNG.Text = "Other Faulty";
+ this.labelTitleTotalCount.Text = "Total";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
{
- this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainStatScreen));
+ this.labelTitleWeight.Font = new Font("새굴림", 15, FontStyle.Bold);
+ this.labelTitleWeight.Text = "设定值";
+ this.labelTitleCount.Text = "当前";
+ this.labelTitleSumWeight.Text = "总和(kg)";
+ this.labelTitleAverage.Text = "平均";
+ this.labelTitleNG.Text = "剔除";
+ this.labelTitleExNG.Text = "其他不良";
+ this.labelTitleTotalCount.Text = "总共计数";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Czech)
{
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
{
- this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.rusMainStatScreen));
+ this.labelTitleWeight.Font = new Font("새굴림", 9, FontStyle.Bold);
+ this.labelTitleWeight.Text = "Настройка значений";
+ this.labelTitleCount.Text = "Итог";
+ this.labelTitleSumWeight.Text = "Сумма(kg)";
+ this.labelTitleAverage.Text = "Средний";
+ this.labelTitleNG.Text = "Дефект";
+ this.labelTitleExNG.Text = "Другие дефект";
+ this.labelTitleTotalCount.Text = "Итого";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
{
- this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.gerMainStatScreen));
+ this.labelTitleWeight.Font = new Font("새굴림", 11, FontStyle.Bold);
+ this.labelTitleWeight.Text = "Einstellungswert";
+ this.labelTitleCount.Text = "Zählen";
+ this.labelTitleSumWeight.Text = "Summe(kg)";
+ this.labelTitleAverage.Text = "Durchschnitt";
+ this.labelTitleNG.Text = "Schlecht";
+ this.labelTitleExNG.Text = "Andere Schlecht";
+ this.labelTitleTotalCount.Text = "Insgesamt";
}
else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Spanish)
{
- this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engMainStatScreen));
+ this.labelTitleWeight.Font = new Font("새굴림", 15, FontStyle.Bold);
+ this.labelTitleWeight.Text = "Setear Valor";
+ this.labelTitleCount.Text = "Conteo";
+ this.labelTitleSumWeight.Text = "Suma(kg)";
+ this.labelTitleAverage.Text = "Promedio";
+ this.labelTitleNG.Text = "Rechazo";
+ this.labelTitleExNG.Text = "Otro rechazo";
+ this.labelTitleTotalCount.Text = "Conteo Total";
}
else
{
- this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.korMainStatScreen));
+ this.labelTitleWeight.Font = new Font("새굴림", 15, FontStyle.Bold);
+ this.labelTitleWeight.Text = "설정값";
+ this.labelTitleCount.Text = "수량";
+ this.labelTitleSumWeight.Text = "누적(kg)";
+ this.labelTitleAverage.Text = "평균";
+ this.labelTitleNG.Text = "불량";
+ this.labelTitleExNG.Text = "기타불량";
+ this.labelTitleTotalCount.Text = "전체수량";
}
+
+ this.LabelUnit();
}
private void DefaultSetting()
{
-
}
+ public void LabelUnit()
+ {
+ string[] data = this.labelTitleSumWeight.Text.Split('(');
+ if (this.ParentForm.ParentForm.SystemConfig1.Unit == "oz")
+ this.labelTitleSumWeight.Text = data[0] + "(oz)";
+ else
+ this.labelTitleSumWeight.Text = data[0] + "(kg)";
+ }
private void SetProduct(ProductItem item)
{
string underValue = "", passValue = "", overValue = "";
@@ -137,17 +188,34 @@ namespace ITC81DB.Controls
#endregion
#region SumWeight
- value = data.UnderSumWeightKG;
- if (this.labelUnderSumWeight.Text != value)
- this.labelUnderSumWeight.Text = value;
+ if (this.ParentForm.ParentForm.SystemConfig1.Unit != "oz")
+ {
+ value = data.UnderSumWeightKG;
+ if (this.labelUnderSumWeight.Text != value)
+ this.labelUnderSumWeight.Text = value;
- value = data.PassSumWeightKG;
- if (this.labelPassSumWeight.Text != value)
- this.labelPassSumWeight.Text = value;
+ value = data.PassSumWeightKG;
+ if (this.labelPassSumWeight.Text != value)
+ this.labelPassSumWeight.Text = value;
- value = data.OverSumWeightKG;
- if (this.labelOverSumWeight.Text != value)
- this.labelOverSumWeight.Text = value;
+ value = data.OverSumWeightKG;
+ if (this.labelOverSumWeight.Text != value)
+ this.labelOverSumWeight.Text = value;
+ }
+ else
+ {
+ value = data.UnderSumWeight.ToString();
+ if (this.labelUnderSumWeight.Text != value)
+ this.labelUnderSumWeight.Text = value;
+
+ value = data.PassSumWeight.ToString();
+ if (this.labelPassSumWeight.Text != value)
+ this.labelPassSumWeight.Text = value;
+
+ value = data.OverSumWeight.ToString();
+ if (this.labelOverSumWeight.Text != value)
+ this.labelOverSumWeight.Text = value;
+ }
#endregion
#region Average
diff --git a/ITC81DB/DataStore.cs b/ITC81DB/DataStore.cs
index cac7da3..b0e0f3d 100644
--- a/ITC81DB/DataStore.cs
+++ b/ITC81DB/DataStore.cs
@@ -719,6 +719,9 @@ namespace ITC81DB
#region CommunicationCommand
public class CommunicationCommand
{
+ // 운전데이터 Respone
+ public static readonly string StartDataCMD = "Sr0";
+
// 불량알람(레벨)
public static readonly string AlarmNgLevel = "Caa00";
// 불량알람 해지
@@ -2202,6 +2205,60 @@ namespace ITC81DB
}
#endregion
+ #region CommunicationRespone
+ public class CommunicationRespone
+ {
+ #region Field
+ private bool m_IsFirst;
+
+ private string m_TransactionID;
+ private string m_TransferCount;
+ #endregion
+
+ #region Constructor
+ public CommunicationRespone()
+ {
+ this.Initialization();
+ }
+ #endregion
+
+ #region Property
+ public bool IsFirst
+ {
+ get { return this.m_IsFirst; }
+ set { this.m_IsFirst = value; }
+ }
+
+ ///
+ /// Data ID (0~9)
+ ///
+ public string TransactionID
+ {
+ get { return this.m_TransactionID; }
+ set { this.m_TransactionID = value; }
+ }
+ ///
+ /// 재전송 CNT (0~9)
+ ///
+ public string TransferCount
+ {
+ get { return this.m_TransferCount; }
+ set { this.m_TransferCount = value; }
+ }
+ #endregion
+
+ #region Method
+ public void Initialization()
+ {
+ this.IsFirst = false;
+
+ this.TransactionID = "a";
+ this.TransferCount = "a";
+ }
+ #endregion
+ }
+ #endregion
+
#region SystemConfigurationItem1
public class SystemConfigurationItem1
{
@@ -3869,6 +3926,11 @@ namespace ITC81DB
private bool m_IsStackUpSensorError;
private bool m_IsWindProofError;
+ private double m_SumOfSquare;
+ private double m_PassMaxWeight;
+ private double m_PassMinWeight;
+ private double m_ExNGSumWeight;
+
private DateTime m_StartTime;
private DateTime m_StopTime;
@@ -4016,7 +4078,6 @@ namespace ITC81DB
return ret;
}
}
-
public string UnderSumWeightKG
{
get
@@ -4024,7 +4085,7 @@ namespace ITC81DB
string temp = "", ret = "";
temp = string.Format("{0:f0}", this.UnderSumWeight);
- ret = string.Format("{0}", int.Parse(temp) / 1000);
+ ret = string.Format("{0:0.00}", double.Parse(temp) / 1000);
return ret;
}
@@ -4075,7 +4136,7 @@ namespace ITC81DB
string temp = "", ret = "";
temp = string.Format("{0:f0}", this.PassSumWeight);
- ret = string.Format("{0}", int.Parse(temp) / 1000);
+ ret = string.Format("{0:0.00}", double.Parse(temp) / 1000);
return ret;
}
@@ -4126,17 +4187,124 @@ namespace ITC81DB
string temp = "", ret = "";
temp = string.Format("{0:f0}", this.OverSumWeight);
- ret = string.Format("{0}", int.Parse(temp) / 1000);
+ ret = string.Format("{0:0.00}", double.Parse(temp) / 1000);
return ret;
}
}
+ public int CountForSD
+ {
+ get
+ {
+ return this.OverCount + this.PassCount + this.UnderCount;
+ }
+ }
+
+ // Under + Over
+ public double NGAverage
+ {
+ get
+ {
+ double ret = 0.0;
+
+ if (this.OverCount + this.UnderCount == 0)
+ ret = 0.0;
+ else
+ ret = (this.OverSumWeight + this.UnderSumWeight) / (this.OverCount + this.UnderCount);
+
+ return ret;
+ }
+ }
+ public double PassMinWeight
+ {
+ get { return this.m_PassMinWeight; }
+ set { this.m_PassMinWeight = value; }
+ }
+ public double PassMaxWeight
+ {
+ get { return this.m_PassMaxWeight; }
+ set { this.m_PassMaxWeight = value; }
+ }
+ public double MaxMinusMinWeight
+ {
+ get
+ {
+ double ret = 0.0;
+
+ ret = this.PassMaxWeight - this.PassMinWeight;
+
+ return ret;
+ }
+ }
+ public double AverageForSD
+ {
+ get
+ {
+ if (this.CountForSD == 0)
+ return 0.0;
+ else
+ {
+ double average = (this.OverSumWeight + this.UnderSumWeight + this.PassSumWeight) / CountForSD;
+
+ return average;
+ }
+ }
+ }
+ public double SumOfSquaresDivideByCount
+ {
+ get
+ {
+ if (CountForSD == 0)
+ return 0.0;
+ else
+ {
+ return this.SumOfSquare / CountForSD;
+ }
+ }
+ }
+ public double SumOfSquare
+ {
+ get { return this.m_SumOfSquare; }
+ set { this.m_SumOfSquare = value; }
+ }
+
public int ExNGCount
{
get { return this.m_ExNGCount; }
set { this.m_ExNGCount = value; }
}
+ public string ExNGRatio
+ {
+ get
+ {
+ string ret = "";
+
+ if (this.ExNGCount == 0 || this.TotalCount == 0)
+ ret = "0.00";
+ else
+ ret = string.Format("{0:##0.00}", (float.Parse(this.ExNGCount.ToString()) * 100.0F) / this.TotalCount);
+
+ return ret;
+ }
+ }
+ public double ExNGSumWeight
+ {
+ get { return this.m_ExNGSumWeight; }
+ set { this.m_ExNGSumWeight = value; }
+ }
+ public string ExNGSumWeightKG
+ {
+ get
+ {
+ string temp = "", ret = "";
+
+ temp = string.Format("{0:f0}", this.ExNGSumWeight);
+ ret = string.Format("{0:0.00}", double.Parse(temp) / 1000);
+
+ return ret;
+ }
+ }
public int TotalUnderOverCount
{
@@ -4151,6 +4319,33 @@ namespace ITC81DB
{
get { return this.UnderCount + this.PassCount + this.OverCount + this.ExNGCount; }
}
+ public double TotalWeight
+ {
+ get { return this.UnderSumWeight + this.OverSumWeight + this.PassSumWeight + this.ExNGSumWeight; }
+ }
+ public string TotalWeightKG
+ {
+ get
+ {
+ string temp = "", ret = "";
+
+ temp = string.Format("{0:f0}", this.TotalWeight);
+ ret = string.Format("{0:0.00}", double.Parse(temp) / 1000);
+
+ return ret;
+ }
+ }
+
+ public double StandardDeviation
+ {
+ // Under + Pass + Over 표준편차
+ get
+ {
+ double average = this.AverageForSD;
+
+ return Math.Sqrt(this.SumOfSquaresDivideByCount - (average * average));
+ }
+ }
public double Weight
{
@@ -4283,6 +4478,7 @@ namespace ITC81DB
#region Mehtod
public void ClearCount()
{
+ // 1
this.UnderCount = 0;
this.UnderSumWeight = 0.0;
this.PassCount = 0;
@@ -4296,6 +4492,12 @@ namespace ITC81DB
for (int i = 0; i < this.CollectionNormalDistributionCount.Count; i++)
this.CollectionNormalDistributionCount[i] = 0;
+
+ // 2
+ this.SumOfSquare = 0.0;
+ this.PassMaxWeight = 0.0;
+ this.PassMinWeight = 0.0;
+ this.ExNGSumWeight = 0.0;
}
private void Initialization()
@@ -4318,6 +4520,7 @@ namespace ITC81DB
this.PassSumWeight = 0.0;
this.OverCount = 0;
this.OverSumWeight = 0.0;
+ this.ExNGSumWeight = 0.0;
this.ExNGCount = 0;
this.Weight = 0.0;
this.ADCValue = "12345";
@@ -4325,6 +4528,9 @@ namespace ITC81DB
this.Status = DataStore.WeightStatus.Empty;
this.ProductionSpeed = 0;
this.WeightString = "0";
+ this.PassMaxWeight = 0.0;
+ this.PassMinWeight = 0.0;
+ this.SumOfSquare = 0.0;
this.CollectionNormalDistributionCount = new Collection();
this.CollectionNormalDistributionCount.Clear();
@@ -4366,14 +4572,31 @@ namespace ITC81DB
public void WeightSum(DataStore.JudgmentStatus status)
{
- if (status == DataStore.JudgmentStatus.Over)
- this.OverSumWeight += this.Weight;
- else if (status == DataStore.JudgmentStatus.Pass)
- this.PassSumWeight += this.Weight;
- else if (status == DataStore.JudgmentStatus.Under)
+ if (status != DataStore.JudgmentStatus.Over && status != DataStore.JudgmentStatus.Pass && status != DataStore.JudgmentStatus.Under)
{
- if (this.Weight > 0.0)
- this.UnderSumWeight += this.Weight;
+ this.ExNGSumWeight += this.Weight;
+ }
+ else
+ {
+ this.SumOfSquare += this.Weight * this.Weight;
+
+ if (status == DataStore.JudgmentStatus.Over)
+ this.OverSumWeight += this.Weight;
+ else if (status == DataStore.JudgmentStatus.Pass)
+ {
+ if (this.PassMaxWeight == 0.0 || this.PassMaxWeight < this.Weight)
+ this.PassMaxWeight = this.Weight;
+
+ if (this.PassMinWeight == 0.0 || this.PassMinWeight > this.Weight)
+ this.PassMinWeight = this.Weight;
+
+ this.PassSumWeight += this.Weight;
+ }
+ else if (status == DataStore.JudgmentStatus.Under)
+ {
+ if (this.Weight > 0.0)
+ this.UnderSumWeight += this.Weight;
+ }
}
}
@@ -4440,6 +4663,73 @@ namespace ITC81DB
public int DummyInt4;
public int DummyInt5;
}
+ [StructLayout(LayoutKind.Sequential)]
+ public struct StructCounterItem2
+ {
+ // Under/Over/Pass 판정 제품의 제곱의 합 / Under/Over/Pass 판정 제품 개수
+ public double SumOfSquaresDividedByCount;
+ public double PassMaxWeight;
+ public double PassMinWeight;
+ public double ExNGSumWeight;
+
+ public double DummyDouble1;
+ public double DummyDouble2;
+ public double DummyDouble3;
+ public double DummyDouble4;
+ public double DummyDouble5;
+ public double DummyDouble6;
+ public double DummyDouble7;
+ public double DummyDouble8;
+ public double DummyDouble9;
+ public double DummyDouble10;
+ public double DummyDouble11;
+ public double DummyDouble12;
+ public double DummyDouble13;
+ public double DummyDouble14;
+ public double DummyDouble15;
+ public double DummyDouble16;
+ public double DummyDouble17;
+ public double DummyDouble18;
+ public double DummyDouble19;
+ public double DummyDouble20;
+
+ public int DummyInt1;
+ public int DummyInt2;
+ public int DummyInt3;
+ public int DummyInt4;
+ public int DummyInt5;
+ public int DummyInt6;
+ public int DummyInt7;
+ public int DummyInt8;
+ public int DummyInt9;
+ public int DummyInt10;
+ public int DummyInt11;
+ public int DummyInt12;
+ public int DummyInt13;
+ public int DummyInt14;
+ public int DummyInt15;
+ public int DummyInt16;
+ public int DummyInt17;
+ public int DummyInt18;
+ public int DummyInt19;
+ public int DummyInt20;
+
+ public DateTime DummyDateTime1;
+ public DateTime DummyDateTime2;
+
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString1;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString2;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString3;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString4;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString5;
+ [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
+ public string DummyString6;
+ }
#endregion
#region AverageTrackingData
diff --git a/ITC81DB/DialogForms/DialogFormLogOn.Designer.cs b/ITC81DB/DialogForms/DialogFormLogOn.Designer.cs
index c4758ba..d96c9d2 100644
--- a/ITC81DB/DialogForms/DialogFormLogOn.Designer.cs
+++ b/ITC81DB/DialogForms/DialogFormLogOn.Designer.cs
@@ -60,6 +60,7 @@
this.textBoxPassword.Location = new System.Drawing.Point(271, 124);
this.textBoxPassword.MaxLength = 10;
this.textBoxPassword.Name = "textBoxPassword";
+ this.textBoxPassword.PasswordChar = '*';
this.textBoxPassword.Size = new System.Drawing.Size(218, 37);
this.textBoxPassword.TabIndex = 167;
this.textBoxPassword.Text = "ABCDEFGHJK";
diff --git a/ITC81DB/Forms/FormMain.Designer.cs b/ITC81DB/Forms/FormMain.Designer.cs
index ff19d93..97b880a 100644
--- a/ITC81DB/Forms/FormMain.Designer.cs
+++ b/ITC81DB/Forms/FormMain.Designer.cs
@@ -46,6 +46,8 @@
this.timerSensorError = new System.Windows.Forms.Timer();
this.smartFileStartStopLog = new SmartX.SmartFile();
this.smartFileBarcodeLog = new SmartX.SmartFile();
+ this.smartThreadSerialPort2OverRun = new SmartX.SmartThread(this.components);
+ this.smartThreadSerialPort2Read = new SmartX.SmartThread(this.components);
((System.ComponentModel.ISupportInitialize)(this.smartForm)).BeginInit();
this.SuspendLayout();
//
@@ -91,6 +93,7 @@
this.smartSerialPort2.STXCodes = null;
this.smartSerialPort2.TailErrorCodeOffset = 0;
this.smartSerialPort2.OnReadQueueEvent += new SmartX.SmartSerialPort.ReceiveDataHandler(this.smartSerialPort2_OnReadQueueEvent);
+ this.smartSerialPort2.OnPortError += new SmartX.SmartSerialPort.PortErrorHandler(this.smartSerialSerialPort2_OnPortError);
//
// smartSerialPort1
//
@@ -198,6 +201,16 @@
//
this.smartFileBarcodeLog.FilePathName = null;
//
+ // smartThreadSerialPort2OverRun
+ //
+ this.smartThreadSerialPort2OverRun.Priority = System.Threading.ThreadPriority.Normal;
+ this.smartThreadSerialPort2OverRun.UIThreadFunction += new SmartX.SmartThread.UIThreadHandler(this.smartThreadSerialPort2Read_UIThreadFunction);
+ //
+ // smartThreadSerialPort2Read
+ //
+ this.smartThreadSerialPort2Read.Priority = System.Threading.ThreadPriority.Normal;
+ this.smartThreadSerialPort2Read.UIThreadFunction += new SmartX.SmartThread.UIThreadHandler(this.smartThreadSerialPort2Read_UIThreadFunction);
+ //
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -231,6 +244,8 @@
private System.Windows.Forms.Timer timerSensorError;
public SmartX.SmartFile smartFileStartStopLog;
public SmartX.SmartFile smartFileBarcodeLog;
+ private SmartX.SmartThread smartThreadSerialPort2OverRun;
+ private SmartX.SmartThread smartThreadSerialPort2Read;
}
}
diff --git a/ITC81DB/Forms/FormMain.cs b/ITC81DB/Forms/FormMain.cs
index af51b6c..b34dc7d 100644
--- a/ITC81DB/Forms/FormMain.cs
+++ b/ITC81DB/Forms/FormMain.cs
@@ -17,14 +17,15 @@ using SmartX;
using ITC81DB.DialogForms;
using ITC81DB.Controls;
using InModbus;
+using ITC81DB.SerialManager;
namespace ITC81DB.Forms
{
public partial class FormMain : Form
{
#region Field
- public static string DisplayVersion = "8.16.0";
- public static string ReleaseDate = "2023.7.13";
+ public static string DisplayVersion = "8.18.0";
+ public static string ReleaseDate = "2023.11.24";
public SmartSplash SmartSplashProgramLoad;
public bool IsCommunicationLogOpen;
@@ -54,6 +55,16 @@ namespace ITC81DB.Forms
public bool IsCountingOutputCrossStatus;
private bool IsSatisfyCounting;
+ // 재전송 기능
+ public int MissingCommIDCount;
+ public int CommID;
+ public bool FlagSerialDll = true;
+ private string ComPortMainToLCD;
+ private Queue QueueCommunicationRecive; // 큐 통신 데이터용
+ private int FlagComRetry3th; // 3회 재전송 횟수
+ public Queue QueueOverRun = new Queue();
+ private int IndexOverRun = 0;
+
// Form
public FormMainDisplay ChildFormMainDisplay;
public FormMenu ChildFormMenu;
@@ -190,6 +201,8 @@ namespace ITC81DB.Forms
private Collection CollectionAverageTrackingItem;
// 리젝데이터
private JudgmentResult CurrentJudgmentResult;
+ // Communication Respone
+ private CommunicationRespone CurrentComRespone;
// HM Handshake를 위한 함수
private int HMCOM1_Step;
@@ -371,7 +384,11 @@ namespace ITC81DB.Forms
this.IsAlarmOccured = false;
this.IsCountingOutputCrossStatus = false;
this.IsSatisfyCounting = false;
+ this.FlagComRetry3th = 0;
+ this.MissingCommIDCount = 0;
+ this.CommID = 0;
+ this.QueueCommunicationRecive = new Queue();
this.CurrentAlarmList = new AlarmList();
this.StopWatchForBuzzer = new Stopwatch();
this.Modbus = new Modbus();
@@ -414,6 +431,8 @@ namespace ITC81DB.Forms
this.PathSDCardSystemFileBackupFolder = this.PathLaunchFolder + "SystemFileBackup\\";
this.PathSDCardRemoveFileFolder = this.PathLaunchFolder + "RemoveFile\\";
+ this.CurrentComRespone = new CommunicationRespone();
+
this.CollectionIOTest_InputData = new Collection();
this.CollectionIOTest_InputData.Clear();
for (int i = 0; i < 8; i++)
@@ -477,7 +496,8 @@ namespace ITC81DB.Forms
files = pathSDCardSystemFileFolder.GetFiles();
foreach (FileInfo subFile in files)
{
- if (subFile.Name != "ProductItem.int" && subFile.Name != "JudgmentSetItem.int" && subFile.Name != "counterItem.int")
+ if (subFile.Name != "ProductItem.int" && subFile.Name != "JudgmentSetItem.int"
+ && subFile.Name != "counterItem.int" && subFile.Name != "counterItem2.int")
subFile.MoveTo(this.PathSDCardSystemFile1Folder + subFile.Name);
}
}
@@ -490,7 +510,8 @@ namespace ITC81DB.Forms
files = pathSDCardSystemFileFolder.GetFiles();
foreach (FileInfo subFile in files)
{
- if (subFile.Name == "ProductItem.int" || subFile.Name == "JudgmentSetItem.int" || subFile.Name == "counterItem.int")
+ if (subFile.Name == "ProductItem.int" || subFile.Name == "JudgmentSetItem.int"
+ || subFile.Name == "counterItem.int" || subFile.Name == "counterItem2.int")
subFile.MoveTo(this.PathSDCardSystemFile2Folder + subFile.Name);
}
}
@@ -502,6 +523,17 @@ namespace ITC81DB.Forms
pathSDCardSystemFileFolder.Delete();
}
+ // COM port 설정
+ this.smartSerialPort2.PortNo = SmartSerialPort.COMPORTNO.COM2;
+ this.ComPortMainToLCD = "COM2:";
+
+ if (this.FlagSerialDll == true)
+ {
+ SerialMgrComm.IntializeSerialManager();
+ SerialMgrComm.SerialPortMessageReceive += this.SerialPort_MessageReceive;
+ SerialMgrComm.SerialPortErrMessageReceive += this.SerialPort_ErrMessageReceive;
+ }
+
// DataBackup 폴더 생성
if (Directory.Exists(this.PathDataBackupFolder) == false)
Directory.CreateDirectory(this.PathDataBackupFolder);
@@ -580,9 +612,10 @@ namespace ITC81DB.Forms
}
public void BarcodeSerialSetting()
{
+ int baudrate = 9600;
+
// 통신 포트 설정
- if (this.smartSerialPort3.IsOpen == true)
- this.smartSerialPort3.Close();
+ this.CloseSerialCOM3();
// STXANDETX
this.ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType.STXANDETX);
@@ -595,17 +628,27 @@ namespace ITC81DB.Forms
this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._115200bps;
this.SystemConfig1.SerialCOM3BaudRate = 4;
this.SaveSystemConfigurationFile1(this.SystemConfig1);
+ baudrate = 115200;
break;
case 3:
this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._115200bps;
this.SystemConfig1.SerialCOM3BaudRate = 4;
this.SaveSystemConfigurationFile1(this.SystemConfig1);
+ baudrate = 115200;
break;
default:
break;
}
- this.smartSerialPort3.Open();
+ if (this.FlagSerialDll == false)
+ {
+ this.smartSerialPort3.Open();
+ }
+ else
+ {
+ // Port : COM3
+ SerialMgrComm.serialPortOpen("COM3:", baudrate, 0, 0, 8);
+ }
}
private void CreateForm()
{
@@ -940,6 +983,46 @@ namespace ITC81DB.Forms
this.FlagThreadMessage1 = false;
}
}
+ private bool UI_Invoke(ThreadStart invoker)
+ {
+ try
+ {
+ if (this.InvokeRequired)
+ {
+ if (this.IsDisposed)
+ return true;
+
+ this.Invoke(invoker);
+ }
+ else
+ {
+ invoker();
+ }
+
+ return true;
+
+ }
+ catch (Exception e)
+ {
+ return false;
+ }
+
+ }
+ private void SerialPort_MessageReceive(object data)
+ {
+ this.UI_Invoke(delegate
+ {
+ this.SerialReceiveData(data.ToString());
+ });
+ }
+ private void SerialPort_ErrMessageReceive(object data)
+ {
+ this.UI_Invoke(delegate
+ {
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive ({0:yyyy-MM-dd HH:mm:ss}): {1} : Dll(Err MSG)", DateTime.Now, data));
+ });
+ }
///
/// Set Mode
@@ -1036,11 +1119,11 @@ namespace ITC81DB.Forms
this.TransferSerialCOM1(string.Format("\n\nUNDER = {0}{1}",
Helper.StringToDecimalPlaces(pItem.UnderRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM1(string.Format("\n COUNT = {0}", data.UnderCount));
- if(this.SystemConfig1.Unit != "oz")
- this.TransferSerialCOM1(string.Format("\n TOTAL.W = {0}kg", data.UnderSumWeightKG));
+ if (this.SystemConfig1.Unit != "oz")
+ this.TransferSerialCOM1(string.Format("\n TOTAL.WT = {0}kg", data.UnderSumWeightKG));
else
- this.TransferSerialCOM1(string.Format("\n TOTAL.W = {0}oz", data.UnderSumWeight));
- this.TransferSerialCOM1(string.Format("\n AVG = {0}{1}",
+ this.TransferSerialCOM1(string.Format("\n TOTAL.WT = {0}oz", data.UnderSumWeight));
+ this.TransferSerialCOM1(string.Format("\n MEAN = {0}{1}",
Helper.DoubleToString(data.UnderAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM1(string.Format("\n RATIO = {0}%", data.UnderRatio));
@@ -1048,30 +1131,52 @@ namespace ITC81DB.Forms
Helper.StringToDecimalPlaces(pItem.PassRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM1(string.Format("\n COUNT = {0}", data.PassCount));
if (this.SystemConfig1.Unit != "oz")
- this.TransferSerialCOM1(string.Format("\n TOTAL.W = {0}kg", data.PassSumWeightKG));
+ this.TransferSerialCOM1(string.Format("\n TOTAL.WT = {0}kg", data.PassSumWeightKG));
else
- this.TransferSerialCOM1(string.Format("\n TOTAL.W = {0}oz", data.PassSumWeight));
- this.TransferSerialCOM1(string.Format("\n AVG = {0}{1}",
+ this.TransferSerialCOM1(string.Format("\n TOTAL.WT = {0}oz", data.PassSumWeight));
+ this.TransferSerialCOM1(string.Format("\n MEAN = {0}{1}",
Helper.DoubleToString(data.PassAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM1(string.Format("\n RATIO = {0}%", data.PassRatio));
+ this.TransferSerialCOM1(string.Format("\n MAX.WT = {0}{1}",
+ Helper.DoubleToString(data.PassMaxWeight, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
+ this.TransferSerialCOM1(string.Format("\n MIN.WT = {0}{1}",
+ Helper.DoubleToString(data.PassMinWeight, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
+ this.TransferSerialCOM1(string.Format("\n RANGE = {0}{1}",
+ Helper.DoubleToString(data.MaxMinusMinWeight, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM1(string.Format("\n\nOVER = {0}{1}",
Helper.StringToDecimalPlaces(pItem.OverRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM1(string.Format("\n COUNT = {0}", data.OverCount));
if (this.SystemConfig1.Unit != "oz")
- this.TransferSerialCOM1(string.Format("\n TOTAL.W = {0}kg", data.OverSumWeightKG));
+ this.TransferSerialCOM1(string.Format("\n TOTAL.WT = {0}kg", data.OverSumWeightKG));
else
- this.TransferSerialCOM1(string.Format("\n TOTAL.W = {0}oz", data.OverSumWeight));
- this.TransferSerialCOM1(string.Format("\n AVG = {0}{1}",
+ this.TransferSerialCOM1(string.Format("\n TOTAL.WT = {0}oz", data.OverSumWeight));
+ this.TransferSerialCOM1(string.Format("\n MEAN = {0}{1}",
Helper.DoubleToString(data.OverAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM1(string.Format("\n RATIO = {0}%", data.OverRatio));
this.TransferSerialCOM1(string.Format("\n\nTARE = {0}{1}",
Helper.StringToDecimalPlaces(pItem.TareRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
- this.TransferSerialCOM1(string.Format("\n\nFaulty = {0}", data.TotalUnderOverCount));
- this.TransferSerialCOM1(string.Format("\n\nOther.F = {0}", data.ExNGCount));
- this.TransferSerialCOM1(string.Format("\n\nTOTAL.COUNT= {0}", data.TotalCount));
+ this.TransferSerialCOM1(string.Format("\n\nFAULTY(WEIGHT NG : Over+Under)"));
+ this.TransferSerialCOM1(string.Format("\n COUNT = {0}", data.TotalUnderOverCount));
+ this.TransferSerialCOM1(string.Format("\n MEAN = {0}{1}",
+ Helper.DoubleToString(data.NGAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
+
+ string temp = string.Format("\n\nSD(O+P+U) = {0:0.0000}", data.StandardDeviation);
+ if (temp == "NaN")
+ this.TransferSerialCOM1("0.0000");
+ else
+ this.TransferSerialCOM1(temp);
+
+ this.TransferSerialCOM1(string.Format("\n\nOTHER FAULTY(ExNG)"));
+ this.TransferSerialCOM1(string.Format("\n COUNT = {0}", data.ExNGCount));
+
+ this.TransferSerialCOM1(string.Format("\n\nTOTAL.COUNT = {0}", data.TotalCount));
+ if (this.SystemConfig1.Unit != "oz")
+ this.TransferSerialCOM1(string.Format("\nTOTAL.WT = {0}kg", data.TotalWeightKG));
+ else
+ this.TransferSerialCOM1(string.Format("\nTOTAL.WT = {0}oz", data.TotalWeight));
this.TransferSerialCOM1("\n################################\n\n\n\n");
#endregion
@@ -1090,10 +1195,10 @@ namespace ITC81DB.Forms
Helper.StringToDecimalPlaces(pItem.UnderRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM3(string.Format("\n COUNT = {0}", data.UnderCount));
if (this.SystemConfig1.Unit != "oz")
- this.TransferSerialCOM3(string.Format("\n TOTAL.W = {0}kg", data.UnderSumWeightKG));
+ this.TransferSerialCOM3(string.Format("\n TOTAL.WT = {0}kg", data.UnderSumWeightKG));
else
- this.TransferSerialCOM3(string.Format("\n TOTAL.W = {0}oz", data.UnderSumWeight));
- this.TransferSerialCOM3(string.Format("\n AVG = {0}{1}",
+ this.TransferSerialCOM3(string.Format("\n TOTAL.WT = {0}oz", data.UnderSumWeight));
+ this.TransferSerialCOM3(string.Format("\n MEAN = {0}{1}",
Helper.DoubleToString(data.UnderAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM3(string.Format("\n RATIO = {0}%", data.UnderRatio));
@@ -1101,30 +1206,52 @@ namespace ITC81DB.Forms
Helper.StringToDecimalPlaces(pItem.PassRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM3(string.Format("\n COUNT = {0}", data.PassCount));
if (this.SystemConfig1.Unit != "oz")
- this.TransferSerialCOM3(string.Format("\n TOTAL.W = {0}kg", data.PassSumWeightKG));
+ this.TransferSerialCOM3(string.Format("\n TOTAL.WT = {0}kg", data.PassSumWeightKG));
else
- this.TransferSerialCOM3(string.Format("\n TOTAL.W = {0}oz", data.PassSumWeight));
- this.TransferSerialCOM3(string.Format("\n AVG = {0}{1}",
+ this.TransferSerialCOM3(string.Format("\n TOTAL.WT = {0}oz", data.PassSumWeight));
+ this.TransferSerialCOM3(string.Format("\n MEAN = {0}{1}",
Helper.DoubleToString(data.PassAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM3(string.Format("\n RATIO = {0}%", data.PassRatio));
+ this.TransferSerialCOM3(string.Format("\n MAX.WT = {0}{1}",
+ Helper.DoubleToString(data.PassMaxWeight, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
+ this.TransferSerialCOM3(string.Format("\n MIN.WT = {0}{1}",
+ Helper.DoubleToString(data.PassMinWeight, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
+ this.TransferSerialCOM3(string.Format("\n RANGE = {0}{1}",
+ Helper.DoubleToString(data.MaxMinusMinWeight, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM3(string.Format("\n\nOVER = {0}{1}",
Helper.StringToDecimalPlaces(pItem.OverRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM3(string.Format("\n COUNT = {0}", data.OverCount));
if (this.SystemConfig1.Unit != "oz")
- this.TransferSerialCOM3(string.Format("\n TOTAL.W = {0}kg", data.OverSumWeightKG));
+ this.TransferSerialCOM3(string.Format("\n TOTAL.WT = {0}kg", data.OverSumWeightKG));
else
- this.TransferSerialCOM3(string.Format("\n TOTAL.W = {0}oz", data.OverSumWeight));
- this.TransferSerialCOM3(string.Format("\n AVG = {0}{1}",
+ this.TransferSerialCOM3(string.Format("\n TOTAL.WT = {0}oz", data.OverSumWeight));
+ this.TransferSerialCOM3(string.Format("\n MEAN = {0}{1}",
Helper.DoubleToString(data.OverAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM3(string.Format("\n RATIO = {0}%", data.OverRatio));
this.TransferSerialCOM3(string.Format("\n\nTARE = {0}{1}",
Helper.StringToDecimalPlaces(pItem.TareRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
- this.TransferSerialCOM3(string.Format("\n\nFaulty = {0}", data.TotalUnderOverCount));
- this.TransferSerialCOM3(string.Format("\n\nOther.F = {0}", data.ExNGCount));
- this.TransferSerialCOM3(string.Format("\n\nTOTAL.COUNT= {0}", data.TotalCount));
+ this.TransferSerialCOM3(string.Format("\n\nFAULTY(WEIGHT NG : Over+Under)"));
+ this.TransferSerialCOM3(string.Format("\n COUNT = {0}", data.TotalUnderOverCount));
+ this.TransferSerialCOM3(string.Format("\n MEAN = {0}{1}",
+ Helper.DoubleToString(data.NGAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
+
+ string temp = string.Format("\n\nSD(O+P+U) = {0:0.0000}", data.StandardDeviation);
+ if (temp == "NaN")
+ this.TransferSerialCOM3("0.0000");
+ else
+ this.TransferSerialCOM3(temp);
+
+ this.TransferSerialCOM3(string.Format("\n\nOTHER FAULTY(ExNG)"));
+ this.TransferSerialCOM3(string.Format("\n COUNT = {0}", data.ExNGCount));
+
+ this.TransferSerialCOM3(string.Format("\n\nTOTAL.COUNT = {0}", data.TotalCount));
+ if (this.SystemConfig1.Unit != "oz")
+ this.TransferSerialCOM3(string.Format("\nTOTAL.WT = {0}kg", data.TotalWeightKG));
+ else
+ this.TransferSerialCOM3(string.Format("\nTOTAL.WT = {0}oz", data.TotalWeight));
this.TransferSerialCOM3("\n################################\n\n\n\n");
#endregion
@@ -1143,10 +1270,10 @@ namespace ITC81DB.Forms
Helper.StringToDecimalPlaces(pItem.UnderRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM4(string.Format("\n COUNT = {0}", data.UnderCount));
if (this.SystemConfig1.Unit != "oz")
- this.TransferSerialCOM4(string.Format("\n TOTAL.W = {0}kg", data.UnderSumWeightKG));
+ this.TransferSerialCOM4(string.Format("\n TOTAL.WT = {0}kg", data.UnderSumWeightKG));
else
- this.TransferSerialCOM4(string.Format("\n TOTAL.W = {0}oz", data.UnderSumWeight));
- this.TransferSerialCOM4(string.Format("\n AVG = {0}{1}",
+ this.TransferSerialCOM4(string.Format("\n TOTAL.WT = {0}oz", data.UnderSumWeight));
+ this.TransferSerialCOM4(string.Format("\n MEAN = {0}{1}",
Helper.DoubleToString(data.UnderAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM4(string.Format("\n RATIO = {0}%", data.UnderRatio));
@@ -1154,30 +1281,52 @@ namespace ITC81DB.Forms
Helper.StringToDecimalPlaces(pItem.PassRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM4(string.Format("\n COUNT = {0}", data.PassCount));
if (this.SystemConfig1.Unit != "oz")
- this.TransferSerialCOM4(string.Format("\n TOTAL.W = {0}kg", data.PassSumWeightKG));
+ this.TransferSerialCOM4(string.Format("\n TOTAL.WT = {0}kg", data.PassSumWeightKG));
else
- this.TransferSerialCOM4(string.Format("\n TOTAL.W = {0}oz", data.PassSumWeight));
- this.TransferSerialCOM4(string.Format("\n AVG = {0}{1}",
+ this.TransferSerialCOM4(string.Format("\n TOTAL.WT = {0}oz", data.PassSumWeight));
+ this.TransferSerialCOM4(string.Format("\n MEAN = {0}{1}",
Helper.DoubleToString(data.PassAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM4(string.Format("\n RATIO = {0}%", data.PassRatio));
+ this.TransferSerialCOM4(string.Format("\n MAX.WT = {0}{1}",
+ Helper.DoubleToString(data.PassMaxWeight, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
+ this.TransferSerialCOM4(string.Format("\n MIN.WT = {0}{1}",
+ Helper.DoubleToString(data.PassMinWeight, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
+ this.TransferSerialCOM4(string.Format("\n RANGE = {0}{1}",
+ Helper.DoubleToString(data.MaxMinusMinWeight, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM4(string.Format("\n\nOVER = {0}{1}",
Helper.StringToDecimalPlaces(pItem.OverRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM4(string.Format("\n COUNT = {0}", data.OverCount));
if (this.SystemConfig1.Unit != "oz")
- this.TransferSerialCOM4(string.Format("\n TOTAL.W = {0}kg", data.OverSumWeightKG));
+ this.TransferSerialCOM4(string.Format("\n TOTAL.WT = {0}kg", data.OverSumWeightKG));
else
- this.TransferSerialCOM4(string.Format("\n TOTAL.W = {0}oz", data.OverSumWeight));
- this.TransferSerialCOM4(string.Format("\n AVG = {0}{1}",
+ this.TransferSerialCOM4(string.Format("\n TOTAL.WT = {0}oz", data.OverSumWeight));
+ this.TransferSerialCOM4(string.Format("\n MEAN = {0}{1}",
Helper.DoubleToString(data.OverAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
this.TransferSerialCOM4(string.Format("\n RATIO = {0}%", data.OverRatio));
this.TransferSerialCOM4(string.Format("\n\nTARE = {0}{1}",
Helper.StringToDecimalPlaces(pItem.TareRange, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
- this.TransferSerialCOM4(string.Format("\n\nFaulty = {0}", data.TotalUnderOverCount));
- this.TransferSerialCOM4(string.Format("\n\nOther.F = {0}", data.ExNGCount));
- this.TransferSerialCOM4(string.Format("\n\nTOTAL.COUNT= {0}", data.TotalCount));
+ this.TransferSerialCOM4(string.Format("\n\nFAULTY(WEIGHT NG : Over+Under)"));
+ this.TransferSerialCOM4(string.Format("\n COUNT = {0}", data.TotalUnderOverCount));
+ this.TransferSerialCOM4(string.Format("\n MEAN = {0}{1}",
+ Helper.DoubleToString(data.NGAverage, this.SystemConfig1.DecimalPlaces), this.SystemConfig1.Unit));
+
+ string temp = string.Format("\n\nSD(O+P+U) = {0:0.0000}", data.StandardDeviation);
+ if (temp == "NaN")
+ this.TransferSerialCOM4("0.0000");
+ else
+ this.TransferSerialCOM4(temp);
+
+ this.TransferSerialCOM4(string.Format("\n\nOTHER FAULTY(ExNG)"));
+ this.TransferSerialCOM4(string.Format("\n COUNT = {0}", data.ExNGCount));
+
+ this.TransferSerialCOM4(string.Format("\n\nTOTAL.COUNT = {0}", data.TotalCount));
+ if (this.SystemConfig1.Unit != "oz")
+ this.TransferSerialCOM4(string.Format("\nTOTAL.WT = {0}kg", data.TotalWeightKG));
+ else
+ this.TransferSerialCOM4(string.Format("\nTOTAL.WT = {0}oz", data.TotalWeight));
this.TransferSerialCOM4("\n################################\n\n\n\n");
#endregion
@@ -1452,15 +1601,24 @@ namespace ITC81DB.Forms
}
#region Uart Communication
- private void OpenSmartUartLink()
+ private void OpenSmartSerialPort2()
{
string fullPath = "";
DateTime dt = DateTime.Now;
try
{
- if (this.smartSerialPort2.IsOpen == false)
- this.smartSerialPort2.Open();
+ if (this.FlagSerialDll == false)
+ {
+ if (this.smartSerialPort2.IsOpen == false)
+ this.smartSerialPort2.Open();
+ }
+ else
+ {
+ // Port : COM2
+ // Baudrate : 115200
+ SerialMgrComm.serialPortOpen(this.ComPortMainToLCD, 115200, 0, 0, 8);
+ }
}
catch
{
@@ -1495,9 +1653,12 @@ namespace ITC81DB.Forms
//this.IsBarcodeLogOpen = true;
#endregion
}
- public void CloseSmartUartLink()
+ public void CloseSmartSerialPort2()
{
- this.smartSerialPort2.Close();
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort2.Close();
+ else
+ SerialMgrComm.serialPortClose("COM2:");
}
private bool SizeCheck(string cmd, string strTemp)
@@ -1651,8 +1812,14 @@ namespace ITC81DB.Forms
sb.Append(chkSum);
- if (this.smartSerialPort2.IsOpen == true)
- this.smartSerialPort2.WriteFrame(sb.ToString(), SmartSerialPort.CODETYPES.ASCIICODE);
+
+ if (this.FlagSerialDll == false)
+ {
+ if (this.smartSerialPort2.IsOpen == true)
+ this.smartSerialPort2.WriteFrame(sb.ToString(), SmartSerialPort.CODETYPES.ASCIICODE);
+ }
+ else
+ SerialMgrComm.serialPortMessage(this.ComPortMainToLCD, sb.ToString());
// 통신 확인 로그
if (this.IsCommunicationLogOpen == true)
@@ -1680,8 +1847,14 @@ namespace ITC81DB.Forms
sb.Append(chkSum);
- if (this.smartSerialPort2.IsOpen == true)
- this.smartSerialPort2.WriteFrame(sb.ToString(), SmartSerialPort.CODETYPES.ASCIICODE);
+
+ if (this.FlagSerialDll == false)
+ {
+ if (this.smartSerialPort2.IsOpen == true)
+ this.smartSerialPort2.WriteFrame(sb.ToString(), SmartSerialPort.CODETYPES.ASCIICODE);
+ }
+ else
+ SerialMgrComm.serialPortMessage(this.ComPortMainToLCD, sb.ToString());
// 통신 확인 로그
if (this.IsCommunicationLogOpen == true)
@@ -1693,28 +1866,38 @@ namespace ITC81DB.Forms
return ret;
}
- private void ReceiveData()
+ private int TransferDataRespone(string command, string id, string transactionID, string TransferCount, string respone)
{
int ret = 0;
- string strTemp = "";
- byte[] readByte;
+ string chkSum = "cc";
+ StringBuilder sb = new StringBuilder();
- SmartSerialPort.FRAMEDATAREADSTATUS receiveDataState = SmartSerialPort.FRAMEDATAREADSTATUS.EMPTY;
+ sb.Append(command);
+ sb.Append(transactionID);
+ sb.Append(TransferCount);
+ sb.Append(respone);
- try
- {
- receiveDataState = this.smartSerialPort2.ReadQueue(out readByte);
- strTemp = Encoding.Default.GetString(readByte, 0, readByte.Length);
- }
- catch
- {
- return;
- }
+ chkSum = this.Checksumcalculator(sb.ToString());
- if ((receiveDataState == SmartSerialPort.FRAMEDATAREADSTATUS.EMPTY) || (receiveDataState == SmartSerialPort.FRAMEDATAREADSTATUS.FAILDATA))
+ sb.Append(chkSum);
+
+ if (this.FlagSerialDll == false)
{
- return;
+ if (this.smartSerialPort2.IsOpen == true)
+ this.smartSerialPort2.WriteFrame(sb.ToString(), SmartX.SmartSerialPort.CODETYPES.ASCIICODE);
}
+ else
+ SerialMgrComm.serialPortMessage(this.ComPortMainToLCD, sb.ToString());
+
+ // 통신 확인 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.WriteString(string.Format("Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, sb.ToString()));
+
+ return ret;
+ }
+ private void ReceiveData(string strTemp)
+ {
+ int ret = 0;
try
{
@@ -1898,6 +2081,11 @@ namespace ITC81DB.Forms
this.CurrentProductItemTemp.UnderRange = this.CurrentProductItem.UnderRange;
}
+ // 재전송 관련 카운트 표시
+ // Hidden 버튼 누르면 메인화면에 표시됨
+ this.IndexOverRun = 0;
+ this.ChildFormMainDisplay.labelOverrun.Text = "0";
+
// 이더넷
if (this.SystemConfig2.EthernetOperationMode == 2)
this.EthernetClientConnect();
@@ -1931,9 +2119,14 @@ namespace ITC81DB.Forms
if (this.SystemConfig3.IsStartStopLog == true)
this.smartFileStartStopLog.WriteString(string.Format("Receive Stop ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, strTemp));
+ this.CommID = 0;
+
this.CurrentSystemStatus.Equipment = DataStore.EquipmentStatus.Stop;
this.Update30000ModbusItem();
+ // Respone
+ this.CurrentComRespone.Initialization();
+
// OPT1(액트라 - 안리쯔 금속검출기)
if (this.SystemConfig1.SerialCOM1Mode == 14)
this.TransferSerialCOM1(this.Transfer_14_OPT1(this.SystemConfig3.IsCharToFillZeroCOM1, "13"));
@@ -2816,7 +3009,7 @@ namespace ITC81DB.Forms
return ret;
}
// 운전시 중량
- private int ReceiveCommand(string cmd, string lane, string dataID, string transferCount, string receiveData)
+ private int ReceiveCommand(string cmd, string lane, string transactionID, string transferCount, string receiveData)
{
int ret = 0;
@@ -2840,7 +3033,7 @@ namespace ITC81DB.Forms
this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(15, 4).Trim());
this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus);
- this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount);
+ this.CurrentWeightData.SetDataIDTransferCount(transactionID, transferCount);
this.CurrentWeightData.Status = DataStore.WeightStatus.WeightChange;
#endregion
@@ -2857,7 +3050,7 @@ namespace ITC81DB.Forms
this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(19, 4).Trim());
this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus);
- this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount);
+ this.CurrentWeightData.SetDataIDTransferCount(transactionID, transferCount);
this.CurrentWeightData.Status = DataStore.WeightStatus.WeightChange;
@@ -2870,1301 +3063,1318 @@ namespace ITC81DB.Forms
break;
}
// 통신 제대로 받으면 ACK
- this.TransferData(string.Format("{0}{1}{2}{3}", CommunicationCommand.RunWeightData, (int)DataStore.ResponseData.ACK, dataID, transferCount), CommunicationID.MainBoard);
+ //this.TransferData(string.Format("{0}{1}{2}{3}", CommunicationCommand.RunWeightData, (int)DataStore.ResponseData.ACK, dataID, transferCount), CommunicationID.MainBoard);
+
+ if (this.CommID % 10 != int.Parse(transactionID))
+ {
+ this.MissingCommIDCount++;
+ this.ChildFormMainDisplay.labelMissingCount.Text = this.MissingCommIDCount.ToString();
+ }
+ else
+ this.CommID++;
+
+ if (this.CurrentComRespone.TransactionID != transactionID)
+ {
+ this.CurrentComRespone.TransactionID = transactionID;
+ this.CurrentComRespone.TransferCount = transferCount;
+
+ if (this.CurrentWeightData.WeightString.Trim() == "-9999" || this.CurrentWeightData.WeightString.Trim() == "9999"
+ || this.CurrentWeightData.WeightString.Trim() == "99999")
+ if (this.IsErrorLogOpen == true)
+ this.smartFileCheckLog.WriteString(string.Format("Check ({0:yyyy-MM-dd HH:mm:ss}): {1},{2},{3}", DateTime.Now, receiveData, this.CurrentProductItem.UnderRange, this.CurrentProductItem.OverRange));
- if (this.CurrentWeightData.WeightString.Trim() == "-9999" || this.CurrentWeightData.WeightString.Trim() == "9999"
- || this.CurrentWeightData.WeightString.Trim() == "99999")
if (this.IsErrorLogOpen == true)
- this.smartFileCheckLog.WriteString(string.Format("Check ({0:yyyy-MM-dd HH:mm:ss}): {1},{2},{3}", DateTime.Now, receiveData, this.CurrentProductItem.UnderRange, this.CurrentProductItem.OverRange));
+ this.ChecklogPrint(receiveData, this.CurrentWeightData);
- if (this.IsErrorLogOpen == true)
- this.ChecklogPrint(receiveData, this.CurrentWeightData);
-
- // V6.2.0
- if (this.OverloadWeight <= this.CurrentWeightData.Weight)
- {
- this.CurrentWeightData.WeightString = this.CurrentCalibrationItem.OverloadWeightString;
- this.CurrentWeightData.Weight = this.OverloadWeight;
- }
-
- // 바이패스 1회 사용 시
- if (this.IsBypassOnce == true)
- {
- this.IsBypassOnce = false;
- this.ChildFormMainDisplay.MainWeightBigScreen.UpdateSpotOrBypassImageVisibleStatus(false);
- this.ChildFormMainDisplay.MainWeightSmallScreen.UpdateSpotOrBypassImageVisibleStatus(false);
- this.ChildFormMainDisplay.MainSpotCheck.ChangeEnableButtonSpotCheckRun(true);
- }
-
- // RFID
- if (this.SystemConfig2.IsRFIDSpeedwayR420 == true)
- {
- if (this.CurrentRFID.Count() > 0)
- this.ReferenceTag = this.CurrentRFID.ReturnTag(0);
- }
-
- this.Update30000ModbusItem();
-
- #region 통신
- // 통신 COM1
- if (this.SystemConfig1.SerialCOM1Mode != 0)
- {
- #region COM1
- switch (this.SystemConfig1.SerialCOM1Mode)
+ // V6.2.0
+ if (this.OverloadWeight <= this.CurrentWeightData.Weight)
{
- case 1:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_1_STD1(this.SystemConfig3.IsCharToFillZeroCOM1, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.TransferSerialCOM1(this.Transfer_1_STD1(this.SystemConfig3.IsCharToFillZeroCOM1, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 2:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_2_Remote(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.TransferSerialCOM1(this.Transfer_2_Remote(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 3:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- {
- if (this.SystemConfig1.IsPrintPerProductEnable == true)
- this.TransferSerialCOM1(this.Transfer_3_Print(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- }
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.TransferSerialCOM1(this.Transfer_3_Print(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 4:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.TransferSerialCOM1(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case 5:
- this.HMCOM1_Step = 1;
+ this.CurrentWeightData.WeightString = this.CurrentCalibrationItem.OverloadWeightString;
+ this.CurrentWeightData.Weight = this.OverloadWeight;
+ }
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ENQ));
- else
- {
+ // 바이패스 1회 사용 시
+ if (this.IsBypassOnce == true)
+ {
+ this.IsBypassOnce = false;
+ this.ChildFormMainDisplay.MainWeightBigScreen.UpdateSpotOrBypassImageVisibleStatus(false);
+ this.ChildFormMainDisplay.MainWeightSmallScreen.UpdateSpotOrBypassImageVisibleStatus(false);
+ this.ChildFormMainDisplay.MainSpotCheck.ChangeEnableButtonSpotCheckRun(true);
+ }
+
+ // RFID
+ if (this.SystemConfig2.IsRFIDSpeedwayR420 == true)
+ {
+ if (this.CurrentRFID.Count() > 0)
+ this.ReferenceTag = this.CurrentRFID.ReturnTag(0);
+ }
+
+ this.Update30000ModbusItem();
+
+ #region 통신
+ // 통신 COM1
+ if (this.SystemConfig1.SerialCOM1Mode != 0)
+ {
+ #region COM1
+ switch (this.SystemConfig1.SerialCOM1Mode)
+ {
+ case 1:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
+ this.TransferSerialCOM1(this.Transfer_1_STD1(this.SystemConfig3.IsCharToFillZeroCOM1, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_1_STD1(this.SystemConfig3.IsCharToFillZeroCOM1, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 2:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
+ this.TransferSerialCOM1(this.Transfer_2_Remote(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_2_Remote(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 3:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
+ {
+ if (this.SystemConfig1.IsPrintPerProductEnable == true)
+ this.TransferSerialCOM1(this.Transfer_3_Print(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_3_Print(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 4:
if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.TransferSerialCOM1(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case 5:
+ this.HMCOM1_Step = 1;
+
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ENQ));
- }
- break;
- case 6:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_6_OPT0(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ENQ));
+ }
+ break;
+ case 6:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_6_OPT0(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- }
- break;
- case 7:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_7_imaje9410OPT2(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_6_OPT0(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
+ }
+ break;
+ case 7:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_7_imaje9410OPT2(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- }
- break;
- case 8:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_8_imaje9028OPT2(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_7_imaje9410OPT2(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
+ }
+ break;
+ case 8:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_8_imaje9028OPT2(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f9_Hitachi:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_9_Hitachi(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, DataStore.SerialCOM.COM1));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_8_imaje9028OPT2(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f9_Hitachi:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_9_Hitachi(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, DataStore.SerialCOM.COM1));
- }
- break;
- case 10:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_10_MACSA(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_9_Hitachi(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, DataStore.SerialCOM.COM1));
+ }
+ break;
+ case 10:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_10_MACSA(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 11:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_11_Markoprint(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_10_MACSA(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 11:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_11_Markoprint(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 12:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_12_alphaJET(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_11_Markoprint(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 12:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_12_alphaJET(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case (int)DataStore.SerialMode.f13_Marking_VJ1510:
- case (int)DataStore.SerialMode.f25_DJ_VIDEOJET:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_13_Marking_VJ1510(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_12_alphaJET(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case (int)DataStore.SerialMode.f13_Marking_VJ1510:
+ case (int)DataStore.SerialMode.f25_DJ_VIDEOJET:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_13_Marking_VJ1510(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- }
- break;
- case 17:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_17_OPT3(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_13_Marking_VJ1510(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
+ }
+ break;
+ case 17:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_17_OPT3(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 18:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- {
- this.TransferSerialCOM1(this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, 1));
- this.TransferSerialCOM1(this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, 2));
- }
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_17_OPT3(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 18:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
{
this.TransferSerialCOM1(this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, 1));
this.TransferSerialCOM1(this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, 2));
}
- }
- break;
- case 19:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_19_SmartJet(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.TransferSerialCOM1(this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, 1));
+ this.TransferSerialCOM1(this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData, 2));
+ }
+ }
+ break;
+ case 19:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_19_SmartJet(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- }
- break;
- case 20:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.TransferSerialCOM1(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case (int)DataStore.SerialMode.f22_Modbus_RTU: // 22, Modbus RTU(Master 사용 시 - Write multiple register)
- if (this.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
- {
- byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM1, this.SystemConfig3.ModbusRTUStartAddressCOM1);
-
- this.TransferSerialCOM1(sendData);
- }
- break;
- case (int)DataStore.SerialMode.f23_STD2:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_23_STD2
- (this.SystemConfig3.IsCharToFillZeroCOM1, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_19_SmartJet(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
+ }
+ break;
+ case 20:
if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.TransferSerialCOM1(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case (int)DataStore.SerialMode.f22_Modbus_RTU: // 22, Modbus RTU(Master 사용 시 - Write multiple register)
+ if (this.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
+ {
+ byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM1, this.SystemConfig3.ModbusRTUStartAddressCOM1);
+
+ this.TransferSerialCOM1(sendData);
+ }
+ break;
+ case (int)DataStore.SerialMode.f23_STD2:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_23_STD2
(this.SystemConfig3.IsCharToFillZeroCOM1, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case (int)DataStore.SerialMode.f24_MULTi_JET:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_24_MULTi_JET(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_23_STD2
+ (this.SystemConfig3.IsCharToFillZeroCOM1, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case (int)DataStore.SerialMode.f24_MULTi_JET:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_24_MULTi_JET(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f26_LINX8830:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_24_MULTi_JET(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f26_LINX8830:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f27_MYJET:
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f27_MYJET:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
- if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
- this.TransferSerialCOM1(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
+ if (this.SystemConfig3.IsTransmitWhenPassCOM1 == false)
this.TransferSerialCOM1(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
- }
- break;
- default:
- break;
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM1(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM1, this.CurrentWeightData));
+ }
+ break;
+ default:
+ break;
+ }
+ #endregion
}
- #endregion
- }
- // 통신 COM3
- if (this.SystemConfig1.SerialCOM3Mode != 0)
- {
- #region COM3
- switch (this.SystemConfig1.SerialCOM3Mode)
+ // 통신 COM3
+ if (this.SystemConfig1.SerialCOM3Mode != 0)
{
- case 1:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_1_STD1
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ #region COM3
+ switch (this.SystemConfig1.SerialCOM3Mode)
+ {
+ case 1:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_1_STD1
(this.SystemConfig3.IsCharToFillZeroCOM3, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 2:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_2_Remote
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_1_STD1
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 2:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_2_Remote
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 3:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- {
- if (this.SystemConfig1.IsPrintPerProductEnable == true)
- this.TransferSerialCOM3(this.Transfer_3_Print
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- }
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_2_Remote
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 3:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
{
if (this.SystemConfig1.IsPrintPerProductEnable == true)
this.TransferSerialCOM3(this.Transfer_3_Print
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
}
- }
- break;
- case 4:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.TransferSerialCOM3(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case 5:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- {
- this.HMCOM3_Step = 1;
- this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ENQ));
- }
- else
- {
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ if (this.SystemConfig1.IsPrintPerProductEnable == true)
+ this.TransferSerialCOM3(this.Transfer_3_Print
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ }
+ break;
+ case 4:
if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.TransferSerialCOM3(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case 5:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
{
this.HMCOM3_Step = 1;
this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ENQ));
}
- }
- break;
- case 6:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_6_OPT0
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.HMCOM3_Step = 1;
+ this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ENQ));
+ }
+ }
+ break;
+ case 6:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_6_OPT0
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- }
- break;
- case 7:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_7_imaje9410OPT2
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_6_OPT0
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
+ }
+ break;
+ case 7:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_7_imaje9410OPT2
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- }
- break;
- case 8:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_8_imaje9028OPT2
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_7_imaje9410OPT2
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
+ }
+ break;
+ case 8:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_8_imaje9028OPT2
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f9_Hitachi:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_9_Hitachi
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, DataStore.SerialCOM.COM3));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_8_imaje9028OPT2
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f9_Hitachi:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_9_Hitachi
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, DataStore.SerialCOM.COM3));
- }
- break;
- case 10:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_10_MACSA
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_9_Hitachi
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, DataStore.SerialCOM.COM3));
+ }
+ break;
+ case 10:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_10_MACSA
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 11:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_11_Markoprint
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_10_MACSA
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 11:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_11_Markoprint
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 12:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_12_alphaJET
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_11_Markoprint
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 12:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_12_alphaJET
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case (int)DataStore.SerialMode.f13_Marking_VJ1510:
- case (int)DataStore.SerialMode.f25_DJ_VIDEOJET:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_13_Marking_VJ1510
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_12_alphaJET
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case (int)DataStore.SerialMode.f13_Marking_VJ1510:
+ case (int)DataStore.SerialMode.f25_DJ_VIDEOJET:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_13_Marking_VJ1510
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- }
- break;
- case 17:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_17_OPT3
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_13_Marking_VJ1510
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
+ }
+ break;
+ case 17:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_17_OPT3
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 18:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- {
- this.TransferSerialCOM3(this.Transfer_18_HP200
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, 1));
- this.TransferSerialCOM3(this.Transfer_18_HP200
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, 2));
- }
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_17_OPT3
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 18:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
{
this.TransferSerialCOM3(this.Transfer_18_HP200
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, 1));
this.TransferSerialCOM3(this.Transfer_18_HP200
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, 2));
}
- }
- break;
- case 19:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_19_SmartJet
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.TransferSerialCOM3(this.Transfer_18_HP200
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, 1));
+ this.TransferSerialCOM3(this.Transfer_18_HP200
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData, 2));
+ }
+ }
+ break;
+ case 19:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_19_SmartJet
(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f20_imaje_9410_OPT3:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.TransferSerialCOM3(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case (int)DataStore.SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register)
- if (this.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
- {
- byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM3, this.SystemConfig3.ModbusRTUStartAddressCOM3);
-
- this.TransferSerialCOM3(sendData);
- }
- break;
- case (int)DataStore.SerialMode.f23_STD2:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_23_STD2
- (this.SystemConfig3.IsCharToFillZeroCOM3, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_19_SmartJet
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f20_imaje_9410_OPT3:
if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.TransferSerialCOM3(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case (int)DataStore.SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register)
+ if (this.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
+ {
+ byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM3, this.SystemConfig3.ModbusRTUStartAddressCOM3);
+
+ this.TransferSerialCOM3(sendData);
+ }
+ break;
+ case (int)DataStore.SerialMode.f23_STD2:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_23_STD2
(this.SystemConfig3.IsCharToFillZeroCOM3, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case (int)DataStore.SerialMode.f24_MULTi_JET:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_24_MULTi_JET(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_23_STD2
+ (this.SystemConfig3.IsCharToFillZeroCOM3, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case (int)DataStore.SerialMode.f24_MULTi_JET:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_24_MULTi_JET(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f26_LINX8830:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_24_MULTi_JET(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f26_LINX8830:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f27_MYJET:
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f27_MYJET:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
- if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
- this.TransferSerialCOM3(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
+ if (this.SystemConfig3.IsTransmitWhenPassCOM3 == false)
this.TransferSerialCOM3(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
- }
- break;
- default:
- break;
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM3(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM3, this.CurrentWeightData));
+ }
+ break;
+ default:
+ break;
+ }
+ #endregion
}
- #endregion
- }
- // 통신 COM4
- if (this.SystemConfig1.SerialCOM4Mode != 0)
- {
- #region COM4
- switch (this.SystemConfig1.SerialCOM4Mode)
+ // 통신 COM4
+ if (this.SystemConfig1.SerialCOM4Mode != 0)
{
- case 1:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_1_STD1
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ #region COM4
+ switch (this.SystemConfig1.SerialCOM4Mode)
+ {
+ case 1:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_1_STD1
(this.SystemConfig3.IsCharToFillZeroCOM4, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 2:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_2_Remote
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_1_STD1
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 2:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_2_Remote
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 3:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- {
- if (this.SystemConfig1.IsPrintPerProductEnable == true)
- this.TransferSerialCOM4(this.Transfer_3_Print
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- }
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.TransferSerialCOM4(this.Transfer_3_Print
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 4:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.TransferSerialCOM4(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case 5:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- {
- this.HMCOM4_Step = 1;
- this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ENQ));
- }
- else
- {
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_2_Remote
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 3:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
+ {
+ if (this.SystemConfig1.IsPrintPerProductEnable == true)
+ this.TransferSerialCOM4(this.Transfer_3_Print
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_3_Print
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 4:
if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.TransferSerialCOM4(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case 5:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
{
this.HMCOM4_Step = 1;
this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ENQ));
}
- }
- break;
- case 6:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_6_OPT0
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.HMCOM4_Step = 1;
+ this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ENQ));
+ }
+ }
+ break;
+ case 6:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_6_OPT0
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- }
- break;
- case 7:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_7_imaje9410OPT2
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_6_OPT0
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ }
+ break;
+ case 7:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_7_imaje9410OPT2
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- }
- break;
- case 8:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_8_imaje9028OPT2
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_7_imaje9410OPT2
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ }
+ break;
+ case 8:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_8_imaje9028OPT2
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f9_Hitachi:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_9_Hitachi
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, DataStore.SerialCOM.COM4));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_8_imaje9028OPT2
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f9_Hitachi:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_9_Hitachi
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, DataStore.SerialCOM.COM4));
- }
- break;
- case 10:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_10_MACSA
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_9_Hitachi
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, DataStore.SerialCOM.COM4));
+ }
+ break;
+ case 10:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_10_MACSA
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 11:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_11_Markoprint
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_10_MACSA
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 11:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_11_Markoprint
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 12:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_12_alphaJET
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_11_Markoprint
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 12:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_12_alphaJET
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case (int)DataStore.SerialMode.f13_Marking_VJ1510:
- case (int)DataStore.SerialMode.f25_DJ_VIDEOJET:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_13_Marking_VJ1510
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_12_alphaJET
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case (int)DataStore.SerialMode.f13_Marking_VJ1510:
+ case (int)DataStore.SerialMode.f25_DJ_VIDEOJET:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_13_Marking_VJ1510
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- }
- break;
- case 17:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_17_OPT3
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_13_Marking_VJ1510
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ }
+ break;
+ case 17:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_17_OPT3
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case 18:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- {
- this.TransferSerialCOM4(this.Transfer_18_HP200
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, 1));
- this.TransferSerialCOM4(this.Transfer_18_HP200
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, 2));
- }
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_17_OPT3
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case 18:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
{
this.TransferSerialCOM4(this.Transfer_18_HP200
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, 1));
this.TransferSerialCOM4(this.Transfer_18_HP200
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, 2));
}
- }
- break;
- case 19:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_19_SmartJet
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.TransferSerialCOM4(this.Transfer_18_HP200
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, 1));
+ this.TransferSerialCOM4(this.Transfer_18_HP200
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData, 2));
+ }
+ }
+ break;
+ case 19:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_19_SmartJet
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- }
- break;
- case 20:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.TransferSerialCOM4(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case (int)DataStore.SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register)
- if (this.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
- {
- byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM4, this.SystemConfig3.ModbusRTUStartAddressCOM4);
-
- this.TransferSerialCOM4(sendData);
- }
- break;
- case (int)DataStore.SerialMode.f23_STD2:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_23_STD2
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- else
- {
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_19_SmartJet
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ }
+ break;
+ case 20:
if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.TransferSerialCOM4(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case (int)DataStore.SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register)
+ if (this.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
+ {
+ byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM4, this.SystemConfig3.ModbusRTUStartAddressCOM4);
+
+ this.TransferSerialCOM4(sendData);
+ }
+ break;
+ case (int)DataStore.SerialMode.f23_STD2:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_23_STD2
(this.SystemConfig3.IsCharToFillZeroCOM4, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- }
- break;
- case (int)DataStore.SerialMode.f24_MULTi_JET:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_24_MULTi_JET
- (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_23_STD2
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ }
+ break;
+ case (int)DataStore.SerialMode.f24_MULTi_JET:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_24_MULTi_JET
(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f26_LINX8830:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_24_MULTi_JET
+ (this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f26_LINX8830:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- }
- break;
- case (int)DataStore.SerialMode.f27_MYJET:
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- else
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f27_MYJET:
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
this.TransferSerialCOM4(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ }
+ break;
+ case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
+ if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
+ this.TransferSerialCOM4(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ else
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.TransferSerialCOM4(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ }
+ break;
+ default:
+ break;
+ }
+ #endregion
+ }
+
+ // 이더넷
+ switch (this.SystemConfig2.EthernetOperationMode)
+ {
+ case 1: // Server
+ if (this.smartTCPMultiServer.ClientInfoList != null)
+ {
+ #region Server
+ foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList)
+ {
+ switch (this.SystemConfig2.EthernetCommMode)
+ {
+ case 1:
+ this.EthernetServerSendMessage(client,
+ this.Transfer_1_STD1
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 2:
+ this.EthernetServerSendMessage(client, this.Transfer_2_Remote
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 3:
+ if (this.SystemConfig1.IsPrintPerProductEnable == true)
+ this.EthernetServerSendMessage(client, this.Transfer_3_Print
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 4:
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.EthernetServerSendMessage(client, this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case 5:
+ this.HMCOM1_Step = 1;
+ this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ENQ));
+ break;
+ case 6:
+ this.EthernetServerSendMessage(client, this.Transfer_6_OPT0
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 7:
+ this.EthernetServerSendMessage(client, this.Transfer_7_imaje9410OPT2
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 8:
+ this.EthernetServerSendMessage(client, this.Transfer_8_imaje9028OPT2
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 9:
+ this.EthernetServerSendMessage(client, this.Transfer_9_Hitachi
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, DataStore.SerialCOM.COM1));
+ break;
+ case 10:
+ this.EthernetServerSendMessage(client, this.Transfer_10_MACSA
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 11:
+ this.EthernetServerSendMessage(client, this.Transfer_11_Markoprint
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 12:
+ this.EthernetServerSendMessage(client, this.Transfer_12_alphaJET
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case (int)DataStore.EthernetMode.f13_Marking_VJ1510:
+ case (int)DataStore.EthernetMode.f25_DJ_VIDEOJET:
+ this.EthernetServerSendMessage(client, this.Transfer_13_Marking_VJ1510
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 17:
+ this.EthernetServerSendMessage(client, this.Transfer_17_OPT3
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 18:
+ this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, 1));
+ this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, 2));
+ break;
+ case 19:
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.EthernetServerSendMessage(client, this.Transfer_19_SmartJet(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 20:
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.EthernetServerSendMessage(client, this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case (int)DataStore.EthernetMode.f21_Impinj_Speedway_R420: // ImpinjSpeedwayR420
+ this.EthernetServerSendMessage(client, this.Transfer_21_ImpinjSpeedwayR420ToPC
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case (int)DataStore.EthernetMode.f22_Modbus_TCP: // 22, Modbus TCP
+ if (this.SystemConfig2.ModbusTCPSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
+ {
+ byte[] sendData = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig3.ModbusTCPStartAddress);
+
+ this.EthernetServerSendMessage(client, sendData);
+ }
+ break;
+ case (int)DataStore.EthernetMode.f23_STD2:
+ this.EthernetServerSendMessage(client,
+ this.Transfer_23_STD2(this.SystemConfig3.IsCharToFillZeroEthernet, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case (int)DataStore.EthernetMode.f24_MULTi_JET:
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.EthernetServerSendMessage(client, this.Transfer_24_MULTi_JET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case (int)DataStore.EthernetMode.f26_LINX8830:
+ //if (this.SystemConfig3.IsTransmitWhenPassEthernet == false)
+ // this.EthernetServerSendMessage(client, this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ //else
+ //{
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.EthernetServerSendMessage(client, this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ //}
+ break;
+ case (int)DataStore.EthernetMode.f27_MYJET:
+ //if (this.SystemConfig3.IsTransmitWhenPassEthernet == false)
+ // this.EthernetServerSendMessage(client, this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ //else
+ //{
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.EthernetServerSendMessage(client, this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ //}
+ break;
+ case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
+ this.EthernetServerSendMessage(client, this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ default:
+ break;
+ }
+ }
+ #endregion
}
break;
- case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
- if (this.SystemConfig3.IsTransmitWhenPassCOM4 == false)
- this.TransferSerialCOM4(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
- else
+ case 2: // Client
+ switch (this.SystemConfig2.EthernetCommMode)
{
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.TransferSerialCOM4(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroCOM4, this.CurrentWeightData));
+ #region Client
+ case 1:
+ this.EthernetWeightData(this.Transfer_1_STD1
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 2:
+ this.EthernetWeightData(this.Transfer_2_Remote
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 3:
+ if (this.SystemConfig1.IsPrintPerProductEnable == true)
+ this.EthernetWeightData(this.Transfer_3_Print
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 4:
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.EthernetWeightData(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case 5:
+ this.HMCOM1_Step = 1;
+ this.EthernetWeightData(this.SendChar(DataStore.CharValue.ENQ));
+ break;
+ case 6:
+ this.EthernetWeightData(this.Transfer_6_OPT0
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 7:
+ this.EthernetWeightData(this.Transfer_7_imaje9410OPT2
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 8:
+ this.EthernetWeightData(this.Transfer_8_imaje9028OPT2
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 9:
+ this.EthernetWeightData(this.Transfer_9_Hitachi
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, DataStore.SerialCOM.COM1));
+ break;
+ case 10:
+ this.EthernetWeightData(this.Transfer_10_MACSA
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 11:
+ this.EthernetWeightData(this.Transfer_11_Markoprint
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 12:
+ this.EthernetWeightData(this.Transfer_12_alphaJET
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case (int)DataStore.EthernetMode.f13_Marking_VJ1510:
+ case (int)DataStore.EthernetMode.f25_DJ_VIDEOJET:
+ this.EthernetWeightData(this.Transfer_13_Marking_VJ1510
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 17:
+ this.EthernetWeightData(this.Transfer_17_OPT3
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case 18:
+ this.EthernetWeightData(this.Transfer_18_HP200
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, 1));
+ this.EthernetWeightData(this.Transfer_18_HP200
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, 2));
+ break;
+ case 19:
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.EthernetWeightData(this.Transfer_19_SmartJet
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case 20:
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경
+ Thread.Sleep(200);
+ this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ Thread.Sleep(200);
+ this.EthernetWeightData(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
+ }
+ else
+ {
+ this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경
+ Thread.Sleep(200);
+ this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK
+ }
+ break;
+ case (int)DataStore.EthernetMode.f21_Impinj_Speedway_R420: // 21, ImpinjSpeedwayR420
+ if (this.CurrentRFID.Count() > 0)
+ this.CurrentRFID.RemoveIndex(0);
+ break;
+ case (int)DataStore.EthernetMode.f22_Modbus_TCP: // 22, Modbus TCP
+ if (this.SystemConfig2.ModbusTCPSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
+ {
+ byte[] sendData = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig3.ModbusTCPStartAddress);
+
+ this.EthernetWeightDataForModbus(sendData);
+ }
+ break;
+ case (int)DataStore.EthernetMode.f23_STD2:
+ this.EthernetWeightData(this.Transfer_23_STD2
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
+ break;
+ case (int)DataStore.EthernetMode.f24_MULTi_JET:
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.EthernetWeightData(this.Transfer_24_MULTi_JET
+ (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ case (int)DataStore.EthernetMode.f26_LINX8830:
+ //if (this.SystemConfig3.IsTransmitWhenPassEthernet == false)
+ // this.EthernetWeightData(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ //else
+ //{
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.EthernetWeightData(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ //}
+ break;
+ case (int)DataStore.EthernetMode.f27_MYJET:
+ //if (this.SystemConfig3.IsTransmitWhenPassEthernet == false)
+ // this.EthernetWeightData(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ //else
+ //{
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ this.EthernetWeightData(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ //}
+ break;
+ case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
+ this.EthernetWeightData(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
+ break;
+ default:
+ break;
+ #endregion
}
break;
default:
break;
}
#endregion
- }
- // 이더넷
- switch (this.SystemConfig2.EthernetOperationMode)
- {
- case 1: // Server
- if (this.smartTCPMultiServer.ClientInfoList != null)
+ #region 카운터출력
+ #region Counting Output 1
+ if (this.SystemConfig2.IsCountingOutput1Activated() == true)
+ {
+ if (this.SystemConfig3.IsCountingOutputCrossMode == true)
{
- #region Server
- foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList)
+ if (this.SystemConfig2.IsCountingOutput2Activated() == true)
{
- switch (this.SystemConfig2.EthernetCommMode)
+ if (this.IsCountingOutputCrossStatus == false)
{
- case 1:
- this.EthernetServerSendMessage(client,
- this.Transfer_1_STD1
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 2:
- this.EthernetServerSendMessage(client, this.Transfer_2_Remote
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 3:
- if (this.SystemConfig1.IsPrintPerProductEnable == true)
- this.EthernetServerSendMessage(client, this.Transfer_3_Print
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 4:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.EthernetServerSendMessage(client, this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case 5:
- this.HMCOM1_Step = 1;
- this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ENQ));
- break;
- case 6:
- this.EthernetServerSendMessage(client, this.Transfer_6_OPT0
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 7:
- this.EthernetServerSendMessage(client, this.Transfer_7_imaje9410OPT2
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 8:
- this.EthernetServerSendMessage(client, this.Transfer_8_imaje9028OPT2
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 9:
- this.EthernetServerSendMessage(client, this.Transfer_9_Hitachi
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, DataStore.SerialCOM.COM1));
- break;
- case 10:
- this.EthernetServerSendMessage(client, this.Transfer_10_MACSA
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 11:
- this.EthernetServerSendMessage(client, this.Transfer_11_Markoprint
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 12:
- this.EthernetServerSendMessage(client, this.Transfer_12_alphaJET
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case (int)DataStore.EthernetMode.f13_Marking_VJ1510:
- case (int)DataStore.EthernetMode.f25_DJ_VIDEOJET:
- this.EthernetServerSendMessage(client, this.Transfer_13_Marking_VJ1510
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 17:
- this.EthernetServerSendMessage(client, this.Transfer_17_OPT3
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 18:
- this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, 1));
- this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, 2));
- break;
- case 19:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.EthernetServerSendMessage(client, this.Transfer_19_SmartJet(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 20:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.EthernetServerSendMessage(client, this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case (int)DataStore.EthernetMode.f21_Impinj_Speedway_R420: // ImpinjSpeedwayR420
- this.EthernetServerSendMessage(client, this.Transfer_21_ImpinjSpeedwayR420ToPC
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case (int)DataStore.EthernetMode.f22_Modbus_TCP: // 22, Modbus TCP
- if (this.SystemConfig2.ModbusTCPSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
- {
- byte[] sendData = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig3.ModbusTCPStartAddress);
-
- this.EthernetServerSendMessage(client, sendData);
- }
- break;
- case (int)DataStore.EthernetMode.f23_STD2:
- this.EthernetServerSendMessage(client,
- this.Transfer_23_STD2(this.SystemConfig3.IsCharToFillZeroEthernet, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case (int)DataStore.EthernetMode.f24_MULTi_JET:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.EthernetServerSendMessage(client, this.Transfer_24_MULTi_JET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case (int)DataStore.EthernetMode.f26_LINX8830:
- //if (this.SystemConfig3.IsTransmitWhenPassEthernet == false)
- // this.EthernetServerSendMessage(client, this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- //else
- //{
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.EthernetServerSendMessage(client, this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- //}
- break;
- case (int)DataStore.EthernetMode.f27_MYJET:
- //if (this.SystemConfig3.IsTransmitWhenPassEthernet == false)
- // this.EthernetServerSendMessage(client, this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- //else
- //{
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.EthernetServerSendMessage(client, this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- //}
- break;
- case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
- this.EthernetServerSendMessage(client, this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- default:
- break;
+ this.IsSatisfyCounting = false;
+ this.UpdateCountingOutput1();
}
}
- #endregion
- }
- break;
- case 2: // Client
- switch (this.SystemConfig2.EthernetCommMode)
- {
- #region Client
- case 1:
- this.EthernetWeightData(this.Transfer_1_STD1
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 2:
- this.EthernetWeightData(this.Transfer_2_Remote
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 3:
- if (this.SystemConfig1.IsPrintPerProductEnable == true)
- this.EthernetWeightData(this.Transfer_3_Print
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 4:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.EthernetWeightData(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case 5:
- this.HMCOM1_Step = 1;
- this.EthernetWeightData(this.SendChar(DataStore.CharValue.ENQ));
- break;
- case 6:
- this.EthernetWeightData(this.Transfer_6_OPT0
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 7:
- this.EthernetWeightData(this.Transfer_7_imaje9410OPT2
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 8:
- this.EthernetWeightData(this.Transfer_8_imaje9028OPT2
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 9:
- this.EthernetWeightData(this.Transfer_9_Hitachi
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, DataStore.SerialCOM.COM1));
- break;
- case 10:
- this.EthernetWeightData(this.Transfer_10_MACSA
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 11:
- this.EthernetWeightData(this.Transfer_11_Markoprint
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 12:
- this.EthernetWeightData(this.Transfer_12_alphaJET
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case (int)DataStore.EthernetMode.f13_Marking_VJ1510:
- case (int)DataStore.EthernetMode.f25_DJ_VIDEOJET:
- this.EthernetWeightData(this.Transfer_13_Marking_VJ1510
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 17:
- this.EthernetWeightData(this.Transfer_17_OPT3
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case 18:
- this.EthernetWeightData(this.Transfer_18_HP200
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, 1));
- this.EthernetWeightData(this.Transfer_18_HP200
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData, 2));
- break;
- case 19:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.EthernetWeightData(this.Transfer_19_SmartJet
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case 20:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경
- Thread.Sleep(200);
- this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK
- Thread.Sleep(200);
- this.EthernetWeightData(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송
- }
- else
- {
- this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경
- Thread.Sleep(200);
- this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK
- }
- break;
- case (int)DataStore.EthernetMode.f21_Impinj_Speedway_R420: // 21, ImpinjSpeedwayR420
- if (this.CurrentRFID.Count() > 0)
- this.CurrentRFID.RemoveIndex(0);
- break;
- case (int)DataStore.EthernetMode.f22_Modbus_TCP: // 22, Modbus TCP
- if (this.SystemConfig2.ModbusTCPSelectFunction == (int)DataStore.ModbusFunction._16_WriteMultipleRegister)
- {
- byte[] sendData = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig3.ModbusTCPStartAddress);
-
- this.EthernetWeightDataForModbus(sendData);
- }
- break;
- case (int)DataStore.EthernetMode.f23_STD2:
- this.EthernetWeightData(this.Transfer_23_STD2
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem));
- break;
- case (int)DataStore.EthernetMode.f24_MULTi_JET:
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.EthernetWeightData(this.Transfer_24_MULTi_JET
- (this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- case (int)DataStore.EthernetMode.f26_LINX8830:
- //if (this.SystemConfig3.IsTransmitWhenPassEthernet == false)
- // this.EthernetWeightData(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- //else
- //{
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.EthernetWeightData(this.Transfer_26_LINX8830(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- //}
- break;
- case (int)DataStore.EthernetMode.f27_MYJET:
- //if (this.SystemConfig3.IsTransmitWhenPassEthernet == false)
- // this.EthernetWeightData(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- //else
- //{
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- this.EthernetWeightData(this.Transfer_27_MYJET(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- //}
- break;
- case (int)DataStore.SerialMode.f28_OPT4: // Tasco(타스코) PC 전송
- this.EthernetWeightData(this.Transfer_28_OPT4(this.SystemConfig3.IsCharToFillZeroEthernet, this.CurrentWeightData));
- break;
- default:
- break;
- #endregion
- }
- break;
- default:
- break;
- }
- #endregion
-
- #region 카운터출력
- #region Counting Output 1
- if (this.SystemConfig2.IsCountingOutput1Activated() == true)
- {
- if (this.SystemConfig3.IsCountingOutputCrossMode == true)
- {
- if (this.SystemConfig2.IsCountingOutput2Activated() == true)
- {
- if (this.IsCountingOutputCrossStatus == false)
- {
- this.IsSatisfyCounting = false;
+ else
this.UpdateCountingOutput1();
- }
}
else
+ {
this.UpdateCountingOutput1();
+ }
}
- else
- {
- this.UpdateCountingOutput1();
- }
- }
- #endregion
+ #endregion
- #region Counting Output 2
- if (this.SystemConfig2.IsCountingOutput2Activated() == true)
- {
- if (this.SystemConfig3.IsCountingOutputCrossMode == true)
+ #region Counting Output 2
+ if (this.SystemConfig2.IsCountingOutput2Activated() == true)
{
- if (this.SystemConfig2.IsCountingOutput1Activated() == true)
+ if (this.SystemConfig3.IsCountingOutputCrossMode == true)
{
- if (this.IsCountingOutputCrossStatus == true && this.IsSatisfyCounting == false)
- this.UpdateCountingOutput2();
+ if (this.SystemConfig2.IsCountingOutput1Activated() == true)
+ {
+ if (this.IsCountingOutputCrossStatus == true && this.IsSatisfyCounting == false)
+ this.UpdateCountingOutput2();
+ else
+ this.IsSatisfyCounting = false;
+ }
else
- this.IsSatisfyCounting = false;
+ this.UpdateCountingOutput2();
}
else
+ {
this.UpdateCountingOutput2();
+ }
}
- else
+ #endregion
+
+ this.ChildFormMainDisplay.MainWeightBigScreen.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count);
+ this.ChildFormMainDisplay.MainWeightSmallScreen.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count);
+ #endregion
+
+ // CurrentDisplay
+ switch (this.CurrentSystemStatus.CurrentDisplay)
{
- this.UpdateCountingOutput2();
+ case DataStore.DisplayStore.MainDisplay:
+ #region MainDisplay
+ if (this.SystemConfig2.Barcode != 0)
+ {
+ this.CurrentBarcode.BarcodeDequeue();
+
+ // 바코드 로그
+ if (this.IsBarcodeLogOpen == true)
+ this.smartFileBarcodeLog.WriteString(string.Format("Barcode Count ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, this.CurrentBarcode.GetQueueCount));
+
+ if (this.ChildFormMainDisplay != null)
+ this.ChildFormMainDisplay.UpdateBarcodeDisplay(this.CurrentBarcode);
+
+ if (this.CurrentBarcode.GetQueueCount > 0)
+ this.BarcodeProductChange(this.CurrentBarcode);
+
+ if (this.ChildFormMainDisplay != null)
+ this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData);
+ }
+
+ if (this.SystemConfig1.IsAverageTracking == true)
+ {
+ if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
+ {
+ this.ChildFormMainDisplay.MainAverageTracking.UpdateDisplayAverageTracking(this.CurrentWeightData);
+ this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData);
+ }
+ }
+
+ if (this.ChildFormMainDisplay != null)
+ this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData);
+
+ if (this.SystemConfig1.IsDataBackup == true)
+ {
+ if (this.SystemConfig1.DatabackupFormat == 1)
+ {
+ #region OPT1 - 종근당 옵션
+ if (this.timeOut.Enabled == true)
+ this.timeOut.Enabled = false;
+
+ //if (this.CollectionBufferWeightData.Count != 0)
+ //{
+ // if (this.CurrentJudgmentResult.PreviousRejectData != DataStore.JudgmentResult.None)
+ // this.CollectionBufferWeightData[0].Status = this.CurrentJudgmentResult.PreviousRejectData.ToString();
+ // else
+ // this.CollectionBufferWeightData[0].Status = DataStore.JudgmentResult.OM.ToString();
+ // this.DataBackup1(this.CollectionBufferWeightData[0]);
+ // this.CollectionBufferWeightData.Clear();
+ //}
+
+ this.CollectionBufferWeightData.Add(new DataBackupOPT1());
+ this.CollectionBufferWeightData[this.CollectionBufferWeightData.Count - 1].SetData(
+ this.CurrentProductItem, this.CurrentWeightData, this.SystemConfig1, DateTime.Now);
+
+ if (this.CurrentJudgmentSetItem.Sorter2Mode == 3)
+ this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter2DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter2RunTime * 5) + 1000;
+ else
+ this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter1DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter1RunTime * 5) + 1000;
+ this.timeOut.Enabled = true;
+ #endregion
+ }
+ else
+ {
+ #region STD1
+ if (this.CurrentWeightData.JudgmentStatus != DataStore.JudgmentStatus.Empty)
+ this.DataBackup0(this.CurrentWeightData);
+ #endregion
+ }
+ }
+
+ if (this.SystemConfig2.IsRFIDSpeedwayR420 == true)
+ {
+ if (this.CurrentRFID.Count() > 0)
+ {
+ this.CurrentRFID.RemoveIndex(0);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.WriteString(string.Format("RemoveTag ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, this.CurrentRFID.Count()));
+ for (int i = 0; i < this.CurrentRFID.Count(); i++)
+ this.smartFileCommunicationLog.WriteString(string.Format("ListTag ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, this.CurrentRFID.ReturnTag(i)));
+ }
+
+ if (this.ChildFormMainDisplay != null)
+ this.ChildFormMainDisplay.UpdateRFIDDisplay(this.CurrentRFID);
+ }
+
+ // 표준분포
+ this.CurrentWeightData.SetNormalDistribution(this.CurrentProductItem.CollectionNormalDistributionRange, this.CurrentWeightData.WeightString);
+ #endregion
+ break;
+ default:
+ break;
}
}
- #endregion
-
- this.ChildFormMainDisplay.MainWeightBigScreen.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count);
- this.ChildFormMainDisplay.MainWeightSmallScreen.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count);
- #endregion
-
- // CurrentDisplay
- switch (this.CurrentSystemStatus.CurrentDisplay)
+ else
{
- case DataStore.DisplayStore.MainDisplay:
- #region MainDisplay
- if (this.SystemConfig2.Barcode != 0)
- {
- this.CurrentBarcode.BarcodeDequeue();
-
- // 바코드 로그
- if (this.IsBarcodeLogOpen == true)
- this.smartFileBarcodeLog.WriteString(string.Format("Barcode Count ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, this.CurrentBarcode.GetQueueCount));
-
- if (this.ChildFormMainDisplay != null)
- this.ChildFormMainDisplay.UpdateBarcodeDisplay(this.CurrentBarcode);
-
- if (this.CurrentBarcode.GetQueueCount > 0)
- this.BarcodeProductChange(this.CurrentBarcode);
-
- if (this.ChildFormMainDisplay != null)
- this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData);
- }
-
- if (this.SystemConfig1.IsAverageTracking == true)
- {
- if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass)
- {
- this.ChildFormMainDisplay.MainAverageTracking.UpdateDisplayAverageTracking(this.CurrentWeightData);
- this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData);
- }
- }
-
- if (this.ChildFormMainDisplay != null)
- this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData);
-
- if (this.SystemConfig1.IsDataBackup == true)
- {
- if (this.SystemConfig1.DatabackupFormat == 1)
- {
- #region OPT1 - 종근당 옵션
- if (this.timeOut.Enabled == true)
- this.timeOut.Enabled = false;
-
- //if (this.CollectionBufferWeightData.Count != 0)
- //{
- // if (this.CurrentJudgmentResult.PreviousRejectData != DataStore.JudgmentResult.None)
- // this.CollectionBufferWeightData[0].Status = this.CurrentJudgmentResult.PreviousRejectData.ToString();
- // else
- // this.CollectionBufferWeightData[0].Status = DataStore.JudgmentResult.OM.ToString();
- // this.DataBackup1(this.CollectionBufferWeightData[0]);
- // this.CollectionBufferWeightData.Clear();
- //}
-
- this.CollectionBufferWeightData.Add(new DataBackupOPT1());
- this.CollectionBufferWeightData[this.CollectionBufferWeightData.Count - 1].SetData(
- this.CurrentProductItem, this.CurrentWeightData, this.SystemConfig1, DateTime.Now);
-
- if (this.CurrentJudgmentSetItem.Sorter2Mode == 3)
- this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter2DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter2RunTime * 5) + 1000;
- else
- this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter1DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter1RunTime * 5) + 1000;
- this.timeOut.Enabled = true;
- #endregion
- }
- else
- {
- #region STD1
- if (this.CurrentWeightData.JudgmentStatus != DataStore.JudgmentStatus.Empty)
- this.DataBackup0(this.CurrentWeightData);
- #endregion
- }
- }
-
- if (this.SystemConfig2.IsRFIDSpeedwayR420 == true)
- {
- if (this.CurrentRFID.Count() > 0)
- {
- this.CurrentRFID.RemoveIndex(0);
-
- // 로그
- if (this.IsCommunicationLogOpen == true)
- this.smartFileCommunicationLog.WriteString(string.Format("RemoveTag ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, this.CurrentRFID.Count()));
- for (int i = 0; i < this.CurrentRFID.Count(); i++)
- this.smartFileCommunicationLog.WriteString(string.Format("ListTag ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, this.CurrentRFID.ReturnTag(i)));
- }
-
- if (this.ChildFormMainDisplay != null)
- this.ChildFormMainDisplay.UpdateRFIDDisplay(this.CurrentRFID);
- }
-
- // 표준분포
- this.CurrentWeightData.SetNormalDistribution(this.CurrentProductItem.CollectionNormalDistributionRange, this.CurrentWeightData.WeightString);
- #endregion
- break;
- default:
- break;
}
break;
default:
@@ -6840,100 +7050,145 @@ namespace ITC81DB.Forms
#region Serial COM1
public void OpenSerialCOM1()
{
+ int baudrate = 9600;
+
if (this.SystemConfig1.SerialCOM1Mode == 0)
return;
- if (this.smartSerialPort1.IsOpen == true)
- this.smartSerialPort1.Close();
+ this.CloseSerialCOM1();
switch (this.SystemConfig1.SerialCOM1BaudRate)
{
case 0:
this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps;
+ baudrate = 9600;
break;
case 1:
this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._19200bps;
+ baudrate = 19200;
break;
case 2:
this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._38400bps;
+ baudrate = 38400;
break;
case 3:
this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._57600bps;
+ baudrate = 57600;
break;
case 4:
this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._115200bps;
+ baudrate = 115200;
break;
default:
this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps;
+ baudrate = 9600;
break;
}
- this.smartSerialPort1.Open();
+ if (this.FlagSerialDll == false)
+ {
+ this.smartSerialPort1.Open();
+ }
+ else
+ {
+ // Port : COM1
+ SerialMgrComm.serialPortOpen("COM1:", baudrate, 0, 0, 8);
+ }
}
public void CloseSerialCOM1()
{
- this.smartSerialPort1.Close();
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort1.Close();
+ else
+ SerialMgrComm.serialPortClose("COM1:");
}
public bool CheckOpenCOM1()
{
- if (this.smartSerialPort1.IsOpen == true)
- return true;
+ if (this.FlagSerialDll == false)
+ {
+ if (this.smartSerialPort1.IsOpen == true)
+ return true;
+ else
+ return false;
+ }
else
- return false;
+ return true;
}
public void TransferDirectSerialCOM1(string strTemp)
{
if (this.SystemConfig1.SerialCOM1Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1)
{
byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp);
- this.smartSerialPort1.WriteNoneFrame(strByte);
+
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort1.WriteNoneFrame(strByte);
+ else
+ SerialMgrComm.serialPortMessageByte("COM1:", strByte, strByte.Length);
}
else
- this.smartSerialPort1.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ {
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort1.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ else
+ SerialMgrComm.serialPortMessageRaw("COM1:", strTemp);
+ }
}
public void TransferDirectSerialCOM1(byte[] buffer)
{
- this.smartSerialPort1.WriteNoneFrame(buffer);
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort1.WriteNoneFrame(buffer);
+ else
+ SerialMgrComm.serialPortMessageByte("COM1:", buffer, buffer.Length);
}
public void TransferSerialCOM1(string strTemp)
{
- if (this.smartSerialPort1.IsOpen == true)
+ if (this.SystemConfig1.TransmissionDelayTimeCOM1 == 0)
{
- if (this.SystemConfig1.TransmissionDelayTimeCOM1 == 0)
+ if (this.SystemConfig1.SerialCOM1Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1)
{
- if (this.SystemConfig1.SerialCOM1Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1)
- {
- byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp);
+ byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp);
+
+ if (this.FlagSerialDll == false)
this.smartSerialPort1.WriteNoneFrame(strByte);
- }
else
- this.smartSerialPort1.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ SerialMgrComm.serialPortMessageByte("COM1:", strByte, strByte.Length);
}
else
{
- this.QueueCOM1.Enqueue(strTemp);
- this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM1);
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort1.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ else
+ SerialMgrComm.serialPortMessageRaw("COM1:", strTemp);
}
}
+ else
+ {
+ this.QueueCOM1.Enqueue(strTemp);
+ this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM1);
+ }
}
public void TransferSerialCOM1(byte[] buffer)
{
- if (this.smartSerialPort1.IsOpen == true)
+ if (this.SystemConfig1.TransmissionDelayTimeCOM1 == 0)
{
- if (this.SystemConfig1.TransmissionDelayTimeCOM1 == 0)
+ if (this.FlagSerialDll == false)
this.smartSerialPort1.WriteNoneFrame(buffer);
else
- {
- this.QueueCOM1.Enqueue(buffer);
- this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM1);
- }
+ SerialMgrComm.serialPortMessageByte("COM1:", buffer, buffer.Length);
+ }
+ else
+ {
+ this.QueueCOM1.Enqueue(buffer);
+ this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM1);
}
}
public void ChangeSerialCOM1FrameSeparateType(DataStore.SeparateType type)
{
+ if (this.FlagSerialDll == true)
+ return;
+
// 통신 포트 설정
- if (this.smartSerialPort1.IsOpen == true)
- this.smartSerialPort1.Close();
+ this.CloseSerialCOM1();
if (type == DataStore.SeparateType.ETXONLY)
{
@@ -6968,117 +7223,170 @@ namespace ITC81DB.Forms
#region Serial COM3
public void OpenSerialCOM3()
{
+ int baudrate = 9600;
+
if (this.SystemConfig1.SerialCOM3Mode == 0)
return;
- if (this.smartSerialPort3.IsOpen == true)
- this.smartSerialPort3.Close();
+ this.CloseSerialCOM3();
switch (this.SystemConfig1.SerialCOM3BaudRate)
{
case 0:
this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps;
+ baudrate = 9600;
break;
case 1:
this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._19200bps;
+ baudrate = 19200;
break;
case 2:
this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._38400bps;
+ baudrate = 38400;
break;
case 3:
this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._57600bps;
+ baudrate = 57600;
break;
case 4:
this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._115200bps;
+ baudrate = 115200;
break;
default:
this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps;
+ baudrate = 9600;
break;
}
- this.smartSerialPort3.Open();
+ if (this.FlagSerialDll == false)
+ {
+ this.smartSerialPort3.Open();
+ }
+ else
+ {
+ // Port : COM3
+ SerialMgrComm.serialPortOpen("COM3:", baudrate, 0, 0, 8);
+ }
}
public void CloseSerialCOM3()
{
- this.smartSerialPort3.Close();
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort3.Close();
+ else
+ SerialMgrComm.serialPortClose("COM3:");
}
public bool CheckOpenCOM3()
{
- if (this.smartSerialPort3.IsOpen == true)
- return true;
+ if (this.FlagSerialDll == false)
+ {
+ if (this.smartSerialPort3.IsOpen == true)
+ return true;
+ else
+ return false;
+ }
else
- return false;
+ return true;
}
public void TransferDirectSerialCOM3(string strTemp)
{
if (this.SystemConfig1.SerialCOM3Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1)
{
byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp);
- this.smartSerialPort3.WriteNoneFrame(strByte);
+
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort3.WriteNoneFrame(strByte);
+ else
+ SerialMgrComm.serialPortMessageByte("COM3:", strByte, strByte.Length);
}
else
- this.smartSerialPort3.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ {
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort3.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ else
+ SerialMgrComm.serialPortMessageRaw("COM3:", strTemp);
+ }
}
public void TransferDirectSerialCOM3(byte[] buffer)
{
- this.smartSerialPort3.WriteNoneFrame(buffer);
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort3.WriteNoneFrame(buffer);
+ else
+ SerialMgrComm.serialPortMessageByte("COM3:", buffer, buffer.Length);
}
public void TransferDirectSerialCOM3RawData(string strTemp)
{
- this.smartSerialPort3.RawSerialPort.Write(strTemp);
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort3.RawSerialPort.Write(strTemp);
+ else
+ SerialMgrComm.serialPortMessageRaw("COM3:", strTemp);
}
public void TransferDirectSerialCOM3RawData(byte[] buffer)
{
- this.smartSerialPort3.RawSerialPort.Write(buffer, 0, buffer.Length);
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort3.RawSerialPort.Write(buffer, 0, buffer.Length);
+ else
+ SerialMgrComm.serialPortMessageByte("COM3:", buffer, buffer.Length);
}
public void TransferSerialCOM3(string strTemp)
{
- if (this.smartSerialPort3.IsOpen == true)
+ if (strTemp == "" || strTemp == null)
+ return;
+
+ if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0)
{
- if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0)
+ if (this.SystemConfig1.SerialCOM3Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1)
{
- if (this.SystemConfig1.SerialCOM3Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1)
- {
- byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp);
+ byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp);
+
+ if (this.FlagSerialDll == false)
this.smartSerialPort3.WriteNoneFrame(strByte);
- }
else
- this.smartSerialPort3.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ SerialMgrComm.serialPortMessageByte("COM3:", strByte, strByte.Length);
}
else
{
- this.QueueCOM3.Enqueue(strTemp);
- this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM3);
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort3.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ else
+ SerialMgrComm.serialPortMessageRaw("COM3:", strTemp);
}
}
+ else
+ {
+ this.QueueCOM3.Enqueue(strTemp);
+ this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM3);
+ }
}
public void TransferSerialCOM3(byte[] buffer)
{
- if (this.smartSerialPort3.IsOpen == true)
+ if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0)
{
- if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0)
+ if (this.FlagSerialDll == false)
this.smartSerialPort3.WriteNoneFrame(buffer);
else
- {
- this.QueueCOM3.Enqueue(buffer);
- this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM3);
- }
+ SerialMgrComm.serialPortMessageByte("COM3:", buffer, buffer.Length);
+ }
+ else
+ {
+ this.QueueCOM3.Enqueue(buffer);
+ this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM3);
}
}
public void TransferSerialCOM3RawData(byte[] buffer)
{
- if (this.smartSerialPort3.IsOpen == true)
+ if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0)
{
- if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0)
- {
+ if (this.FlagSerialDll == false)
//RawSerialPort 기능을 사용하여 데이터를 전송
this.smartSerialPort3.RawSerialPort.Write(buffer, 0, buffer.Length);
- }
else
- {
- this.QueueCOM3.Enqueue(buffer);
- this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM3);
- }
+ SerialMgrComm.serialPortMessageByte("COM3:", buffer, buffer.Length);
+
+ }
+ else
+ {
+ this.QueueCOM3.Enqueue(buffer);
+ this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM3);
}
}
public void ReceiveSerialCOM3()
@@ -7111,9 +7419,11 @@ namespace ITC81DB.Forms
public void ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType type)
{
+ if (this.FlagSerialDll == true)
+ return;
+
// 통신 포트 설정
- if (this.smartSerialPort3.IsOpen == true)
- this.smartSerialPort3.Close();
+ this.CloseSerialCOM3();
if (type == DataStore.SeparateType.ETXONLY)
{
@@ -7156,100 +7466,145 @@ namespace ITC81DB.Forms
#region Serial COM4
public void OpenSerialCOM4()
{
+ int baudrate = 9600;
+
if (this.SystemConfig1.SerialCOM4Mode == 0)
return;
- if (this.smartSerialPort4.IsOpen == true)
- this.smartSerialPort4.Close();
+ this.CloseSerialCOM4();
switch (this.SystemConfig1.SerialCOM4BaudRate)
{
case 0:
this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps;
+ baudrate = 9600;
break;
case 1:
this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._19200bps;
+ baudrate = 19200;
break;
case 2:
this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._38400bps;
+ baudrate = 38400;
break;
case 3:
this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._57600bps;
+ baudrate = 57600;
break;
case 4:
this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._115200bps;
+ baudrate = 115200;
break;
default:
this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps;
+ baudrate = 9600;
break;
}
- this.smartSerialPort4.Open();
+ if (this.FlagSerialDll == false)
+ {
+ this.smartSerialPort4.Open();
+ }
+ else
+ {
+ // Port : COM4
+ SerialMgrComm.serialPortOpen("COM4:", baudrate, 0, 0, 8);
+ }
}
public void CloseSerialCOM4()
{
- this.smartSerialPort4.Close();
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort4.Close();
+ else
+ SerialMgrComm.serialPortClose("COM4:");
}
public bool CheckOpenCOM4()
{
- if (this.smartSerialPort4.IsOpen == true)
- return true;
+ if (this.FlagSerialDll == false)
+ {
+ if (this.smartSerialPort4.IsOpen == true)
+ return true;
+ else
+ return false;
+ }
else
- return false;
+ return true;
}
public void TransferDirectSerialCOM4(string strTemp)
{
if (this.SystemConfig1.SerialCOM4Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1)
{
byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp);
- this.smartSerialPort4.WriteNoneFrame(strByte);
+
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort4.WriteNoneFrame(strByte);
+ else
+ SerialMgrComm.serialPortMessageByte("COM4:", strByte, strByte.Length);
}
else
- this.smartSerialPort4.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ {
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort4.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ else
+ SerialMgrComm.serialPortMessageRaw("COM4:", strTemp);
+ }
}
public void TransferDirectSerialCOM4(byte[] buffer)
{
- this.smartSerialPort4.WriteNoneFrame(buffer);
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort4.WriteNoneFrame(buffer);
+ else
+ SerialMgrComm.serialPortMessageByte("COM4:", buffer, buffer.Length);
}
public void TransferSerialCOM4(string strTemp)
{
- if (this.smartSerialPort4.IsOpen == true)
+ if (this.SystemConfig1.TransmissionDelayTimeCOM4 == 0)
{
- if (this.SystemConfig1.TransmissionDelayTimeCOM4 == 0)
+ if (this.SystemConfig1.SerialCOM4Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1)
{
- if (this.SystemConfig1.SerialCOM4Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1)
- {
- byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp);
+ byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp);
+
+ if (this.FlagSerialDll == false)
this.smartSerialPort4.WriteNoneFrame(strByte);
- }
else
- this.smartSerialPort4.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ SerialMgrComm.serialPortMessageByte("COM4:", strByte, strByte.Length);
}
else
{
- this.QueueCOM4.Enqueue(strTemp);
- this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM4);
+ if (this.FlagSerialDll == false)
+ this.smartSerialPort4.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE);
+ else
+ SerialMgrComm.serialPortMessageRaw("COM4:", strTemp);
}
}
+ else
+ {
+ this.QueueCOM4.Enqueue(strTemp);
+ this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM4);
+ }
}
public void TransferSerialCOM4(byte[] buffer)
{
- if (this.smartSerialPort4.IsOpen == true)
+ if (this.SystemConfig1.TransmissionDelayTimeCOM4 == 0)
{
- if (this.SystemConfig1.TransmissionDelayTimeCOM4 == 0)
+ if (this.FlagSerialDll == false)
this.smartSerialPort4.WriteNoneFrame(buffer);
else
- {
- this.QueueCOM4.Enqueue(buffer);
- this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM4);
- }
+ SerialMgrComm.serialPortMessageByte("COM4:", buffer, buffer.Length);
+ }
+ else
+ {
+ this.QueueCOM4.Enqueue(buffer);
+ this.CreateTimer(DataStore.MenuBottomConfiguration.SerialCOM4);
}
}
public void ChangeSerialCOM4FrameSeparateType(DataStore.SeparateType type)
{
+ if (this.FlagSerialDll == true)
+ return;
+
// 통신 포트 설정
- if (this.smartSerialPort4.IsOpen == true)
- this.smartSerialPort4.Close();
+ this.CloseSerialCOM4();
if (type == DataStore.SeparateType.ETXONLY)
{
@@ -11685,7 +12040,7 @@ namespace ITC81DB.Forms
#endregion
#region Counter File
- private void CreateCounterFile()
+ private void CreateCounterFile1()
{
StructCounterItem structItem;
WeightData item = new WeightData();
@@ -11725,12 +12080,83 @@ namespace ITC81DB.Forms
}
this.smartFileIO.WriteStructure_End();
}
+ private void CreateCounterFile2()
+ {
+ StructCounterItem2 structItem;
+ WeightData item = new WeightData();
+ item.ClearCount();
+
+ for (int i = 0; i < 1000; i++)
+ {
+ structItem.SumOfSquaresDividedByCount = item.SumOfSquaresDivideByCount;
+ structItem.PassMaxWeight = item.PassMaxWeight;
+ structItem.PassMinWeight = item.PassMinWeight;
+ structItem.ExNGSumWeight = item.ExNGSumWeight;
+
+ structItem.DummyDouble1 = 0.0;
+ structItem.DummyDouble2 = 0.0;
+ structItem.DummyDouble3 = 0.0;
+ structItem.DummyDouble4 = 0.0;
+ structItem.DummyDouble5 = 0.0;
+ structItem.DummyDouble6 = 0.0;
+ structItem.DummyDouble7 = 0.0;
+ structItem.DummyDouble8 = 0.0;
+ structItem.DummyDouble9 = 0.0;
+ structItem.DummyDouble10 = 0.0;
+ structItem.DummyDouble11 = 0.0;
+ structItem.DummyDouble12 = 0.0;
+ structItem.DummyDouble13 = 0.0;
+ structItem.DummyDouble14 = 0.0;
+ structItem.DummyDouble15 = 0.0;
+ structItem.DummyDouble16 = 0.0;
+ structItem.DummyDouble17 = 0.0;
+ structItem.DummyDouble18 = 0.0;
+ structItem.DummyDouble19 = 0.0;
+ structItem.DummyDouble20 = 0.0;
+
+ structItem.DummyInt1 = 0;
+ structItem.DummyInt2 = 0;
+ structItem.DummyInt3 = 0;
+ structItem.DummyInt4 = 0;
+ structItem.DummyInt5 = 0;
+ structItem.DummyInt6 = 0;
+ structItem.DummyInt7 = 0;
+ structItem.DummyInt8 = 0;
+ structItem.DummyInt9 = 0;
+ structItem.DummyInt10 = 0;
+ structItem.DummyInt11 = 0;
+ structItem.DummyInt12 = 0;
+ structItem.DummyInt13 = 0;
+ structItem.DummyInt14 = 0;
+ structItem.DummyInt15 = 0;
+ structItem.DummyInt16 = 0;
+ structItem.DummyInt17 = 0;
+ structItem.DummyInt18 = 0;
+ structItem.DummyInt19 = 0;
+ structItem.DummyInt20 = 0;
+
+ structItem.DummyDateTime1 = DateTime.Now;
+ structItem.DummyDateTime2 = DateTime.Now;
+
+ structItem.DummyString1 = "0";
+ structItem.DummyString2 = "0";
+ structItem.DummyString3 = "0";
+ structItem.DummyString4 = "0";
+ structItem.DummyString5 = "0";
+ structItem.DummyString6 = "0";
+
+ this.smartFileIO.WriteStructure_Begin(structItem, i);
+ }
+ this.smartFileIO.WriteStructure_End();
+ }
public void SaveCounterFile(WeightData item, int index)
{
string fullFilePath = "";
bool fileCheck = false;
StructCounterItem structItem;
+ StructCounterItem2 structItem2;
+ #region counterItem
fullFilePath = this.PathSDCardSystemFile2Folder + "counterItem.int";
this.smartFileIO.FilePathName = fullFilePath;
@@ -11743,7 +12169,7 @@ namespace ITC81DB.Forms
{
this.smartFileIO.Open(this.BufferSmartUart);
- this.CreateCounterFile();
+ this.CreateCounterFile1();
}
structItem.OverCount = item.OverCount;
@@ -11778,13 +12204,95 @@ namespace ITC81DB.Forms
this.smartFileIO.WriteStructure_End();
this.smartFileIO.Close();
+ #endregion
+
+ #region counterItem2
+ fullFilePath = this.PathSDCardSystemFile2Folder + "counterItem2.int";
+ this.smartFileIO.FilePathName = fullFilePath;
+
+ fileInfo = new FileInfo(fullFilePath);
+ fileCheck = fileInfo.Exists;
+
+ if (fileCheck == true)
+ this.smartFileIO.Open(this.BufferSmartUart);
+ else
+ {
+ this.smartFileIO.Open(this.BufferSmartUart);
+
+ this.CreateCounterFile2();
+ }
+
+ structItem2.SumOfSquaresDividedByCount = item.SumOfSquaresDivideByCount;
+ structItem2.PassMaxWeight = item.PassMaxWeight;
+ structItem2.PassMinWeight = item.PassMinWeight;
+ structItem2.ExNGSumWeight = item.ExNGSumWeight;
+
+ structItem2.DummyDouble1 = 0.0;
+ structItem2.DummyDouble2 = 0.0;
+ structItem2.DummyDouble3 = 0.0;
+ structItem2.DummyDouble4 = 0.0;
+ structItem2.DummyDouble5 = 0.0;
+ structItem2.DummyDouble6 = 0.0;
+ structItem2.DummyDouble7 = 0.0;
+ structItem2.DummyDouble8 = 0.0;
+ structItem2.DummyDouble9 = 0.0;
+ structItem2.DummyDouble10 = 0.0;
+ structItem2.DummyDouble11 = 0.0;
+ structItem2.DummyDouble12 = 0.0;
+ structItem2.DummyDouble13 = 0.0;
+ structItem2.DummyDouble14 = 0.0;
+ structItem2.DummyDouble15 = 0.0;
+ structItem2.DummyDouble16 = 0.0;
+ structItem2.DummyDouble17 = 0.0;
+ structItem2.DummyDouble18 = 0.0;
+ structItem2.DummyDouble19 = 0.0;
+ structItem2.DummyDouble20 = 0.0;
+
+ structItem2.DummyInt1 = 0;
+ structItem2.DummyInt2 = 0;
+ structItem2.DummyInt3 = 0;
+ structItem2.DummyInt4 = 0;
+ structItem2.DummyInt5 = 0;
+ structItem2.DummyInt6 = 0;
+ structItem2.DummyInt7 = 0;
+ structItem2.DummyInt8 = 0;
+ structItem2.DummyInt9 = 0;
+ structItem2.DummyInt10 = 0;
+ structItem2.DummyInt11 = 0;
+ structItem2.DummyInt12 = 0;
+ structItem2.DummyInt13 = 0;
+ structItem2.DummyInt14 = 0;
+ structItem2.DummyInt15 = 0;
+ structItem2.DummyInt16 = 0;
+ structItem2.DummyInt17 = 0;
+ structItem2.DummyInt18 = 0;
+ structItem2.DummyInt19 = 0;
+ structItem2.DummyInt20 = 0;
+
+ structItem2.DummyDateTime1 = DateTime.Now;
+ structItem2.DummyDateTime2 = DateTime.Now;
+
+ structItem2.DummyString1 = "0";
+ structItem2.DummyString2 = "0";
+ structItem2.DummyString3 = "0";
+ structItem2.DummyString4 = "0";
+ structItem2.DummyString5 = "0";
+ structItem2.DummyString6 = "0";
+
+ this.smartFileIO.WriteStructure_Begin(structItem2, index);
+ this.smartFileIO.WriteStructure_End();
+
+ this.smartFileIO.Close();
+ #endregion
}
public void SaveCounterFile(Collection items)
{
string fullFilePath = "";
bool fileCheck = false;
StructCounterItem structItem;
+ StructCounterItem2 structItem2;
+ #region counterItem
fullFilePath = this.PathSDCardSystemFile2Folder + "counterItem.int";
this.smartFileIO.FilePathName = fullFilePath;
@@ -11797,7 +12305,7 @@ namespace ITC81DB.Forms
{
this.smartFileIO.Open(this.BufferSmartUart);
- this.CreateCounterFile();
+ this.CreateCounterFile1();
}
for (int i = 0; i < this.ProductCount; i++)
@@ -11834,13 +12342,97 @@ namespace ITC81DB.Forms
}
this.smartFileIO.WriteStructure_End();
this.smartFileIO.Close();
+ #endregion
+
+ #region counterItem2
+ fullFilePath = this.PathSDCardSystemFile2Folder + "counterItem2.int";
+ this.smartFileIO.FilePathName = fullFilePath;
+
+ fileInfo = new FileInfo(fullFilePath);
+ fileCheck = fileInfo.Exists;
+
+ if (fileCheck == true)
+ this.smartFileIO.Open(this.BufferSmartUart);
+ else
+ {
+ this.smartFileIO.Open(this.BufferSmartUart);
+
+ this.CreateCounterFile2();
+ }
+
+ for (int i = 0; i < this.ProductCount; i++)
+ {
+ structItem2.SumOfSquaresDividedByCount = items[i].SumOfSquaresDivideByCount;
+ structItem2.PassMaxWeight = items[i].PassMaxWeight;
+ structItem2.PassMinWeight = items[i].PassMinWeight;
+ structItem2.ExNGSumWeight = items[i].ExNGSumWeight;
+
+ structItem2.DummyDouble1 = 0.0;
+ structItem2.DummyDouble2 = 0.0;
+ structItem2.DummyDouble3 = 0.0;
+ structItem2.DummyDouble4 = 0.0;
+ structItem2.DummyDouble5 = 0.0;
+ structItem2.DummyDouble6 = 0.0;
+ structItem2.DummyDouble7 = 0.0;
+ structItem2.DummyDouble8 = 0.0;
+ structItem2.DummyDouble9 = 0.0;
+ structItem2.DummyDouble10 = 0.0;
+ structItem2.DummyDouble11 = 0.0;
+ structItem2.DummyDouble12 = 0.0;
+ structItem2.DummyDouble13 = 0.0;
+ structItem2.DummyDouble14 = 0.0;
+ structItem2.DummyDouble15 = 0.0;
+ structItem2.DummyDouble16 = 0.0;
+ structItem2.DummyDouble17 = 0.0;
+ structItem2.DummyDouble18 = 0.0;
+ structItem2.DummyDouble19 = 0.0;
+ structItem2.DummyDouble20 = 0.0;
+
+ structItem2.DummyInt1 = 0;
+ structItem2.DummyInt2 = 0;
+ structItem2.DummyInt3 = 0;
+ structItem2.DummyInt4 = 0;
+ structItem2.DummyInt5 = 0;
+ structItem2.DummyInt6 = 0;
+ structItem2.DummyInt7 = 0;
+ structItem2.DummyInt8 = 0;
+ structItem2.DummyInt9 = 0;
+ structItem2.DummyInt10 = 0;
+ structItem2.DummyInt11 = 0;
+ structItem2.DummyInt12 = 0;
+ structItem2.DummyInt13 = 0;
+ structItem2.DummyInt14 = 0;
+ structItem2.DummyInt15 = 0;
+ structItem2.DummyInt16 = 0;
+ structItem2.DummyInt17 = 0;
+ structItem2.DummyInt18 = 0;
+ structItem2.DummyInt19 = 0;
+ structItem2.DummyInt20 = 0;
+
+ structItem2.DummyDateTime1 = DateTime.Now;
+ structItem2.DummyDateTime2 = DateTime.Now;
+
+ structItem2.DummyString1 = "0";
+ structItem2.DummyString2 = "0";
+ structItem2.DummyString3 = "0";
+ structItem2.DummyString4 = "0";
+ structItem2.DummyString5 = "0";
+ structItem2.DummyString6 = "0";
+
+ this.smartFileIO.WriteStructure_Begin(structItem2, i);
+ }
+ this.smartFileIO.WriteStructure_End();
+ this.smartFileIO.Close();
+ #endregion
}
public void LoadCounterFile(ref WeightData item, int index)
{
string fullFilePath = "";
bool fileCheck = false;
StructCounterItem structItem;
+ StructCounterItem2 structItem2;
+ #region counterItem
fullFilePath = this.PathSDCardSystemFile2Folder + "counterItem.int";
this.smartFileIO.FilePathName = fullFilePath;
@@ -11853,7 +12445,7 @@ namespace ITC81DB.Forms
{
this.smartFileIO.Open(this.BufferSmartUart);
- this.CreateCounterFile();
+ this.CreateCounterFile1();
}
try
@@ -11889,6 +12481,42 @@ namespace ITC81DB.Forms
this.smartFileIO.Close();
}
+ #endregion
+
+ #region counterItem2
+ fullFilePath = this.PathSDCardSystemFile2Folder + "counterItem2.int";
+ this.smartFileIO.FilePathName = fullFilePath;
+
+ fileInfo = new FileInfo(fullFilePath);
+ fileCheck = fileInfo.Exists;
+
+ if (fileCheck == true)
+ this.smartFileIO.Open(this.BufferSmartUart);
+ else
+ {
+ this.smartFileIO.Open(this.BufferSmartUart);
+
+ this.CreateCounterFile2();
+ }
+
+ try
+ {
+ structItem2 = (StructCounterItem2)this.smartFileIO.ReadStructure(index, typeof(StructCounterItem2));
+
+ item.SumOfSquare = structItem2.SumOfSquaresDividedByCount * (item.OverCount + item.PassCount + item.UnderCount);
+ item.PassMaxWeight = structItem2.PassMaxWeight;
+ item.PassMinWeight = structItem2.PassMinWeight;
+ item.ExNGSumWeight = structItem2.ExNGSumWeight;
+ }
+ catch
+ {
+ DialogFormMessage myMsg = new DialogFormMessage(17, this.SystemConfig1.Language);
+ myMsg.ShowDialog();
+
+ this.smartFileIO.Close();
+ }
+ #endregion
+
this.smartFileIO.Close();
}
public void LoadCounterFile(ref Collection items)
@@ -11896,7 +12524,9 @@ namespace ITC81DB.Forms
bool fileCheck = false;
string fullFilePath = "";
StructCounterItem structItem;
+ StructCounterItem2 structItem2;
+ #region counterItem
fullFilePath = this.PathSDCardSystemFile2Folder + "counterItem.int";
this.smartFileIO.FilePathName = fullFilePath;
@@ -11908,7 +12538,7 @@ namespace ITC81DB.Forms
else
{
this.smartFileIO.Open(this.BufferSmartUart);
- this.CreateCounterFile();
+ this.CreateCounterFile1();
}
try
@@ -11950,6 +12580,47 @@ namespace ITC81DB.Forms
this.smartFileIO.Close();
}
+ #endregion
+
+ #region counterItem2
+ fullFilePath = this.PathSDCardSystemFile2Folder + "counterItem2.int";
+ this.smartFileIO.FilePathName = fullFilePath;
+
+ fileInfo = new FileInfo(fullFilePath);
+ fileCheck = fileInfo.Exists;
+
+ if (fileCheck == true)
+ this.smartFileIO.Open(this.BufferSmartUart);
+ else
+ {
+ this.smartFileIO.Open(this.BufferSmartUart);
+ this.CreateCounterFile2();
+ }
+
+ try
+ {
+ if (this.smartFileIO.ReadStructureAllBuffer() == true)
+ {
+ for (int i = 0; i < this.ProductCount; i++)
+ {
+ structItem2 = (StructCounterItem2)this.smartFileIO.ReadStructureBuffer(typeof(StructCounterItem2), i);
+
+ items[i].SumOfSquare = structItem2.SumOfSquaresDividedByCount * (items[i].OverCount + items[i].PassCount + items[i].UnderCount);
+ items[i].PassMaxWeight = structItem2.PassMaxWeight;
+ items[i].PassMinWeight = structItem2.PassMinWeight;
+ items[i].ExNGSumWeight = structItem2.ExNGSumWeight;
+ }
+ }
+ }
+ catch
+ {
+ DialogFormMessage myMsg = new DialogFormMessage(17, this.SystemConfig1.Language);
+ myMsg.ShowDialog();
+
+ this.smartFileIO.Close();
+ }
+ #endregion
+
this.smartFileIO.Close();
}
public void ReLoadCounterFile()
@@ -13538,7 +14209,12 @@ namespace ITC81DB.Forms
this.CreateForm();
// 메인 통신 OPEN
- this.OpenSmartUartLink();
+ this.OpenSmartSerialPort2();
+
+ // 통신 버퍼용
+ this.smartThreadSerialPort2Read.Priority = ThreadPriority.Normal;
+ this.smartThreadSerialPort2Read.Start();
+ //this.smartThreadSerialPort2OverRun.Start();
#region Communication
if (this.SystemConfig1.SerialCOM1Mode != (int)DataStore.SerialMode.f0_None)
@@ -13629,6 +14305,60 @@ namespace ITC81DB.Forms
#endregion
#region Event Handler
+ private void SerialReceiveData(string data)
+ {
+ string cmd = "", dataID = "", transferCNT = "", lane = "";
+
+ try
+ {
+ if (this.FlagSerialDll == false)
+ {
+ cmd = data.Substring(0, 3);
+ if (cmd == "SR0")
+ {
+ if (this.SizeCheck("S", data) == true && this.ChksumCheck(data) == true)
+ {
+ dataID = data.Substring(3, 1);
+ transferCNT = data.Substring(4, 1);
+ lane = data.Substring(5, 1);
+
+ this.TransferDataRespone(CommunicationCommand.StartDataCMD, lane, dataID, transferCNT, CommunicationCommand.ACK);
+ Application.DoEvents();
+ }
+ }
+ }
+
+ // 수신 버퍼 삭제 하고 테스트
+ this.QueueCommunicationRecive.Enqueue(data);
+ //this.ReceiveData1(data);
+
+ this.ChildFormMainDisplay.labelBufferCNT.BeginInvoke(new Action(() =>
+ {
+ this.ChildFormMainDisplay.labelBufferCNT.Text = this.QueueCommunicationRecive.Count.ToString();
+ }));
+
+ // 통신 확인
+ if (this.CommunicationCheckCount / 3 == 1)
+ {
+ if (this.ChildFormMainDisplay != null)
+ this.ChildFormMainDisplay.pictureBoxCommunicationStatus.Visible = true;
+
+ this.CommunicationCheckCount = 0;
+ }
+ else
+ {
+ if (this.ChildFormMainDisplay != null)
+ this.ChildFormMainDisplay.pictureBoxCommunicationStatus.Visible = false;
+
+ this.CommunicationCheckCount += 1;
+ }
+ }
+ catch
+ {
+
+ }
+ }
+
private void smartSerialPort1_OnReadQueueEvent()
{
int ret = 0;
@@ -13989,19 +14719,25 @@ namespace ITC81DB.Forms
}
private void smartSerialPort2_OnReadQueueEvent()
{
- this.ReceiveData();
+ string strTemp = "";
+ byte[] readByte;
- // 통신 확인
- if (this.CommunicationCheckCount / 3 == 1)
+ SmartSerialPort.FRAMEDATAREADSTATUS receiveDataState = SmartSerialPort.FRAMEDATAREADSTATUS.EMPTY;
+
+ try
{
- this.ChildFormMainDisplay.pictureBoxCommunicationStatus.Visible = true;
- this.CommunicationCheckCount = 0;
+ receiveDataState = this.smartSerialPort2.ReadQueue(out readByte);
+ strTemp = Encoding.Default.GetString(readByte, 0, readByte.Length);
}
- else
+ catch
{
- this.ChildFormMainDisplay.pictureBoxCommunicationStatus.Visible = false;
- this.CommunicationCheckCount += 1;
+ return;
}
+
+ if ((receiveDataState == SmartSerialPort.FRAMEDATAREADSTATUS.EMPTY) || (receiveDataState == SmartSerialPort.FRAMEDATAREADSTATUS.FAILDATA))
+ return;
+
+ this.SerialReceiveData(strTemp);
}
private void smartSerialPort3_OnReadQueueEvent()
{
@@ -15375,6 +16111,29 @@ namespace ITC81DB.Forms
this.timerSensorError.Enabled = false;
}
+ private void smartThreadSerialPort2Read_UIThreadFunction(ThreadArgs args)
+ {
+ if (this.QueueCommunicationRecive.Count != 0)
+ {
+ this.ReceiveData(this.QueueCommunicationRecive.Dequeue());
+
+ this.ChildFormMainDisplay.labelBufferCNT.BeginInvoke(new Action(() =>
+ {
+ this.ChildFormMainDisplay.labelBufferCNT.Text = this.QueueCommunicationRecive.Count.ToString();
+ }));
+ }
+ }
+ private void smartSerialSerialPort2_OnPortError(System.IO.Ports.SerialError eErrorState)
+ {
+ this.IndexOverRun++;
+ this.QueueOverRun.Enqueue(string.Format("{0}", this.IndexOverRun));
+ }
+ private void smartThreadSerialPort2OverRun_UIThreadFunction(ThreadArgs args)
+ {
+ if (this.QueueOverRun.Count != 0)
+ this.ChildFormMainDisplay.UpdateDisplayOverRun(this.QueueOverRun.Dequeue());
+ }
+
//private void timerRFIDRead_Tick(object sender, EventArgs e)
//{
// this.TimerRFIDRead.Stop();
diff --git a/ITC81DB/Forms/FormMain.resx b/ITC81DB/Forms/FormMain.resx
index 49ded89..9267528 100644
--- a/ITC81DB/Forms/FormMain.resx
+++ b/ITC81DB/Forms/FormMain.resx
@@ -165,6 +165,12 @@
344, 21
+
+ 735, 91
+
+
+ 965, 91
+
WEBPAD
diff --git a/ITC81DB/Forms/FormMainDisplay.Designer.cs b/ITC81DB/Forms/FormMainDisplay.Designer.cs
index cd855ed..761e0af 100644
--- a/ITC81DB/Forms/FormMainDisplay.Designer.cs
+++ b/ITC81DB/Forms/FormMainDisplay.Designer.cs
@@ -67,6 +67,9 @@
this.buttonHiddenMenu = new SmartX.SmartButton();
this.labelLotNo = new SmartX.SmartLabel();
this.labelAlarmWindow2 = new SmartX.SmartLabel();
+ this.labelMissingCount = new SmartX.SmartLabel();
+ this.labelBufferCNT = new SmartX.SmartLabel();
+ this.labelOverrun = new SmartX.SmartLabel();
((System.ComponentModel.ISupportInitialize)(this.smartForm1)).BeginInit();
this.panel1.SuspendLayout();
this.SuspendLayout();
@@ -119,7 +122,7 @@
//
// buttonExit
//
- this.buttonExit.Location = new System.Drawing.Point(327, 0);
+ this.buttonExit.Location = new System.Drawing.Point(727, 450);
this.buttonExit.Name = "buttonExit";
this.buttonExit.Size = new System.Drawing.Size(56, 20);
this.buttonExit.TabIndex = 4;
@@ -328,7 +331,7 @@
// pictureBoxIconAlarm
//
this.pictureBoxIconAlarm.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxIconAlarm.Image")));
- this.pictureBoxIconAlarm.Location = new System.Drawing.Point(547, 0);
+ this.pictureBoxIconAlarm.Location = new System.Drawing.Point(524, 0);
this.pictureBoxIconAlarm.Name = "pictureBoxIconAlarm";
this.pictureBoxIconAlarm.Size = new System.Drawing.Size(60, 60);
this.pictureBoxIconAlarm.Click += new System.EventHandler(this.pictureBoxIconAlarm_Click);
@@ -568,7 +571,7 @@
this.labelUserLevel.ForeColor = System.Drawing.Color.Red;
this.labelUserLevel.InitVisible = true;
this.labelUserLevel.LineSpacing = 0F;
- this.labelUserLevel.Location = new System.Drawing.Point(614, 34);
+ this.labelUserLevel.Location = new System.Drawing.Point(590, 33);
this.labelUserLevel.Name = "labelUserLevel";
this.labelUserLevel.Size = new System.Drawing.Size(90, 20);
this.labelUserLevel.TabIndex = 528;
@@ -590,7 +593,7 @@
this.labelUserID.ForeColor = System.Drawing.Color.Red;
this.labelUserID.InitVisible = true;
this.labelUserID.LineSpacing = 0F;
- this.labelUserID.Location = new System.Drawing.Point(614, 8);
+ this.labelUserID.Location = new System.Drawing.Point(590, 7);
this.labelUserID.Name = "labelUserID";
this.labelUserID.Size = new System.Drawing.Size(90, 20);
this.labelUserID.TabIndex = 534;
@@ -766,7 +769,7 @@
//
// buttonMemory
//
- this.buttonMemory.Location = new System.Drawing.Point(265, 0);
+ this.buttonMemory.Location = new System.Drawing.Point(727, 424);
this.buttonMemory.Name = "buttonMemory";
this.buttonMemory.Size = new System.Drawing.Size(56, 20);
this.buttonMemory.TabIndex = 547;
@@ -878,9 +881,9 @@
this.labelLotNo.ForeColor = System.Drawing.Color.White;
this.labelLotNo.InitVisible = true;
this.labelLotNo.LineSpacing = 0F;
- this.labelLotNo.Location = new System.Drawing.Point(371, 6);
+ this.labelLotNo.Location = new System.Drawing.Point(371, 26);
this.labelLotNo.Name = "labelLotNo";
- this.labelLotNo.Size = new System.Drawing.Size(175, 50);
+ this.labelLotNo.Size = new System.Drawing.Size(150, 28);
this.labelLotNo.TabIndex = 568;
this.labelLotNo.Text = "99999999999998";
this.labelLotNo.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -910,12 +913,78 @@
this.labelAlarmWindow2.Wordwrap = false;
this.labelAlarmWindow2.Click += new System.EventHandler(this.labelAlarmWindow2_Click);
//
+ // labelMissingCount
+ //
+ this.labelMissingCount.BackColor = System.Drawing.Color.Silver;
+ this.labelMissingCount.BackPictureBox = this.smartForm1;
+ this.labelMissingCount.BackPictureBox1 = null;
+ this.labelMissingCount.BackPictureBox2 = null;
+ this.labelMissingCount.BorderColor = System.Drawing.Color.Black;
+ this.labelMissingCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelMissingCount.ForeColor = System.Drawing.Color.Silver;
+ this.labelMissingCount.InitVisible = true;
+ this.labelMissingCount.LineSpacing = 0F;
+ this.labelMissingCount.Location = new System.Drawing.Point(471, 0);
+ this.labelMissingCount.Name = "labelMissingCount";
+ this.labelMissingCount.Size = new System.Drawing.Size(50, 20);
+ this.labelMissingCount.TabIndex = 596;
+ this.labelMissingCount.Text = "0";
+ this.labelMissingCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelMissingCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelMissingCount.Visible = false;
+ this.labelMissingCount.Wordwrap = false;
+ //
+ // labelBufferCNT
+ //
+ this.labelBufferCNT.BackColor = System.Drawing.Color.Silver;
+ this.labelBufferCNT.BackPictureBox = this.smartForm1;
+ this.labelBufferCNT.BackPictureBox1 = null;
+ this.labelBufferCNT.BackPictureBox2 = null;
+ this.labelBufferCNT.BorderColor = System.Drawing.Color.Black;
+ this.labelBufferCNT.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelBufferCNT.ForeColor = System.Drawing.Color.Silver;
+ this.labelBufferCNT.InitVisible = true;
+ this.labelBufferCNT.LineSpacing = 0F;
+ this.labelBufferCNT.Location = new System.Drawing.Point(415, 0);
+ this.labelBufferCNT.Name = "labelBufferCNT";
+ this.labelBufferCNT.Size = new System.Drawing.Size(50, 20);
+ this.labelBufferCNT.TabIndex = 595;
+ this.labelBufferCNT.Text = "0";
+ this.labelBufferCNT.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelBufferCNT.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelBufferCNT.Visible = false;
+ this.labelBufferCNT.Wordwrap = false;
+ //
+ // labelOverrun
+ //
+ this.labelOverrun.BackColor = System.Drawing.Color.Silver;
+ this.labelOverrun.BackPictureBox = this.smartForm1;
+ this.labelOverrun.BackPictureBox1 = null;
+ this.labelOverrun.BackPictureBox2 = null;
+ this.labelOverrun.BorderColor = System.Drawing.Color.Black;
+ this.labelOverrun.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOverrun.ForeColor = System.Drawing.Color.Silver;
+ this.labelOverrun.InitVisible = true;
+ this.labelOverrun.LineSpacing = 0F;
+ this.labelOverrun.Location = new System.Drawing.Point(359, 0);
+ this.labelOverrun.Name = "labelOverrun";
+ this.labelOverrun.Size = new System.Drawing.Size(50, 20);
+ this.labelOverrun.TabIndex = 594;
+ this.labelOverrun.Text = "0";
+ this.labelOverrun.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOverrun.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOverrun.Visible = false;
+ this.labelOverrun.Wordwrap = false;
+ //
// FormMainDisplay
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.AutoScroll = true;
this.ClientSize = new System.Drawing.Size(800, 600);
+ this.Controls.Add(this.labelMissingCount);
+ this.Controls.Add(this.labelBufferCNT);
+ this.Controls.Add(this.labelOverrun);
this.Controls.Add(this.labelAlarmWindow2);
this.Controls.Add(this.buttonExit);
this.Controls.Add(this.labelLotNo);
@@ -988,5 +1057,8 @@
private SmartX.SmartButton buttonModbus;
private SmartX.SmartLabel labelLotNo;
private SmartX.SmartLabel labelAlarmWindow2;
+ public SmartX.SmartLabel labelMissingCount;
+ public SmartX.SmartLabel labelBufferCNT;
+ public SmartX.SmartLabel labelOverrun;
}
}
\ No newline at end of file
diff --git a/ITC81DB/Forms/FormMainDisplay.cs b/ITC81DB/Forms/FormMainDisplay.cs
index 9155435..3bc8800 100644
--- a/ITC81DB/Forms/FormMainDisplay.cs
+++ b/ITC81DB/Forms/FormMainDisplay.cs
@@ -280,13 +280,29 @@ namespace ITC81DB.Forms
{
if (visible == false)
{
- this.labelBarcode.Visible = false;
+ if (this.ParentForm.SystemConfig2.Barcode != 0)
+ this.labelBarcode.Visible = false;
+ //this.labelComRetry.Visible = false;
+ //this.labelComRetry3th.Visible = false;
+ this.labelOverrun.Visible = false;
+ this.labelBufferCNT.Visible = false;
+ this.labelMissingCount.Visible = false;
+
//this.labelBARCD.Visible = false;
}
else
{
- this.labelBarcode.Text = "";
- this.labelBarcode.Visible = true;
+ if (this.ParentForm.SystemConfig2.Barcode != 0)
+ {
+ this.labelBarcode.Text = "";
+ this.labelBarcode.Visible = true;
+ }
+ //this.labelComRetry.Visible = true;
+ //this.labelComRetry3th.Visible = true;
+ this.labelOverrun.Visible = true;
+ this.labelBufferCNT.Visible = true;
+ this.labelMissingCount.Visible = true;
+
//this.labelBARCD.Text = "";
//this.labelBARCD.Visible = true;
}
@@ -418,27 +434,27 @@ namespace ITC81DB.Forms
this.MainAlarm.listBoxMessage.Items.Clear();
if (alarm.IsLoadCellError == true)
- this.AlarmOccurs("로드셀 에러", "LoadCell Error", alarmData);
+ this.AlarmOccurs("a2_로드셀 에러", "a2_LoadCell Error", alarmData);
if (alarm.IsInverterError == true)
- this.AlarmOccurs("인버터 에러", "Inverter Error", alarmData);
+ this.AlarmOccurs("a9_인버터 에러", "a9_Inverter Error", alarmData);
if (alarm.IsEmergencyStop == true)
- this.AlarmOccurs("비상정지", "Emergency Stop", alarmData);
+ this.AlarmOccurs("a8_비상정지", "a8_Emergency Stop", alarmData);
if (alarm.IsDoorInterlock == true)
- this.AlarmOccurs("문 열림 감지", "Door Interlock", alarmData);
+ this.AlarmOccurs("a4_문 열림 감지", "a4_Door Interlock", alarmData);
if (alarm.IsPressureSensingError == true)
- this.AlarmOccurs("공압 낮음", "Low Pressure", alarmData);
+ this.AlarmOccurs("a3_공압 낮음", "a3_Low Pressure", alarmData);
if (alarm.IsEntrySensorError == true)
- this.AlarmOccurs("진입센서 에러", "Entry Sensor Error", alarmData);
+ this.AlarmOccurs("a1_진입센서 에러", "a1_Entry Sensor Error", alarmData);
if (alarm.IsSorterAError == true)
- this.AlarmOccurs("선별부A 에러", "Sorter A Error", alarmData);
+ this.AlarmOccurs("a7_선별부A 에러", "a7_Sorter A Error", alarmData);
if (alarm.IsSorterBError == true)
- this.AlarmOccurs("선별부B 에러", "Sorter B Error", alarmData);
+ this.AlarmOccurs("a14_선별부B 에러", "a14_Sorter B Error", alarmData);
if (alarm.IsWindProofError == true)
- this.AlarmOccurs("방풍커버 열림", "Windproof Error", alarmData);
+ this.AlarmOccurs("a13_방풍커버 열림", "a13_Windproof Error", alarmData);
if (alarm.IsStackUpSensorError == true)
- this.AlarmOccurs("적체 에러", "Stack up Error", alarmData);
+ this.AlarmOccurs("a6_적체 에러", "a6_Stack up Error", alarmData);
if (alarm.IsEntryNotDetected == true)
- this.AlarmOccurs("제품진입 미감지", "Product entry undetected", alarmData);
+ this.AlarmOccurs("a18_제품진입 미감지", "a18_Product entry undetected", alarmData);
}
public void UpdateDisplayAlarmView(string message, bool flag)
{
@@ -519,6 +535,7 @@ namespace ITC81DB.Forms
}
public void Clear()
{
+ this.ParentForm.MissingCommIDCount = 0;
this.ParentForm.ClearQueue();
this.ClearCurrentData();
@@ -807,6 +824,11 @@ namespace ITC81DB.Forms
}
}
+ public void UpdateDisplayOverRun(string value)
+ {
+ this.labelOverrun.Text = value;
+ }
+
public void MainBottomModbusIconAdd(bool bValue)
{
this.ParentForm.IsOPCModbusUsing = bValue;
@@ -857,7 +879,7 @@ namespace ITC81DB.Forms
this.MainWeightSmallScreen.UpdateEquipmentStatusDisplay(status);
this.MainSubMenu.UpdateEquipmentStatusDisplay(status);
}
- public void UpdateCurrentProductDisplay(DataStore.EquipmentStatus status, ProductItem pItem, WeightData wData)
+ public void UpdateMainTitleDisplay(ProductItem pItem)
{
string value = "";
@@ -872,6 +894,10 @@ namespace ITC81DB.Forms
value = pItem.LotNo;
if (this.labelLotNo.Text != value)
this.labelLotNo.Text = value;
+ }
+ public void UpdateCurrentProductDisplay(DataStore.EquipmentStatus status, ProductItem pItem, WeightData wData)
+ {
+ this.UpdateMainTitleDisplay(pItem);
if (this.MainWeightBigScreen != null)
this.MainWeightBigScreen.UpdateCurrentProductDisplay(status, pItem, wData);
@@ -1157,7 +1183,12 @@ namespace ITC81DB.Forms
this.ParentForm.CurrentSystemStatus.CurrentDisplay = DataStore.DisplayStore.MainDisplay;
this.ParentForm.SetDisplayMode(DataStore.DisplayMode.Normal);
- this.SendCommProductChange(this.ParentForm.SystemConfig1.ProductNumber);
+ #region 순서변경 금지(품번 중량 변경)
+ this.ParentForm.TransferCurrentProductItem(this.ParentForm.CurrentProductItem);
+ this.RescaleControl(this.ParentForm.CurrentProductItem);
+ this.UpdateMainTitleDisplay(this.ParentForm.CurrentProductItem);
+ //this.SendCommProductChange(this.ParentForm.SystemConfig1.ProductNumber);
+ #endregion
this.buttonPrint.Visible = this.ParentForm.SystemConfig1.IsPrinterEnable;
@@ -1196,10 +1227,10 @@ namespace ITC81DB.Forms
//this.DisplayBottomMain(this.CurrentDisplay);
this.MainWeightBigScreen.DisplayRefresh(status);
this.MainWeightSmallScreen.DisplayRefresh(status);
- this.MainSubMenu.DisplayRefresh(status);
- this.MainBarGraph.DisplayRefresh(status);
- this.MainFeedback.DisplayRefresh(status);
- this.MainLineGraph.DisplayRefresh(status);
+ //this.MainSubMenu.DisplayRefresh(status);
+ //this.MainBarGraph.DisplayRefresh(status);
+ //this.MainFeedback.DisplayRefresh(status);
+ //this.MainLineGraph.DisplayRefresh(status);
}
#endregion
@@ -1314,8 +1345,8 @@ namespace ITC81DB.Forms
{
this.MainAlarm.Visible = false;
- if (this.labelAlarmWindow.Visible == true
- && (this.MainAlarm.listBoxMessage.Items.Contains("Sorter A Error") || this.MainAlarm.listBoxMessage.Items.Contains("Sorter B Error")))
+ if (this.MainAlarm.listBoxMessage.Items.Contains("a7_선별부A 에러") || this.MainAlarm.listBoxMessage.Items.Contains("a14_선별부B 에러")
+ || this.MainAlarm.listBoxMessage.Items.Contains("a7_Sorter A Error") || this.MainAlarm.listBoxMessage.Items.Contains("a14_Sorter B Error"))
{
this.ParentForm.TransferData(CommunicationCommand.AlarmNgClearSorter, CommunicationID.MainBoard);
this.PopUpWarningClose();
@@ -1347,7 +1378,7 @@ namespace ITC81DB.Forms
}
private void labelAlarmWindow_Click(object sender, EventArgs e)
{
- if (this.MainAlarm.listBoxMessage.Items.Contains("Sorter A Error") || this.MainAlarm.listBoxMessage.Items.Contains("Sorter B Error"))
+ if (this.labelAlarmWindow.Text.Contains("a7") || this.labelAlarmWindow.Text.Contains("a14"))
this.ParentForm.TransferData(CommunicationCommand.AlarmNgClearSorter, CommunicationID.MainBoard);
if (this.ParentForm.SystemConfig1.IsExternalInputLamp == true && this.ParentForm.IsLampOnDataSend == true)
this.ParentForm.TransferData(CommunicationCommand.LampOnContinuousDisable, CommunicationID.MainBoard);
@@ -1598,7 +1629,7 @@ namespace ITC81DB.Forms
private void buttonExit_Click(object sender, EventArgs e)
{
- this.ParentForm.CloseSmartUartLink();
+ this.ParentForm.CloseSmartSerialPort2();
this.ParentForm.smartFileCommunicationLog.Close();
this.ParentForm.smartFileCheckLog.Close();
this.ParentForm.smartFileStartStopLog.Close();
diff --git a/ITC81DB/ITC81DB.csproj b/ITC81DB/ITC81DB.csproj
index d8a2843..d436e23 100644
--- a/ITC81DB/ITC81DB.csproj
+++ b/ITC81DB/ITC81DB.csproj
@@ -860,6 +860,9 @@
True
+
+
+
diff --git a/ITC81DB/SerialManager/SerialManager.Define.cs b/ITC81DB/SerialManager/SerialManager.Define.cs
new file mode 100644
index 0000000..d2b5279
--- /dev/null
+++ b/ITC81DB/SerialManager/SerialManager.Define.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using System.Runtime.InteropServices;
+
+
+namespace ITC81DB.SerialManager
+{
+ public partial class SerialMgrComm
+ {
+ private const string PathDll = "SD Card\\Run\\DllSerialMgr.dll";
+
+ public delegate void fnSerialVersionCB(StringBuilder pVersion);
+ public static fnSerialVersionCB fnSerialVersionCallback;
+
+ public delegate void fnSerialMgrDebugCB(int level, StringBuilder pMessage);
+ public static fnSerialMgrDebugCB fnSerialMgrDebugCallback;
+
+ public delegate void fnSerialMgrPortConnectCB(StringBuilder commPort, int status, int errDetail);
+ public static fnSerialMgrPortConnectCB fnSerialMgrPortConnectCallback;
+
+ public delegate void fnSerialMgrRcvPacketCB(StringBuilder commPort, IntPtr pData, int length);
+ public static fnSerialMgrRcvPacketCB fnSerialMgrRcvPacketCallback;
+
+ public delegate void fnSerialMgrRcvErrPacketCB(StringBuilder commPort, IntPtr pData, int length);
+ public static fnSerialMgrRcvErrPacketCB fnSerialMgrRcvErrPacketCallback;
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern void DLL_SerialMgr_Register_DebugCB(fnSerialMgrDebugCB func);
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern void DLL_SerialMgr_Register_ConnectCB(fnSerialMgrPortConnectCB func);
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern void DLL_SerialMgr_Register_VersionCB(fnSerialVersionCB func);
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern void DLL_SerialMgr_Register_RcvPacketCB(fnSerialMgrRcvPacketCB func);
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern void DLL_SerialMgr_Register_RcvErrPacketCB(fnSerialMgrRcvErrPacketCB func);
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern void DLL_SerialMgr_HelloWorld();
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern void DLL_SerialMgr_Getversion();
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern void DLL_SerialMgr_Activation();
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern void DLL_SerialMgr_Deactivation();
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern int DLL_SerialMgr_PortOpen(IntPtr commPort, int BaudRate, int StopBit, int Parity, int DataBit);
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern int DLL_SerialMgr_PortClose(IntPtr commPort);
+
+ [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)]
+ public static extern int DLL_SerialMgr_PortSendMsg(IntPtr commPort, IntPtr pData, int Length);
+
+ }
+}
diff --git a/ITC81DB/SerialManager/SerialManager.Structure.cs b/ITC81DB/SerialManager/SerialManager.Structure.cs
new file mode 100644
index 0000000..c49f9e0
--- /dev/null
+++ b/ITC81DB/SerialManager/SerialManager.Structure.cs
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading;
+
+namespace ITC81DB.SerialManager
+{
+ public partial class SerialMgrComm
+ {
+ //fnSerialMgrDebugCB
+ public const int SERIALMGR_DBG_NORMAL = 0x0001;
+ public const int SERIALMGR_DBG_THREAD = 0x0002;
+ public const int SERIALMGR_DBG_LIST = 0x0004;
+ public const int SERIALMGR_DBG_PORT = 0x0008;
+
+
+ // fnSerialMgrConnectCB : status
+ public const int SERIAL_STATUS_DISCONNECT = 0x00;
+ public const int SERIAL_STATUS_CONNECT = 0x01;
+ public const int SERIAL_STATUS_ERROR = 0x02;
+
+ public const int MAX_COMMPORT_SIZE = 10;
+
+ // fnSerialMgrConnectCB : errDetail
+ public enum serial_error_detail_e
+ {
+ SERIAL_ERR_NONE = 0x00,
+ SERIAL_ERR_CREATE,
+ SERIAL_ERR_PARAMETER,
+ SERIAL_ERR_TIMEOUT,
+ SERIAL_ERR_WRITE,
+ SERIAL_ERR_READ,
+ SERIAL_ERR_MAX
+ };
+
+
+
+ }
+}
diff --git a/ITC81DB/SerialManager/SerialManager.cs b/ITC81DB/SerialManager/SerialManager.cs
new file mode 100644
index 0000000..3c7fcf9
--- /dev/null
+++ b/ITC81DB/SerialManager/SerialManager.cs
@@ -0,0 +1,275 @@
+#define CONSOLE_DBUGGING
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading;
+using System.Collections;
+
+namespace ITC81DB.SerialManager
+{
+ public partial class SerialMgrComm
+ {
+ public delegate void ObjectEventHandler(object data);
+ public static event ObjectEventHandler SerialPortMessageReceive;
+ public static event ObjectEventHandler SerialPortErrMessageReceive;
+
+ public static void IntializeSerialManager()
+ {
+ //Console.Write("Initialize Serial Manager \n");
+
+ // Register Callback
+ fnSerialMgrDebugCallback = serialDebugCallback;
+ DLL_SerialMgr_Register_DebugCB(fnSerialMgrDebugCallback);
+
+ fnSerialMgrPortConnectCallback = serialPortConnectCallback;
+ DLL_SerialMgr_Register_ConnectCB(fnSerialMgrPortConnectCallback);
+
+ fnSerialVersionCallback = serialVersionCallback;
+ DLL_SerialMgr_Register_VersionCB(fnSerialVersionCallback);
+
+ fnSerialMgrRcvPacketCallback = serialRcvPacketMsgCallback;
+ DLL_SerialMgr_Register_RcvPacketCB(fnSerialMgrRcvPacketCallback);
+
+ fnSerialMgrRcvErrPacketCallback = serialRcvErrPacketMsgCallback;
+ DLL_SerialMgr_Register_RcvErrPacketCB(fnSerialMgrRcvErrPacketCallback);
+
+ // test
+ //DLL_SerialMgr_HelloWorld();
+
+ // get the lib version
+ DLL_SerialMgr_Getversion();
+
+ // activate the dll thread
+ DLL_SerialMgr_Activation();
+
+ }
+
+ #region DLL_CALLBACK
+ private static void serialVersionCallback(StringBuilder versionInfo)
+ {
+ try
+ {
+ //Console.Write("\n-------------------------------\n");
+ //Console.Write("lib version = " + versionInfo + "\n");
+ //Console.Write("-------------------------------\n");
+ }
+ catch (Exception e)
+ {
+ throw (e);
+ }
+ }
+
+ private static void serialPortConnectCallback(StringBuilder commPort, int status, int errDetail)
+ {
+ try
+ {
+ //Console.Write(commPort + ": status = " + status.ToString() +" , detail = " + errDetail.ToString() + "\n");
+ }
+ catch (Exception e)
+ {
+ throw (e);
+ }
+ }
+
+ private static void serialDebugCallback(int type, StringBuilder pMessage)
+ {
+ try
+ {
+ //Console.Write(pMessage);
+ }
+ catch (Exception e)
+ {
+ throw (e);
+ }
+ }
+
+ // https://stackoverflow.com/questions/22938756/how-to-marshal-c-array-to-c-sharp-via-intptr
+ public static void serialRcvPacketMsgCallback(StringBuilder commPort, IntPtr pData, int length)
+ {
+ try
+ {
+ if (commPort.Length == 0)
+ return;
+
+ if ( (pData == IntPtr.Zero) || (length == 0) )
+ return;
+
+ byte[] data = new byte[length];
+ Marshal.Copy(pData, data, 0, (int)length);
+
+ string sdata = Encoding.Default.GetString(data, 0, data.Length);
+
+ if (SerialPortMessageReceive != null)
+ SerialPortMessageReceive(sdata);
+
+#if TEST_CB
+ String commPortStr = commPort.ToString();
+
+ serialPortMessageByte(commPortStr, data, length);
+#endif
+
+ //if(commPort.ToString() != "COM2:")
+ // Console.Write("comm port : " + commPort + ", length = " + length.ToString() + "\n");
+#if TEST_DEBUG
+ // https://stackoverflow.com/questions/1342922/console-writeline-as-hexadecimal
+ int index = 0;
+ foreach (byte temp in data)
+ {
+ Console.Write(temp.ToString("X2") + " ");
+ index++;
+
+ if (index % 16 == 0) Console.Write("\n");
+ }
+
+ Console.Write("\n");
+#endif
+
+ //data = null;
+
+ //GC.Collect();
+ //GC.WaitForPendingFinalizers();
+ }
+ catch (Exception e)
+ {
+ throw (e);
+ }
+ }
+
+ public static void serialRcvErrPacketMsgCallback(StringBuilder commPort, IntPtr pData, int length)
+ {
+ try
+ {
+ if (commPort.Length == 0)
+ return;
+
+ if ((pData == IntPtr.Zero) || (length == 0))
+ return;
+
+ byte[] data = new byte[length];
+ Marshal.Copy(pData, data, 0, (int)length);
+
+ string sdata = Encoding.Default.GetString(data, 0, data.Length);
+
+ if (SerialPortErrMessageReceive != null)
+ SerialPortErrMessageReceive(sdata);
+
+ //String commPortStr = commPort.ToString();
+ //serialPortMessageByte(commPortStr, data, length);
+
+ //if(commPort.ToString() != "COM2:")
+ // Console.Write("Err : comm port : " + commPort + ", length = " + length.ToString() + "\n");
+
+#if (TEST_DEBUG1)
+ // https://stackoverflow.com/questions/1342922/console-writeline-as-hexadecimal
+ int index = 0;
+ foreach (byte temp in data)
+ {
+ Console.Write(temp.ToString("X2") + " ");
+ index++;
+
+ if (index == 5) break;
+
+ if (index % 16 == 0) Console.Write("\n");
+ }
+
+ Console.Write("\n");
+#endif
+
+ // https://dhshin94.tistory.com/135
+ //data = null;
+
+ //GC.Collect();
+ //GC.WaitForPendingFinalizers();
+
+ }
+ catch (Exception e)
+ {
+ throw (e);
+ }
+ }
+
+ #endregion // DLL_CALLBACK
+
+ #region DLL_COMMAND
+
+ public static void serialPortOpen(String commPort, int BaudRate, int stopBit, int parity, int dataBit)
+ {
+ IntPtr pCommPort = Marshal.StringToBSTR(commPort.ToString());
+
+ DLL_SerialMgr_PortOpen(pCommPort, BaudRate, stopBit, parity, dataBit);
+ }
+
+ public static void serialPortClose(String commPort)
+ {
+ IntPtr pCommPort = Marshal.StringToBSTR(commPort.ToString());
+
+ DLL_SerialMgr_PortClose(pCommPort);
+ }
+
+
+ public static void serialPortMessageByte(String commport, byte[] data, int length)
+ {
+ IntPtr pCommPort = Marshal.StringToBSTR(commport.ToString());
+
+ IntPtr ptr = Marshal.AllocHGlobal(length);
+ Marshal.Copy(data, 0, ptr, length);
+
+ DLL_SerialMgr_PortSendMsg(pCommPort, ptr, length);
+
+ //string sdata = Encoding.Default.GetString(data, 0, data.Length);
+
+ Marshal.FreeHGlobal(ptr);
+
+ // if (SerialPortMessageReceive != null)
+ // SerialPortMessageReceive(sdata);
+ }
+
+
+ //https://stackoverflow.com/questions/13418795/convert-byte-array-to-structure-in-the-compact-framework
+ public static void serialPortMessage(String commPort, String Message)
+ {
+ IntPtr pCommPort = Marshal.StringToBSTR(commPort.ToString());
+
+ StringBuilder sb = new StringBuilder();
+ sb.Append((char)0x02);
+ sb.Append(Message);
+ sb.Append((char)0x03);
+
+ Message = sb.ToString();
+
+ byte[] buffer = Encoding.ASCII.GetBytes(Message);
+ int count = Encoding.ASCII.GetByteCount(Message);
+ //byte[] buffer = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ //int count = 10;
+
+ IntPtr ptr = Marshal.AllocHGlobal(count);
+ Marshal.Copy(buffer, 0, ptr, count);
+
+ DLL_SerialMgr_PortSendMsg(pCommPort, ptr, count);
+
+ Marshal.FreeHGlobal(ptr);
+ }
+
+ public static void serialPortMessageRaw(String commPort, String Message)
+ {
+ IntPtr pCommPort = Marshal.StringToBSTR(commPort.ToString());
+
+ byte[] buffer = Encoding.ASCII.GetBytes(Message);
+ int count = Encoding.ASCII.GetByteCount(Message);
+ //byte[] buffer = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+ //int count = 10;
+
+ IntPtr ptr = Marshal.AllocHGlobal(count);
+ Marshal.Copy(buffer, 0, ptr, count);
+
+ DLL_SerialMgr_PortSendMsg(pCommPort, ptr, count);
+
+ Marshal.FreeHGlobal(ptr);
+ }
+ #endregion
+
+ }
+}
diff --git a/ITC81DB/Version.txt b/ITC81DB/Version.txt
index 7d71a86..89d2562 100644
Binary files a/ITC81DB/Version.txt and b/ITC81DB/Version.txt differ
diff --git a/ITC81DB/bin/Release/DllSerialMgr.dll b/ITC81DB/bin/Release/DllSerialMgr.dll
new file mode 100644
index 0000000..9d5cc08
Binary files /dev/null and b/ITC81DB/bin/Release/DllSerialMgr.dll differ
diff --git a/ITC81DB/bin/Release/ITC81DB.exe b/ITC81DB/bin/Release/ITC81DB.exe
index 3464a42..a6081a3 100644
Binary files a/ITC81DB/bin/Release/ITC81DB.exe and b/ITC81DB/bin/Release/ITC81DB.exe differ
diff --git a/ITC81DB/bin/Release/ITC81DB.pdb b/ITC81DB/bin/Release/ITC81DB.pdb
index ba47fef..0d4515a 100644
Binary files a/ITC81DB/bin/Release/ITC81DB.pdb and b/ITC81DB/bin/Release/ITC81DB.pdb differ
diff --git a/ITC81DB/obj/Release/ITC81DB.Controls.ControlCenterBasicDataStatistics.resources b/ITC81DB/obj/Release/ITC81DB.Controls.ControlCenterBasicDataStatistics.resources
index 4722307..2edf671 100644
Binary files a/ITC81DB/obj/Release/ITC81DB.Controls.ControlCenterBasicDataStatistics.resources and b/ITC81DB/obj/Release/ITC81DB.Controls.ControlCenterBasicDataStatistics.resources differ
diff --git a/ITC81DB/obj/Release/ITC81DB.Controls.ControlConfiOptionBoard2.resources b/ITC81DB/obj/Release/ITC81DB.Controls.ControlConfiOptionBoard2.resources
index 4a4a9d2..d53e833 100644
Binary files a/ITC81DB/obj/Release/ITC81DB.Controls.ControlConfiOptionBoard2.resources and b/ITC81DB/obj/Release/ITC81DB.Controls.ControlConfiOptionBoard2.resources differ
diff --git a/ITC81DB/obj/Release/ITC81DB.csproj.FileListAbsolute.txt b/ITC81DB/obj/Release/ITC81DB.csproj.FileListAbsolute.txt
index 886fdae..9c26dc9 100644
--- a/ITC81DB/obj/Release/ITC81DB.csproj.FileListAbsolute.txt
+++ b/ITC81DB/obj/Release/ITC81DB.csproj.FileListAbsolute.txt
@@ -3222,3 +3222,270 @@ D:\Laboratory\ITC81DB_V8\ITC81DB\obj\Release\ITC81DB.Properties.Resources.resour
D:\Laboratory\ITC81DB_V8\ITC81DB\obj\Release\ITC81DB.csproj.GenerateResource.Cache
D:\Laboratory\ITC81DB_V8\ITC81DB\obj\Release\ITC81DB.exe
D:\Laboratory\ITC81DB_V8\ITC81DB\obj\Release\ITC81DB.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\bin\Release\ITC81DB.exe
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\bin\Release\ITC81DB.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\bin\Release\InModbus.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\bin\Release\ITC81DB_ImageDll.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\bin\Release\SmartX_IEC1000.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\bin\Release\SmartXCommon.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\bin\Release\ITC81DB_ImageDll.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ResolveAssemblyReference.cache
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipSystemLog.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipEngineer.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlCenterInforSystem3.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomConfiguration.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomEquipment.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomInformation.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomSystem.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicTime.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicProduct.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicDataBackup.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicDataStatistics.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomBasic.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlCenterConfiCountingOutput.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiEthernet.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiOptionBoard.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiSerial.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipFunctionSetting.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipInitialize.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipTest.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipUpdate.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipUser.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipUserGroupEditor.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterInforAS.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterInforHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterInforSystem.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlCenterInforSystem2.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemCalibration.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemAutoZero.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemExternalOutput.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemIOTest.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentAuto.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentManual.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentSelect.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentSetting2.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentUpdown.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemSorterSetting.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemExternalInput.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlBasicRandomMode.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlConfiEthernetLocalIP.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlConfiSerialBarcode.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlConfiHitachi.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlConfiMarkoPrint.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlConfiSerialUserDefine.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlConfiOptionBoard1.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlConfiOptionBoard2.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlConversionItem.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlUserGroupEditor.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlConfiModbus.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlConfiMULTiJET.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainAlarm.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainAverageTracking.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlMainFeedback.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainDataStatistics.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainSubMenu.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainBarGraph.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainList.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainLineGraph.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.ControlMainWeightBigScreen.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainWeightSmallScreen.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainSpotCheck.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainListForRFID.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainModbus.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Controls.ControlBasicProductLotSetting.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormLogOn.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormPasswordKeyPad1.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormMessage.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormNumKeyPad.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormPasswordKeyPad.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormProductList.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormYesNo.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Forms.FormMain.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Forms.FormMainDisplay.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Forms.FormMenu.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.Properties.Resources.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.csproj.GenerateResource.Cache
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.exe
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB\obj\Release\ITC81DB.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\bin\Release\ITC81DB.exe
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\bin\Release\ITC81DB.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\bin\Release\InModbus.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\bin\Release\ITC81DB_ImageDll.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\bin\Release\SmartX_IEC1000.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\bin\Release\SmartXCommon.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\bin\Release\ITC81DB_ImageDll.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ResolveAssemblyReference.cache
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipSystemLog.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipEngineer.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlCenterInforSystem3.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomConfiguration.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomEquipment.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomInformation.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomSystem.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicTime.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicProduct.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicDataBackup.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicDataStatistics.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomBasic.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlCenterConfiCountingOutput.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiEthernet.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiOptionBoard.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiSerial.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipFunctionSetting.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipInitialize.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipTest.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipUpdate.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipUser.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipUserGroupEditor.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterInforAS.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterInforHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterInforSystem.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlCenterInforSystem2.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemCalibration.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemAutoZero.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemExternalOutput.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemIOTest.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentAuto.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentManual.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentSelect.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentSetting2.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentUpdown.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemSorterSetting.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemExternalInput.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBasicRandomMode.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlConfiEthernetLocalIP.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlConfiSerialBarcode.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlConfiHitachi.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlConfiMarkoPrint.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlConfiSerialUserDefine.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlConfiOptionBoard1.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlConfiOptionBoard2.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlConversionItem.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlUserGroupEditor.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlConfiModbus.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlConfiMULTiJET.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainAlarm.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainAverageTracking.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlMainFeedback.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainDataStatistics.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainSubMenu.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainBarGraph.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainList.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainLineGraph.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.ControlMainWeightBigScreen.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainWeightSmallScreen.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainSpotCheck.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainListForRFID.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainModbus.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBasicProductLotSetting.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormLogOn.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormPasswordKeyPad1.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormMessage.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormNumKeyPad.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormPasswordKeyPad.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormProductList.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormYesNo.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Forms.FormMain.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Forms.FormMainDisplay.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Forms.FormMenu.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.Properties.Resources.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.csproj.GenerateResource.Cache
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.exe
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB\obj\Release\ITC81DB.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\bin\Release\ITC81DB.exe
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\bin\Release\ITC81DB.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\bin\Release\InModbus.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\bin\Release\ITC81DB_ImageDll.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\bin\Release\SmartX_IEC1000.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\bin\Release\SmartXCommon.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\bin\Release\ITC81DB_ImageDll.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ResolveAssemblyReference.cache
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipSystemLog.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipEngineer.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlCenterInforSystem3.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomConfiguration.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomEquipment.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomInformation.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomSystem.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicTime.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicProduct.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicDataBackup.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterBasicDataStatistics.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBottomBasic.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlCenterConfiCountingOutput.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiEthernet.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiOptionBoard.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterConfiSerial.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipFunctionSetting.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipInitialize.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipTest.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipUpdate.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipUser.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterEquipUserGroupEditor.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterInforAS.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterInforHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterInforSystem.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlCenterInforSystem2.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemCalibration.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemAutoZero.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemExternalOutput.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemHelp.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemIOTest.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentAuto.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentManual.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentSelect.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentSetting2.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemJudgmentUpdown.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemSorterSetting.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlCenterSystemExternalInput.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBasicRandomMode.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlConfiEthernetLocalIP.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlConfiSerialBarcode.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlConfiHitachi.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlConfiMarkoPrint.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlConfiSerialUserDefine.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlConfiOptionBoard1.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlConfiOptionBoard2.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlConversionItem.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlUserGroupEditor.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlConfiModbus.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlConfiMULTiJET.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainAlarm.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainAverageTracking.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlMainFeedback.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainDataStatistics.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainSubMenu.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainBarGraph.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainList.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainLineGraph.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.ControlMainWeightBigScreen.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainWeightSmallScreen.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainSpotCheck.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainListForRFID.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlMainModbus.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Controls.ControlBasicProductLotSetting.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormLogOn.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormPasswordKeyPad1.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormMessage.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormNumKeyPad.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormPasswordKeyPad.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormProductList.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.DialogForms.DialogFormYesNo.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Forms.FormMain.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Forms.FormMainDisplay.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Forms.FormMenu.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.Properties.Resources.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.csproj.GenerateResource.Cache
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.exe
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB\obj\Release\ITC81DB.pdb
diff --git a/ITC81DB/obj/Release/ITC81DB.csproj.GenerateResource.Cache b/ITC81DB/obj/Release/ITC81DB.csproj.GenerateResource.Cache
index eacb394..f5d696f 100644
Binary files a/ITC81DB/obj/Release/ITC81DB.csproj.GenerateResource.Cache and b/ITC81DB/obj/Release/ITC81DB.csproj.GenerateResource.Cache differ
diff --git a/ITC81DB/obj/Release/ITC81DB.exe b/ITC81DB/obj/Release/ITC81DB.exe
index 3464a42..a6081a3 100644
Binary files a/ITC81DB/obj/Release/ITC81DB.exe and b/ITC81DB/obj/Release/ITC81DB.exe differ
diff --git a/ITC81DB/obj/Release/ITC81DB.pdb b/ITC81DB/obj/Release/ITC81DB.pdb
index ba47fef..0d4515a 100644
Binary files a/ITC81DB/obj/Release/ITC81DB.pdb and b/ITC81DB/obj/Release/ITC81DB.pdb differ
diff --git a/ITC81DB/obj/Release/ResolveAssemblyReference.cache b/ITC81DB/obj/Release/ResolveAssemblyReference.cache
index fff320c..0c00ecd 100644
Binary files a/ITC81DB/obj/Release/ResolveAssemblyReference.cache and b/ITC81DB/obj/Release/ResolveAssemblyReference.cache differ
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/obj/Release/ITC81DB_ImageDll.csproj.FileListAbsolute.txt b/ITC81DB_ImageDll/ITC81DB_ImageDll/obj/Release/ITC81DB_ImageDll.csproj.FileListAbsolute.txt
index 5134ff1..0626a4e 100644
--- a/ITC81DB_ImageDll/ITC81DB_ImageDll/obj/Release/ITC81DB_ImageDll.csproj.FileListAbsolute.txt
+++ b/ITC81DB_ImageDll/ITC81DB_ImageDll/obj/Release/ITC81DB_ImageDll.csproj.FileListAbsolute.txt
@@ -327,3 +327,24 @@ D:\Laboratory\ITC81DB_V8\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_I
D:\Laboratory\ITC81DB_V8\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.csproj.GenerateResource.Cache
D:\Laboratory\ITC81DB_V8\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.dll
D:\Laboratory\ITC81DB_V8\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB_ImageDll\ITC81DB_ImageDll\bin\Release\ITC81DB_ImageDll.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB_ImageDll\ITC81DB_ImageDll\bin\Release\ITC81DB_ImageDll.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ResolveAssemblyReference.cache
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.Resource1.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.csproj.GenerateResource.Cache
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.16.1\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB_ImageDll\ITC81DB_ImageDll\bin\Release\ITC81DB_ImageDll.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB_ImageDll\ITC81DB_ImageDll\bin\Release\ITC81DB_ImageDll.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ResolveAssemblyReference.cache
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.Resource1.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.csproj.GenerateResource.Cache
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.17.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB_ImageDll\ITC81DB_ImageDll\bin\Release\ITC81DB_ImageDll.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB_ImageDll\ITC81DB_ImageDll\bin\Release\ITC81DB_ImageDll.pdb
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ResolveAssemblyReference.cache
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.Resource1.resources
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.csproj.GenerateResource.Cache
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.dll
+C:\Users\CJY\Desktop\ITC81DB_V8.18.0\ITC81DB_ImageDll\ITC81DB_ImageDll\obj\Release\ITC81DB_ImageDll.pdb
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/obj/Release/Refactor/ITC81DB_ImageDll.dll b/ITC81DB_ImageDll/ITC81DB_ImageDll/obj/Release/Refactor/ITC81DB_ImageDll.dll
index 6d9dd3d..d0ac199 100644
Binary files a/ITC81DB_ImageDll/ITC81DB_ImageDll/obj/Release/Refactor/ITC81DB_ImageDll.dll and b/ITC81DB_ImageDll/ITC81DB_ImageDll/obj/Release/Refactor/ITC81DB_ImageDll.dll differ