diff --git a/INT69DB_2A/Controls/ControlCalibration10.cs b/INT69DB_2A/Controls/ControlCalibration10.cs index 9b42be4..711e3db 100644 --- a/INT69DB_2A/Controls/ControlCalibration10.cs +++ b/INT69DB_2A/Controls/ControlCalibration10.cs @@ -19,16 +19,14 @@ namespace INT69DB_2A.Controls #region Field private FormCalibration m_ParentForm; - // 중량 조정이 완료 되었는지 확인하는 Flag - private bool IsCalibrationFinish; - private Color NormalColor = Color.Black; private Color FinishColor = Color.Blue; - private Collection CollectionButtonLine; - private Collection CollectionLabelWeight; - private Collection CollectionLabelADC; - private Collection CollectionLabelConstant; + private Collection CollButtonLane; + private Collection CollLabelWeight; + private Collection CollLabelADC; + private Collection CollLabelConstant; + private Collection CollCalStatus; #endregion #region Constructor @@ -56,67 +54,72 @@ namespace INT69DB_2A.Controls #region Method private void CreateCollection() { - this.CollectionButtonLine = new Collection(); - this.CollectionLabelWeight = new Collection(); - this.CollectionLabelADC = new Collection(); - this.CollectionLabelConstant = new Collection(); + this.CollButtonLane = new Collection(); + this.CollLabelWeight = new Collection(); + this.CollLabelADC = new Collection(); + this.CollLabelConstant = new Collection(); + this.CollCalStatus = new Collection(); - this.CollectionButtonLine.Clear(); - this.CollectionLabelWeight.Clear(); - this.CollectionLabelADC.Clear(); - this.CollectionLabelConstant.Clear(); + this.CollButtonLane.Clear(); + this.CollLabelWeight.Clear(); + this.CollLabelADC.Clear(); + this.CollLabelConstant.Clear(); + this.CollCalStatus.Clear(); - this.CollectionButtonLine.Add(this.buttonLine1); - this.CollectionButtonLine.Add(this.buttonLine2); - this.CollectionButtonLine.Add(this.buttonLine3); - this.CollectionButtonLine.Add(this.buttonLine4); - this.CollectionButtonLine.Add(this.buttonLine5); - this.CollectionButtonLine.Add(this.buttonLine6); - this.CollectionButtonLine.Add(this.buttonLine7); - this.CollectionButtonLine.Add(this.buttonLine8); - this.CollectionButtonLine.Add(this.buttonLine9); - this.CollectionButtonLine.Add(this.buttonLine10); + this.CollButtonLane.Add(this.buttonLine1); + this.CollButtonLane.Add(this.buttonLine2); + this.CollButtonLane.Add(this.buttonLine3); + this.CollButtonLane.Add(this.buttonLine4); + this.CollButtonLane.Add(this.buttonLine5); + this.CollButtonLane.Add(this.buttonLine6); + this.CollButtonLane.Add(this.buttonLine7); + this.CollButtonLane.Add(this.buttonLine8); + this.CollButtonLane.Add(this.buttonLine9); + this.CollButtonLane.Add(this.buttonLine10); - this.CollectionLabelWeight.Add(this.labelWeight1); - this.CollectionLabelWeight.Add(this.labelWeight2); - this.CollectionLabelWeight.Add(this.labelWeight3); - this.CollectionLabelWeight.Add(this.labelWeight4); - this.CollectionLabelWeight.Add(this.labelWeight5); - this.CollectionLabelWeight.Add(this.labelWeight6); - this.CollectionLabelWeight.Add(this.labelWeight7); - this.CollectionLabelWeight.Add(this.labelWeight8); - this.CollectionLabelWeight.Add(this.labelWeight9); - this.CollectionLabelWeight.Add(this.labelWeight10); + this.CollLabelWeight.Add(this.labelWeight1); + this.CollLabelWeight.Add(this.labelWeight2); + this.CollLabelWeight.Add(this.labelWeight3); + this.CollLabelWeight.Add(this.labelWeight4); + this.CollLabelWeight.Add(this.labelWeight5); + this.CollLabelWeight.Add(this.labelWeight6); + this.CollLabelWeight.Add(this.labelWeight7); + this.CollLabelWeight.Add(this.labelWeight8); + this.CollLabelWeight.Add(this.labelWeight9); + this.CollLabelWeight.Add(this.labelWeight10); - this.CollectionLabelADC.Add(this.labelADC1); - this.CollectionLabelADC.Add(this.labelADC2); - this.CollectionLabelADC.Add(this.labelADC3); - this.CollectionLabelADC.Add(this.labelADC4); - this.CollectionLabelADC.Add(this.labelADC5); - this.CollectionLabelADC.Add(this.labelADC6); - this.CollectionLabelADC.Add(this.labelADC7); - this.CollectionLabelADC.Add(this.labelADC8); - this.CollectionLabelADC.Add(this.labelADC9); - this.CollectionLabelADC.Add(this.labelADC10); + this.CollLabelADC.Add(this.labelADC1); + this.CollLabelADC.Add(this.labelADC2); + this.CollLabelADC.Add(this.labelADC3); + this.CollLabelADC.Add(this.labelADC4); + this.CollLabelADC.Add(this.labelADC5); + this.CollLabelADC.Add(this.labelADC6); + this.CollLabelADC.Add(this.labelADC7); + this.CollLabelADC.Add(this.labelADC8); + this.CollLabelADC.Add(this.labelADC9); + this.CollLabelADC.Add(this.labelADC10); - this.CollectionLabelConstant.Add(this.labelConstant1); - this.CollectionLabelConstant.Add(this.labelConstant2); - this.CollectionLabelConstant.Add(this.labelConstant3); - this.CollectionLabelConstant.Add(this.labelConstant4); - this.CollectionLabelConstant.Add(this.labelConstant5); - this.CollectionLabelConstant.Add(this.labelConstant6); - this.CollectionLabelConstant.Add(this.labelConstant7); - this.CollectionLabelConstant.Add(this.labelConstant8); - this.CollectionLabelConstant.Add(this.labelConstant9); - this.CollectionLabelConstant.Add(this.labelConstant10); + this.CollLabelConstant.Add(this.labelConstant1); + this.CollLabelConstant.Add(this.labelConstant2); + this.CollLabelConstant.Add(this.labelConstant3); + this.CollLabelConstant.Add(this.labelConstant4); + this.CollLabelConstant.Add(this.labelConstant5); + this.CollLabelConstant.Add(this.labelConstant6); + this.CollLabelConstant.Add(this.labelConstant7); + this.CollLabelConstant.Add(this.labelConstant8); + this.CollLabelConstant.Add(this.labelConstant9); + this.CollLabelConstant.Add(this.labelConstant10); + + for (int i = 0; i < 10; i++) + this.CollCalStatus.Add(new CalibrationStatus()); } private void InitilizeControls() { for (int i = 0; i < this.ParentForm.ParentForm.SystemConfig.EquipmentColumns; i++) { - this.CollectionLabelWeight[i].Text = "0.0"; - this.CollectionLabelADC[i].Text = "0.0"; - this.CollectionLabelConstant[i].Text = "0.0"; + this.CollLabelWeight[i].Text = "0.0"; + this.CollLabelADC[i].Text = "0.0"; + this.CollLabelConstant[i].Text = "0.0"; } } private void InitializeDesign() @@ -147,12 +150,13 @@ namespace INT69DB_2A.Controls public void DisplayRefresh() { - if (this.CollectionButtonLine == null || this.CollectionButtonLine.Count == 0) + if (this.CollButtonLane == null || this.CollButtonLane.Count == 0) return; - for (int i = 0; i < this.CollectionButtonLine.Count; i++) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - this.CollectionButtonLine[i].ButtonUp(); + this.CollButtonLane[i].ButtonUp(); + this.CollCalStatus[i].Initialize(); } } @@ -183,7 +187,7 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + foreach (SmartButton bt in this.CollButtonLane) { if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationBalance, bt.Tag.ToString()); @@ -193,6 +197,8 @@ namespace INT69DB_2A.Controls } public void CalibrationStart() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 시작합니다."); @@ -218,18 +224,30 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = false; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + this.CollCalStatus[i].Initialize(); + detail = string.Format("{0} Lane Start", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + + this.CollButtonLane[i].Enabled = false; } this.ParentForm.CalibrationButtonEnable(false, false, false); } public void CalibrationCancel() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 취소합니다"); @@ -251,12 +269,25 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = true; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[i].IsCancel == false) + { + this.CollCalStatus[i].IsCancel = true; + detail = string.Format("{0} Lane Cancel", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + } + + this.CollButtonLane[i].Enabled = true; } this.ParentForm.CalibrationButtonEnable(true, false, false); @@ -308,23 +339,25 @@ namespace INT69DB_2A.Controls } public void UpdateWeightDisplay(DataStore.EquipmentStatus status, Collection weights) { - if (this.CollectionLabelWeight == null || weights.Count < this.CollectionLabelWeight.Count || status == DataStore.EquipmentStatus.Start) + if (this.CollLabelWeight == null || weights.Count < this.CollLabelWeight.Count || status == DataStore.EquipmentStatus.Start) return; for (int i = 0; i < weights.Count; i++) { - if (this.CollectionButtonLine[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], true); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], true); } else { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], false); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], false); } } } - private void UpdateLabelWeight(int laneIndex, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) + private void UpdateLabelWeight(int index, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) { + string detail = ""; + switch (weightData.Status) { case DataStore.WeightStatus.CalNomal: @@ -333,7 +366,6 @@ namespace INT69DB_2A.Controls labelADC.Text = weightData.ADCValue; break; case DataStore.WeightStatus.CalStandby: - this.IsCalibrationFinish = false; if (rbChecked == true) { // 분동중량 표시 @@ -401,17 +433,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsFinish == false) + { + this.CollCalStatus[index].IsFinish = true; + detail = string.Format("{0} Lane Success", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.FinishColor; labelADC.Text = weightData.ADCValue; - if (this.IsCalibrationFinish == false) - { - this.IsCalibrationFinish = true; - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Success"); - } break; case DataStore.WeightStatus.CalError: if (rbChecked == true) @@ -441,14 +479,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsError == false) + { + this.CollCalStatus[index].IsError = true; + detail = string.Format("{0} Lane Error", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.NormalColor; labelADC.Text = weightData.ADCValue; - - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Fail"); break; default: break; @@ -474,7 +521,7 @@ namespace INT69DB_2A.Controls else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { this.ParentForm.listBoxHelp.Items.Add("Calibration"); - this.ParentForm.listBoxHelp.Items.Add("After selecting line, "); + this.ParentForm.listBoxHelp.Items.Add("After selecting lane, "); this.ParentForm.listBoxHelp.Items.Add("push the [Start] button."); } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) diff --git a/INT69DB_2A/Controls/ControlCalibration2.cs b/INT69DB_2A/Controls/ControlCalibration2.cs index 545b815..bbf27e9 100644 --- a/INT69DB_2A/Controls/ControlCalibration2.cs +++ b/INT69DB_2A/Controls/ControlCalibration2.cs @@ -19,16 +19,14 @@ namespace INT69DB_2A.Controls #region Field private FormCalibration m_ParentForm; - // 중량 조정이 완료 되었는지 확인하는 Flag - private bool IsCalibrationFinish; - private Color NormalColor = Color.Black; private Color FinishColor = Color.Blue; - private Collection CollectionButtonLine; - private Collection CollectionLabelWeight; - private Collection CollectionLabelADC; - private Collection CollectionLabelConstant; + private Collection CollButtonLane; + private Collection CollLabelWeight; + private Collection CollLabelADC; + private Collection CollLabelConstant; + private Collection CollCalStatus; #endregion #region Constructor @@ -56,35 +54,40 @@ namespace INT69DB_2A.Controls #region Method private void CreateCollection() { - this.CollectionButtonLine = new Collection(); - this.CollectionLabelWeight = new Collection(); - this.CollectionLabelADC = new Collection(); - this.CollectionLabelConstant = new Collection(); + this.CollButtonLane = new Collection(); + this.CollLabelWeight = new Collection(); + this.CollLabelADC = new Collection(); + this.CollLabelConstant = new Collection(); + this.CollCalStatus = new Collection(); - this.CollectionButtonLine.Clear(); - this.CollectionLabelWeight.Clear(); - this.CollectionLabelADC.Clear(); - this.CollectionLabelConstant.Clear(); + this.CollButtonLane.Clear(); + this.CollLabelWeight.Clear(); + this.CollLabelADC.Clear(); + this.CollLabelConstant.Clear(); + this.CollCalStatus.Clear(); - this.CollectionButtonLine.Add(this.buttonLine1); - this.CollectionButtonLine.Add(this.buttonLine2); + this.CollButtonLane.Add(this.buttonLine1); + this.CollButtonLane.Add(this.buttonLine2); - this.CollectionLabelWeight.Add(this.labelWeight1); - this.CollectionLabelWeight.Add(this.labelWeight2); + this.CollLabelWeight.Add(this.labelWeight1); + this.CollLabelWeight.Add(this.labelWeight2); - this.CollectionLabelADC.Add(this.labelADC1); - this.CollectionLabelADC.Add(this.labelADC2); + this.CollLabelADC.Add(this.labelADC1); + this.CollLabelADC.Add(this.labelADC2); - this.CollectionLabelConstant.Add(this.labelConstant1); - this.CollectionLabelConstant.Add(this.labelConstant2); + this.CollLabelConstant.Add(this.labelConstant1); + this.CollLabelConstant.Add(this.labelConstant2); + + for (int i = 0; i < 2; i++) + this.CollCalStatus.Add(new CalibrationStatus()); } private void InitilizeControls() { for (int i = 0; i < this.ParentForm.ParentForm.SystemConfig.EquipmentColumns; i++) { - this.CollectionLabelWeight[i].Text = "0.0"; - this.CollectionLabelADC[i].Text = "0.0"; - this.CollectionLabelConstant[i].Text = "0.0"; + this.CollLabelWeight[i].Text = "0.0"; + this.CollLabelADC[i].Text = "0.0"; + this.CollLabelConstant[i].Text = "0.0"; } } private void InitializeDesign() @@ -119,12 +122,13 @@ namespace INT69DB_2A.Controls public void DisplayRefresh() { - if (this.CollectionButtonLine == null || this.CollectionButtonLine.Count == 0) + if (this.CollButtonLane == null || this.CollButtonLane.Count == 0) return; - for (int i = 0; i < this.CollectionButtonLine.Count; i++) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - this.CollectionButtonLine[i].ButtonUp(); + this.CollButtonLane[i].ButtonUp(); + this.CollCalStatus[i].Initialize(); } } @@ -155,7 +159,7 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + foreach (SmartButton bt in this.CollButtonLane) { if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationBalance, bt.Tag.ToString()); @@ -165,6 +169,8 @@ namespace INT69DB_2A.Controls } public void CalibrationStart() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 시작합니다."); @@ -190,18 +196,30 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = false; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + this.CollCalStatus[i].Initialize(); + detail = string.Format("{0} Lane Start", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + + this.CollButtonLane[i].Enabled = false; } this.ParentForm.CalibrationButtonEnable(false, false, false); } public void CalibrationCancel() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 취소합니다"); @@ -222,12 +240,26 @@ namespace INT69DB_2A.Controls { } - foreach (SmartButton bt in this.CollectionButtonLine) - { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, bt.Tag.ToString()); - bt.Enabled = true; + for (int i = 0; i < this.CollButtonLane.Count; i++) + { + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, this.CollButtonLane[i].Tag.ToString()); + + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[i].IsCancel == false) + { + this.CollCalStatus[i].IsCancel = true; + detail = string.Format("{0} Lane Cancel", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + } + + this.CollButtonLane[i].Enabled = true; } this.ParentForm.CalibrationButtonEnable(true, false, false); @@ -247,23 +279,25 @@ namespace INT69DB_2A.Controls } public void UpdateWeightDisplay(DataStore.EquipmentStatus status, Collection weights) { - if (this.CollectionLabelWeight == null || weights.Count < this.CollectionLabelWeight.Count || status == DataStore.EquipmentStatus.Start) + if (this.CollLabelWeight == null || weights.Count < this.CollLabelWeight.Count || status == DataStore.EquipmentStatus.Start) return; for (int i = 0; i < weights.Count; i++) { - if (this.CollectionButtonLine[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], true); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], true); } else { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], false); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], false); } } } - private void UpdateLabelWeight(int laneIndex, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) + private void UpdateLabelWeight(int index, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) { + string detail = ""; + switch (weightData.Status) { case DataStore.WeightStatus.CalNomal: @@ -272,7 +306,6 @@ namespace INT69DB_2A.Controls labelADC.Text = weightData.ADCValue; break; case DataStore.WeightStatus.CalStandby: - this.IsCalibrationFinish = false; if (rbChecked == true) { // 분동중량 표시 @@ -340,17 +373,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsFinish == false) + { + this.CollCalStatus[index].IsFinish = true; + detail = string.Format("{0} Lane Success", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.FinishColor; labelADC.Text = weightData.ADCValue; - if (this.IsCalibrationFinish == false) - { - this.IsCalibrationFinish = true; - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() +" Calibration Success"); - } break; case DataStore.WeightStatus.CalError: if (rbChecked == true) @@ -380,14 +419,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsError == false) + { + this.CollCalStatus[index].IsError = true; + detail = string.Format("{0} Lane Error", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.NormalColor; labelADC.Text = weightData.ADCValue; - - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Fail"); break; default: break; @@ -413,7 +461,7 @@ namespace INT69DB_2A.Controls else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { this.ParentForm.listBoxHelp.Items.Add("Calibration"); - this.ParentForm.listBoxHelp.Items.Add("After selecting line, "); + this.ParentForm.listBoxHelp.Items.Add("After selecting lane, "); this.ParentForm.listBoxHelp.Items.Add("push the [Start] button."); } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) diff --git a/INT69DB_2A/Controls/ControlCalibration3.cs b/INT69DB_2A/Controls/ControlCalibration3.cs index 1179789..8661721 100644 --- a/INT69DB_2A/Controls/ControlCalibration3.cs +++ b/INT69DB_2A/Controls/ControlCalibration3.cs @@ -19,16 +19,14 @@ namespace INT69DB_2A.Controls #region Field private FormCalibration m_ParentForm; - // 중량 조정이 완료 되었는지 확인하는 Flag - private bool IsCalibrationFinish; - private Color NormalColor = Color.Black; private Color FinishColor = Color.Blue; - private Collection CollectionButtonLine; - private Collection CollectionLabelWeight; - private Collection CollectionLabelADC; - private Collection CollectionLabelConstant; + private Collection CollButtonLane; + private Collection CollLabelWeight; + private Collection CollLabelADC; + private Collection CollLabelConstant; + private Collection CollCalStatus; #endregion #region Constructor @@ -56,39 +54,44 @@ namespace INT69DB_2A.Controls #region Method private void CreateCollection() { - this.CollectionButtonLine = new Collection(); - this.CollectionLabelWeight = new Collection(); - this.CollectionLabelADC = new Collection(); - this.CollectionLabelConstant = new Collection(); + this.CollButtonLane = new Collection(); + this.CollLabelWeight = new Collection(); + this.CollLabelADC = new Collection(); + this.CollLabelConstant = new Collection(); + this.CollCalStatus = new Collection(); - this.CollectionButtonLine.Clear(); - this.CollectionLabelWeight.Clear(); - this.CollectionLabelADC.Clear(); - this.CollectionLabelConstant.Clear(); + this.CollButtonLane.Clear(); + this.CollLabelWeight.Clear(); + this.CollLabelADC.Clear(); + this.CollLabelConstant.Clear(); + this.CollCalStatus.Clear(); - this.CollectionButtonLine.Add(this.buttonLine1); - this.CollectionButtonLine.Add(this.buttonLine2); - this.CollectionButtonLine.Add(this.buttonLine3); + this.CollButtonLane.Add(this.buttonLine1); + this.CollButtonLane.Add(this.buttonLine2); + this.CollButtonLane.Add(this.buttonLine3); - this.CollectionLabelWeight.Add(this.labelWeight1); - this.CollectionLabelWeight.Add(this.labelWeight2); - this.CollectionLabelWeight.Add(this.labelWeight3); + this.CollLabelWeight.Add(this.labelWeight1); + this.CollLabelWeight.Add(this.labelWeight2); + this.CollLabelWeight.Add(this.labelWeight3); - this.CollectionLabelADC.Add(this.labelADC1); - this.CollectionLabelADC.Add(this.labelADC2); - this.CollectionLabelADC.Add(this.labelADC3); + this.CollLabelADC.Add(this.labelADC1); + this.CollLabelADC.Add(this.labelADC2); + this.CollLabelADC.Add(this.labelADC3); - this.CollectionLabelConstant.Add(this.labelConstant1); - this.CollectionLabelConstant.Add(this.labelConstant2); - this.CollectionLabelConstant.Add(this.labelConstant3); + this.CollLabelConstant.Add(this.labelConstant1); + this.CollLabelConstant.Add(this.labelConstant2); + this.CollLabelConstant.Add(this.labelConstant3); + + for (int i = 0; i < 3; i++) + this.CollCalStatus.Add(new CalibrationStatus()); } private void InitilizeControls() { for (int i = 0; i < this.ParentForm.ParentForm.SystemConfig.EquipmentColumns; i++) { - this.CollectionLabelWeight[i].Text = "0.0"; - this.CollectionLabelADC[i].Text = "0.0"; - this.CollectionLabelConstant[i].Text = "0.0"; + this.CollLabelWeight[i].Text = "0.0"; + this.CollLabelADC[i].Text = "0.0"; + this.CollLabelConstant[i].Text = "0.0"; } } private void InitializeDesign() @@ -123,12 +126,13 @@ namespace INT69DB_2A.Controls public void DisplayRefresh() { - if (this.CollectionButtonLine == null || this.CollectionButtonLine.Count == 0) + if (this.CollButtonLane == null || this.CollButtonLane.Count == 0) return; - for (int i = 0; i < this.CollectionButtonLine.Count; i++) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - this.CollectionButtonLine[i].ButtonUp(); + this.CollButtonLane[i].ButtonUp(); + this.CollCalStatus[i].Initialize(); } } @@ -159,7 +163,7 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + foreach (SmartButton bt in this.CollButtonLane) { if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationBalance, bt.Tag.ToString()); @@ -169,6 +173,8 @@ namespace INT69DB_2A.Controls } public void CalibrationStart() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 시작합니다."); @@ -194,18 +200,30 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = false; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + this.CollCalStatus[i].Initialize(); + detail = string.Format("{0} Lane Start", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + + this.CollButtonLane[i].Enabled = false; } this.ParentForm.CalibrationButtonEnable(false, false, false); } public void CalibrationCancel() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 취소합니다"); @@ -227,12 +245,25 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = true; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[i].IsCancel == false) + { + this.CollCalStatus[i].IsCancel = true; + detail = string.Format("{0} Lane Cancel", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + } + + this.CollButtonLane[i].Enabled = true; } this.ParentForm.CalibrationButtonEnable(true, false, false); @@ -256,23 +287,25 @@ namespace INT69DB_2A.Controls } public void UpdateWeightDisplay(DataStore.EquipmentStatus status, Collection weights) { - if (this.CollectionLabelWeight == null || weights.Count < this.CollectionLabelWeight.Count || status == DataStore.EquipmentStatus.Start) + if (this.CollLabelWeight == null || weights.Count < this.CollLabelWeight.Count || status == DataStore.EquipmentStatus.Start) return; for (int i = 0; i < weights.Count; i++) { - if (this.CollectionButtonLine[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], true); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], true); } else { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], false); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], false); } } } - private void UpdateLabelWeight(int laneIndex, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) + private void UpdateLabelWeight(int index, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) { + string detail = ""; + switch (weightData.Status) { case DataStore.WeightStatus.CalNomal: @@ -281,7 +314,6 @@ namespace INT69DB_2A.Controls labelADC.Text = weightData.ADCValue; break; case DataStore.WeightStatus.CalStandby: - this.IsCalibrationFinish = false; if (rbChecked == true) { // 분동중량 표시 @@ -349,17 +381,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsFinish == false) + { + this.CollCalStatus[index].IsFinish = true; + detail = string.Format("{0} Lane Success", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.FinishColor; labelADC.Text = weightData.ADCValue; - if (this.IsCalibrationFinish == false) - { - this.IsCalibrationFinish = true; - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Success"); - } break; case DataStore.WeightStatus.CalError: if (rbChecked == true) @@ -389,14 +427,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsError == false) + { + this.CollCalStatus[index].IsError = true; + detail = string.Format("{0} Lane Error", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.NormalColor; labelADC.Text = weightData.ADCValue; - - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Fail"); break; default: break; @@ -422,7 +469,7 @@ namespace INT69DB_2A.Controls else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { this.ParentForm.listBoxHelp.Items.Add("Calibration"); - this.ParentForm.listBoxHelp.Items.Add("After selecting line, "); + this.ParentForm.listBoxHelp.Items.Add("After selecting lane, "); this.ParentForm.listBoxHelp.Items.Add("push the [Start] button."); } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) diff --git a/INT69DB_2A/Controls/ControlCalibration4.cs b/INT69DB_2A/Controls/ControlCalibration4.cs index 320a194..81c6168 100644 --- a/INT69DB_2A/Controls/ControlCalibration4.cs +++ b/INT69DB_2A/Controls/ControlCalibration4.cs @@ -19,16 +19,14 @@ namespace INT69DB_2A.Controls #region Field private FormCalibration m_ParentForm; - // 중량 조정이 완료 되었는지 확인하는 Flag - private bool IsCalibrationFinish; - private Color NormalColor = Color.Black; private Color FinishColor = Color.Blue; - private Collection CollectionButtonLine; - private Collection CollectionLabelWeight; - private Collection CollectionLabelADC; - private Collection CollectionLabelConstant; + private Collection CollButtonLane; + private Collection CollLabelWeight; + private Collection CollLabelADC; + private Collection CollLabelConstant; + private Collection CollCalStatus; #endregion #region Constructor @@ -56,43 +54,48 @@ namespace INT69DB_2A.Controls #region Method private void CreateCollection() { - this.CollectionButtonLine = new Collection(); - this.CollectionLabelWeight = new Collection(); - this.CollectionLabelADC = new Collection(); - this.CollectionLabelConstant = new Collection(); + this.CollButtonLane = new Collection(); + this.CollLabelWeight = new Collection(); + this.CollLabelADC = new Collection(); + this.CollLabelConstant = new Collection(); + this.CollCalStatus = new Collection(); - this.CollectionButtonLine.Clear(); - this.CollectionLabelWeight.Clear(); - this.CollectionLabelADC.Clear(); - this.CollectionLabelConstant.Clear(); + this.CollButtonLane.Clear(); + this.CollLabelWeight.Clear(); + this.CollLabelADC.Clear(); + this.CollLabelConstant.Clear(); + this.CollCalStatus.Clear(); - this.CollectionButtonLine.Add(this.buttonLine1); - this.CollectionButtonLine.Add(this.buttonLine2); - this.CollectionButtonLine.Add(this.buttonLine3); - this.CollectionButtonLine.Add(this.buttonLine4); + this.CollButtonLane.Add(this.buttonLine1); + this.CollButtonLane.Add(this.buttonLine2); + this.CollButtonLane.Add(this.buttonLine3); + this.CollButtonLane.Add(this.buttonLine4); - this.CollectionLabelWeight.Add(this.labelWeight1); - this.CollectionLabelWeight.Add(this.labelWeight2); - this.CollectionLabelWeight.Add(this.labelWeight3); - this.CollectionLabelWeight.Add(this.labelWeight4); + this.CollLabelWeight.Add(this.labelWeight1); + this.CollLabelWeight.Add(this.labelWeight2); + this.CollLabelWeight.Add(this.labelWeight3); + this.CollLabelWeight.Add(this.labelWeight4); - this.CollectionLabelADC.Add(this.labelADC1); - this.CollectionLabelADC.Add(this.labelADC2); - this.CollectionLabelADC.Add(this.labelADC3); - this.CollectionLabelADC.Add(this.labelADC4); + this.CollLabelADC.Add(this.labelADC1); + this.CollLabelADC.Add(this.labelADC2); + this.CollLabelADC.Add(this.labelADC3); + this.CollLabelADC.Add(this.labelADC4); - this.CollectionLabelConstant.Add(this.labelConstant1); - this.CollectionLabelConstant.Add(this.labelConstant2); - this.CollectionLabelConstant.Add(this.labelConstant3); - this.CollectionLabelConstant.Add(this.labelConstant4); + this.CollLabelConstant.Add(this.labelConstant1); + this.CollLabelConstant.Add(this.labelConstant2); + this.CollLabelConstant.Add(this.labelConstant3); + this.CollLabelConstant.Add(this.labelConstant4); + + for (int i = 0; i < 4; i++) + this.CollCalStatus.Add(new CalibrationStatus()); } private void InitilizeControls() { for (int i = 0; i < this.ParentForm.ParentForm.SystemConfig.EquipmentColumns; i++) { - this.CollectionLabelWeight[i].Text = "0.0"; - this.CollectionLabelADC[i].Text = "0.0"; - this.CollectionLabelConstant[i].Text = "0.0"; + this.CollLabelWeight[i].Text = "0.0"; + this.CollLabelADC[i].Text = "0.0"; + this.CollLabelConstant[i].Text = "0.0"; } } private void InitializeDesign() @@ -127,12 +130,13 @@ namespace INT69DB_2A.Controls public void DisplayRefresh() { - if (this.CollectionButtonLine == null || this.CollectionButtonLine.Count == 0) + if (this.CollButtonLane == null || this.CollButtonLane.Count == 0) return; - for (int i = 0; i < this.CollectionButtonLine.Count; i++) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - this.CollectionButtonLine[i].ButtonUp(); + this.CollButtonLane[i].ButtonUp(); + this.CollCalStatus[i].Initialize(); } } @@ -163,7 +167,7 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + foreach (SmartButton bt in this.CollButtonLane) { if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationBalance, bt.Tag.ToString()); @@ -173,6 +177,8 @@ namespace INT69DB_2A.Controls } public void CalibrationStart() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 시작합니다."); @@ -198,18 +204,30 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = false; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + this.CollCalStatus[i].Initialize(); + detail = string.Format("{0} Lane Start", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + + this.CollButtonLane[i].Enabled = false; } this.ParentForm.CalibrationButtonEnable(false, false, false); } public void CalibrationCancel() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 취소합니다"); @@ -231,12 +249,25 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = true; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[i].IsCancel == false) + { + this.CollCalStatus[i].IsCancel = true; + detail = string.Format("{0} Lane Cancel", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + } + + this.CollButtonLane[i].Enabled = true; } this.ParentForm.CalibrationButtonEnable(true, false, false); @@ -264,23 +295,25 @@ namespace INT69DB_2A.Controls } public void UpdateWeightDisplay(DataStore.EquipmentStatus status, Collection weights) { - if (this.CollectionLabelWeight == null || weights.Count < this.CollectionLabelWeight.Count || status == DataStore.EquipmentStatus.Start) + if (this.CollLabelWeight == null || weights.Count < this.CollLabelWeight.Count || status == DataStore.EquipmentStatus.Start) return; for (int i = 0; i < weights.Count; i++) { - if (this.CollectionButtonLine[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], true); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], true); } else { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], false); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], false); } } } - private void UpdateLabelWeight(int laneIndex, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) + private void UpdateLabelWeight(int index, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) { + string detail = ""; + switch (weightData.Status) { case DataStore.WeightStatus.CalNomal: @@ -289,7 +322,6 @@ namespace INT69DB_2A.Controls labelADC.Text = weightData.ADCValue; break; case DataStore.WeightStatus.CalStandby: - this.IsCalibrationFinish = false; if (rbChecked == true) { // 분동중량 표시 @@ -357,17 +389,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsFinish == false) + { + this.CollCalStatus[index].IsFinish = true; + detail = string.Format("{0} Lane Success", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.FinishColor; labelADC.Text = weightData.ADCValue; - if (this.IsCalibrationFinish == false) - { - this.IsCalibrationFinish = true; - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Success"); - } break; case DataStore.WeightStatus.CalError: if (rbChecked == true) @@ -397,14 +435,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsError == false) + { + this.CollCalStatus[index].IsError = true; + detail = string.Format("{0} Lane Error", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.NormalColor; labelADC.Text = weightData.ADCValue; - - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Fail"); break; default: break; @@ -430,7 +477,7 @@ namespace INT69DB_2A.Controls else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { this.ParentForm.listBoxHelp.Items.Add("Calibration"); - this.ParentForm.listBoxHelp.Items.Add("After selecting line, "); + this.ParentForm.listBoxHelp.Items.Add("After selecting lane, "); this.ParentForm.listBoxHelp.Items.Add("push the [Start] button."); } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) diff --git a/INT69DB_2A/Controls/ControlCalibration5.Designer.cs b/INT69DB_2A/Controls/ControlCalibration5.Designer.cs index 0761739..f9c9a1d 100644 --- a/INT69DB_2A/Controls/ControlCalibration5.Designer.cs +++ b/INT69DB_2A/Controls/ControlCalibration5.Designer.cs @@ -30,10 +30,10 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCalibration5)); this.pictureBox1 = new System.Windows.Forms.PictureBox(); - this.buttonLine4 = new SmartX.SmartButton(); - this.buttonLine3 = new SmartX.SmartButton(); - this.buttonLine2 = new SmartX.SmartButton(); - this.buttonLine1 = new SmartX.SmartButton(); + this.buttonLane4 = new SmartX.SmartButton(); + this.buttonLane3 = new SmartX.SmartButton(); + this.buttonLane2 = new SmartX.SmartButton(); + this.buttonLane1 = new SmartX.SmartButton(); this.labelConstant4 = new SmartX.SmartLabel(); this.labelConstant3 = new SmartX.SmartLabel(); this.labelConstant2 = new SmartX.SmartLabel(); @@ -49,7 +49,6 @@ this.labelWeight5 = new SmartX.SmartLabel(); this.labelADC5 = new SmartX.SmartLabel(); this.labelConstant5 = new SmartX.SmartLabel(); - this.buttonLine5 = new SmartX.SmartButton(); this.smartLabel1 = new SmartX.SmartLabel(); this.smartLabel12 = new SmartX.SmartLabel(); this.smartLabel11 = new SmartX.SmartLabel(); @@ -59,7 +58,8 @@ this.labelStaticADC = new SmartX.SmartLabel(); this.labelStaticWeight = new SmartX.SmartLabel(); this.labelStaticLineNumber = new SmartX.SmartLabel(); - this.labelStaticLineSelect = new SmartX.SmartLabel(); + this.labelStaticLaneSelect = new SmartX.SmartLabel(); + this.buttonLane5 = new SmartX.SmartButton(); this.SuspendLayout(); // // pictureBox1 @@ -69,125 +69,133 @@ this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(800, 320); // - // buttonLine4 + // buttonLane4 // - this.buttonLine4.BackPictureBox = null; - this.buttonLine4.BackPictureBox1 = null; - this.buttonLine4.BackPictureBox2 = null; - this.buttonLine4.ButtonColor = System.Drawing.Color.Gray; - this.buttonLine4.ButtonImageAutoSize = true; - this.buttonLine4.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLine4.DisableImage = null; - this.buttonLine4.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLine4.DownImage"))); - this.buttonLine4.GroupID = 0; - this.buttonLine4.InitVisible = true; - this.buttonLine4.Location = new System.Drawing.Point(509, 41); - this.buttonLine4.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLine4.Name = "buttonLine4"; - this.buttonLine4.NestedClickEventPrevent = false; - this.buttonLine4.RepeatInterval = 200; - this.buttonLine4.SafeInterval = 200; - this.buttonLine4.Size = new System.Drawing.Size(134, 158); - this.buttonLine4.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLine4.TabIndex = 476; - this.buttonLine4.Tag = "D"; - this.buttonLine4.TextColor = System.Drawing.Color.Black; - this.buttonLine4.TextDownColor = System.Drawing.Color.White; - this.buttonLine4.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLine4.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLine4.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLine4.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLine4.UpImage"))); - this.buttonLine4.Click += new System.EventHandler(this.buttonLine_Click); + this.buttonLane4.BackPictureBox = null; + this.buttonLane4.BackPictureBox1 = null; + this.buttonLane4.BackPictureBox2 = null; + this.buttonLane4.ButtonColor = System.Drawing.Color.Gray; + this.buttonLane4.ButtonImageAutoSize = true; + this.buttonLane4.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonLane4.DisableImage = null; + this.buttonLane4.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLane4.DownImage"))); + this.buttonLane4.GroupID = 0; + this.buttonLane4.InitVisible = true; + this.buttonLane4.Location = new System.Drawing.Point(509, 41); + this.buttonLane4.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; + this.buttonLane4.Name = "buttonLane4"; + this.buttonLane4.NestedClickEventPrevent = false; + this.buttonLane4.OutlinePixel = 1; + this.buttonLane4.RepeatInterval = 200; + this.buttonLane4.RepeatIntervalAccelerate = null; + this.buttonLane4.SafeInterval = 200; + this.buttonLane4.Size = new System.Drawing.Size(134, 158); + this.buttonLane4.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonLane4.TabIndex = 476; + this.buttonLane4.Tag = "D"; + this.buttonLane4.TextColor = System.Drawing.Color.Black; + this.buttonLane4.TextDownColor = System.Drawing.Color.White; + this.buttonLane4.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonLane4.TextLocation = new System.Drawing.Point(0, 0); + this.buttonLane4.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonLane4.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLane4.UpImage"))); + this.buttonLane4.Click += new System.EventHandler(this.buttonLane_Click); // - // buttonLine3 + // buttonLane3 // - this.buttonLine3.BackPictureBox = null; - this.buttonLine3.BackPictureBox1 = null; - this.buttonLine3.BackPictureBox2 = null; - this.buttonLine3.ButtonColor = System.Drawing.Color.Gray; - this.buttonLine3.ButtonImageAutoSize = true; - this.buttonLine3.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLine3.DisableImage = null; - this.buttonLine3.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLine3.DownImage"))); - this.buttonLine3.GroupID = 0; - this.buttonLine3.InitVisible = true; - this.buttonLine3.Location = new System.Drawing.Point(369, 41); - this.buttonLine3.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLine3.Name = "buttonLine3"; - this.buttonLine3.NestedClickEventPrevent = false; - this.buttonLine3.RepeatInterval = 200; - this.buttonLine3.SafeInterval = 200; - this.buttonLine3.Size = new System.Drawing.Size(134, 158); - this.buttonLine3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLine3.TabIndex = 475; - this.buttonLine3.Tag = "C"; - this.buttonLine3.TextColor = System.Drawing.Color.Black; - this.buttonLine3.TextDownColor = System.Drawing.Color.White; - this.buttonLine3.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLine3.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLine3.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLine3.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLine3.UpImage"))); - this.buttonLine3.Click += new System.EventHandler(this.buttonLine_Click); + this.buttonLane3.BackPictureBox = null; + this.buttonLane3.BackPictureBox1 = null; + this.buttonLane3.BackPictureBox2 = null; + this.buttonLane3.ButtonColor = System.Drawing.Color.Gray; + this.buttonLane3.ButtonImageAutoSize = true; + this.buttonLane3.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonLane3.DisableImage = null; + this.buttonLane3.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLane3.DownImage"))); + this.buttonLane3.GroupID = 0; + this.buttonLane3.InitVisible = true; + this.buttonLane3.Location = new System.Drawing.Point(369, 41); + this.buttonLane3.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; + this.buttonLane3.Name = "buttonLane3"; + this.buttonLane3.NestedClickEventPrevent = false; + this.buttonLane3.OutlinePixel = 1; + this.buttonLane3.RepeatInterval = 200; + this.buttonLane3.RepeatIntervalAccelerate = null; + this.buttonLane3.SafeInterval = 200; + this.buttonLane3.Size = new System.Drawing.Size(134, 158); + this.buttonLane3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonLane3.TabIndex = 475; + this.buttonLane3.Tag = "C"; + this.buttonLane3.TextColor = System.Drawing.Color.Black; + this.buttonLane3.TextDownColor = System.Drawing.Color.White; + this.buttonLane3.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonLane3.TextLocation = new System.Drawing.Point(0, 0); + this.buttonLane3.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonLane3.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLane3.UpImage"))); + this.buttonLane3.Click += new System.EventHandler(this.buttonLane_Click); // - // buttonLine2 + // buttonLane2 // - this.buttonLine2.BackPictureBox = null; - this.buttonLine2.BackPictureBox1 = null; - this.buttonLine2.BackPictureBox2 = null; - this.buttonLine2.ButtonColor = System.Drawing.Color.Gray; - this.buttonLine2.ButtonImageAutoSize = true; - this.buttonLine2.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLine2.DisableImage = null; - this.buttonLine2.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLine2.DownImage"))); - this.buttonLine2.GroupID = 0; - this.buttonLine2.InitVisible = true; - this.buttonLine2.Location = new System.Drawing.Point(229, 41); - this.buttonLine2.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLine2.Name = "buttonLine2"; - this.buttonLine2.NestedClickEventPrevent = false; - this.buttonLine2.RepeatInterval = 200; - this.buttonLine2.SafeInterval = 200; - this.buttonLine2.Size = new System.Drawing.Size(134, 158); - this.buttonLine2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLine2.TabIndex = 478; - this.buttonLine2.Tag = "B"; - this.buttonLine2.TextColor = System.Drawing.Color.Black; - this.buttonLine2.TextDownColor = System.Drawing.Color.White; - this.buttonLine2.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLine2.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLine2.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLine2.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLine2.UpImage"))); - this.buttonLine2.Click += new System.EventHandler(this.buttonLine_Click); + this.buttonLane2.BackPictureBox = null; + this.buttonLane2.BackPictureBox1 = null; + this.buttonLane2.BackPictureBox2 = null; + this.buttonLane2.ButtonColor = System.Drawing.Color.Gray; + this.buttonLane2.ButtonImageAutoSize = true; + this.buttonLane2.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonLane2.DisableImage = null; + this.buttonLane2.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLane2.DownImage"))); + this.buttonLane2.GroupID = 0; + this.buttonLane2.InitVisible = true; + this.buttonLane2.Location = new System.Drawing.Point(229, 41); + this.buttonLane2.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; + this.buttonLane2.Name = "buttonLane2"; + this.buttonLane2.NestedClickEventPrevent = false; + this.buttonLane2.OutlinePixel = 1; + this.buttonLane2.RepeatInterval = 200; + this.buttonLane2.RepeatIntervalAccelerate = null; + this.buttonLane2.SafeInterval = 200; + this.buttonLane2.Size = new System.Drawing.Size(134, 158); + this.buttonLane2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonLane2.TabIndex = 478; + this.buttonLane2.Tag = "B"; + this.buttonLane2.TextColor = System.Drawing.Color.Black; + this.buttonLane2.TextDownColor = System.Drawing.Color.White; + this.buttonLane2.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonLane2.TextLocation = new System.Drawing.Point(0, 0); + this.buttonLane2.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonLane2.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLane2.UpImage"))); + this.buttonLane2.Click += new System.EventHandler(this.buttonLane_Click); // - // buttonLine1 + // buttonLane1 // - this.buttonLine1.BackPictureBox = null; - this.buttonLine1.BackPictureBox1 = null; - this.buttonLine1.BackPictureBox2 = null; - this.buttonLine1.ButtonColor = System.Drawing.Color.Gray; - this.buttonLine1.ButtonImageAutoSize = true; - this.buttonLine1.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLine1.DisableImage = null; - this.buttonLine1.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLine1.DownImage"))); - this.buttonLine1.GroupID = 0; - this.buttonLine1.InitVisible = true; - this.buttonLine1.Location = new System.Drawing.Point(89, 41); - this.buttonLine1.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLine1.Name = "buttonLine1"; - this.buttonLine1.NestedClickEventPrevent = false; - this.buttonLine1.RepeatInterval = 200; - this.buttonLine1.SafeInterval = 200; - this.buttonLine1.Size = new System.Drawing.Size(134, 158); - this.buttonLine1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLine1.TabIndex = 477; - this.buttonLine1.Tag = "A"; - this.buttonLine1.TextColor = System.Drawing.Color.Black; - this.buttonLine1.TextDownColor = System.Drawing.Color.White; - this.buttonLine1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLine1.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLine1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLine1.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLine1.UpImage"))); - this.buttonLine1.Click += new System.EventHandler(this.buttonLine_Click); + this.buttonLane1.BackPictureBox = null; + this.buttonLane1.BackPictureBox1 = null; + this.buttonLane1.BackPictureBox2 = null; + this.buttonLane1.ButtonColor = System.Drawing.Color.Gray; + this.buttonLane1.ButtonImageAutoSize = true; + this.buttonLane1.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonLane1.DisableImage = null; + this.buttonLane1.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLane1.DownImage"))); + this.buttonLane1.GroupID = 0; + this.buttonLane1.InitVisible = true; + this.buttonLane1.Location = new System.Drawing.Point(89, 41); + this.buttonLane1.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; + this.buttonLane1.Name = "buttonLane1"; + this.buttonLane1.NestedClickEventPrevent = false; + this.buttonLane1.OutlinePixel = 1; + this.buttonLane1.RepeatInterval = 200; + this.buttonLane1.RepeatIntervalAccelerate = null; + this.buttonLane1.SafeInterval = 200; + this.buttonLane1.Size = new System.Drawing.Size(134, 158); + this.buttonLane1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonLane1.TabIndex = 477; + this.buttonLane1.Tag = "A"; + this.buttonLane1.TextColor = System.Drawing.Color.Black; + this.buttonLane1.TextDownColor = System.Drawing.Color.White; + this.buttonLane1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonLane1.TextLocation = new System.Drawing.Point(0, 0); + this.buttonLane1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonLane1.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLane1.UpImage"))); + this.buttonLane1.Click += new System.EventHandler(this.buttonLane_Click); // // labelConstant4 // @@ -489,36 +497,6 @@ this.labelConstant5.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelConstant5.Wordwrap = false; // - // buttonLine5 - // - this.buttonLine5.BackPictureBox = null; - this.buttonLine5.BackPictureBox1 = null; - this.buttonLine5.BackPictureBox2 = null; - this.buttonLine5.ButtonColor = System.Drawing.Color.Gray; - this.buttonLine5.ButtonImageAutoSize = true; - this.buttonLine5.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLine5.DisableImage = null; - this.buttonLine5.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLine5.DownImage"))); - this.buttonLine5.GroupID = 0; - this.buttonLine5.InitVisible = true; - this.buttonLine5.Location = new System.Drawing.Point(649, 41); - this.buttonLine5.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLine5.Name = "buttonLine5"; - this.buttonLine5.NestedClickEventPrevent = false; - this.buttonLine5.RepeatInterval = 200; - this.buttonLine5.SafeInterval = 200; - this.buttonLine5.Size = new System.Drawing.Size(134, 158); - this.buttonLine5.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLine5.TabIndex = 476; - this.buttonLine5.Tag = "E"; - this.buttonLine5.TextColor = System.Drawing.Color.Black; - this.buttonLine5.TextDownColor = System.Drawing.Color.White; - this.buttonLine5.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLine5.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLine5.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLine5.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLine5.UpImage"))); - this.buttonLine5.Click += new System.EventHandler(this.buttonLine_Click); - // // smartLabel1 // this.smartLabel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(49)))), ((int)(((byte)(65)))), ((int)(((byte)(41))))); @@ -632,7 +610,7 @@ this.labelStaticCAL.BackPictureBox2 = null; this.labelStaticCAL.BorderColor = System.Drawing.Color.Black; this.labelStaticCAL.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticCAL.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelStaticCAL.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); this.labelStaticCAL.ForeColor = System.Drawing.Color.White; this.labelStaticCAL.InitVisible = true; this.labelStaticCAL.LineSpacing = 0F; @@ -653,7 +631,7 @@ this.labelStaticADC.BackPictureBox2 = null; this.labelStaticADC.BorderColor = System.Drawing.Color.Black; this.labelStaticADC.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticADC.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelStaticADC.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); this.labelStaticADC.ForeColor = System.Drawing.Color.White; this.labelStaticADC.InitVisible = true; this.labelStaticADC.LineSpacing = 0F; @@ -674,7 +652,7 @@ this.labelStaticWeight.BackPictureBox2 = null; this.labelStaticWeight.BorderColor = System.Drawing.Color.Black; this.labelStaticWeight.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticWeight.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelStaticWeight.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); this.labelStaticWeight.ForeColor = System.Drawing.Color.White; this.labelStaticWeight.InitVisible = true; this.labelStaticWeight.LineSpacing = 0F; @@ -695,7 +673,7 @@ this.labelStaticLineNumber.BackPictureBox2 = null; this.labelStaticLineNumber.BorderColor = System.Drawing.Color.Black; this.labelStaticLineNumber.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticLineNumber.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelStaticLineNumber.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); this.labelStaticLineNumber.ForeColor = System.Drawing.Color.White; this.labelStaticLineNumber.InitVisible = true; this.labelStaticLineNumber.LineSpacing = 0F; @@ -708,47 +686,79 @@ this.labelStaticLineNumber.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelStaticLineNumber.Wordwrap = false; // - // labelStaticLineSelect + // labelStaticLaneSelect // - this.labelStaticLineSelect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(49)))), ((int)(((byte)(65)))), ((int)(((byte)(41))))); - this.labelStaticLineSelect.BackPictureBox = null; - this.labelStaticLineSelect.BackPictureBox1 = null; - this.labelStaticLineSelect.BackPictureBox2 = null; - this.labelStaticLineSelect.BorderColor = System.Drawing.Color.Black; - this.labelStaticLineSelect.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticLineSelect.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); - this.labelStaticLineSelect.ForeColor = System.Drawing.Color.White; - this.labelStaticLineSelect.InitVisible = true; - this.labelStaticLineSelect.LineSpacing = 0F; - this.labelStaticLineSelect.Location = new System.Drawing.Point(19, 97); - this.labelStaticLineSelect.Name = "labelStaticLineSelect"; - this.labelStaticLineSelect.Size = new System.Drawing.Size(64, 43); - this.labelStaticLineSelect.TabIndex = 511; - this.labelStaticLineSelect.Text = "열 선택"; - this.labelStaticLineSelect.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelStaticLineSelect.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelStaticLineSelect.Wordwrap = true; + this.labelStaticLaneSelect.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(49)))), ((int)(((byte)(65)))), ((int)(((byte)(41))))); + this.labelStaticLaneSelect.BackPictureBox = null; + this.labelStaticLaneSelect.BackPictureBox1 = null; + this.labelStaticLaneSelect.BackPictureBox2 = null; + this.labelStaticLaneSelect.BorderColor = System.Drawing.Color.Black; + this.labelStaticLaneSelect.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelStaticLaneSelect.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); + this.labelStaticLaneSelect.ForeColor = System.Drawing.Color.White; + this.labelStaticLaneSelect.InitVisible = true; + this.labelStaticLaneSelect.LineSpacing = 0F; + this.labelStaticLaneSelect.Location = new System.Drawing.Point(19, 97); + this.labelStaticLaneSelect.Name = "labelStaticLaneSelect"; + this.labelStaticLaneSelect.Size = new System.Drawing.Size(64, 43); + this.labelStaticLaneSelect.TabIndex = 511; + this.labelStaticLaneSelect.Text = "열 선택"; + this.labelStaticLaneSelect.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelStaticLaneSelect.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelStaticLaneSelect.Wordwrap = true; + // + // buttonLane5 + // + this.buttonLane5.BackPictureBox = null; + this.buttonLane5.BackPictureBox1 = null; + this.buttonLane5.BackPictureBox2 = null; + this.buttonLane5.ButtonColor = System.Drawing.Color.Gray; + this.buttonLane5.ButtonImageAutoSize = true; + this.buttonLane5.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonLane5.DisableImage = null; + this.buttonLane5.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonLane5.DownImage"))); + this.buttonLane5.GroupID = 0; + this.buttonLane5.InitVisible = true; + this.buttonLane5.Location = new System.Drawing.Point(649, 41); + this.buttonLane5.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; + this.buttonLane5.Name = "buttonLane5"; + this.buttonLane5.NestedClickEventPrevent = false; + this.buttonLane5.OutlinePixel = 1; + this.buttonLane5.RepeatInterval = 200; + this.buttonLane5.RepeatIntervalAccelerate = null; + this.buttonLane5.SafeInterval = 200; + this.buttonLane5.Size = new System.Drawing.Size(134, 158); + this.buttonLane5.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonLane5.TabIndex = 516; + this.buttonLane5.Tag = "E"; + this.buttonLane5.TextColor = System.Drawing.Color.Black; + this.buttonLane5.TextDownColor = System.Drawing.Color.White; + this.buttonLane5.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonLane5.TextLocation = new System.Drawing.Point(0, 0); + this.buttonLane5.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonLane5.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonLane5.UpImage"))); + this.buttonLane5.Click += new System.EventHandler(this.buttonLane_Click); // // ControlCalibration5 // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.Controls.Add(this.buttonLane5); this.Controls.Add(this.labelStaticCAL); this.Controls.Add(this.labelStaticADC); this.Controls.Add(this.labelStaticWeight); - this.Controls.Add(this.labelStaticLineSelect); + this.Controls.Add(this.labelStaticLaneSelect); this.Controls.Add(this.labelStaticLineNumber); this.Controls.Add(this.smartLabel2); this.Controls.Add(this.smartLabel1); this.Controls.Add(this.smartLabel12); this.Controls.Add(this.smartLabel11); this.Controls.Add(this.smartLabel10); - this.Controls.Add(this.buttonLine5); - this.Controls.Add(this.buttonLine4); - this.Controls.Add(this.buttonLine3); - this.Controls.Add(this.buttonLine2); + this.Controls.Add(this.buttonLane4); + this.Controls.Add(this.buttonLane3); + this.Controls.Add(this.buttonLane2); this.Controls.Add(this.labelConstant5); - this.Controls.Add(this.buttonLine1); + this.Controls.Add(this.buttonLane1); this.Controls.Add(this.labelConstant4); this.Controls.Add(this.labelConstant3); this.Controls.Add(this.labelConstant2); @@ -797,11 +807,11 @@ private SmartX.SmartLabel labelStaticADC; private SmartX.SmartLabel labelStaticWeight; private SmartX.SmartLabel labelStaticLineNumber; - private SmartX.SmartLabel labelStaticLineSelect; - public SmartX.SmartButton buttonLine4; - public SmartX.SmartButton buttonLine3; - public SmartX.SmartButton buttonLine2; - public SmartX.SmartButton buttonLine1; - public SmartX.SmartButton buttonLine5; + private SmartX.SmartLabel labelStaticLaneSelect; + public SmartX.SmartButton buttonLane4; + public SmartX.SmartButton buttonLane3; + public SmartX.SmartButton buttonLane2; + public SmartX.SmartButton buttonLane1; + public SmartX.SmartButton buttonLane5; } } diff --git a/INT69DB_2A/Controls/ControlCalibration5.cs b/INT69DB_2A/Controls/ControlCalibration5.cs index bc1be81..71b8ece 100644 --- a/INT69DB_2A/Controls/ControlCalibration5.cs +++ b/INT69DB_2A/Controls/ControlCalibration5.cs @@ -19,16 +19,14 @@ namespace INT69DB_2A.Controls #region Field private FormCalibration m_ParentForm; - // 중량 조정이 완료 되었는지 확인하는 Flag - private bool IsCalibrationFinish; - private Color NormalColor = Color.Black; private Color FinishColor = Color.Blue; - private Collection CollectionButtonLine; - private Collection CollectionLabelWeight; - private Collection CollectionLabelADC; - private Collection CollectionLabelConstant; + private Collection CollButtonLane; + private Collection CollLabelWeight; + private Collection CollLabelADC; + private Collection CollLabelConstant; + private Collection CollCalStatus; #endregion #region Constructor @@ -56,47 +54,52 @@ namespace INT69DB_2A.Controls #region Method private void CreateCollection() { - this.CollectionButtonLine = new Collection(); - this.CollectionLabelWeight = new Collection(); - this.CollectionLabelADC = new Collection(); - this.CollectionLabelConstant = new Collection(); + this.CollButtonLane = new Collection(); + this.CollLabelWeight = new Collection(); + this.CollLabelADC = new Collection(); + this.CollLabelConstant = new Collection(); + this.CollCalStatus = new Collection(); - this.CollectionButtonLine.Clear(); - this.CollectionLabelWeight.Clear(); - this.CollectionLabelADC.Clear(); - this.CollectionLabelConstant.Clear(); + this.CollButtonLane.Clear(); + this.CollLabelWeight.Clear(); + this.CollLabelADC.Clear(); + this.CollLabelConstant.Clear(); + this.CollCalStatus.Clear(); - this.CollectionButtonLine.Add(this.buttonLine1); - this.CollectionButtonLine.Add(this.buttonLine2); - this.CollectionButtonLine.Add(this.buttonLine3); - this.CollectionButtonLine.Add(this.buttonLine4); - this.CollectionButtonLine.Add(this.buttonLine5); + this.CollButtonLane.Add(this.buttonLane1); + this.CollButtonLane.Add(this.buttonLane2); + this.CollButtonLane.Add(this.buttonLane3); + this.CollButtonLane.Add(this.buttonLane4); + this.CollButtonLane.Add(this.buttonLane5); - this.CollectionLabelWeight.Add(this.labelWeight1); - this.CollectionLabelWeight.Add(this.labelWeight2); - this.CollectionLabelWeight.Add(this.labelWeight3); - this.CollectionLabelWeight.Add(this.labelWeight4); - this.CollectionLabelWeight.Add(this.labelWeight5); + this.CollLabelWeight.Add(this.labelWeight1); + this.CollLabelWeight.Add(this.labelWeight2); + this.CollLabelWeight.Add(this.labelWeight3); + this.CollLabelWeight.Add(this.labelWeight4); + this.CollLabelWeight.Add(this.labelWeight5); - this.CollectionLabelADC.Add(this.labelADC1); - this.CollectionLabelADC.Add(this.labelADC2); - this.CollectionLabelADC.Add(this.labelADC3); - this.CollectionLabelADC.Add(this.labelADC4); - this.CollectionLabelADC.Add(this.labelADC5); + this.CollLabelADC.Add(this.labelADC1); + this.CollLabelADC.Add(this.labelADC2); + this.CollLabelADC.Add(this.labelADC3); + this.CollLabelADC.Add(this.labelADC4); + this.CollLabelADC.Add(this.labelADC5); - this.CollectionLabelConstant.Add(this.labelConstant1); - this.CollectionLabelConstant.Add(this.labelConstant2); - this.CollectionLabelConstant.Add(this.labelConstant3); - this.CollectionLabelConstant.Add(this.labelConstant4); - this.CollectionLabelConstant.Add(this.labelConstant5); + this.CollLabelConstant.Add(this.labelConstant1); + this.CollLabelConstant.Add(this.labelConstant2); + this.CollLabelConstant.Add(this.labelConstant3); + this.CollLabelConstant.Add(this.labelConstant4); + this.CollLabelConstant.Add(this.labelConstant5); + + for (int i = 0; i < 5; i++) + this.CollCalStatus.Add(new CalibrationStatus()); } private void InitilizeControls() { for (int i = 0; i < this.ParentForm.ParentForm.SystemConfig.EquipmentColumns; i++) { - this.CollectionLabelWeight[i].Text = "0.0"; - this.CollectionLabelADC[i].Text = "0.0"; - this.CollectionLabelConstant[i].Text = "0.0"; + this.CollLabelWeight[i].Text = "0.0"; + this.CollLabelADC[i].Text = "0.0"; + this.CollLabelConstant[i].Text = "0.0"; } } private void InitializeDesign() @@ -110,13 +113,13 @@ namespace INT69DB_2A.Controls else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { this.labelStaticLineNumber.Text = "No."; - this.labelStaticLineSelect.Text = "Line\nSelect"; + this.labelStaticLaneSelect.Text = "Line\nSelect"; this.labelStaticWeight.Text = "Weight"; } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) { this.labelStaticLineNumber.Text = "编号"; - this.labelStaticLineSelect.Text = "选择路线"; + this.labelStaticLaneSelect.Text = "选择路线"; this.labelStaticWeight.Text = "重量"; } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Czech) @@ -131,12 +134,13 @@ namespace INT69DB_2A.Controls public void DisplayRefresh() { - if (this.CollectionButtonLine == null || this.CollectionButtonLine.Count == 0) + if (this.CollButtonLane == null || this.CollButtonLane.Count == 0) return; - for (int i = 0; i < this.CollectionButtonLine.Count; i++) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - this.CollectionButtonLine[i].ButtonUp(); + this.CollButtonLane[i].ButtonUp(); + this.CollCalStatus[i].Initialize(); } } @@ -167,7 +171,7 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + foreach (SmartButton bt in this.CollButtonLane) { if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationBalance, bt.Tag.ToString()); @@ -177,6 +181,8 @@ namespace INT69DB_2A.Controls } public void CalibrationStart() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 시작합니다."); @@ -202,18 +208,30 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = false; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + this.CollCalStatus[i].Initialize(); + detail = string.Format("{0} Lane Start", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + + this.CollButtonLane[i].Enabled = false; } this.ParentForm.CalibrationButtonEnable(false, false, false); } public void CalibrationCancel() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 취소합니다"); @@ -235,12 +253,25 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = true; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[i].IsFinish == false && this.CollCalStatus[i].IsCancel == false) + { + this.CollCalStatus[i].IsCancel = true; + detail = string.Format("{0} Lane Cancel", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + } + + this.CollButtonLane[i].Enabled = true; } this.ParentForm.CalibrationButtonEnable(true, false, false); @@ -272,23 +303,21 @@ namespace INT69DB_2A.Controls } public void UpdateWeightDisplay(DataStore.EquipmentStatus status, Collection weights) { - if (this.CollectionLabelWeight == null || weights.Count < this.CollectionLabelWeight.Count || status == DataStore.EquipmentStatus.Start) + if (this.CollLabelWeight == null || weights.Count < this.CollLabelWeight.Count || status == DataStore.EquipmentStatus.Start) return; for (int i = 0; i < weights.Count; i++) { - if (this.CollectionButtonLine[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], true); - } + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], true); else - { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], false); - } + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], false); } } - private void UpdateLabelWeight(int laneIndex, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) + private void UpdateLabelWeight(int index, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) { + string detail = ""; + switch (weightData.Status) { case DataStore.WeightStatus.CalNomal: @@ -297,7 +326,6 @@ namespace INT69DB_2A.Controls labelADC.Text = weightData.ADCValue; break; case DataStore.WeightStatus.CalStandby: - this.IsCalibrationFinish = false; if (rbChecked == true) { // 분동중량 표시 @@ -364,17 +392,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsFinish == false) + { + this.CollCalStatus[index].IsFinish = true; + detail = string.Format("{0} Lane Success", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.FinishColor; labelADC.Text = weightData.ADCValue; - if (this.IsCalibrationFinish == false) - { - this.IsCalibrationFinish = true; - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Success"); - } break; case DataStore.WeightStatus.CalError: if (rbChecked == true) @@ -404,14 +438,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsError == false) + { + this.CollCalStatus[index].IsError = true; + detail = string.Format("{0} Lane Error", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.NormalColor; labelADC.Text = weightData.ADCValue; - - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Fail"); break; default: break; @@ -420,13 +463,8 @@ namespace INT69DB_2A.Controls #endregion #region Event Handler - private void buttonLine_Click(object sender, EventArgs e) + private void buttonLane_Click(object sender, EventArgs e) { - SmartButton bt = sender as SmartButton; - - if (bt == null) - return; - this.ParentForm.ClearListBox(); if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { @@ -437,7 +475,7 @@ namespace INT69DB_2A.Controls else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { this.ParentForm.listBoxHelp.Items.Add("Calibration"); - this.ParentForm.listBoxHelp.Items.Add("After selecting line, "); + this.ParentForm.listBoxHelp.Items.Add("After selecting lane, "); this.ParentForm.listBoxHelp.Items.Add("push the [Start] button."); } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) diff --git a/INT69DB_2A/Controls/ControlCalibration5.resx b/INT69DB_2A/Controls/ControlCalibration5.resx index 139aafa..b375fcb 100644 --- a/INT69DB_2A/Controls/ControlCalibration5.resx +++ b/INT69DB_2A/Controls/ControlCalibration5.resx @@ -211,7 +211,7 @@ ET+XfFz9ZgssAABOElgAAFdMYAEAXDGBBQBwpX58+CucjfAfeAFbogAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp @@ -351,7 +351,7 @@ AAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp @@ -470,7 +470,7 @@ AAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp @@ -610,7 +610,7 @@ AAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp @@ -729,7 +729,7 @@ AAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp @@ -869,7 +869,7 @@ AAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp @@ -988,7 +988,7 @@ AAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp @@ -1128,7 +1128,7 @@ AAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp @@ -1247,7 +1247,7 @@ AAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp @@ -1387,7 +1387,7 @@ AAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAAIYAAACeCAIAAAB4nuUwAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp diff --git a/INT69DB_2A/Controls/ControlCalibration6.cs b/INT69DB_2A/Controls/ControlCalibration6.cs index e27f144..ce626d2 100644 --- a/INT69DB_2A/Controls/ControlCalibration6.cs +++ b/INT69DB_2A/Controls/ControlCalibration6.cs @@ -19,16 +19,14 @@ namespace INT69DB_2A.Controls #region Field private FormCalibration m_ParentForm; - // 중량 조정이 완료 되었는지 확인하는 Flag - private bool IsCalibrationFinish; - private Color NormalColor = Color.Black; private Color FinishColor = Color.Blue; - private Collection CollectionButtonLine; - private Collection CollectionLabelWeight; - private Collection CollectionLabelADC; - private Collection CollectionLabelConstant; + private Collection CollButtonLane; + private Collection CollLabelWeight; + private Collection CollLabelADC; + private Collection CollLabelConstant; + private Collection CollCalStatus; #endregion #region Constructor @@ -56,51 +54,56 @@ namespace INT69DB_2A.Controls #region Method private void CreateCollection() { - this.CollectionButtonLine = new Collection(); - this.CollectionLabelWeight = new Collection(); - this.CollectionLabelADC = new Collection(); - this.CollectionLabelConstant = new Collection(); + this.CollButtonLane = new Collection(); + this.CollLabelWeight = new Collection(); + this.CollLabelADC = new Collection(); + this.CollLabelConstant = new Collection(); + this.CollCalStatus = new Collection(); - this.CollectionButtonLine.Clear(); - this.CollectionLabelWeight.Clear(); - this.CollectionLabelADC.Clear(); - this.CollectionLabelConstant.Clear(); + this.CollButtonLane.Clear(); + this.CollLabelWeight.Clear(); + this.CollLabelADC.Clear(); + this.CollLabelConstant.Clear(); + this.CollCalStatus.Clear(); - this.CollectionButtonLine.Add(this.buttonLine1); - this.CollectionButtonLine.Add(this.buttonLine2); - this.CollectionButtonLine.Add(this.buttonLine3); - this.CollectionButtonLine.Add(this.buttonLine4); - this.CollectionButtonLine.Add(this.buttonLine5); - this.CollectionButtonLine.Add(this.buttonLine6); + this.CollButtonLane.Add(this.buttonLine1); + this.CollButtonLane.Add(this.buttonLine2); + this.CollButtonLane.Add(this.buttonLine3); + this.CollButtonLane.Add(this.buttonLine4); + this.CollButtonLane.Add(this.buttonLine5); + this.CollButtonLane.Add(this.buttonLine6); - this.CollectionLabelWeight.Add(this.labelWeight1); - this.CollectionLabelWeight.Add(this.labelWeight2); - this.CollectionLabelWeight.Add(this.labelWeight3); - this.CollectionLabelWeight.Add(this.labelWeight4); - this.CollectionLabelWeight.Add(this.labelWeight5); - this.CollectionLabelWeight.Add(this.labelWeight6); + this.CollLabelWeight.Add(this.labelWeight1); + this.CollLabelWeight.Add(this.labelWeight2); + this.CollLabelWeight.Add(this.labelWeight3); + this.CollLabelWeight.Add(this.labelWeight4); + this.CollLabelWeight.Add(this.labelWeight5); + this.CollLabelWeight.Add(this.labelWeight6); - this.CollectionLabelADC.Add(this.labelADC1); - this.CollectionLabelADC.Add(this.labelADC2); - this.CollectionLabelADC.Add(this.labelADC3); - this.CollectionLabelADC.Add(this.labelADC4); - this.CollectionLabelADC.Add(this.labelADC5); - this.CollectionLabelADC.Add(this.labelADC6); + this.CollLabelADC.Add(this.labelADC1); + this.CollLabelADC.Add(this.labelADC2); + this.CollLabelADC.Add(this.labelADC3); + this.CollLabelADC.Add(this.labelADC4); + this.CollLabelADC.Add(this.labelADC5); + this.CollLabelADC.Add(this.labelADC6); - this.CollectionLabelConstant.Add(this.labelConstant1); - this.CollectionLabelConstant.Add(this.labelConstant2); - this.CollectionLabelConstant.Add(this.labelConstant3); - this.CollectionLabelConstant.Add(this.labelConstant4); - this.CollectionLabelConstant.Add(this.labelConstant5); - this.CollectionLabelConstant.Add(this.labelConstant6); + this.CollLabelConstant.Add(this.labelConstant1); + this.CollLabelConstant.Add(this.labelConstant2); + this.CollLabelConstant.Add(this.labelConstant3); + this.CollLabelConstant.Add(this.labelConstant4); + this.CollLabelConstant.Add(this.labelConstant5); + this.CollLabelConstant.Add(this.labelConstant6); + + for (int i = 0; i < 6; i++) + this.CollCalStatus.Add(new CalibrationStatus()); } private void InitilizeControls() { for (int i = 0; i < this.ParentForm.ParentForm.SystemConfig.EquipmentColumns; i++) { - this.CollectionLabelWeight[i].Text = "0.0"; - this.CollectionLabelADC[i].Text = "0.0"; - this.CollectionLabelConstant[i].Text = "0.0"; + this.CollLabelWeight[i].Text = "0.0"; + this.CollLabelADC[i].Text = "0.0"; + this.CollLabelConstant[i].Text = "0.0"; } } private void InitializeDesign() @@ -135,12 +138,13 @@ namespace INT69DB_2A.Controls public void DisplayRefresh() { - if (this.CollectionButtonLine == null || this.CollectionButtonLine.Count == 0) + if (this.CollButtonLane == null || this.CollButtonLane.Count == 0) return; - for (int i = 0; i < this.CollectionButtonLine.Count; i++) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - this.CollectionButtonLine[i].ButtonUp(); + this.CollButtonLane[i].ButtonUp(); + this.CollCalStatus[i].Initialize(); } } @@ -171,7 +175,7 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + foreach (SmartButton bt in this.CollButtonLane) { if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationBalance, bt.Tag.ToString()); @@ -181,6 +185,8 @@ namespace INT69DB_2A.Controls } public void CalibrationStart() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 시작합니다."); @@ -206,18 +212,30 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = false; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + this.CollCalStatus[i].Initialize(); + detail = string.Format("{0} Lane Start", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + + this.CollButtonLane[i].Enabled = false; } this.ParentForm.CalibrationButtonEnable(false, false, false); } public void CalibrationCancel() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 취소합니다"); @@ -239,12 +257,25 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = true; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[i].IsCancel == false) + { + this.CollCalStatus[i].IsCancel = true; + detail = string.Format("{0} Lane Cancel", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + } + + this.CollButtonLane[i].Enabled = true; } this.ParentForm.CalibrationButtonEnable(true, false, false); @@ -280,23 +311,25 @@ namespace INT69DB_2A.Controls } public void UpdateWeightDisplay(DataStore.EquipmentStatus status, Collection weights) { - if (this.CollectionLabelWeight == null || weights.Count < this.CollectionLabelWeight.Count || status == DataStore.EquipmentStatus.Start) + if (this.CollLabelWeight == null || weights.Count < this.CollLabelWeight.Count || status == DataStore.EquipmentStatus.Start) return; for (int i = 0; i < weights.Count; i++) { - if (this.CollectionButtonLine[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], true); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], true); } else { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], false); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], false); } } } - private void UpdateLabelWeight(int laneIndex, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) + private void UpdateLabelWeight(int index, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) { + string detail = ""; + switch (weightData.Status) { case DataStore.WeightStatus.CalNomal: @@ -305,7 +338,6 @@ namespace INT69DB_2A.Controls labelADC.Text = weightData.ADCValue; break; case DataStore.WeightStatus.CalStandby: - this.IsCalibrationFinish = false; if (rbChecked == true) { // 분동중량 표시 @@ -373,17 +405,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsFinish == false) + { + this.CollCalStatus[index].IsFinish = true; + detail = string.Format("{0} Lane Success", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.FinishColor; labelADC.Text = weightData.ADCValue; - if (this.IsCalibrationFinish == false) - { - this.IsCalibrationFinish = true; - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Success"); - } break; case DataStore.WeightStatus.CalError: if (rbChecked == true) @@ -413,14 +451,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsError == false) + { + this.CollCalStatus[index].IsError = true; + detail = string.Format("{0} Lane Error", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.NormalColor; labelADC.Text = weightData.ADCValue; - - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Fail"); break; default: break; @@ -446,7 +493,7 @@ namespace INT69DB_2A.Controls else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { this.ParentForm.listBoxHelp.Items.Add("Calibration"); - this.ParentForm.listBoxHelp.Items.Add("After selecting line, "); + this.ParentForm.listBoxHelp.Items.Add("After selecting lane, "); this.ParentForm.listBoxHelp.Items.Add("push the [Start] button."); } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) diff --git a/INT69DB_2A/Controls/ControlCalibration7.cs b/INT69DB_2A/Controls/ControlCalibration7.cs index 21bff5f..f678520 100644 --- a/INT69DB_2A/Controls/ControlCalibration7.cs +++ b/INT69DB_2A/Controls/ControlCalibration7.cs @@ -19,16 +19,14 @@ namespace INT69DB_2A.Controls #region Field private FormCalibration m_ParentForm; - // 중량 조정이 완료 되었는지 확인하는 Flag - private bool IsCalibrationFinish; - private Color NormalColor = Color.Black; private Color FinishColor = Color.Blue; - private Collection CollectionButtonLine; - private Collection CollectionLabelWeight; - private Collection CollectionLabelADC; - private Collection CollectionLabelConstant; + private Collection CollButtonLane; + private Collection CollLabelWeight; + private Collection CollLabelADC; + private Collection CollLabelConstant; + private Collection CollCalStatus; #endregion #region Constructor @@ -56,55 +54,60 @@ namespace INT69DB_2A.Controls #region Method private void CreateCollection() { - this.CollectionButtonLine = new Collection(); - this.CollectionLabelWeight = new Collection(); - this.CollectionLabelADC = new Collection(); - this.CollectionLabelConstant = new Collection(); + this.CollButtonLane = new Collection(); + this.CollLabelWeight = new Collection(); + this.CollLabelADC = new Collection(); + this.CollLabelConstant = new Collection(); + this.CollCalStatus = new Collection(); - this.CollectionButtonLine.Clear(); - this.CollectionLabelWeight.Clear(); - this.CollectionLabelADC.Clear(); - this.CollectionLabelConstant.Clear(); + this.CollButtonLane.Clear(); + this.CollLabelWeight.Clear(); + this.CollLabelADC.Clear(); + this.CollLabelConstant.Clear(); + this.CollCalStatus.Clear(); - this.CollectionButtonLine.Add(this.buttonLine1); - this.CollectionButtonLine.Add(this.buttonLine2); - this.CollectionButtonLine.Add(this.buttonLine3); - this.CollectionButtonLine.Add(this.buttonLine4); - this.CollectionButtonLine.Add(this.buttonLine5); - this.CollectionButtonLine.Add(this.buttonLine6); - this.CollectionButtonLine.Add(this.buttonLine7); + this.CollButtonLane.Add(this.buttonLine1); + this.CollButtonLane.Add(this.buttonLine2); + this.CollButtonLane.Add(this.buttonLine3); + this.CollButtonLane.Add(this.buttonLine4); + this.CollButtonLane.Add(this.buttonLine5); + this.CollButtonLane.Add(this.buttonLine6); + this.CollButtonLane.Add(this.buttonLine7); - this.CollectionLabelWeight.Add(this.labelWeight1); - this.CollectionLabelWeight.Add(this.labelWeight2); - this.CollectionLabelWeight.Add(this.labelWeight3); - this.CollectionLabelWeight.Add(this.labelWeight4); - this.CollectionLabelWeight.Add(this.labelWeight5); - this.CollectionLabelWeight.Add(this.labelWeight6); - this.CollectionLabelWeight.Add(this.labelWeight7); + this.CollLabelWeight.Add(this.labelWeight1); + this.CollLabelWeight.Add(this.labelWeight2); + this.CollLabelWeight.Add(this.labelWeight3); + this.CollLabelWeight.Add(this.labelWeight4); + this.CollLabelWeight.Add(this.labelWeight5); + this.CollLabelWeight.Add(this.labelWeight6); + this.CollLabelWeight.Add(this.labelWeight7); - this.CollectionLabelADC.Add(this.labelADC1); - this.CollectionLabelADC.Add(this.labelADC2); - this.CollectionLabelADC.Add(this.labelADC3); - this.CollectionLabelADC.Add(this.labelADC4); - this.CollectionLabelADC.Add(this.labelADC5); - this.CollectionLabelADC.Add(this.labelADC6); - this.CollectionLabelADC.Add(this.labelADC7); + this.CollLabelADC.Add(this.labelADC1); + this.CollLabelADC.Add(this.labelADC2); + this.CollLabelADC.Add(this.labelADC3); + this.CollLabelADC.Add(this.labelADC4); + this.CollLabelADC.Add(this.labelADC5); + this.CollLabelADC.Add(this.labelADC6); + this.CollLabelADC.Add(this.labelADC7); - this.CollectionLabelConstant.Add(this.labelConstant1); - this.CollectionLabelConstant.Add(this.labelConstant2); - this.CollectionLabelConstant.Add(this.labelConstant3); - this.CollectionLabelConstant.Add(this.labelConstant4); - this.CollectionLabelConstant.Add(this.labelConstant5); - this.CollectionLabelConstant.Add(this.labelConstant6); - this.CollectionLabelConstant.Add(this.labelConstant7); + this.CollLabelConstant.Add(this.labelConstant1); + this.CollLabelConstant.Add(this.labelConstant2); + this.CollLabelConstant.Add(this.labelConstant3); + this.CollLabelConstant.Add(this.labelConstant4); + this.CollLabelConstant.Add(this.labelConstant5); + this.CollLabelConstant.Add(this.labelConstant6); + this.CollLabelConstant.Add(this.labelConstant7); + + for (int i = 0; i < 7; i++) + this.CollCalStatus.Add(new CalibrationStatus()); } private void InitilizeControls() { for (int i = 0; i < this.ParentForm.ParentForm.SystemConfig.EquipmentColumns; i++) { - this.CollectionLabelWeight[i].Text = "0.0"; - this.CollectionLabelADC[i].Text = "0.0"; - this.CollectionLabelConstant[i].Text = "0.0"; + this.CollLabelWeight[i].Text = "0.0"; + this.CollLabelADC[i].Text = "0.0"; + this.CollLabelConstant[i].Text = "0.0"; } } private void InitializeDesign() @@ -135,12 +138,13 @@ namespace INT69DB_2A.Controls public void DisplayRefresh() { - if (this.CollectionButtonLine == null || this.CollectionButtonLine.Count == 0) + if (this.CollButtonLane == null || this.CollButtonLane.Count == 0) return; - for (int i = 0; i < this.CollectionButtonLine.Count; i++) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - this.CollectionButtonLine[i].ButtonUp(); + this.CollButtonLane[i].ButtonUp(); + this.CollCalStatus[i].Initialize(); } } @@ -171,7 +175,7 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + foreach (SmartButton bt in this.CollButtonLane) { if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationBalance, bt.Tag.ToString()); @@ -181,6 +185,8 @@ namespace INT69DB_2A.Controls } public void CalibrationStart() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 시작합니다."); @@ -206,18 +212,31 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = false; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + this.CollCalStatus[i].Initialize(); + detail = string.Format("{0} Lane Start", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + + this.CollButtonLane[i].Enabled = false; } + this.ParentForm.CalibrationButtonEnable(false, false, false); } public void CalibrationCancel() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 취소합니다"); @@ -239,12 +258,25 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = true; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[i].IsCancel == false) + { + this.CollCalStatus[i].IsCancel = true; + detail = string.Format("{0} Lane Cancel", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + } + + this.CollButtonLane[i].Enabled = true; } this.ParentForm.CalibrationButtonEnable(true, false, false); @@ -284,23 +316,25 @@ namespace INT69DB_2A.Controls } public void UpdateWeightDisplay(DataStore.EquipmentStatus status, Collection weights) { - if (this.CollectionLabelWeight == null || weights.Count < this.CollectionLabelWeight.Count || status == DataStore.EquipmentStatus.Start) + if (this.CollLabelWeight == null || weights.Count < this.CollLabelWeight.Count || status == DataStore.EquipmentStatus.Start) return; for (int i = 0; i < weights.Count; i++) { - if (this.CollectionButtonLine[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], true); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], true); } else { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], false); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], false); } } } - private void UpdateLabelWeight(int laneIndex, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) + private void UpdateLabelWeight(int index, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) { + string detail = ""; + switch (weightData.Status) { case DataStore.WeightStatus.CalNomal: @@ -309,7 +343,6 @@ namespace INT69DB_2A.Controls labelADC.Text = weightData.ADCValue; break; case DataStore.WeightStatus.CalStandby: - this.IsCalibrationFinish = false; if (rbChecked == true) { // 분동중량 표시 @@ -377,17 +410,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsFinish == false) + { + this.CollCalStatus[index].IsFinish = true; + detail = string.Format("{0} Lane Success", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.FinishColor; labelADC.Text = weightData.ADCValue; - if (this.IsCalibrationFinish == false) - { - this.IsCalibrationFinish = true; - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Success"); - } break; case DataStore.WeightStatus.CalError: if (rbChecked == true) @@ -417,14 +456,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsError == false) + { + this.CollCalStatus[index].IsError = true; + detail = string.Format("{0} Lane Error", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.NormalColor; labelADC.Text = weightData.ADCValue; - - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Fail"); break; default: break; @@ -450,7 +498,7 @@ namespace INT69DB_2A.Controls else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { this.ParentForm.listBoxHelp.Items.Add("Calibration"); - this.ParentForm.listBoxHelp.Items.Add("After selecting line, "); + this.ParentForm.listBoxHelp.Items.Add("After selecting lane, "); this.ParentForm.listBoxHelp.Items.Add("push the [Start] button."); } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) diff --git a/INT69DB_2A/Controls/ControlCalibration8.cs b/INT69DB_2A/Controls/ControlCalibration8.cs index 17177e6..10804fb 100644 --- a/INT69DB_2A/Controls/ControlCalibration8.cs +++ b/INT69DB_2A/Controls/ControlCalibration8.cs @@ -19,16 +19,14 @@ namespace INT69DB_2A.Controls #region Field private FormCalibration m_ParentForm; - // 중량 조정이 완료 되었는지 확인하는 Flag - private bool IsCalibrationFinish; - private Color NormalColor = Color.Black; private Color FinishColor = Color.Blue; - private Collection CollectionButtonLine; - private Collection CollectionLabelWeight; - private Collection CollectionLabelADC; - private Collection CollectionLabelConstant; + private Collection CollButtonLane; + private Collection CollLabelWeight; + private Collection CollLabelADC; + private Collection CollLabelConstant; + private Collection CollCalStatus; #endregion #region Constructor @@ -56,59 +54,64 @@ namespace INT69DB_2A.Controls #region Method private void CreateCollection() { - this.CollectionButtonLine = new Collection(); - this.CollectionLabelWeight = new Collection(); - this.CollectionLabelADC = new Collection(); - this.CollectionLabelConstant = new Collection(); + this.CollButtonLane = new Collection(); + this.CollLabelWeight = new Collection(); + this.CollLabelADC = new Collection(); + this.CollLabelConstant = new Collection(); + this.CollCalStatus = new Collection(); - this.CollectionButtonLine.Clear(); - this.CollectionLabelWeight.Clear(); - this.CollectionLabelADC.Clear(); - this.CollectionLabelConstant.Clear(); + this.CollButtonLane.Clear(); + this.CollLabelWeight.Clear(); + this.CollLabelADC.Clear(); + this.CollLabelConstant.Clear(); + this.CollCalStatus.Clear(); - this.CollectionButtonLine.Add(this.buttonLine1); - this.CollectionButtonLine.Add(this.buttonLine2); - this.CollectionButtonLine.Add(this.buttonLine3); - this.CollectionButtonLine.Add(this.buttonLine4); - this.CollectionButtonLine.Add(this.buttonLine5); - this.CollectionButtonLine.Add(this.buttonLine6); - this.CollectionButtonLine.Add(this.buttonLine7); - this.CollectionButtonLine.Add(this.buttonLine8); + this.CollButtonLane.Add(this.buttonLine1); + this.CollButtonLane.Add(this.buttonLine2); + this.CollButtonLane.Add(this.buttonLine3); + this.CollButtonLane.Add(this.buttonLine4); + this.CollButtonLane.Add(this.buttonLine5); + this.CollButtonLane.Add(this.buttonLine6); + this.CollButtonLane.Add(this.buttonLine7); + this.CollButtonLane.Add(this.buttonLine8); - this.CollectionLabelWeight.Add(this.labelWeight1); - this.CollectionLabelWeight.Add(this.labelWeight2); - this.CollectionLabelWeight.Add(this.labelWeight3); - this.CollectionLabelWeight.Add(this.labelWeight4); - this.CollectionLabelWeight.Add(this.labelWeight5); - this.CollectionLabelWeight.Add(this.labelWeight6); - this.CollectionLabelWeight.Add(this.labelWeight7); - this.CollectionLabelWeight.Add(this.labelWeight8); + this.CollLabelWeight.Add(this.labelWeight1); + this.CollLabelWeight.Add(this.labelWeight2); + this.CollLabelWeight.Add(this.labelWeight3); + this.CollLabelWeight.Add(this.labelWeight4); + this.CollLabelWeight.Add(this.labelWeight5); + this.CollLabelWeight.Add(this.labelWeight6); + this.CollLabelWeight.Add(this.labelWeight7); + this.CollLabelWeight.Add(this.labelWeight8); - this.CollectionLabelADC.Add(this.labelADC1); - this.CollectionLabelADC.Add(this.labelADC2); - this.CollectionLabelADC.Add(this.labelADC3); - this.CollectionLabelADC.Add(this.labelADC4); - this.CollectionLabelADC.Add(this.labelADC5); - this.CollectionLabelADC.Add(this.labelADC6); - this.CollectionLabelADC.Add(this.labelADC7); - this.CollectionLabelADC.Add(this.labelADC8); + this.CollLabelADC.Add(this.labelADC1); + this.CollLabelADC.Add(this.labelADC2); + this.CollLabelADC.Add(this.labelADC3); + this.CollLabelADC.Add(this.labelADC4); + this.CollLabelADC.Add(this.labelADC5); + this.CollLabelADC.Add(this.labelADC6); + this.CollLabelADC.Add(this.labelADC7); + this.CollLabelADC.Add(this.labelADC8); - this.CollectionLabelConstant.Add(this.labelConstant1); - this.CollectionLabelConstant.Add(this.labelConstant2); - this.CollectionLabelConstant.Add(this.labelConstant3); - this.CollectionLabelConstant.Add(this.labelConstant4); - this.CollectionLabelConstant.Add(this.labelConstant5); - this.CollectionLabelConstant.Add(this.labelConstant6); - this.CollectionLabelConstant.Add(this.labelConstant7); - this.CollectionLabelConstant.Add(this.labelConstant8); + this.CollLabelConstant.Add(this.labelConstant1); + this.CollLabelConstant.Add(this.labelConstant2); + this.CollLabelConstant.Add(this.labelConstant3); + this.CollLabelConstant.Add(this.labelConstant4); + this.CollLabelConstant.Add(this.labelConstant5); + this.CollLabelConstant.Add(this.labelConstant6); + this.CollLabelConstant.Add(this.labelConstant7); + this.CollLabelConstant.Add(this.labelConstant8); + + for (int i = 0; i < 8; i++) + this.CollCalStatus.Add(new CalibrationStatus()); } private void InitilizeControls() { for (int i = 0; i < this.ParentForm.ParentForm.SystemConfig.EquipmentColumns; i++) { - this.CollectionLabelWeight[i].Text = "0.0"; - this.CollectionLabelADC[i].Text = "0.0"; - this.CollectionLabelConstant[i].Text = "0.0"; + this.CollLabelWeight[i].Text = "0.0"; + this.CollLabelADC[i].Text = "0.0"; + this.CollLabelConstant[i].Text = "0.0"; } } private void InitializeDesign() @@ -139,12 +142,13 @@ namespace INT69DB_2A.Controls public void DisplayRefresh() { - if (this.CollectionButtonLine == null || this.CollectionButtonLine.Count == 0) + if (this.CollButtonLane == null || this.CollButtonLane.Count == 0) return; - for (int i = 0; i < this.CollectionButtonLine.Count; i++) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - this.CollectionButtonLine[i].ButtonUp(); + this.CollButtonLane[i].ButtonUp(); + this.CollCalStatus[i].Initialize(); } } @@ -175,7 +179,7 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + foreach (SmartButton bt in this.CollButtonLane) { if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationBalance, bt.Tag.ToString()); @@ -185,6 +189,8 @@ namespace INT69DB_2A.Controls } public void CalibrationStart() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 시작합니다."); @@ -210,18 +216,30 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationStart, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = false; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + this.CollCalStatus[i].Initialize(); + detail = string.Format("{0} Lane Start", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + + this.CollButtonLane[i].Enabled = false; } this.ParentForm.CalibrationButtonEnable(false, false, false); } public void CalibrationCancel() { + string detail = ""; + if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { this.ParentForm.listBoxHelp.Items.Add("중량조정을 취소합니다"); @@ -243,12 +261,25 @@ namespace INT69DB_2A.Controls } - foreach (SmartButton bt in this.CollectionButtonLine) + for (int i = 0; i < this.CollButtonLane.Count; i++) { - if (bt.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, bt.Tag.ToString()); + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.ParentForm.TransferData(CommunicationCommand.CalibrationCancel, this.CollButtonLane[i].Tag.ToString()); - bt.Enabled = true; + // Part 11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[i].IsCancel == false) + { + this.CollCalStatus[i].IsCancel = true; + detail = string.Format("{0} Lane Cancel", i + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } + } + + this.CollButtonLane[i].Enabled = true; } this.ParentForm.CalibrationButtonEnable(true, false, false); @@ -292,23 +323,25 @@ namespace INT69DB_2A.Controls } public void UpdateWeightDisplay(DataStore.EquipmentStatus status, Collection weights) { - if (this.CollectionLabelWeight == null || weights.Count < this.CollectionLabelWeight.Count || status == DataStore.EquipmentStatus.Start) + if (this.CollLabelWeight == null || weights.Count < this.CollLabelWeight.Count || status == DataStore.EquipmentStatus.Start) return; for (int i = 0; i < weights.Count; i++) { - if (this.CollectionButtonLine[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) + if (this.CollButtonLane[i].ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], true); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], true); } else { - this.UpdateLabelWeight(i, this.CollectionLabelWeight[i], this.CollectionLabelADC[i], weights[i], false); + this.UpdateLabelWeight(i, this.CollLabelWeight[i], this.CollLabelADC[i], weights[i], false); } } } - private void UpdateLabelWeight(int laneIndex, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) + private void UpdateLabelWeight(int index, SmartLabel labelWeight, SmartLabel labelADC, WeightData weightData, bool rbChecked) { + string detail = ""; + switch (weightData.Status) { case DataStore.WeightStatus.CalNomal: @@ -317,7 +350,6 @@ namespace INT69DB_2A.Controls labelADC.Text = weightData.ADCValue; break; case DataStore.WeightStatus.CalStandby: - this.IsCalibrationFinish = false; if (rbChecked == true) { // 분동중량 표시 @@ -385,17 +417,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsFinish == false) + { + this.CollCalStatus[index].IsFinish = true; + detail = string.Format("{0} Lane Success", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.FinishColor; labelADC.Text = weightData.ADCValue; - if (this.IsCalibrationFinish == false) - { - this.IsCalibrationFinish = true; - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Success"); - } break; case DataStore.WeightStatus.CalError: if (rbChecked == true) @@ -425,14 +463,23 @@ namespace INT69DB_2A.Controls } this.ParentForm.CalibrationButtonEnable(true, false, false); - foreach (SmartX.SmartButton bt in this.CollectionButtonLine) + foreach (SmartX.SmartButton bt in this.CollButtonLane) bt.Enabled = true; + + // Part11 + if (this.ParentForm.ParentForm.SystemConfig.IsPart11 == true) + { + if (this.CollCalStatus[index].IsError == false) + { + this.CollCalStatus[index].IsError = true; + detail = string.Format("{0} Lane Error", index + 1); + this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, detail); + } + } } labelWeight.Text = Helper.DoubleToString(weightData.Weight, this.ParentForm.ParentForm.SystemConfig.DecimalPlaces); labelWeight.ForeColor = this.NormalColor; labelADC.Text = weightData.ADCValue; - - this.ParentForm.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.Calibration, (laneIndex + 1).ToString() + " Calibration Fail"); break; default: break; @@ -458,7 +505,7 @@ namespace INT69DB_2A.Controls else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { this.ParentForm.listBoxHelp.Items.Add("Calibration"); - this.ParentForm.listBoxHelp.Items.Add("After selecting line, "); + this.ParentForm.listBoxHelp.Items.Add("After selecting lane, "); this.ParentForm.listBoxHelp.Items.Add("push the [Start] button."); } else if (this.ParentForm.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) diff --git a/INT69DB_2A/DataStore.cs b/INT69DB_2A/DataStore.cs index 940f694..d66a65c 100644 --- a/INT69DB_2A/DataStore.cs +++ b/INT69DB_2A/DataStore.cs @@ -38,8 +38,8 @@ namespace INT69DB_2A FormUserGroupEditor, FormOption, // 하단 세 항목은 위치를 맨 뒤로 고정할 것 - FormDataStatistics, FormDataBackup, + FormDataStatistics, FormDataViewer, }; @@ -412,6 +412,7 @@ namespace INT69DB_2A DataBackup, GroupEditor, + ATPC_Reset, // 정량 알람 카운터 리셋 Bypass, Update, Print, @@ -447,6 +448,11 @@ namespace INT69DB_2A ChangeName, ChangeLOT, + ACNC_Count, + ACNC_Activate, + ATPC_Count, + ATPC_Activate, + JudgmentFilter, JudgmentDelayTime, JudgmentDoubleDelayTime, @@ -583,6 +589,9 @@ namespace INT69DB_2A // 영점 public static readonly string Zero = "Cbz00"; + // 알람 - 불량알람(펄스) + public static readonly string AlarmPulseNG = "Cac00"; + // 판정 - bypass 1회 public static readonly string BypassOnce = "Cjb00"; // 판정 - byNG 1회 @@ -1192,6 +1201,11 @@ namespace INT69DB_2A private string m_User_Level3_Name; private int m_DataStoragePeriod; private int m_AutomaticLogout; + + private bool m_IsAlarmContinuousNGEnable; + private bool m_IsAlarmTotalPassCntEnable; + private int m_AlarmContinuousNG; + private int m_AlarmTotalPassCnt; #endregion #region Constructor @@ -1473,6 +1487,27 @@ namespace INT69DB_2A get { return this.m_AutomaticLogout; } set { this.m_AutomaticLogout = value; } } + + public bool IsAlarmContinuousNGEnable + { + get { return this.m_IsAlarmContinuousNGEnable; } + set { this.m_IsAlarmContinuousNGEnable = value; } + } + public bool IsAlarmTotalPassCntEnable + { + get { return this.m_IsAlarmTotalPassCntEnable; } + set { this.m_IsAlarmTotalPassCntEnable = value; } + } + public int AlarmContinuousNG + { + get { return this.m_AlarmContinuousNG; } + set { this.m_AlarmContinuousNG = value; } + } + public int AlarmTotalPassCnt + { + get { return this.m_AlarmTotalPassCnt; } + set { this.m_AlarmTotalPassCnt = value; } + } #endregion #region Method @@ -1535,6 +1570,11 @@ namespace INT69DB_2A this.User_Level3_Name = "Level 3"; this.DataStoragePeriod = 36; this.AutomaticLogout = 90; + + this.IsAlarmContinuousNGEnable = false; + this.IsAlarmTotalPassCntEnable = false; + this.AlarmContinuousNG = 5; + this.AlarmTotalPassCnt = 100; } #endregion } @@ -1618,8 +1658,8 @@ namespace INT69DB_2A public bool DummyBool16; public bool DummyBool17; public bool DummyBool18; - public bool DummyBool19; - public bool DummyBool20; + public bool IsAlarmContinuousNGEnable; + public bool IsAlarmTotalPassCntEnable; public int DummyInt1; public int DummyInt2; @@ -1628,8 +1668,8 @@ namespace INT69DB_2A public int DummyInt5; public int DummyInt6; public int DummyInt7; - public int DummyInt8; - public int DummyInt9; + public int AlarmContinuousNG; + public int AlarmTotalPassCnt; public int ModbusTcpStartAddress; public int ModbusRtuSlaveID; public int ModbusTcpAddress1; @@ -1845,6 +1885,9 @@ namespace INT69DB_2A private string m_WeightString; private ushort m_UpdateCount; + + private int m_ContinuousNG; + private bool m_IsContinuousNG; #endregion #region Constructor @@ -1958,6 +2001,9 @@ namespace INT69DB_2A this.UnderCount++; else this.UnderCount = 0; + + if (this.IsContinuousNG != true) + this.IsContinuousNG = true; } else if (value == DataStore.JudgmentStatus.Pass) { @@ -1965,6 +2011,12 @@ namespace INT69DB_2A this.PassCount++; else this.PassCount = 0; + + if (this.IsContinuousNG != false) + { + this.IsContinuousNG = false; + this.ContinuousNG = 0; + } } else if (value == DataStore.JudgmentStatus.Over) { @@ -1972,6 +2024,9 @@ namespace INT69DB_2A this.OverCount++; else this.OverCount = 0; + + if (this.IsContinuousNG != true) + this.IsContinuousNG = true; } else { @@ -1979,6 +2034,9 @@ namespace INT69DB_2A this.ExNGCount++; else this.ExNGCount = 0; + + if (this.IsContinuousNG != true) + this.IsContinuousNG = true; } } } @@ -2018,6 +2076,20 @@ namespace INT69DB_2A get { return this.m_UpdateCount; } set { this.m_UpdateCount = value; } } + + /// + /// 연속NG 카운팅 + /// + public int ContinuousNG + { + get { return this.m_ContinuousNG; } + set { this.m_ContinuousNG = value; } + } + public bool IsContinuousNG + { + get { return this.m_IsContinuousNG; } + set { this.m_IsContinuousNG = value; } + } #endregion #region Mehtod @@ -2043,6 +2115,8 @@ namespace INT69DB_2A this.ProductionSpeed = 0; this.WeightString = "0"; this.UpdateCount = 0; + this.IsContinuousNG = false; + this.ContinuousNG = 0; } private void ProductionSpeedCalculation() @@ -2352,7 +2426,7 @@ namespace INT69DB_2A } #endregion - #region CalibraqtionItem + #region CalibrationItem public class CalibrationItem { #region Field @@ -3328,7 +3402,7 @@ namespace INT69DB_2A ret = 0.0; else { - sValue = string.Format("{0:0.0}", ((double)this.ExNgTotalCount / (double)this.TotalCount) * 100); + sValue = string.Format("{0:0.00}", ((double)this.ExNgTotalCount / (double)this.TotalCount) * 100.0); ret = double.Parse(sValue); } @@ -3667,6 +3741,149 @@ namespace INT69DB_2A } #endregion + #region Counter + public class Counter + { + #region Field + private int m_EquipmentColumn; + private int m_SettingCount; + + private int m_CurrentTotalPass; + private int m_BeforeTotalPass; + private int m_BeforeLackCNT; + #endregion + + #region Constructor + public Counter(int column, int setCNT) + { + this.EquipmentColumn = column; + this.SettingCount = setCNT; + + this.Initialize(); + } + #endregion + + #region Property + public int EquipmentColumn + { + get { return this.m_EquipmentColumn; } + private set { this.m_EquipmentColumn = value; } + } + public int SettingCount + { + get { return this.m_SettingCount; } + set { this.m_SettingCount = value; } + } + + public int CurrentTotalPass + { + get { return this.m_CurrentTotalPass; } + set { this.m_CurrentTotalPass = value; } + } + public int CurrentLackCNT + { + get + { + return this.SettingCount - this.CurrentTotalPass; + } + } + public int BeforeTotalPass + { + get { return this.m_BeforeTotalPass; } + private set { this.m_BeforeTotalPass = value; } + } + public int BeforeLackCNT + { + get { return this.m_BeforeLackCNT; } + set { this.m_BeforeLackCNT = value; } + } + #endregion + + #region Method + private void Initialize() + { + this.Clear(); + } + + public void Clear() + { + this.CurrentTotalPass = 0; + this.BeforeTotalPass = 0; + this.BeforeLackCNT = 0; + } + public bool SetCount(DataStore.JudgmentStatus status) + { + bool ret = false; + + if (status == DataStore.JudgmentStatus.Pass) + this.CurrentTotalPass++; + + if (this.CurrentLackCNT > this.SettingCount - this.EquipmentColumn - 1 || this.CurrentTotalPass == this.SettingCount) + { + ret = true; + + + } + else + ret = false; + + return ret; + } + public bool SetCountStic1(Collection datas) + { + bool ret = false; + + for (int i = 0; i < datas.Count; i++) + { + if (datas[i].JudgmentStatus == DataStore.JudgmentStatus.Pass) + this.CurrentTotalPass++; + } + + if (this.CurrentLackCNT <= this.EquipmentColumn - 1 || this.CurrentTotalPass == this.SettingCount) + { + ret = true; + + this.BeforeTotalPass = this.CurrentTotalPass; + this.BeforeLackCNT = this.SettingCount - this.CurrentTotalPass; + + this.CurrentTotalPass = 0; + } + else + ret = false; + + return ret; + } + public bool SetCountStic2(Collection datas) + { + bool ret = false; + + for (int i = 0; i < datas.Count; i++) + { + if (datas[i].IsUpdate == true) + { + if (datas[i].JudgmentStatus == DataStore.JudgmentStatus.Pass) + this.CurrentTotalPass++; + } + } + + if (this.CurrentLackCNT <= this.EquipmentColumn - 1 || this.CurrentTotalPass == this.SettingCount) + { + ret = true; + + this.BeforeTotalPass = this.CurrentTotalPass; + this.BeforeLackCNT = this.SettingCount - this.CurrentTotalPass; + + this.CurrentTotalPass = 0; + } + else + ret = false; + + return ret; + } + #endregion + } + #endregion + #region DataViewerFilter public class DataViewerFilter { @@ -3922,4 +4139,49 @@ namespace INT69DB_2A public DateTime TimeStamp; } #endregion + + #region CalibrationStatus + public class CalibrationStatus + { + #region Field + private bool m_IsFinish; + private bool m_IsError; + private bool m_IsCancel; + #endregion + + #region Constructor + public CalibrationStatus() + { + this.Initialize(); + } + #endregion + + #region Property + public bool IsFinish + { + get { return this.m_IsFinish; } + set { this.m_IsFinish = value; } + } + public bool IsError + { + get { return this.m_IsError; } + set { this.m_IsError = value; } + } + public bool IsCancel + { + get { return this.m_IsCancel; } + set { this.m_IsCancel = value; } + } + #endregion + + #region Method + public void Initialize() + { + this.IsFinish = false; + this.IsError = false; + this.IsCancel = false; + } + #endregion + } + #endregion } diff --git a/INT69DB_2A/DialogForms/DialogFormMessage.cs b/INT69DB_2A/DialogForms/DialogFormMessage.cs index 029e29c..f549f87 100644 --- a/INT69DB_2A/DialogForms/DialogFormMessage.cs +++ b/INT69DB_2A/DialogForms/DialogFormMessage.cs @@ -20,39 +20,36 @@ namespace INT69DB_2A.DialogForms { InitializeComponent(); } - public DialogFormMessage(string str, DataStore.LanguageID language) + public DialogFormMessage(string str, DataStore.LanguageID language, string code) { InitializeComponent(); - this.labelErrorCode.Text = ""; + this.labelErrorCode.Text = code; this.labelMessage1.Text = ""; this.labelMessage2.Text = ""; - if (language == DataStore.LanguageID.Korean) + switch (language) { - this.labelErrorCode.Text = "Notice"; - this.labelMessage1.Text = str + "개의 파일이 백업되었습니다."; - } - else if (language == DataStore.LanguageID.English) - { - this.labelErrorCode.Text = "Notice"; - this.labelMessage1.Text = str + " files are backed up"; - } - else if (language == DataStore.LanguageID.Chinese) - { - this.buttonOK.Text = "好"; - - this.labelErrorCode.Text = "通知"; - this.labelMessage1.Text = str + " 个文件已备份"; - } - else if (language == DataStore.LanguageID.Czech) - { - this.labelErrorCode.Text = "Upozornění"; - this.labelMessage1.Text = "Těchto " + str + " soubory byly zálohovány."; - } - else - { - + case DataStore.LanguageID.Korean: + this.labelMessage1.Text = str + "개의 파일이 백업되었습니다."; + break; + case DataStore.LanguageID.English: + this.labelMessage1.Text = str + " files are backed up"; + break; + case DataStore.LanguageID.Chinese: + this.buttonOK.Text = "好"; + this.labelMessage1.Text = str + " 个文件已备份"; + break; + case DataStore.LanguageID.Czech: + this.labelMessage1.Text = "Těchto " + str + " soubory byly zálohovány."; + break; + case DataStore.LanguageID.German: + break; + case DataStore.LanguageID.Russian: + break; + default: + this.labelMessage1.Text = str + "개의 파일이 백업되었습니다."; + break; } } // 01 diff --git a/INT69DB_2A/Forms/FormConfiguration.Designer.cs b/INT69DB_2A/Forms/FormConfiguration.Designer.cs index 61836fb..69579b0 100644 --- a/INT69DB_2A/Forms/FormConfiguration.Designer.cs +++ b/INT69DB_2A/Forms/FormConfiguration.Designer.cs @@ -56,9 +56,17 @@ this.pictureBoxFormIcon = new System.Windows.Forms.PictureBox(); this.labelTitle = new SmartX.SmartLabel(); this.buttonScreen = new SmartX.SmartButton(); + this.groupBoxCount = new SmartX.SmartGroupBox(); + this.buttonAlarmTotalPassCount = new SmartX.SmartButton(); + this.labelStaticATPC = new SmartX.SmartLabel(); + this.labelAlarmTotalPassCount = new SmartX.SmartLabel(); + this.buttonAlarmContinuousNG = new SmartX.SmartButton(); + this.labelStaticAlarmContinuousNG = new SmartX.SmartLabel(); + this.labelAlarmContinuousNG = new SmartX.SmartLabel(); ((System.ComponentModel.ISupportInitialize)(this.smartForm1)).BeginInit(); this.groupBoxOption.SuspendLayout(); this.groupBoxAutoZero.SuspendLayout(); + this.groupBoxCount.SuspendLayout(); this.SuspendLayout(); // // smartForm1 @@ -123,7 +131,7 @@ this.groupBoxOption.Controls.Add(this.labelStaticChattering); this.groupBoxOption.Controls.Add(this.buttonDoubleEnter); this.groupBoxOption.Controls.Add(this.labelStaticDoubleEntry); - this.groupBoxOption.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.groupBoxOption.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); this.groupBoxOption.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(54)))), ((int)(((byte)(66)))), ((int)(((byte)(44))))); this.groupBoxOption.FrameLineColor2 = System.Drawing.Color.Black; this.groupBoxOption.FrameLineThickness = 1; @@ -248,7 +256,7 @@ this.labelStaticRelayOnTime.BackPictureBox2 = null; this.labelStaticRelayOnTime.BorderColor = System.Drawing.Color.Black; this.labelStaticRelayOnTime.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticRelayOnTime.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticRelayOnTime.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticRelayOnTime.InitVisible = true; this.labelStaticRelayOnTime.LineSpacing = 0F; this.labelStaticRelayOnTime.Location = new System.Drawing.Point(19, 141); @@ -267,7 +275,7 @@ this.labelStaticBypass.BackPictureBox2 = null; this.labelStaticBypass.BorderColor = System.Drawing.Color.Black; this.labelStaticBypass.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticBypass.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticBypass.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticBypass.InitVisible = true; this.labelStaticBypass.LineSpacing = 0F; this.labelStaticBypass.Location = new System.Drawing.Point(19, 215); @@ -286,7 +294,7 @@ this.labelStaticDecimalPoint.BackPictureBox2 = null; this.labelStaticDecimalPoint.BorderColor = System.Drawing.Color.Black; this.labelStaticDecimalPoint.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticDecimalPoint.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticDecimalPoint.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticDecimalPoint.InitVisible = true; this.labelStaticDecimalPoint.LineSpacing = 0F; this.labelStaticDecimalPoint.Location = new System.Drawing.Point(19, 179); @@ -305,7 +313,7 @@ this.labelStaticBuzzerOnTime.BackPictureBox2 = null; this.labelStaticBuzzerOnTime.BorderColor = System.Drawing.Color.Black; this.labelStaticBuzzerOnTime.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticBuzzerOnTime.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticBuzzerOnTime.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticBuzzerOnTime.InitVisible = true; this.labelStaticBuzzerOnTime.LineSpacing = 0F; this.labelStaticBuzzerOnTime.Location = new System.Drawing.Point(19, 105); @@ -324,7 +332,7 @@ this.labelStaticChattering.BackPictureBox2 = null; this.labelStaticChattering.BorderColor = System.Drawing.Color.Black; this.labelStaticChattering.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticChattering.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticChattering.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticChattering.InitVisible = true; this.labelStaticChattering.LineSpacing = 0F; this.labelStaticChattering.Location = new System.Drawing.Point(19, 69); @@ -374,7 +382,7 @@ this.labelStaticDoubleEntry.BackPictureBox2 = null; this.labelStaticDoubleEntry.BorderColor = System.Drawing.Color.Black; this.labelStaticDoubleEntry.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticDoubleEntry.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticDoubleEntry.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticDoubleEntry.InitVisible = true; this.labelStaticDoubleEntry.LineSpacing = 0F; this.labelStaticDoubleEntry.Location = new System.Drawing.Point(19, 33); @@ -398,7 +406,7 @@ this.groupBoxAutoZero.Controls.Add(this.labelStaticRange); this.groupBoxAutoZero.Controls.Add(this.labelStaticTime); this.groupBoxAutoZero.Controls.Add(this.labelStaticMode); - this.groupBoxAutoZero.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.groupBoxAutoZero.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); this.groupBoxAutoZero.FrameLineColor1 = System.Drawing.Color.FromArgb(((int)(((byte)(54)))), ((int)(((byte)(66)))), ((int)(((byte)(44))))); this.groupBoxAutoZero.FrameLineColor2 = System.Drawing.Color.Black; this.groupBoxAutoZero.FrameLineThickness = 1; @@ -415,7 +423,7 @@ // // comboBoxZeroParameterMode // - this.comboBoxZeroParameterMode.Font = new System.Drawing.Font("새굴림", 15F, System.Drawing.FontStyle.Bold); + this.comboBoxZeroParameterMode.Font = new System.Drawing.Font("New Gulim", 15F, System.Drawing.FontStyle.Bold); this.comboBoxZeroParameterMode.Location = new System.Drawing.Point(113, 103); this.comboBoxZeroParameterMode.Name = "comboBoxZeroParameterMode"; this.comboBoxZeroParameterMode.Size = new System.Drawing.Size(100, 29); @@ -425,7 +433,7 @@ // // comboBoxZeroParameterVariate // - this.comboBoxZeroParameterVariate.Font = new System.Drawing.Font("새굴림", 15F, System.Drawing.FontStyle.Bold); + this.comboBoxZeroParameterVariate.Font = new System.Drawing.Font("New Gulim", 15F, System.Drawing.FontStyle.Bold); this.comboBoxZeroParameterVariate.Location = new System.Drawing.Point(113, 67); this.comboBoxZeroParameterVariate.Name = "comboBoxZeroParameterVariate"; this.comboBoxZeroParameterVariate.Size = new System.Drawing.Size(100, 29); @@ -481,7 +489,7 @@ this.labelStaticVariable.BackPictureBox2 = null; this.labelStaticVariable.BorderColor = System.Drawing.Color.Black; this.labelStaticVariable.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticVariable.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticVariable.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticVariable.InitVisible = true; this.labelStaticVariable.LineSpacing = 0F; this.labelStaticVariable.Location = new System.Drawing.Point(19, 67); @@ -500,7 +508,7 @@ this.labelStaticRange.BackPictureBox2 = null; this.labelStaticRange.BorderColor = System.Drawing.Color.Black; this.labelStaticRange.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticRange.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticRange.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticRange.InitVisible = true; this.labelStaticRange.LineSpacing = 0F; this.labelStaticRange.Location = new System.Drawing.Point(198, 31); @@ -519,7 +527,7 @@ this.labelStaticTime.BackPictureBox2 = null; this.labelStaticTime.BorderColor = System.Drawing.Color.Black; this.labelStaticTime.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticTime.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticTime.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticTime.InitVisible = true; this.labelStaticTime.LineSpacing = 0F; this.labelStaticTime.Location = new System.Drawing.Point(19, 31); @@ -538,7 +546,7 @@ this.labelStaticMode.BackPictureBox2 = null; this.labelStaticMode.BorderColor = System.Drawing.Color.Black; this.labelStaticMode.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelStaticMode.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelStaticMode.Font = new System.Drawing.Font("New Gulim", 13F, System.Drawing.FontStyle.Bold); this.labelStaticMode.InitVisible = true; this.labelStaticMode.LineSpacing = 0F; this.labelStaticMode.Location = new System.Drawing.Point(19, 103); @@ -565,7 +573,7 @@ this.labelTitle.BackPictureBox2 = null; this.labelTitle.BorderColor = System.Drawing.Color.Black; this.labelTitle.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitle.Font = new System.Drawing.Font("새굴림", 23F, System.Drawing.FontStyle.Bold); + this.labelTitle.Font = new System.Drawing.Font("New Gulim", 23F, System.Drawing.FontStyle.Bold); this.labelTitle.ForeColor = System.Drawing.Color.White; this.labelTitle.InitVisible = true; this.labelTitle.LineSpacing = 0F; @@ -609,12 +617,180 @@ this.buttonScreen.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonScreen.UpImage"))); this.buttonScreen.Click += new System.EventHandler(this.buttonScreen_Click); // + // groupBoxCount + // + this.groupBoxCount.BackPictureBox = this.smartForm1; + this.groupBoxCount.BackPictureBox1 = null; + this.groupBoxCount.Controls.Add(this.buttonAlarmTotalPassCount); + this.groupBoxCount.Controls.Add(this.labelStaticATPC); + this.groupBoxCount.Controls.Add(this.labelAlarmTotalPassCount); + this.groupBoxCount.Controls.Add(this.buttonAlarmContinuousNG); + this.groupBoxCount.Controls.Add(this.labelStaticAlarmContinuousNG); + this.groupBoxCount.Controls.Add(this.labelAlarmContinuousNG); + this.groupBoxCount.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); + this.groupBoxCount.FrameLineColor1 = System.Drawing.Color.Black; + this.groupBoxCount.FrameLineColor2 = System.Drawing.Color.Black; + this.groupBoxCount.FrameLineThickness = 1; + this.groupBoxCount.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.RoundRectangle; + this.groupBoxCount.Image = null; + this.groupBoxCount.InitVisible = true; + this.groupBoxCount.Location = new System.Drawing.Point(399, 84); + this.groupBoxCount.Name = "groupBoxCount"; + this.groupBoxCount.RoundRadius = 10; + this.groupBoxCount.Size = new System.Drawing.Size(391, 158); + this.groupBoxCount.TabIndex = 457; + this.groupBoxCount.Text = "카운터"; + this.groupBoxCount.TextColor = System.Drawing.Color.Black; + // + // buttonAlarmTotalPassCount + // + this.buttonAlarmTotalPassCount.BackPictureBox = null; + this.buttonAlarmTotalPassCount.BackPictureBox1 = null; + this.buttonAlarmTotalPassCount.BackPictureBox2 = null; + this.buttonAlarmTotalPassCount.ButtonColor = System.Drawing.Color.Gray; + this.buttonAlarmTotalPassCount.ButtonImageAutoSize = true; + this.buttonAlarmTotalPassCount.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonAlarmTotalPassCount.DisableImage = null; + this.buttonAlarmTotalPassCount.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmTotalPassCount.DownImage"))); + this.buttonAlarmTotalPassCount.GroupID = 0; + this.buttonAlarmTotalPassCount.InitVisible = true; + this.buttonAlarmTotalPassCount.Location = new System.Drawing.Point(276, 77); + this.buttonAlarmTotalPassCount.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; + this.buttonAlarmTotalPassCount.Name = "buttonAlarmTotalPassCount"; + this.buttonAlarmTotalPassCount.NestedClickEventPrevent = false; + this.buttonAlarmTotalPassCount.OutlinePixel = 1; + this.buttonAlarmTotalPassCount.RepeatInterval = 200; + this.buttonAlarmTotalPassCount.RepeatIntervalAccelerate = null; + this.buttonAlarmTotalPassCount.SafeInterval = 200; + this.buttonAlarmTotalPassCount.Size = new System.Drawing.Size(100, 30); + this.buttonAlarmTotalPassCount.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonAlarmTotalPassCount.TabIndex = 704; + this.buttonAlarmTotalPassCount.TextColor = System.Drawing.Color.Black; + this.buttonAlarmTotalPassCount.TextDownColor = System.Drawing.Color.White; + this.buttonAlarmTotalPassCount.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonAlarmTotalPassCount.TextLocation = new System.Drawing.Point(0, 0); + this.buttonAlarmTotalPassCount.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonAlarmTotalPassCount.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmTotalPassCount.UpImage"))); + this.buttonAlarmTotalPassCount.Click += new System.EventHandler(this.buttonAlarmTotalCount_Click); + // + // labelStaticATPC + // + this.labelStaticATPC.BackPictureBox = this.smartForm1; + this.labelStaticATPC.BackPictureBox1 = null; + this.labelStaticATPC.BackPictureBox2 = null; + this.labelStaticATPC.BorderColor = System.Drawing.Color.Black; + this.labelStaticATPC.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelStaticATPC.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); + this.labelStaticATPC.InitVisible = true; + this.labelStaticATPC.LineSpacing = 0F; + this.labelStaticATPC.Location = new System.Drawing.Point(14, 77); + this.labelStaticATPC.Name = "labelStaticATPC"; + this.labelStaticATPC.Size = new System.Drawing.Size(150, 30); + this.labelStaticATPC.TabIndex = 702; + this.labelStaticATPC.Text = "정량 카운터 알람"; + this.labelStaticATPC.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelStaticATPC.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelStaticATPC.Wordwrap = false; + // + // labelAlarmTotalPassCount + // + this.labelAlarmTotalPassCount.BackColor = System.Drawing.Color.White; + this.labelAlarmTotalPassCount.BackPictureBox = null; + this.labelAlarmTotalPassCount.BackPictureBox1 = null; + this.labelAlarmTotalPassCount.BackPictureBox2 = null; + this.labelAlarmTotalPassCount.BorderColor = System.Drawing.Color.Black; + this.labelAlarmTotalPassCount.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelAlarmTotalPassCount.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.labelAlarmTotalPassCount.InitVisible = true; + this.labelAlarmTotalPassCount.LineSpacing = 0F; + this.labelAlarmTotalPassCount.Location = new System.Drawing.Point(170, 77); + this.labelAlarmTotalPassCount.Name = "labelAlarmTotalPassCount"; + this.labelAlarmTotalPassCount.Size = new System.Drawing.Size(100, 30); + this.labelAlarmTotalPassCount.TabIndex = 703; + this.labelAlarmTotalPassCount.Text = "9999"; + this.labelAlarmTotalPassCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelAlarmTotalPassCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelAlarmTotalPassCount.Wordwrap = false; + this.labelAlarmTotalPassCount.Click += new System.EventHandler(this.labelAlarmTotalCount_Click); + // + // buttonAlarmContinuousNG + // + this.buttonAlarmContinuousNG.BackPictureBox = null; + this.buttonAlarmContinuousNG.BackPictureBox1 = null; + this.buttonAlarmContinuousNG.BackPictureBox2 = null; + this.buttonAlarmContinuousNG.ButtonColor = System.Drawing.Color.Gray; + this.buttonAlarmContinuousNG.ButtonImageAutoSize = true; + this.buttonAlarmContinuousNG.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonAlarmContinuousNG.DisableImage = null; + this.buttonAlarmContinuousNG.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmContinuousNG.DownImage"))); + this.buttonAlarmContinuousNG.GroupID = 0; + this.buttonAlarmContinuousNG.InitVisible = true; + this.buttonAlarmContinuousNG.Location = new System.Drawing.Point(276, 41); + this.buttonAlarmContinuousNG.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; + this.buttonAlarmContinuousNG.Name = "buttonAlarmContinuousNG"; + this.buttonAlarmContinuousNG.NestedClickEventPrevent = false; + this.buttonAlarmContinuousNG.OutlinePixel = 1; + this.buttonAlarmContinuousNG.RepeatInterval = 200; + this.buttonAlarmContinuousNG.RepeatIntervalAccelerate = null; + this.buttonAlarmContinuousNG.SafeInterval = 200; + this.buttonAlarmContinuousNG.Size = new System.Drawing.Size(100, 30); + this.buttonAlarmContinuousNG.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonAlarmContinuousNG.TabIndex = 701; + this.buttonAlarmContinuousNG.TextColor = System.Drawing.Color.Black; + this.buttonAlarmContinuousNG.TextDownColor = System.Drawing.Color.White; + this.buttonAlarmContinuousNG.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonAlarmContinuousNG.TextLocation = new System.Drawing.Point(0, 0); + this.buttonAlarmContinuousNG.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonAlarmContinuousNG.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmContinuousNG.UpImage"))); + this.buttonAlarmContinuousNG.Click += new System.EventHandler(this.buttonAlarmContinuousNG_Click); + // + // labelStaticAlarmContinuousNG + // + this.labelStaticAlarmContinuousNG.BackPictureBox = this.smartForm1; + this.labelStaticAlarmContinuousNG.BackPictureBox1 = null; + this.labelStaticAlarmContinuousNG.BackPictureBox2 = null; + this.labelStaticAlarmContinuousNG.BorderColor = System.Drawing.Color.Black; + this.labelStaticAlarmContinuousNG.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelStaticAlarmContinuousNG.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); + this.labelStaticAlarmContinuousNG.InitVisible = true; + this.labelStaticAlarmContinuousNG.LineSpacing = 0F; + this.labelStaticAlarmContinuousNG.Location = new System.Drawing.Point(14, 41); + this.labelStaticAlarmContinuousNG.Name = "labelStaticAlarmContinuousNG"; + this.labelStaticAlarmContinuousNG.Size = new System.Drawing.Size(150, 30); + this.labelStaticAlarmContinuousNG.TabIndex = 699; + this.labelStaticAlarmContinuousNG.Text = "연속 NG 알람"; + this.labelStaticAlarmContinuousNG.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelStaticAlarmContinuousNG.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelStaticAlarmContinuousNG.Wordwrap = false; + // + // labelAlarmContinuousNG + // + this.labelAlarmContinuousNG.BackColor = System.Drawing.Color.White; + this.labelAlarmContinuousNG.BackPictureBox = null; + this.labelAlarmContinuousNG.BackPictureBox1 = null; + this.labelAlarmContinuousNG.BackPictureBox2 = null; + this.labelAlarmContinuousNG.BorderColor = System.Drawing.Color.Black; + this.labelAlarmContinuousNG.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelAlarmContinuousNG.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.labelAlarmContinuousNG.InitVisible = true; + this.labelAlarmContinuousNG.LineSpacing = 0F; + this.labelAlarmContinuousNG.Location = new System.Drawing.Point(170, 41); + this.labelAlarmContinuousNG.Name = "labelAlarmContinuousNG"; + this.labelAlarmContinuousNG.Size = new System.Drawing.Size(100, 30); + this.labelAlarmContinuousNG.TabIndex = 700; + this.labelAlarmContinuousNG.Text = "9999"; + this.labelAlarmContinuousNG.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelAlarmContinuousNG.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelAlarmContinuousNG.Wordwrap = false; + this.labelAlarmContinuousNG.Click += new System.EventHandler(this.labelAlarmContinuousNG_Click); + // // FormConfiguration // 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.groupBoxCount); this.Controls.Add(this.buttonScreen); this.Controls.Add(this.labelTitle); this.Controls.Add(this.pictureBoxFormIcon); @@ -627,6 +803,7 @@ ((System.ComponentModel.ISupportInitialize)(this.smartForm1)).EndInit(); this.groupBoxOption.ResumeLayout(false); this.groupBoxAutoZero.ResumeLayout(false); + this.groupBoxCount.ResumeLayout(false); this.ResumeLayout(false); } @@ -660,5 +837,12 @@ private System.Windows.Forms.ComboBox comboBoxZeroParameterMode; private System.Windows.Forms.ComboBox comboBoxDecimalPlaces; private SmartX.SmartButton buttonScreen; + private SmartX.SmartGroupBox groupBoxCount; + private SmartX.SmartButton buttonAlarmTotalPassCount; + private SmartX.SmartLabel labelStaticATPC; + private SmartX.SmartLabel labelAlarmTotalPassCount; + private SmartX.SmartButton buttonAlarmContinuousNG; + private SmartX.SmartLabel labelStaticAlarmContinuousNG; + private SmartX.SmartLabel labelAlarmContinuousNG; } } \ No newline at end of file diff --git a/INT69DB_2A/Forms/FormConfiguration.cs b/INT69DB_2A/Forms/FormConfiguration.cs index 152ccc8..05c96f3 100644 --- a/INT69DB_2A/Forms/FormConfiguration.cs +++ b/INT69DB_2A/Forms/FormConfiguration.cs @@ -57,6 +57,7 @@ namespace INT69DB_2A.Forms } else if (this.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { + #region English this.labelTitle.Text = "Configuration"; this.groupBoxAutoZero.Text = "Auto zero"; @@ -72,9 +73,16 @@ namespace INT69DB_2A.Forms this.labelStaticBypass.Text = "Bypass"; this.labelStaticChattering.Text = "Chattering"; this.labelStaticDecimalPoint.Text = "Decimal point"; + + this.groupBoxCount.Text = "counter"; + this.labelStaticAlarmContinuousNG.Text = "Continuous NG"; + this.labelStaticATPC.Text = "Pass alarm"; + #endregion + } else if (this.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) { + #region Chinese this.labelTitle.Text = "选项"; this.groupBoxAutoZero.Text = "自动零点跟踪"; @@ -91,8 +99,13 @@ namespace INT69DB_2A.Forms this.labelStaticChattering.Text = "颤振"; this.labelStaticDecimalPoint.Text = "小数点"; + this.groupBoxCount.Text = "柜台"; + this.labelStaticAlarmContinuousNG.Text = "连续不好"; + this.labelStaticATPC.Text = "通过警报"; + this.buttonDoubleEnter.DownImage = this.buttonBypassMode.DownImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnEnable)); - this.buttonDoubleEnter.UpImage = this.buttonBypassMode.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnDisable)); + this.buttonDoubleEnter.UpImage = this.buttonBypassMode.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnDisable)); + #endregion } else if (this.ParentForm.SystemConfig.Language == DataStore.LanguageID.Czech) { @@ -162,14 +175,40 @@ namespace INT69DB_2A.Forms private void UpdateDisplay() { + string value = ""; + + // DecimalPlaces this.comboBoxDecimalPlaces.SelectedIndexChanged -= new EventHandler(this.comboBoxDecimalPlaces_SelectedIndexChanged); this.comboBoxDecimalPlaces.SelectedIndex = this.ParentForm.SystemConfig.DecimalPlaces; this.comboBoxDecimalPlaces.SelectedIndexChanged += new EventHandler(this.comboBoxDecimalPlaces_SelectedIndexChanged); + // Bypass if (this.ParentForm.SystemConfig.IsBypassMode == true) this.buttonBypassMode.ButtonDown(); else this.buttonBypassMode.ButtonUp(); + + // AlarmContinuousNG Count + value = this.ParentForm.SystemConfig.AlarmContinuousNG.ToString(); + if (this.labelAlarmContinuousNG.Text != value) + this.labelAlarmContinuousNG.Text = value; + + // AlarmContinuousNG Enable + if (this.ParentForm.SystemConfig.IsAlarmContinuousNGEnable == true) + this.buttonAlarmContinuousNG.ButtonDown(); + else + this.buttonAlarmContinuousNG.ButtonUp(); + + // AlarmTotalCount + value = this.ParentForm.SystemConfig.AlarmTotalPassCnt.ToString(); + if (this.labelAlarmTotalPassCount.Text != value) + this.labelAlarmTotalPassCount.Text = value; + + // AlarmTotalCount Enable + if (this.ParentForm.SystemConfig.IsAlarmTotalPassCntEnable == true) + this.buttonAlarmTotalPassCount.ButtonDown(); + else + this.buttonAlarmTotalPassCount.ButtonUp(); } public void UpdateZeroParameterRangeDisplay(DataStore.EquipmentStatus status, Collection values) { @@ -541,6 +580,114 @@ namespace INT69DB_2A.Forms if (this.ParentForm.SystemConfig.IsPart11 == true) this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); } + + private void labelAlarmContinuousNG_Click(object sender, EventArgs e) + { + string before = "", after = ""; + + before = this.labelAlarmContinuousNG.Text; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelAlarmContinuousNG.Text, 4, 0, false, this.ParentForm.SystemConfig.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 1 || myKeyPad.doubleValue > 9999) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.SystemConfig.Language); + myMsg.ShowDialog(); + } + else + { + this.labelAlarmContinuousNG.Text = myKeyPad.StringValue; + after = this.labelAlarmContinuousNG.Text; + + this.ParentForm.SystemConfig.AlarmContinuousNG = myKeyPad.IntValue; + this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingParameter.ACNC_Count, "", before, after); + } + } + } + private void buttonAlarmContinuousNG_Click(object sender, EventArgs e) + { + string before = "", after = ""; + + if (this.buttonAlarmContinuousNG.ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + before = "OFF"; + after = "ON"; + this.ParentForm.SystemConfig.IsAlarmContinuousNGEnable = true; + } + else + { + before = "ON"; + after = "OFF"; + this.ParentForm.SystemConfig.IsAlarmContinuousNGEnable = false; + } + + this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingParameter.ACNC_Activate, "", before, after); + } + + private void labelAlarmTotalCount_Click(object sender, EventArgs e) + { + string before = "", after = ""; + + before = this.labelAlarmTotalPassCount.Text; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelAlarmTotalPassCount.Text, 4, 0, false, this.ParentForm.SystemConfig.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 20 || myKeyPad.doubleValue > 9999) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.SystemConfig.Language); + myMsg.ShowDialog(); + } + else + { + this.labelAlarmTotalPassCount.Text = myKeyPad.StringValue; + after = this.labelAlarmTotalPassCount.Text; + + this.ParentForm.SystemConfig.AlarmTotalPassCnt = myKeyPad.IntValue; + this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingParameter.ATPC_Count, "", before, after); + } + } + } + private void buttonAlarmTotalCount_Click(object sender, EventArgs e) + { + string before = "", after = ""; + + if (this.buttonAlarmTotalPassCount.ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + before = "OFF"; + after = "ON"; + this.ParentForm.SystemConfig.IsAlarmTotalPassCntEnable = true; + } + else + { + before = "ON"; + after = "OFF"; + this.ParentForm.SystemConfig.IsAlarmTotalPassCntEnable = false; + } + + this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingParameter.ATPC_Activate, "", before, after); + } #endregion } } \ No newline at end of file diff --git a/INT69DB_2A/Forms/FormConfiguration.resx b/INT69DB_2A/Forms/FormConfiguration.resx index c53a083..5cc060c 100644 --- a/INT69DB_2A/Forms/FormConfiguration.resx +++ b/INT69DB_2A/Forms/FormConfiguration.resx @@ -1120,6 +1120,264 @@ j6CIi7v5AngMQRgm0vxgjMWDSfCoN/IZHznWC+JD0sbs+dGqqu7YsaOkpIQvg4dhQ9TriEtzwjfOane7 3Vu2bFmesCx6zjQdgh6JAXFE7JR5S+JXrFy2OnFVYnJiWA3OB8sTlpLM1JhPdc49I2LM3ysG8KhTnfug AAAAAElFTkSuQmCC + + + + + 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 + RK5CYII= + + + + + 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 + RK5CYII= diff --git a/INT69DB_2A/Forms/FormDataBackup.cs b/INT69DB_2A/Forms/FormDataBackup.cs index d180411..90b7fcc 100644 --- a/INT69DB_2A/Forms/FormDataBackup.cs +++ b/INT69DB_2A/Forms/FormDataBackup.cs @@ -240,7 +240,7 @@ namespace INT69DB_2A.Forms file.Delete(); } this.labelFileCount.Text = this.listBoxDataList.Items.Count.ToString(); - DialogFormMessage msg = new DialogFormMessage(count.ToString(), this.ParentForm.SystemConfig.Language); + DialogFormMessage msg = new DialogFormMessage(count.ToString(), this.ParentForm.SystemConfig.Language, "Data backup"); splash.Finish(); msg.ShowDialog(); } diff --git a/INT69DB_2A/Forms/FormDataBackup_Part11.cs b/INT69DB_2A/Forms/FormDataBackup_Part11.cs index 8e0ae2c..623f81a 100644 --- a/INT69DB_2A/Forms/FormDataBackup_Part11.cs +++ b/INT69DB_2A/Forms/FormDataBackup_Part11.cs @@ -23,6 +23,7 @@ namespace INT69DB_2A.Forms private SmartSplash Splash; private string EncFileName; private DataStore.E_DataType SelecteDataType; + private int CopyFileCount; private List ListInspectionFile; private List ListHistoryFile; @@ -84,6 +85,7 @@ namespace INT69DB_2A.Forms { this.EncFileName = ""; this.SelecteDataType = DataStore.E_DataType.None; + this.CopyFileCount = 0; this.ListInspectionFile = new List(); this.ListHistoryFile = new List(); @@ -124,7 +126,20 @@ namespace INT69DB_2A.Forms return; targetPath = "하드 디스크\\"; + + #region 백업 할 파일 리스트 listSelectedFile = this.GetSeletedNodeList(view); + this.CopyFileCount = listSelectedFile.Count; + #endregion + + #region 백업할 파일 유무 체크 + if (listSelectedFile.Count == 0) + { + DialogFormMessage msg = new DialogFormMessage(4, this.ParentForm.SystemConfig.Language); + msg.ShowDialog(); + return; + } + #endregion #region USB 장착 유무 체크 dir = new DirectoryInfo(targetPath); @@ -136,20 +151,11 @@ namespace INT69DB_2A.Forms return; } #endregion - #region 백업할 파일 유무 체크 - if (listSelectedFile.Count == 0) - { - DialogFormMessage msg = new DialogFormMessage(4, this.ParentForm.SystemConfig.Language); - msg.ShowDialog(); - return; - } - #endregion // Splash Start this.SplashStart(); #region Header && Encryption 폴더에 파일 삭제 - // Header && Encryption 폴더에 파일 삭제 this.DirectoryFileDelete(this.ParentForm.PathEncryptionFolder); this.DirectoryFileDelete(this.ParentForm.PathHeaderFolder); #endregion @@ -266,7 +272,7 @@ namespace INT69DB_2A.Forms } // 복사 완료 메시지 - DialogFormMessage msg = new DialogFormMessage((count / 2).ToString(), this.ParentForm.SystemConfig.Language); + DialogFormMessage msg = new DialogFormMessage(this.CopyFileCount.ToString(), this.ParentForm.SystemConfig.Language, type.ToString()); this.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.DataBackup, type.ToString()); this.SplashFinish(); msg.ShowDialog(); @@ -296,19 +302,14 @@ namespace INT69DB_2A.Forms return; targetPath = "하드 디스크\\"; + + #region 백업할 파일 유무 체크 if (this.listBoxOther.Items.Count == 0) { DialogFormMessage msg = new DialogFormMessage(4, this.ParentForm.SystemConfig.Language); msg.ShowDialog(); return; } - - this.SplashStart(); - - #region Header && Encryption 폴더에 파일 삭제 - // Header && Encryption 폴더에 파일 삭제 - this.DirectoryFileDelete(this.ParentForm.PathEncryptionFolder); - this.DirectoryFileDelete(this.ParentForm.PathHeaderFolder); #endregion #region USB 장착 유무 체크 @@ -324,10 +325,18 @@ namespace INT69DB_2A.Forms } #endregion + this.SplashStart(); + + #region Header && Encryption 폴더에 파일 삭제 + this.DirectoryFileDelete(this.ParentForm.PathEncryptionFolder); + this.DirectoryFileDelete(this.ParentForm.PathHeaderFolder); + #endregion + try { dir = new DirectoryInfo(this.ParentForm.PathDataBackupFolder); files = dir.GetFiles(); + this.CopyFileCount = files.Length; List listSelectedFile = new List(); // jpg 파일 -> EncryptionFolder로 복사 @@ -853,27 +862,6 @@ namespace INT69DB_2A.Forms ((FormMain)(Owner)).smartForm.Show(2); } - private void treeViewInspection_AfterSelect(object sender, TreeViewEventArgs e) - { - if (e.Node.Text.Substring(0, 1) == "I") - { - if (e.Node.Checked == true) - e.Node.Checked = false; - else - e.Node.Checked = true; - } - } - private void treeViewHistory_AfterSelect(object sender, TreeViewEventArgs e) - { - if (e.Node.Text.Substring(0, 1) == "H") - { - if (e.Node.Checked == true) - e.Node.Checked = false; - else - e.Node.Checked = true; - } - } - private void buttonInspectionBackupEncryption_Click(object sender, EventArgs e) { this.SelecteDataType = DataStore.E_DataType.Inspection; diff --git a/INT69DB_2A/Forms/FormDataStatistics.cs b/INT69DB_2A/Forms/FormDataStatistics.cs index 0ad5262..b5067b4 100644 --- a/INT69DB_2A/Forms/FormDataStatistics.cs +++ b/INT69DB_2A/Forms/FormDataStatistics.cs @@ -423,10 +423,10 @@ namespace INT69DB_2A.Forms this.SetLabelText(this.labelTareRange, commonList.TareRange); this.SetLabelText(this.labelTotalCount, string.Format("{0}", commonList.TotalCount.ToString())); - this.SetLabelText(this.labelTotalUnderCount, string.Format("{0} / {1}", commonList.TotalUnderCount, commonList.TotalUnderPercentage)); - this.SetLabelText(this.labelTotalPassCount, string.Format("{0} / {1}", commonList.TotalPassCount, commonList.TotalPassPercentage)); - this.SetLabelText(this.labelTotalOverCount, string.Format("{0} / {1}", commonList.TotalOverCount, commonList.TotalOverPercentage)); - this.SetLabelText(this.labelTotalExNgCount, string.Format("{0} / {1}", commonList.TotalExNgCount, commonList.TotalExNgPercentage)); + this.SetLabelText(this.labelTotalUnderCount, string.Format("{0} / {1:0.00}", commonList.TotalUnderCount, commonList.TotalUnderPercentage)); + this.SetLabelText(this.labelTotalPassCount, string.Format("{0} / {1:0.00}", commonList.TotalPassCount, commonList.TotalPassPercentage)); + this.SetLabelText(this.labelTotalOverCount, string.Format("{0} / {1:0.00}", commonList.TotalOverCount, commonList.TotalOverPercentage)); + this.SetLabelText(this.labelTotalExNgCount, string.Format("{0} / {1:0.00}", commonList.TotalExNgCount, commonList.TotalExNgPercentage)); this.SetLabelText(this.labelTotalNGCount, string.Format("{0}", commonList.TotalNGCount.ToString())); this.SetLabelText(this.labelTotalPassAverage, string.Format("{0:0.000}", commonList.TotalPassAverageWeight)); @@ -438,21 +438,21 @@ namespace INT69DB_2A.Forms { this.SetLabelText(this.CollectionPassCount[i], datas[i].PassTotalCount.ToString()); this.SetLabelText(this.CollectionPassAverage[i], string.Format("{0:0.000}", datas[i].PassAverage)); - this.SetLabelText(this.CollectionPassPercentage[i], datas[i].PassPercentage.ToString()); + this.SetLabelText(this.CollectionPassPercentage[i], string.Format("{0:0.00}", datas[i].PassPercentage)); this.SetLabelText(this.CollectionPassSD[i], string.Format("{0:0.00}", datas[i].PassStandardDeviation)); this.SetLabelText(this.CollectionPassMinWeight[i], Helper.DoubleToString(datas[i].PassMinWeight, 1)); this.SetLabelText(this.CollectionPassMaxWeight[i], Helper.DoubleToString(datas[i].PassMaxWeight, 1)); this.SetLabelText(this.CollectionOverCount[i], datas[i].OverTotalCount.ToString()); this.SetLabelText(this.CollectionOverSumWeight[i], Helper.DoubleToString(datas[i].OverSumWeight / 1000, 3)); - this.SetLabelText(this.CollectionOverPercentage[i], datas[i].OverPercentage.ToString()); + this.SetLabelText(this.CollectionOverPercentage[i], string.Format("{0:0.00}", datas[i].OverPercentage)); this.SetLabelText(this.CollectionUnderCount[i], datas[i].UnderTotalCount.ToString()); this.SetLabelText(this.CollectionUnderSumWeight[i], Helper.DoubleToString(datas[i].UnderSumWeight / 1000, 3)); - this.SetLabelText(this.CollectionUnderPercentage[i], datas[i].UnderPercentage.ToString()); + this.SetLabelText(this.CollectionUnderPercentage[i], string.Format("{0:0.00}", datas[i].UnderPercentage)); this.SetLabelText(this.CollectionExNgCount[i], datas[i].ExNgTotalCount.ToString()); - this.SetLabelText(this.CollectionExNgPercentage[i], datas[i].ExNgPercentage.ToString()); + this.SetLabelText(this.CollectionExNgPercentage[i], string.Format("{0:0.00}", datas[i].ExNgPercentage)); this.SetLabelText(this.CollectionTotalCount[i], datas[i].TotalCount.ToString()); this.SetLabelText(this.CollectionTotalNGCount[i], datas[i].TotalNGCount.ToString()); @@ -1135,7 +1135,7 @@ namespace INT69DB_2A.Forms this.FileCopy(file, filePath + file.Name); file.Delete(); } - DialogFormMessage msg = new DialogFormMessage("2", this.ParentForm.SystemConfig.Language); + DialogFormMessage msg = new DialogFormMessage("2", this.ParentForm.SystemConfig.Language, "Statistics"); msg.ShowDialog(); } catch diff --git a/INT69DB_2A/Forms/FormEquipmentSetting.cs b/INT69DB_2A/Forms/FormEquipmentSetting.cs index 75bc53b..f32e6fd 100644 --- a/INT69DB_2A/Forms/FormEquipmentSetting.cs +++ b/INT69DB_2A/Forms/FormEquipmentSetting.cs @@ -67,6 +67,7 @@ namespace INT69DB_2A.Forms this.labelStaticLanguage.Text = "Language"; this.labelStaticLogin.Text = "Login"; this.labelTitleStepMotorType.Text = "Step Motor Type"; + this.labelStaticIntegratedTransmission.Text = "Integrated transmission"; this.labelBuadrateWarning.Text = "※ After changing setting, Turn OFF the power and then turn ON the power"; this.labelBuadrateWarning2.Text = "※ Do not change the value except engineer"; @@ -93,6 +94,7 @@ namespace INT69DB_2A.Forms this.labelStaticLanguage.Text = "语言"; this.labelStaticLogin.Text = "登錄"; this.labelTitleStepMotorType.Text = "步进电机类型"; + this.labelStaticIntegratedTransmission.Text = "综合传输"; this.smartLabel12.Text = "球杆-I"; this.smartLabel14.Text = "球杆-I"; diff --git a/INT69DB_2A/Forms/FormInformation.cs b/INT69DB_2A/Forms/FormInformation.cs index 17a6a43..850edff 100644 --- a/INT69DB_2A/Forms/FormInformation.cs +++ b/INT69DB_2A/Forms/FormInformation.cs @@ -107,7 +107,7 @@ namespace INT69DB_2A.Forms } private void DefaultSetting() { - this.labelDisplayVer.Text = "5.0.1"; + this.labelDisplayVer.Text = "5.1.0"; this.labelUserMgerVer.Text = ""; this.labelAes128Ver.Text = ""; this.labelSerialNo.Text = this.ParentForm.SystemConfig.SerialNumber; diff --git a/INT69DB_2A/Forms/FormInitialization.cs b/INT69DB_2A/Forms/FormInitialization.cs index 97ae59c..3801a31 100644 --- a/INT69DB_2A/Forms/FormInitialization.cs +++ b/INT69DB_2A/Forms/FormInitialization.cs @@ -188,8 +188,8 @@ namespace INT69DB_2A.Forms structItem2.DummyBool16 = false; structItem2.DummyBool17 = false; structItem2.DummyBool18 = false; - structItem2.DummyBool19 = false; - structItem2.DummyBool20 = false; + structItem2.IsAlarmContinuousNGEnable = false; + structItem2.IsAlarmTotalPassCntEnable = false; structItem2.DummyInt1 = 0; structItem2.DummyInt2 = 0; @@ -198,8 +198,8 @@ namespace INT69DB_2A.Forms structItem2.DummyInt5 = 0; structItem2.DummyInt6 = 0; structItem2.DummyInt7 = 0; - structItem2.DummyInt8 = 0; - structItem2.DummyInt9 = 0; + structItem2.AlarmContinuousNG = 0; + structItem2.AlarmTotalPassCnt = 0; structItem2.ModbusTcpStartAddress = this.ParentForm.SystemConfig.ModbusTcpStartAddress; structItem2.ModbusRtuSlaveID = this.ParentForm.SystemConfig.ModbusRtuSlaveID; structItem2.ModbusTcpAddress1 = this.ParentForm.SystemConfig.ModbusTcpAddress1; diff --git a/INT69DB_2A/Forms/FormMain.cs b/INT69DB_2A/Forms/FormMain.cs index 8382fce..633dc68 100644 --- a/INT69DB_2A/Forms/FormMain.cs +++ b/INT69DB_2A/Forms/FormMain.cs @@ -113,6 +113,8 @@ namespace INT69DB_2A.Forms public Collection CollectionWeightData; // 장비테스트모드 열별 중량 데이터 public Collection CollectionWeightDataTest; + // TotalPass Count + public Counter CurrentAlarmTotalPassCnt; // UserGroup public UserGroup CurrentUserGroup; // Dll User_Name List @@ -314,8 +316,8 @@ namespace INT69DB_2A.Forms this.ChildFormDataBackup = new FormDataBackup(this); else { - this.ChildFormDataStatistics = new FormDataStatistics(this); this.ChildFormDataBackup_Part11 = new FormDataBackup_Part11(this); + this.ChildFormDataStatistics = new FormDataStatistics(this); this.ChildFormDataViewer = new FormDataViewer(this); } @@ -343,8 +345,8 @@ namespace INT69DB_2A.Forms this.smartForm.AddChildForm(this.ChildFormDataBackup); else { - this.smartForm.AddChildForm(this.ChildFormDataStatistics); this.smartForm.AddChildForm(this.ChildFormDataBackup_Part11); + this.smartForm.AddChildForm(this.ChildFormDataStatistics); this.smartForm.AddChildForm(this.ChildFormDataViewer); } } @@ -541,6 +543,8 @@ namespace INT69DB_2A.Forms } else if (this.SystemConfig.EthernetOperationMode == 2) this.EthernetClientDisconnect(); + + this.CurrentAlarmTotalPassCnt = new Counter(this.SystemConfig.EquipmentColumns, this.SystemConfig.AlarmTotalPassCnt); } private void InitializeUserManager() { @@ -2914,51 +2918,66 @@ namespace INT69DB_2A.Forms #region Integrated Transmission public void IntegratedTransmission(Collection datas) { - #region COM3 - switch (this.SystemConfig.Serial3Mode) + if (this.SystemConfig.IsIntegratedTransmission == true) { - case 1: - this.UartCom3Write(this.Protocol_OPT1_NotStxEtx(datas)); - break; - case 2: - this.UartCom3Write(this.Protocol_OPT2_NotStxEtx(datas)); - break; - case 3: - this.UartCom3Write(this.Protocol_OPT3_NotStxEtx(datas)); - break; - case 4: - this.UartCom3Write(this.Protocol_Printer(datas)); - break; - case 5: - this.UartCom3Write(this.Protocol_OPT4_NotStxEtx(datas)); - break; - default: - break; - } - #endregion + #region COM3 + switch (this.SystemConfig.Serial3Mode) + { + case 1: + this.UartCom3Write(this.Protocol_OPT1_NotStxEtx(datas)); + break; + case 2: + this.UartCom3Write(this.Protocol_OPT2_NotStxEtx(datas)); + break; + case 3: + this.UartCom3Write(this.Protocol_OPT3_NotStxEtx(datas)); + break; + case 4: + this.UartCom3Write(this.Protocol_Printer(datas)); + break; + case 5: + this.UartCom3Write(this.Protocol_OPT4_NotStxEtx(datas)); + break; + default: + break; + } + #endregion - #region Ethernet - switch (this.SystemConfig.EthernetMode) + #region Ethernet + switch (this.SystemConfig.EthernetMode) + { + case 1: + this.SendEthernetData(this.Protocol_OPT1_NotStxEtx(datas)); + break; + case 2: + this.SendEthernetData(this.Protocol_OPT2_NotStxEtx(datas)); + break; + case 3: + this.SendEthernetData(this.Protocol_OPT3_NotStxEtx(datas)); + break; + case 5: + this.SendEthernetData(this.Protocol_OPT4_NotStxEtx(datas)); + break; + default: + break; + } + #endregion + } + + #region ATPC + if (this.SystemConfig.IsAlarmTotalPassCntEnable == true) { - case 1: - this.SendEthernetData(this.Protocol_OPT1_NotStxEtx(datas)); - break; - case 2: - this.SendEthernetData(this.Protocol_OPT2_NotStxEtx(datas)); - break; - case 3: - this.SendEthernetData(this.Protocol_OPT3_NotStxEtx(datas)); - break; - case 5: - this.SendEthernetData(this.Protocol_OPT4_NotStxEtx(datas)); - break; - default: - break; + bool result = this.CurrentAlarmTotalPassCnt.SetCountStic2(datas); + + if (result == true) + this.TransferData(CommunicationCommand.AlarmPulseNG, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmTotalPassCountDisplay(this.CurrentAlarmTotalPassCnt); } #endregion // DataBackup - this.TrackingInspectionData(this.CollectionWeightData); + this.TrackingInspectionData(datas); } public void IntegratedTransmissionCheck(Collection datas) { @@ -3983,7 +4002,10 @@ namespace INT69DB_2A.Forms break; case "CBS": this.EquipmentStatus = DataStore.EquipmentStatus.Start; - this.SetTrackingHistoryData(DataStore.TrackingOperation.EquipmentStart, ""); + + // Part 11 + if (this.SystemConfig.IsPart11 == true) + this.SetTrackingHistoryData(DataStore.TrackingOperation.EquipmentStart, ""); // 운전시 중량 0 으로 Clear foreach (WeightData data in this.CollectionWeightData) @@ -3991,6 +4013,9 @@ namespace INT69DB_2A.Forms data.Weight = 0.0; } + // 연속NG 메시지박스 + this.ChildFormMainDisplay.UpdateAlarmMessage3Display(false); + this.ChildFormMainDisplay.UpdateEquipmentStatusDisplay(this.EquipmentStatus); this.ChildFormSystemSetting.UpdateEquipmentStatusDisplay(this.EquipmentStatus); this.ChildFormEquipmentTest.UpdateEquipmentStatusDisplay(this.EquipmentStatus); @@ -3999,7 +4024,10 @@ namespace INT69DB_2A.Forms break; case "CBT": this.EquipmentStatus = DataStore.EquipmentStatus.Stop; - this.SetTrackingHistoryData(DataStore.TrackingOperation.EquipmentStop, ""); + + // Part 11 + if (this.SystemConfig.IsPart11 == true) + this.SetTrackingHistoryData(DataStore.TrackingOperation.EquipmentStop, ""); // 생산속도 Clear foreach (WeightData data in this.CollectionWeightData) @@ -4008,6 +4036,13 @@ namespace INT69DB_2A.Forms data.IsStart = false; } + // 연속 NG 수량 Clear + for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++) + { + this.CollectionWeightData[i].ContinuousNG = 0; + this.CollectionWeightData[i].IsContinuousNG = false; + } + this.ChildFormMainDisplay.UpdateEquipmentStatusDisplay(this.EquipmentStatus); this.ChildFormSystemSetting.UpdateEquipmentStatusDisplay(this.EquipmentStatus); this.ChildFormEquipmentTest.UpdateEquipmentStatusDisplay(this.EquipmentStatus); @@ -4538,6 +4573,7 @@ namespace INT69DB_2A.Forms // 운전시 중량 private int ReceiveCommandSR0(string lane, string receiveData) { + bool result = false; int ret = 0; try @@ -4565,71 +4601,75 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { #region FormMainDisplay - this.Update30000ModbusData(0); - + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[0].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay1(this.EquipmentStatus, this.CollectionWeightData[0]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 1].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay1(this.EquipmentStatus, this.CollectionWeightData[0]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[0].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[0].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 1].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(1, this.CollectionWeightData[0]); this.TreatEthernetCommunication(1, this.CollectionWeightData[0]); - //this.TrackingInspectionData(this.CollectionWeightData[0], 1); } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 1].IsUpdate = true; + #endregion - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - this.ChildFormMainDisplay.UpdateStartWeightDisplay2(this.EquipmentStatus, this.CollectionWeightData[1]); - break; - case 3: - this.ChildFormMainDisplay.UpdateStartWeightDisplay3(this.EquipmentStatus, this.CollectionWeightData[2]); - break; - case 4: - this.ChildFormMainDisplay.UpdateStartWeightDisplay4(this.EquipmentStatus, this.CollectionWeightData[3]); - break; - case 5: - this.ChildFormMainDisplay.UpdateStartWeightDisplay5(this.EquipmentStatus, this.CollectionWeightData[4]); - break; - case 6: - this.ChildFormMainDisplay.UpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightData[5]); - break; - case 7: - this.ChildFormMainDisplay.UpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightData[6]); - break; - case 8: - this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[7]); - break; - case 9: - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[8]); - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[9]); - break; - default: - break; - } - #endregion - } - + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { + #region FormEquipmentTest this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay1(this.EquipmentStatus, this.CollectionWeightDataTest[0]); + #endregion } #endregion break; @@ -4645,71 +4685,75 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { #region FormMainDisplay - this.Update30000ModbusData(1); - + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[1].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay2(this.EquipmentStatus, this.CollectionWeightData[1]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 2].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay2(this.EquipmentStatus, this.CollectionWeightData[1]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[1].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[1].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 2].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(2, this.CollectionWeightData[1]); this.TreatEthernetCommunication(2, this.CollectionWeightData[1]); - //this.TrackingInspectionData(this.CollectionWeightData[1], 2); - } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 2].IsUpdate = true; - - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - this.ChildFormMainDisplay.UpdateStartWeightDisplay2(this.EquipmentStatus, this.CollectionWeightData[0]); - break; - case 3: - this.ChildFormMainDisplay.UpdateStartWeightDisplay3(this.EquipmentStatus, this.CollectionWeightData[1]); - break; - case 4: - this.ChildFormMainDisplay.UpdateStartWeightDisplay4(this.EquipmentStatus, this.CollectionWeightData[2]); - break; - case 5: - this.ChildFormMainDisplay.UpdateStartWeightDisplay5(this.EquipmentStatus, this.CollectionWeightData[3]); - break; - case 6: - this.ChildFormMainDisplay.UpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightData[4]); - break; - case 7: - this.ChildFormMainDisplay.UpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightData[5]); - break; - case 8: - this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[6]); - break; - case 9: - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[7]); - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[8]); - break; - default: - break; - } - #endregion } + #endregion + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { - this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay2(this.EquipmentStatus, this.CollectionWeightDataTest[1]); + #region FormEquipmentTest + this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay2(this.EquipmentStatus, this.CollectionWeightDataTest[1]); + #endregion } #endregion break; @@ -4725,70 +4769,75 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { #region FormMainDisplay - this.Update30000ModbusData(2); - + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[2].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay3(this.EquipmentStatus, this.CollectionWeightData[2]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 3].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay3(this.EquipmentStatus, this.CollectionWeightData[2]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[2].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[2].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 3].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(3, this.CollectionWeightData[2]); this.TreatEthernetCommunication(3, this.CollectionWeightData[2]); - //this.TrackingInspectionData(this.CollectionWeightData[2], 3); - } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 3].IsUpdate = true; - - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - break; - case 3: - this.ChildFormMainDisplay.UpdateStartWeightDisplay3(this.EquipmentStatus, this.CollectionWeightData[0]); - break; - case 4: - this.ChildFormMainDisplay.UpdateStartWeightDisplay4(this.EquipmentStatus, this.CollectionWeightData[1]); - break; - case 5: - this.ChildFormMainDisplay.UpdateStartWeightDisplay5(this.EquipmentStatus, this.CollectionWeightData[2]); - break; - case 6: - this.ChildFormMainDisplay.UpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightData[3]); - break; - case 7: - this.ChildFormMainDisplay.UpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightData[4]); - break; - case 8: - this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[5]); - break; - case 9: - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[6]); - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[7]); - break; - default: - break; - } - #endregion } + #endregion + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { - this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay3(this.EquipmentStatus, this.CollectionWeightDataTest[2]); + #region FormEquipmentTest + this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay3(this.EquipmentStatus, this.CollectionWeightDataTest[2]); + #endregion } #endregion break; @@ -4804,68 +4853,75 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { #region FormMainDisplay - this.Update30000ModbusData(3); - + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[3].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay4(this.EquipmentStatus, this.CollectionWeightData[3]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 4].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay4(this.EquipmentStatus, this.CollectionWeightData[3]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[3].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[3].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 4].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(4, this.CollectionWeightData[3]); this.TreatEthernetCommunication(4, this.CollectionWeightData[3]); - //this.TrackingInspectionData(this.CollectionWeightData[3], 4); - } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 4].IsUpdate = true; - - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - case 3: - break; - case 4: - this.ChildFormMainDisplay.UpdateStartWeightDisplay4(this.EquipmentStatus, this.CollectionWeightData[0]); - break; - case 5: - this.ChildFormMainDisplay.UpdateStartWeightDisplay5(this.EquipmentStatus, this.CollectionWeightData[1]); - break; - case 6: - this.ChildFormMainDisplay.UpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightData[2]); - break; - case 7: - this.ChildFormMainDisplay.UpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightData[3]); - break; - case 8: - this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[4]); - break; - case 9: - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[5]); - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[6]); - break; - default: - break; - } - #endregion } + #endregion + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { - this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay4(this.EquipmentStatus, this.CollectionWeightDataTest[3]); + #region FormEquipmentTest + this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay4(this.EquipmentStatus, this.CollectionWeightDataTest[3]); + #endregion } #endregion break; @@ -4881,66 +4937,75 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { #region FormMainDisplay - this.Update30000ModbusData(4); - + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[4].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay5(this.EquipmentStatus, this.CollectionWeightData[4]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 5].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay5(this.EquipmentStatus, this.CollectionWeightData[4]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[4].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[4].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 5].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(5, this.CollectionWeightData[4]); this.TreatEthernetCommunication(5, this.CollectionWeightData[4]); - //this.TrackingInspectionData(this.CollectionWeightData[4], 5); } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 5].IsUpdate = true; + #endregion - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - case 3: - case 4: - break; - case 5: - this.ChildFormMainDisplay.UpdateStartWeightDisplay5(this.EquipmentStatus, this.CollectionWeightData[0]); - break; - case 6: - this.ChildFormMainDisplay.UpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightData[1]); - break; - case 7: - this.ChildFormMainDisplay.UpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightData[2]); - break; - case 8: - this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[3]); - break; - case 9: - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[4]); - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[5]); - break; - default: - break; - } - #endregion - } - + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { - this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay5(this.EquipmentStatus, this.CollectionWeightDataTest[4]); + #region FormEquipmentTest + this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay5(this.EquipmentStatus, this.CollectionWeightDataTest[4]); + #endregion } #endregion break; @@ -4956,64 +5021,75 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { #region FormMainDisplay - this.Update30000ModbusData(5); - + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[5].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightData[5]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 6].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightData[5]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[5].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[5].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 6].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(6, this.CollectionWeightData[5]); this.TreatEthernetCommunication(6, this.CollectionWeightData[5]); - //this.TrackingInspectionData(this.CollectionWeightData[5], 6); - } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 6].IsUpdate = true; - - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - case 3: - case 4: - case 5: - break; - case 6: - this.ChildFormMainDisplay.UpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightData[0]); - break; - case 7: - this.ChildFormMainDisplay.UpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightData[1]); - break; - case 8: - this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[2]); - break; - case 9: - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[3]); - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[4]); - break; - default: - break; - } - #endregion } + #endregion + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { - this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightDataTest[5]); + #region FormEquipmentTest + this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay6(this.EquipmentStatus, this.CollectionWeightDataTest[5]); + #endregion } #endregion break; @@ -5029,62 +5105,75 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { #region FormMainDisplay - this.Update30000ModbusData(6); - + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[6].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightData[6]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 7].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightData[6]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[6].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[6].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 7].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(7, this.CollectionWeightData[6]); this.TreatEthernetCommunication(7, this.CollectionWeightData[6]); - //this.TrackingInspectionData(this.CollectionWeightData[6], 7); } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 7].IsUpdate = true; + #endregion - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - case 3: - case 4: - case 5: - case 6: - break; - case 7: - this.ChildFormMainDisplay.UpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightData[0]); - break; - case 8: - this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[1]); - break; - case 9: - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[2]); - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[3]); - break; - default: - break; - } - #endregion - } - + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { - this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightDataTest[6]); + #region FormEquipmentTest + this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay7(this.EquipmentStatus, this.CollectionWeightDataTest[6]); + #endregion } #endregion break; @@ -5099,61 +5188,76 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { - #region FormMainDisplay - this.Update30000ModbusData(7); - + #region FormMainDisplay + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[7].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[7]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 8].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[7]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[7].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[7].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 8].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(8, this.CollectionWeightData[7]); this.TreatEthernetCommunication(8, this.CollectionWeightData[7]); - //this.TrackingInspectionData(this.CollectionWeightData[7], 8); - } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 8].IsUpdate = true; - - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - break; - case 8: - this.ChildFormMainDisplay.UpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightData[0]); - break; - case 9: - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[1]); - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[2]); - break; - default: - break; - } - #endregion } + #endregion + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { - this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightDataTest[7]); + #region FormEquipmentTest + this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay8(this.EquipmentStatus, this.CollectionWeightDataTest[7]); + #endregion } #endregion break; @@ -5169,58 +5273,75 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { #region FormMainDisplay - this.Update30000ModbusData(8); - + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[8].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[8]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 9].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[8]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[8].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[8].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 9].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(9, this.CollectionWeightData[8]); this.TreatEthernetCommunication(9, this.CollectionWeightData[8]); - //this.TrackingInspectionData(this.CollectionWeightData[8], 9); - } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 9].IsUpdate = true; - - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - break; - case 9: - this.ChildFormMainDisplay.UpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightData[0]); - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[1]); - break; - default: - break; - } - #endregion } + #endregion + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { - this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightDataTest[8]); + #region FormEquipmentTest + this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay9(this.EquipmentStatus, this.CollectionWeightDataTest[8]); + #endregion } #endregion break; @@ -5236,56 +5357,75 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { #region FormMainDisplay - this.Update30000ModbusData(9); - + #region 통합 전송하기 위한 데이터 체크 + // 중량 갱신이 되었는지 체크 if (this.SystemConfig.IsWeightViewForward == true) - { this.CollectionWeightData[9].IsUpdate = true; - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[9]); + else + this.CollectionWeightData[this.CollectionWeightData.Count - 10].IsUpdate = true; + #endregion + + #region 화면 갱신 + this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[9]); + #endregion + + #region 진입센서에러 + if (this.CollectionWeightData[9].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + #endregion + + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + if (this.SystemConfig.IsWeightViewForward == true) + { + if (this.CollectionWeightData[9].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + else + { + if (this.CollectionWeightData[this.CollectionWeightData.Count - 10].JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + } + } + } + #endregion + + #region 통신 + if (this.SystemConfig.IsIntegratedTransmission == false) + { this.TreatSerialCommunication(10, this.CollectionWeightData[9]); this.TreatEthernetCommunication(10, this.CollectionWeightData[9]); - //this.TrackingInspectionData(this.CollectionWeightData[9], 10); - } - else - { - this.CollectionWeightData[this.CollectionWeightData.Count - 10].IsUpdate = true; - - #region 열 순서 Reverse - switch (this.SystemConfig.EquipmentColumns) - { - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - break; - case 10: - this.ChildFormMainDisplay.UpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightData[0]); - break; - default: - break; - } - #endregion } + #endregion + #region 통합 전송 if (this.SystemConfig.IsIntegratedTransmission == true) { - #region 통합 전송 if (this.timerTimeOutTransmission.Enabled == false) this.timerTimeOutTransmission.Enabled = true; // EquipmentColumns 수 만큼 중량이 들어왔는지 체크 후 데이터 전송하는 함수(EquipmentColumns 갯수가 다 들어아야 데이터 전송함) this.IntegratedTransmissionCheck(this.CollectionWeightData); - #endregion } #endregion + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { - this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightDataTest[9]); + #region FormEquipmentTest + this.ChildFormEquipmentTest.UpdateUpdateStartWeightDisplay10(this.EquipmentStatus, this.CollectionWeightDataTest[9]); + #endregion } #endregion break; @@ -5342,14 +5482,77 @@ namespace INT69DB_2A.Forms #endregion if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormMainDisplay) { + #region 이중진입 + if (this.CurrentOptionParameterItem.DoubleEnter == "1") + { + // 이중진입(상한 판정시 하한설정값에 두배이면 이중) 이면 STOP + foreach (WeightData data in this.CollectionWeightData) + { + if (data.JudgmentStatus == DataStore.JudgmentStatus.Double) + { + if (this.EquipmentStatus == DataStore.EquipmentStatus.Start) + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + this.ChildFormMainDisplay.UpdateAlarmMessage1Display(); + break; + } + } + } + } + #endregion + + #region 화면 갱신, 데이터 백업 this.TrackingInspectionData(this.CollectionWeightData); - this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.EquipmentStatus, this.CollectionWeightData); + this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.EquipmentStatus, this.CollectionWeightData); + #endregion + #region 진입센서에러 for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++) - this.Update30000ModbusData(i); + { + if (this.CollectionWeightData[i].JudgmentStatus == DataStore.JudgmentStatus.SensorError) + { + this.ChildFormMainDisplay.UpdateAlarmMessage4Display(true); + break; + } + } + #endregion + #region 통신 this.TreatSerialCommunication(this.CollectionWeightData); - this.TreatEthernetCommunication(this.CollectionWeightData); + this.TreatEthernetCommunication(this.CollectionWeightData); + #endregion + + #region ACNC(Alarm Continuous Ng Count) + if (this.SystemConfig.IsAlarmContinuousNGEnable == true) + { + for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++) + { + if (this.CollectionWeightData[i].IsContinuousNG == true) + { + this.CollectionWeightData[i].ContinuousNG++; + + if (this.CollectionWeightData[i].ContinuousNG >= this.SystemConfig.AlarmContinuousNG) + { + //this.CollectionWeightData[i].ContinuousNG = 0; + this.TransferData(CommunicationCommand.AlarmPulseNG, CommunicationID.MainBoard); + this.ChildFormMainDisplay.UpdateAlarmMessage3Display(true); + } + } + } + } + #endregion + + #region ATPC(Alarm Total Pass Count) + if (this.SystemConfig.IsAlarmTotalPassCntEnable == true) + { + result = this.CurrentAlarmTotalPassCnt.SetCountStic1(this.CollectionWeightData); + + if (result == true) + this.TransferData(CommunicationCommand.AlarmPulseNG, CommunicationID.MainBoard); + + this.ChildFormMainDisplay.UpdateAlarmTotalPassCountDisplay(this.CurrentAlarmTotalPassCnt); + } + #endregion } else if (this.SystemConfig.CurrentForm == DataStore.FormStore.FormEquipmentTest) { @@ -6135,8 +6338,8 @@ namespace INT69DB_2A.Forms structItem2.DummyBool16 = false; structItem2.DummyBool17 = false; structItem2.DummyBool18 = false; - structItem2.DummyBool19 = false; - structItem2.DummyBool20 = false; + structItem2.IsAlarmContinuousNGEnable = this.SystemConfig.IsAlarmContinuousNGEnable; + structItem2.IsAlarmTotalPassCntEnable = this.SystemConfig.IsAlarmTotalPassCntEnable; structItem2.DummyInt1 = 0; structItem2.DummyInt2 = 0; @@ -6145,8 +6348,8 @@ namespace INT69DB_2A.Forms structItem2.DummyInt5 = 0; structItem2.DummyInt6 = 0; structItem2.DummyInt7 = 0; - structItem2.DummyInt8 = 0; - structItem2.DummyInt9 = 0; + structItem2.AlarmContinuousNG = this.SystemConfig.AlarmContinuousNG; + structItem2.AlarmTotalPassCnt = this.SystemConfig.AlarmTotalPassCnt; structItem2.ModbusTcpStartAddress = this.SystemConfig.ModbusTcpStartAddress; structItem2.ModbusRtuSlaveID = this.SystemConfig.ModbusRtuSlaveID; structItem2.ModbusTcpAddress1 = this.SystemConfig.ModbusTcpAddress1; @@ -6258,8 +6461,8 @@ namespace INT69DB_2A.Forms structItem2.DummyBool16 = false; structItem2.DummyBool17 = false; structItem2.DummyBool18 = false; - structItem2.DummyBool19 = false; - structItem2.DummyBool20 = false; + structItem2.IsAlarmContinuousNGEnable = item.IsAlarmContinuousNGEnable; + structItem2.IsAlarmTotalPassCntEnable = item.IsAlarmTotalPassCntEnable; structItem2.DummyInt1 = 0; structItem2.DummyInt2 = 0; @@ -6268,8 +6471,8 @@ namespace INT69DB_2A.Forms structItem2.DummyInt5 = 0; structItem2.DummyInt6 = 0; structItem2.DummyInt7 = 0; - structItem2.DummyInt8 = 0; - structItem2.DummyInt9 = 0; + structItem2.AlarmContinuousNG = item.AlarmContinuousNG; + structItem2.AlarmTotalPassCnt = item.AlarmTotalPassCnt; structItem2.ModbusTcpStartAddress = item.ModbusTcpStartAddress; structItem2.ModbusRtuSlaveID = item.ModbusRtuSlaveID; structItem2.ModbusTcpAddress1 = item.ModbusTcpAddress1; @@ -6394,6 +6597,10 @@ namespace INT69DB_2A.Forms this.SystemConfig.ModbusTcpAddress2 = structItem2.ModbusTcpAddress2; this.SystemConfig.DataStoragePeriod = structItem2.DataStoragePeriod; this.SystemConfig.AutomaticLogout = structItem2.AutomaticLogout; + this.SystemConfig.IsAlarmContinuousNGEnable = structItem2.IsAlarmContinuousNGEnable; + this.SystemConfig.IsAlarmTotalPassCntEnable = structItem2.IsAlarmTotalPassCntEnable; + this.SystemConfig.AlarmContinuousNG = structItem2.AlarmContinuousNG; + this.SystemConfig.AlarmTotalPassCnt = structItem2.AlarmTotalPassCnt; } catch { @@ -7497,7 +7704,7 @@ namespace INT69DB_2A.Forms if (this.SystemConfig.IsPart11 == false) { folder = this.PathDataBackupFolder; - fileName = string.Format("{0:yyyyMMdd}_{1}", time, this.SystemConfig.ProductNumber); + fileName = string.Format("{0:yyyyMMdd}_{1}.csv", time, this.SystemConfig.ProductNumber); } else { @@ -7763,6 +7970,9 @@ namespace INT69DB_2A.Forms public void SetTrackingHistoryData(DataStore.TrackingOperation eventType, string detail) { + if (this.SystemConfig.IsPart11 == false) + return; + HistoryData data = new HistoryData(); data.Type = "Operation"; @@ -7777,6 +7987,9 @@ namespace INT69DB_2A.Forms } public void SetTrackingHistoryData(DataStore.TrackingAlarm eventType, string detail) { + if (this.SystemConfig.IsPart11 == false) + return; + HistoryData data = new HistoryData(); data.Type = "Alarm"; @@ -7791,6 +8004,9 @@ namespace INT69DB_2A.Forms } public void SetTrackingHistoryData(DataStore.TrackingParameter eventType, string detail, string before, string after) { + if (this.SystemConfig.IsPart11 == false) + return; + if (before == after) return; @@ -7922,6 +8138,12 @@ namespace INT69DB_2A.Forms // UserGroup File Load this.LoadUserGroupFile(ref this.CurrentUserGroup); + // 변수 초기 셋팅2 + this.DefaultSetting2(); + this.Update30000ModbusData(); + for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++) + this.Update30000ModbusData(i); + // UserManager 초기화 if (this.SystemConfig.IsLogin == true) { @@ -7942,29 +8164,19 @@ namespace INT69DB_2A.Forms // 폼생성 this.CreateForm(); - this.Update30000ModbusData(); - for (int i = 0; i < this.SystemConfig.EquipmentColumns; i++) - this.Update30000ModbusData(i); - // 통신 OPEN this.OpenSmartUartLink(); + this.SmartSplashProgramLoad.Finish(); + this.smartForm.Show((int)DataStore.FormStore.FormMainDisplay); // Serial3 통신 Open //this.SerialUart3Open(); this.UartCom3Open(); - - // 변수 초기 셋팅 - this.DefaultSetting2(); - // 초기 파라미터 전송 this.TrasferSystemParameter(this.SystemConfig); this.SetTrackingHistoryData(DataStore.TrackingOperation.PowerOn, ""); - this.SmartSplashProgramLoad.Finish(); - - this.smartForm.Show((int)DataStore.FormStore.FormMainDisplay); - // UserManager_GetUserListName this.timerUserList.Enabled = true; } @@ -8278,51 +8490,7 @@ namespace INT69DB_2A.Forms { this.timerTimeOutTransmission.Enabled = false; - #region COM3 - switch (this.SystemConfig.Serial3Mode) - { - case 1: - this.UartCom3Write(this.Protocol_OPT1_NotStxEtx(this.CollectionWeightData)); - break; - case 2: - this.UartCom3Write(this.Protocol_OPT2_NotStxEtx(this.CollectionWeightData)); - break; - case 3: - this.UartCom3Write(this.Protocol_OPT3_NotStxEtx(this.CollectionWeightData)); - break; - case 4: - this.UartCom3Write(this.Protocol_Printer(this.CollectionWeightData)); - break; - case 5: - this.UartCom3Write(this.Protocol_OPT4_NotStxEtx(this.CollectionWeightData)); - break; - default: - break; - } - #endregion - - #region Ethernet - switch (this.SystemConfig.EthernetMode) - { - case 1: - this.SendEthernetData(this.Protocol_OPT1_NotStxEtx(this.CollectionWeightData)); - break; - case 2: - this.SendEthernetData(this.Protocol_OPT2_NotStxEtx(this.CollectionWeightData)); - break; - case 3: - this.SendEthernetData(this.Protocol_OPT3_NotStxEtx(this.CollectionWeightData)); - break; - case 5: - this.SendEthernetData(this.Protocol_OPT4_NotStxEtx(this.CollectionWeightData)); - break; - default: - break; - } - #endregion - - // DataBackup - this.TrackingInspectionData(this.CollectionWeightData); + this.IntegratedTransmission(this.CollectionWeightData); foreach (WeightData data in this.CollectionWeightData) data.IsUpdate = false; diff --git a/INT69DB_2A/Forms/FormMain.resx b/INT69DB_2A/Forms/FormMain.resx index 1528af4..02b53b2 100644 --- a/INT69DB_2A/Forms/FormMain.resx +++ b/INT69DB_2A/Forms/FormMain.resx @@ -118,40 +118,40 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 12, 8 + 17, 17 - 883, 8 + 778, 17 - 528, 8 + 423, 17 - 739, 8 + 634, 17 - 405, 8 + 300, 17 - 137, 8 + 142, 17 - 998, 8 + 893, 17 - 301, 49 + 141, 56 - 12, 47 + 1061, 17 - 172, 47 + 17, 56 - 442, 49 + 293, 56 - 643, 49 + 494, 56 WEBPAD diff --git a/INT69DB_2A/Forms/FormMainDisplay.Designer.cs b/INT69DB_2A/Forms/FormMainDisplay.Designer.cs index 4168bcd..4be4266 100644 --- a/INT69DB_2A/Forms/FormMainDisplay.Designer.cs +++ b/INT69DB_2A/Forms/FormMainDisplay.Designer.cs @@ -79,10 +79,13 @@ this.buttonUser = new SmartX.SmartButton(); this.labelUserID = new SmartX.SmartLabel(); this.labelUserLevel = new SmartX.SmartLabel(); - this.panelSubMenu = new System.Windows.Forms.Panel(); + this.panelSubMenu1 = new System.Windows.Forms.Panel(); + this.labelAlarmContinuousNG = new SmartX.SmartLabel(); + this.buttonAlarmContinuousNG = new SmartX.SmartButton(); + this.labelStaticAlarmContinuousNG = new SmartX.SmartLabel(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.buttonPrint = new SmartX.SmartButton(); this.labelTitleBypass = new SmartX.SmartLabel(); - this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.buttonBypassRun = new SmartX.SmartButton(); this.buttonBypassDirection = new SmartX.SmartButton(); this.buttonBypassOnce = new SmartX.SmartButton(); @@ -92,11 +95,42 @@ this.pictureBoxEthernetConnection = new System.Windows.Forms.PictureBox(); this.timerServer = new System.Windows.Forms.Timer(); this.labelExpireOfPassword = new SmartX.SmartLabel(); + this.panelSubMenu2 = new System.Windows.Forms.Panel(); + this.buttonATPC_Reset = new SmartX.SmartButton(); + this.labelStaticATPC_Lack = new SmartX.SmartLabel(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.labelATPC_Lack = new SmartX.SmartLabel(); + this.labelStaticATPC_Pass = new SmartX.SmartLabel(); + this.labelATPC_Pass = new SmartX.SmartLabel(); + this.labelStaticATPC_Count = new SmartX.SmartLabel(); + this.labelATPC_counting = new SmartX.SmartLabel(); + this.labelATPC_SetCNT = new SmartX.SmartLabel(); + this.buttonATPC_Enable = new SmartX.SmartButton(); + this.labelStaticATPC = new SmartX.SmartLabel(); + this.panelAlarmMessageBox1 = new System.Windows.Forms.Panel(); + this.labelMessage1 = new SmartX.SmartLabel(); + this.pictureBoxAlarmMsg1 = new System.Windows.Forms.PictureBox(); + this.smartLabel2 = new SmartX.SmartLabel(); + this.buttonAlarm1Ok = new SmartX.SmartButton(); + this.panelAlarmMessageBox3 = new System.Windows.Forms.Panel(); + this.labelMessage3 = new SmartX.SmartLabel(); + this.pictureBox4 = new System.Windows.Forms.PictureBox(); + this.smartLabel4 = new SmartX.SmartLabel(); + this.buttonAlarm3OK = new SmartX.SmartButton(); + this.panelAlarmMessageBox4 = new System.Windows.Forms.Panel(); + this.labelMessage4 = new SmartX.SmartLabel(); + this.pictureBox3 = new System.Windows.Forms.PictureBox(); + this.smartLabel3 = new SmartX.SmartLabel(); + this.buttonAlarm4OK = new SmartX.SmartButton(); ((System.ComponentModel.ISupportInitialize)(this.smartForm1)).BeginInit(); this.panelSetting.SuspendLayout(); this.groupBoxConveyor.SuspendLayout(); this.groupBoxSorter.SuspendLayout(); - this.panelSubMenu.SuspendLayout(); + this.panelSubMenu1.SuspendLayout(); + this.panelSubMenu2.SuspendLayout(); + this.panelAlarmMessageBox1.SuspendLayout(); + this.panelAlarmMessageBox3.SuspendLayout(); + this.panelAlarmMessageBox4.SuspendLayout(); this.SuspendLayout(); // // smartForm1 @@ -354,7 +388,7 @@ this.labelTitleTotalCount.BackPictureBox2 = null; this.labelTitleTotalCount.BorderColor = System.Drawing.Color.Black; this.labelTitleTotalCount.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleTotalCount.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelTitleTotalCount.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); this.labelTitleTotalCount.ForeColor = System.Drawing.Color.White; this.labelTitleTotalCount.InitVisible = true; this.labelTitleTotalCount.LineSpacing = 0F; @@ -376,7 +410,7 @@ this.labelTitleNGCount.BackPictureBox2 = null; this.labelTitleNGCount.BorderColor = System.Drawing.Color.Black; this.labelTitleNGCount.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleNGCount.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelTitleNGCount.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); this.labelTitleNGCount.ForeColor = System.Drawing.Color.White; this.labelTitleNGCount.InitVisible = true; this.labelTitleNGCount.LineSpacing = 0F; @@ -987,7 +1021,7 @@ this.smartLabel5.BackPictureBox2 = null; this.smartLabel5.BorderColor = System.Drawing.Color.Black; this.smartLabel5.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel5.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.smartLabel5.Font = new System.Drawing.Font("New Gulim", 12F, System.Drawing.FontStyle.Bold); this.smartLabel5.ForeColor = System.Drawing.Color.White; this.smartLabel5.InitVisible = true; this.smartLabel5.LineSpacing = 0F; @@ -1173,7 +1207,7 @@ this.labelUserID.BackPictureBox2 = null; this.labelUserID.BorderColor = System.Drawing.Color.Black; this.labelUserID.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelUserID.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Bold); + this.labelUserID.Font = new System.Drawing.Font("New Gulim", 9F, System.Drawing.FontStyle.Bold); this.labelUserID.ForeColor = System.Drawing.Color.White; this.labelUserID.InitVisible = true; this.labelUserID.LineSpacing = 0F; @@ -1193,7 +1227,7 @@ this.labelUserLevel.BackPictureBox2 = null; this.labelUserLevel.BorderColor = System.Drawing.Color.Black; this.labelUserLevel.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelUserLevel.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Bold); + this.labelUserLevel.Font = new System.Drawing.Font("New Gulim", 9F, System.Drawing.FontStyle.Bold); this.labelUserLevel.ForeColor = System.Drawing.Color.White; this.labelUserLevel.InitVisible = true; this.labelUserLevel.LineSpacing = 0F; @@ -1206,18 +1240,100 @@ this.labelUserLevel.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelUserLevel.Wordwrap = false; // - // panelSubMenu + // panelSubMenu1 // - this.panelSubMenu.Controls.Add(this.buttonPrint); - this.panelSubMenu.Controls.Add(this.labelTitleBypass); - this.panelSubMenu.Controls.Add(this.buttonBypassRun); - this.panelSubMenu.Controls.Add(this.buttonBypassDirection); - this.panelSubMenu.Controls.Add(this.buttonBypassOnce); - this.panelSubMenu.Controls.Add(this.pictureBox1); - this.panelSubMenu.Location = new System.Drawing.Point(820, 532); - this.panelSubMenu.Name = "panelSubMenu"; - this.panelSubMenu.Size = new System.Drawing.Size(572, 70); - this.panelSubMenu.Visible = false; + this.panelSubMenu1.Controls.Add(this.labelAlarmContinuousNG); + this.panelSubMenu1.Controls.Add(this.buttonAlarmContinuousNG); + this.panelSubMenu1.Controls.Add(this.labelStaticAlarmContinuousNG); + this.panelSubMenu1.Controls.Add(this.buttonPrint); + this.panelSubMenu1.Controls.Add(this.labelTitleBypass); + this.panelSubMenu1.Controls.Add(this.buttonBypassRun); + this.panelSubMenu1.Controls.Add(this.buttonBypassDirection); + this.panelSubMenu1.Controls.Add(this.buttonBypassOnce); + this.panelSubMenu1.Controls.Add(this.pictureBox1); + this.panelSubMenu1.Location = new System.Drawing.Point(820, 530); + this.panelSubMenu1.Name = "panelSubMenu1"; + this.panelSubMenu1.Size = new System.Drawing.Size(572, 70); + this.panelSubMenu1.Visible = false; + // + // labelAlarmContinuousNG + // + this.labelAlarmContinuousNG.BackColor = System.Drawing.Color.White; + this.labelAlarmContinuousNG.BackPictureBox = null; + this.labelAlarmContinuousNG.BackPictureBox1 = null; + this.labelAlarmContinuousNG.BackPictureBox2 = null; + this.labelAlarmContinuousNG.BorderColor = System.Drawing.Color.Black; + this.labelAlarmContinuousNG.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelAlarmContinuousNG.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelAlarmContinuousNG.InitVisible = true; + this.labelAlarmContinuousNG.LineSpacing = 0F; + this.labelAlarmContinuousNG.Location = new System.Drawing.Point(382, 8); + this.labelAlarmContinuousNG.Name = "labelAlarmContinuousNG"; + this.labelAlarmContinuousNG.Size = new System.Drawing.Size(100, 25); + this.labelAlarmContinuousNG.TabIndex = 703; + this.labelAlarmContinuousNG.Text = "9999"; + this.labelAlarmContinuousNG.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelAlarmContinuousNG.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelAlarmContinuousNG.Wordwrap = false; + this.labelAlarmContinuousNG.Click += new System.EventHandler(this.labelAlarmContinuousNG_Click); + // + // buttonAlarmContinuousNG + // + this.buttonAlarmContinuousNG.BackPictureBox = null; + this.buttonAlarmContinuousNG.BackPictureBox1 = null; + this.buttonAlarmContinuousNG.BackPictureBox2 = null; + this.buttonAlarmContinuousNG.ButtonColor = System.Drawing.Color.Gray; + this.buttonAlarmContinuousNG.ButtonImageAutoSize = true; + this.buttonAlarmContinuousNG.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonAlarmContinuousNG.DisableImage = null; + this.buttonAlarmContinuousNG.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmContinuousNG.DownImage"))); + this.buttonAlarmContinuousNG.GroupID = 0; + this.buttonAlarmContinuousNG.InitVisible = true; + this.buttonAlarmContinuousNG.Location = new System.Drawing.Point(382, 36); + this.buttonAlarmContinuousNG.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; + this.buttonAlarmContinuousNG.Name = "buttonAlarmContinuousNG"; + this.buttonAlarmContinuousNG.NestedClickEventPrevent = false; + this.buttonAlarmContinuousNG.OutlinePixel = 1; + this.buttonAlarmContinuousNG.RepeatInterval = 200; + this.buttonAlarmContinuousNG.RepeatIntervalAccelerate = null; + this.buttonAlarmContinuousNG.SafeInterval = 200; + this.buttonAlarmContinuousNG.Size = new System.Drawing.Size(100, 25); + this.buttonAlarmContinuousNG.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonAlarmContinuousNG.TabIndex = 702; + this.buttonAlarmContinuousNG.TextColor = System.Drawing.Color.Black; + this.buttonAlarmContinuousNG.TextDownColor = System.Drawing.Color.White; + this.buttonAlarmContinuousNG.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonAlarmContinuousNG.TextLocation = new System.Drawing.Point(0, 0); + this.buttonAlarmContinuousNG.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonAlarmContinuousNG.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarmContinuousNG.UpImage"))); + this.buttonAlarmContinuousNG.Click += new System.EventHandler(this.buttonAlarmContinuousNG_Click); + // + // labelStaticAlarmContinuousNG + // + this.labelStaticAlarmContinuousNG.BackPictureBox = this.pictureBox1; + this.labelStaticAlarmContinuousNG.BackPictureBox1 = null; + this.labelStaticAlarmContinuousNG.BackPictureBox2 = null; + this.labelStaticAlarmContinuousNG.BorderColor = System.Drawing.Color.Black; + this.labelStaticAlarmContinuousNG.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelStaticAlarmContinuousNG.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold); + this.labelStaticAlarmContinuousNG.ForeColor = System.Drawing.Color.White; + this.labelStaticAlarmContinuousNG.InitVisible = true; + this.labelStaticAlarmContinuousNG.LineSpacing = 0F; + this.labelStaticAlarmContinuousNG.Location = new System.Drawing.Point(266, 20); + this.labelStaticAlarmContinuousNG.Name = "labelStaticAlarmContinuousNG"; + this.labelStaticAlarmContinuousNG.Size = new System.Drawing.Size(110, 30); + this.labelStaticAlarmContinuousNG.TabIndex = 690; + this.labelStaticAlarmContinuousNG.Text = "연속NG알람"; + this.labelStaticAlarmContinuousNG.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelStaticAlarmContinuousNG.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelStaticAlarmContinuousNG.Wordwrap = false; + // + // pictureBox1 + // + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(0, 0); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(572, 70); // // buttonPrint // @@ -1257,7 +1373,7 @@ this.labelTitleBypass.BackPictureBox2 = null; this.labelTitleBypass.BorderColor = System.Drawing.Color.Black; this.labelTitleBypass.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleBypass.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleBypass.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold); this.labelTitleBypass.ForeColor = System.Drawing.Color.White; this.labelTitleBypass.InitVisible = true; this.labelTitleBypass.LineSpacing = 0F; @@ -1270,13 +1386,6 @@ this.labelTitleBypass.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelTitleBypass.Wordwrap = false; // - // pictureBox1 - // - this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); - this.pictureBox1.Location = new System.Drawing.Point(0, 0); - this.pictureBox1.Name = "pictureBox1"; - this.pictureBox1.Size = new System.Drawing.Size(572, 70); - // // buttonBypassRun // this.buttonBypassRun.BackPictureBox = null; @@ -1383,7 +1492,7 @@ this.buttonSubMenu.GroupID = 0; this.buttonSubMenu.InitVisible = true; this.buttonSubMenu.Location = new System.Drawing.Point(597, 489); - this.buttonSubMenu.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; + this.buttonSubMenu.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonSubMenu.Name = "buttonSubMenu"; this.buttonSubMenu.NestedClickEventPrevent = false; this.buttonSubMenu.OutlinePixel = 1; @@ -1462,7 +1571,7 @@ this.labelExpireOfPassword.BackPictureBox2 = null; this.labelExpireOfPassword.BorderColor = System.Drawing.Color.Black; this.labelExpireOfPassword.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelExpireOfPassword.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Bold); + this.labelExpireOfPassword.Font = new System.Drawing.Font("New Gulim", 9F, System.Drawing.FontStyle.Bold); this.labelExpireOfPassword.ForeColor = System.Drawing.Color.White; this.labelExpireOfPassword.InitVisible = true; this.labelExpireOfPassword.LineSpacing = 0F; @@ -1475,18 +1584,535 @@ this.labelExpireOfPassword.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelExpireOfPassword.Wordwrap = false; // + // panelSubMenu2 + // + this.panelSubMenu2.Controls.Add(this.buttonATPC_Reset); + this.panelSubMenu2.Controls.Add(this.labelStaticATPC_Lack); + this.panelSubMenu2.Controls.Add(this.labelATPC_Lack); + this.panelSubMenu2.Controls.Add(this.labelStaticATPC_Pass); + this.panelSubMenu2.Controls.Add(this.labelATPC_Pass); + this.panelSubMenu2.Controls.Add(this.labelStaticATPC_Count); + this.panelSubMenu2.Controls.Add(this.labelATPC_counting); + this.panelSubMenu2.Controls.Add(this.labelATPC_SetCNT); + this.panelSubMenu2.Controls.Add(this.buttonATPC_Enable); + this.panelSubMenu2.Controls.Add(this.labelStaticATPC); + this.panelSubMenu2.Controls.Add(this.pictureBox2); + this.panelSubMenu2.Location = new System.Drawing.Point(820, 606); + this.panelSubMenu2.Name = "panelSubMenu2"; + this.panelSubMenu2.Size = new System.Drawing.Size(572, 70); + this.panelSubMenu2.Visible = false; + // + // buttonATPC_Reset + // + this.buttonATPC_Reset.BackPictureBox = null; + this.buttonATPC_Reset.BackPictureBox1 = null; + this.buttonATPC_Reset.BackPictureBox2 = null; + this.buttonATPC_Reset.ButtonColor = System.Drawing.Color.Silver; + this.buttonATPC_Reset.ButtonImageAutoSize = true; + this.buttonATPC_Reset.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonATPC_Reset.DisableImage = null; + this.buttonATPC_Reset.DownImage = null; + this.buttonATPC_Reset.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold); + this.buttonATPC_Reset.GroupID = 0; + this.buttonATPC_Reset.InitVisible = true; + this.buttonATPC_Reset.Location = new System.Drawing.Point(353, 31); + this.buttonATPC_Reset.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonATPC_Reset.Name = "buttonATPC_Reset"; + this.buttonATPC_Reset.NestedClickEventPrevent = false; + this.buttonATPC_Reset.OutlinePixel = 1; + this.buttonATPC_Reset.RepeatInterval = 200; + this.buttonATPC_Reset.RepeatIntervalAccelerate = null; + this.buttonATPC_Reset.SafeInterval = 200; + this.buttonATPC_Reset.Size = new System.Drawing.Size(40, 30); + this.buttonATPC_Reset.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonATPC_Reset.TabIndex = 711; + this.buttonATPC_Reset.Text = "리셋"; + this.buttonATPC_Reset.TextColor = System.Drawing.Color.Black; + this.buttonATPC_Reset.TextDownColor = System.Drawing.Color.White; + this.buttonATPC_Reset.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonATPC_Reset.TextLocation = new System.Drawing.Point(0, 0); + this.buttonATPC_Reset.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonATPC_Reset.UpImage = null; + this.buttonATPC_Reset.Click += new System.EventHandler(this.buttonATPC_Reset_Click); + // + // labelStaticATPC_Lack + // + this.labelStaticATPC_Lack.BackPictureBox = this.pictureBox2; + this.labelStaticATPC_Lack.BackPictureBox1 = null; + this.labelStaticATPC_Lack.BackPictureBox2 = null; + this.labelStaticATPC_Lack.BorderColor = System.Drawing.Color.Black; + this.labelStaticATPC_Lack.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelStaticATPC_Lack.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold); + this.labelStaticATPC_Lack.ForeColor = System.Drawing.Color.White; + this.labelStaticATPC_Lack.InitVisible = true; + this.labelStaticATPC_Lack.LineSpacing = 0F; + this.labelStaticATPC_Lack.Location = new System.Drawing.Point(485, 8); + this.labelStaticATPC_Lack.Name = "labelStaticATPC_Lack"; + this.labelStaticATPC_Lack.Size = new System.Drawing.Size(80, 20); + this.labelStaticATPC_Lack.TabIndex = 710; + this.labelStaticATPC_Lack.Text = "부족"; + this.labelStaticATPC_Lack.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelStaticATPC_Lack.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelStaticATPC_Lack.Wordwrap = false; + // + // pictureBox2 + // + this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); + this.pictureBox2.Location = new System.Drawing.Point(0, 0); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(572, 70); + // + // labelATPC_Lack + // + this.labelATPC_Lack.BackColor = System.Drawing.Color.Gainsboro; + this.labelATPC_Lack.BackPictureBox = null; + this.labelATPC_Lack.BackPictureBox1 = null; + this.labelATPC_Lack.BackPictureBox2 = null; + this.labelATPC_Lack.BorderColor = System.Drawing.Color.Black; + this.labelATPC_Lack.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelATPC_Lack.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelATPC_Lack.ForeColor = System.Drawing.Color.Red; + this.labelATPC_Lack.InitVisible = true; + this.labelATPC_Lack.LineSpacing = 0F; + this.labelATPC_Lack.Location = new System.Drawing.Point(485, 31); + this.labelATPC_Lack.Name = "labelATPC_Lack"; + this.labelATPC_Lack.Size = new System.Drawing.Size(80, 30); + this.labelATPC_Lack.TabIndex = 709; + this.labelATPC_Lack.Text = "9999"; + this.labelATPC_Lack.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelATPC_Lack.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelATPC_Lack.Wordwrap = false; + // + // labelStaticATPC_Pass + // + this.labelStaticATPC_Pass.BackPictureBox = this.pictureBox2; + this.labelStaticATPC_Pass.BackPictureBox1 = null; + this.labelStaticATPC_Pass.BackPictureBox2 = null; + this.labelStaticATPC_Pass.BorderColor = System.Drawing.Color.Black; + this.labelStaticATPC_Pass.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelStaticATPC_Pass.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold); + this.labelStaticATPC_Pass.ForeColor = System.Drawing.Color.White; + this.labelStaticATPC_Pass.InitVisible = true; + this.labelStaticATPC_Pass.LineSpacing = 0F; + this.labelStaticATPC_Pass.Location = new System.Drawing.Point(399, 8); + this.labelStaticATPC_Pass.Name = "labelStaticATPC_Pass"; + this.labelStaticATPC_Pass.Size = new System.Drawing.Size(80, 20); + this.labelStaticATPC_Pass.TabIndex = 708; + this.labelStaticATPC_Pass.Text = "정상"; + this.labelStaticATPC_Pass.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelStaticATPC_Pass.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelStaticATPC_Pass.Wordwrap = false; + // + // labelATPC_Pass + // + this.labelATPC_Pass.BackColor = System.Drawing.Color.Gainsboro; + this.labelATPC_Pass.BackPictureBox = null; + this.labelATPC_Pass.BackPictureBox1 = null; + this.labelATPC_Pass.BackPictureBox2 = null; + this.labelATPC_Pass.BorderColor = System.Drawing.Color.Black; + this.labelATPC_Pass.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelATPC_Pass.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelATPC_Pass.InitVisible = true; + this.labelATPC_Pass.LineSpacing = 0F; + this.labelATPC_Pass.Location = new System.Drawing.Point(399, 31); + this.labelATPC_Pass.Name = "labelATPC_Pass"; + this.labelATPC_Pass.Size = new System.Drawing.Size(80, 30); + this.labelATPC_Pass.TabIndex = 707; + this.labelATPC_Pass.Text = "9999"; + this.labelATPC_Pass.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelATPC_Pass.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelATPC_Pass.Wordwrap = false; + // + // labelStaticATPC_Count + // + this.labelStaticATPC_Count.BackPictureBox = this.pictureBox2; + this.labelStaticATPC_Count.BackPictureBox1 = null; + this.labelStaticATPC_Count.BackPictureBox2 = null; + this.labelStaticATPC_Count.BorderColor = System.Drawing.Color.Black; + this.labelStaticATPC_Count.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelStaticATPC_Count.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold); + this.labelStaticATPC_Count.ForeColor = System.Drawing.Color.White; + this.labelStaticATPC_Count.InitVisible = true; + this.labelStaticATPC_Count.LineSpacing = 0F; + this.labelStaticATPC_Count.Location = new System.Drawing.Point(267, 8); + this.labelStaticATPC_Count.Name = "labelStaticATPC_Count"; + this.labelStaticATPC_Count.Size = new System.Drawing.Size(80, 20); + this.labelStaticATPC_Count.TabIndex = 706; + this.labelStaticATPC_Count.Text = "카운팅"; + this.labelStaticATPC_Count.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelStaticATPC_Count.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelStaticATPC_Count.Wordwrap = false; + // + // labelATPC_counting + // + this.labelATPC_counting.BackColor = System.Drawing.Color.White; + this.labelATPC_counting.BackPictureBox = null; + this.labelATPC_counting.BackPictureBox1 = null; + this.labelATPC_counting.BackPictureBox2 = null; + this.labelATPC_counting.BorderColor = System.Drawing.Color.Black; + this.labelATPC_counting.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelATPC_counting.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelATPC_counting.InitVisible = true; + this.labelATPC_counting.LineSpacing = 0F; + this.labelATPC_counting.Location = new System.Drawing.Point(267, 31); + this.labelATPC_counting.Name = "labelATPC_counting"; + this.labelATPC_counting.Size = new System.Drawing.Size(80, 30); + this.labelATPC_counting.TabIndex = 705; + this.labelATPC_counting.Text = "9999"; + this.labelATPC_counting.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelATPC_counting.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelATPC_counting.Wordwrap = false; + this.labelATPC_counting.Click += new System.EventHandler(this.labelATPC_counting_Click); + // + // labelATPC_SetCNT + // + this.labelATPC_SetCNT.BackColor = System.Drawing.Color.White; + this.labelATPC_SetCNT.BackPictureBox = null; + this.labelATPC_SetCNT.BackPictureBox1 = null; + this.labelATPC_SetCNT.BackPictureBox2 = null; + this.labelATPC_SetCNT.BorderColor = System.Drawing.Color.Black; + this.labelATPC_SetCNT.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelATPC_SetCNT.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelATPC_SetCNT.InitVisible = true; + this.labelATPC_SetCNT.LineSpacing = 0F; + this.labelATPC_SetCNT.Location = new System.Drawing.Point(136, 8); + this.labelATPC_SetCNT.Name = "labelATPC_SetCNT"; + this.labelATPC_SetCNT.Size = new System.Drawing.Size(100, 25); + this.labelATPC_SetCNT.TabIndex = 703; + this.labelATPC_SetCNT.Text = "9999"; + this.labelATPC_SetCNT.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelATPC_SetCNT.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelATPC_SetCNT.Wordwrap = false; + this.labelATPC_SetCNT.Click += new System.EventHandler(this.labelATPC_SetCNT_Click); + // + // buttonATPC_Enable + // + this.buttonATPC_Enable.BackPictureBox = null; + this.buttonATPC_Enable.BackPictureBox1 = null; + this.buttonATPC_Enable.BackPictureBox2 = null; + this.buttonATPC_Enable.ButtonColor = System.Drawing.Color.Gray; + this.buttonATPC_Enable.ButtonImageAutoSize = true; + this.buttonATPC_Enable.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonATPC_Enable.DisableImage = null; + this.buttonATPC_Enable.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonATPC_Enable.DownImage"))); + this.buttonATPC_Enable.GroupID = 0; + this.buttonATPC_Enable.InitVisible = true; + this.buttonATPC_Enable.Location = new System.Drawing.Point(136, 36); + this.buttonATPC_Enable.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; + this.buttonATPC_Enable.Name = "buttonATPC_Enable"; + this.buttonATPC_Enable.NestedClickEventPrevent = false; + this.buttonATPC_Enable.OutlinePixel = 1; + this.buttonATPC_Enable.RepeatInterval = 200; + this.buttonATPC_Enable.RepeatIntervalAccelerate = null; + this.buttonATPC_Enable.SafeInterval = 200; + this.buttonATPC_Enable.Size = new System.Drawing.Size(100, 25); + this.buttonATPC_Enable.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonATPC_Enable.TabIndex = 702; + this.buttonATPC_Enable.TextColor = System.Drawing.Color.Black; + this.buttonATPC_Enable.TextDownColor = System.Drawing.Color.White; + this.buttonATPC_Enable.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonATPC_Enable.TextLocation = new System.Drawing.Point(0, 0); + this.buttonATPC_Enable.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonATPC_Enable.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonATPC_Enable.UpImage"))); + this.buttonATPC_Enable.Click += new System.EventHandler(this.buttonAlarmTotalCount_Click); + // + // labelStaticATPC + // + this.labelStaticATPC.BackPictureBox = this.pictureBox2; + this.labelStaticATPC.BackPictureBox1 = null; + this.labelStaticATPC.BackPictureBox2 = null; + this.labelStaticATPC.BorderColor = System.Drawing.Color.Black; + this.labelStaticATPC.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelStaticATPC.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Bold); + this.labelStaticATPC.ForeColor = System.Drawing.Color.White; + this.labelStaticATPC.InitVisible = true; + this.labelStaticATPC.LineSpacing = 0F; + this.labelStaticATPC.Location = new System.Drawing.Point(10, 20); + this.labelStaticATPC.Name = "labelStaticATPC"; + this.labelStaticATPC.Size = new System.Drawing.Size(120, 30); + this.labelStaticATPC.TabIndex = 690; + this.labelStaticATPC.Text = "정량 카운터 알람"; + this.labelStaticATPC.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelStaticATPC.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelStaticATPC.Wordwrap = false; + // + // panelAlarmMessageBox1 + // + this.panelAlarmMessageBox1.Controls.Add(this.labelMessage1); + this.panelAlarmMessageBox1.Controls.Add(this.smartLabel2); + this.panelAlarmMessageBox1.Controls.Add(this.buttonAlarm1Ok); + this.panelAlarmMessageBox1.Controls.Add(this.pictureBoxAlarmMsg1); + this.panelAlarmMessageBox1.Location = new System.Drawing.Point(11, 614); + this.panelAlarmMessageBox1.Name = "panelAlarmMessageBox1"; + this.panelAlarmMessageBox1.Size = new System.Drawing.Size(450, 171); + this.panelAlarmMessageBox1.Visible = false; + // + // labelMessage1 + // + this.labelMessage1.BackPictureBox = this.pictureBoxAlarmMsg1; + this.labelMessage1.BackPictureBox1 = null; + this.labelMessage1.BackPictureBox2 = null; + this.labelMessage1.BorderColor = System.Drawing.Color.Black; + this.labelMessage1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelMessage1.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); + this.labelMessage1.InitVisible = true; + this.labelMessage1.LineSpacing = 0F; + this.labelMessage1.Location = new System.Drawing.Point(75, 62); + this.labelMessage1.Name = "labelMessage1"; + this.labelMessage1.Size = new System.Drawing.Size(339, 17); + this.labelMessage1.TabIndex = 20; + this.labelMessage1.Text = "알람 - 이중진입"; + this.labelMessage1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelMessage1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Top; + this.labelMessage1.Wordwrap = false; + // + // pictureBoxAlarmMsg1 + // + this.pictureBoxAlarmMsg1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxAlarmMsg1.Image"))); + this.pictureBoxAlarmMsg1.Location = new System.Drawing.Point(0, 0); + this.pictureBoxAlarmMsg1.Name = "pictureBoxAlarmMsg1"; + this.pictureBoxAlarmMsg1.Size = new System.Drawing.Size(450, 171); + // + // smartLabel2 + // + this.smartLabel2.BackPictureBox = this.pictureBoxAlarmMsg1; + this.smartLabel2.BackPictureBox1 = null; + this.smartLabel2.BackPictureBox2 = null; + this.smartLabel2.BorderColor = System.Drawing.Color.Black; + this.smartLabel2.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.smartLabel2.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); + this.smartLabel2.InitVisible = true; + this.smartLabel2.LineSpacing = 0F; + this.smartLabel2.Location = new System.Drawing.Point(11, 4); + this.smartLabel2.Name = "smartLabel2"; + this.smartLabel2.Size = new System.Drawing.Size(300, 20); + this.smartLabel2.TabIndex = 15; + this.smartLabel2.Text = "Error 0"; + this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.smartLabel2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Top; + this.smartLabel2.Wordwrap = false; + // + // buttonAlarm1Ok + // + this.buttonAlarm1Ok.BackPictureBox = null; + this.buttonAlarm1Ok.BackPictureBox1 = null; + this.buttonAlarm1Ok.BackPictureBox2 = null; + this.buttonAlarm1Ok.ButtonColor = System.Drawing.Color.Gray; + this.buttonAlarm1Ok.ButtonImageAutoSize = true; + this.buttonAlarm1Ok.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonAlarm1Ok.DisableImage = null; + this.buttonAlarm1Ok.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarm1Ok.DownImage"))); + this.buttonAlarm1Ok.GroupID = 0; + this.buttonAlarm1Ok.InitVisible = true; + this.buttonAlarm1Ok.Location = new System.Drawing.Point(331, 127); + this.buttonAlarm1Ok.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonAlarm1Ok.Name = "buttonAlarm1Ok"; + this.buttonAlarm1Ok.NestedClickEventPrevent = false; + this.buttonAlarm1Ok.OutlinePixel = 1; + this.buttonAlarm1Ok.RepeatInterval = 200; + this.buttonAlarm1Ok.RepeatIntervalAccelerate = null; + this.buttonAlarm1Ok.SafeInterval = 200; + this.buttonAlarm1Ok.Size = new System.Drawing.Size(90, 25); + this.buttonAlarm1Ok.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonAlarm1Ok.TabIndex = 13; + this.buttonAlarm1Ok.TextColor = System.Drawing.Color.Black; + this.buttonAlarm1Ok.TextDownColor = System.Drawing.Color.White; + this.buttonAlarm1Ok.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonAlarm1Ok.TextLocation = new System.Drawing.Point(0, 0); + this.buttonAlarm1Ok.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonAlarm1Ok.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarm1Ok.UpImage"))); + this.buttonAlarm1Ok.Click += new System.EventHandler(this.buttonAlarm1Ok_Click); + // + // panelAlarmMessageBox3 + // + this.panelAlarmMessageBox3.Controls.Add(this.labelMessage3); + this.panelAlarmMessageBox3.Controls.Add(this.smartLabel4); + this.panelAlarmMessageBox3.Controls.Add(this.buttonAlarm3OK); + this.panelAlarmMessageBox3.Controls.Add(this.pictureBox4); + this.panelAlarmMessageBox3.Location = new System.Drawing.Point(11, 791); + this.panelAlarmMessageBox3.Name = "panelAlarmMessageBox3"; + this.panelAlarmMessageBox3.Size = new System.Drawing.Size(450, 171); + this.panelAlarmMessageBox3.Visible = false; + // + // labelMessage3 + // + this.labelMessage3.BackPictureBox = this.pictureBox4; + this.labelMessage3.BackPictureBox1 = null; + this.labelMessage3.BackPictureBox2 = null; + this.labelMessage3.BorderColor = System.Drawing.Color.Black; + this.labelMessage3.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelMessage3.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); + this.labelMessage3.InitVisible = true; + this.labelMessage3.LineSpacing = 0F; + this.labelMessage3.Location = new System.Drawing.Point(75, 30); + this.labelMessage3.Name = "labelMessage3"; + this.labelMessage3.Size = new System.Drawing.Size(339, 91); + this.labelMessage3.TabIndex = 20; + this.labelMessage3.Text = "연속 NG 발생!"; + this.labelMessage3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelMessage3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelMessage3.Wordwrap = false; + // + // pictureBox4 + // + this.pictureBox4.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox4.Image"))); + this.pictureBox4.Location = new System.Drawing.Point(0, 0); + this.pictureBox4.Name = "pictureBox4"; + this.pictureBox4.Size = new System.Drawing.Size(450, 171); + // + // smartLabel4 + // + this.smartLabel4.BackPictureBox = this.pictureBox4; + this.smartLabel4.BackPictureBox1 = null; + this.smartLabel4.BackPictureBox2 = null; + this.smartLabel4.BorderColor = System.Drawing.Color.Black; + this.smartLabel4.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.smartLabel4.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); + this.smartLabel4.InitVisible = true; + this.smartLabel4.LineSpacing = 0F; + this.smartLabel4.Location = new System.Drawing.Point(11, 4); + this.smartLabel4.Name = "smartLabel4"; + this.smartLabel4.Size = new System.Drawing.Size(300, 20); + this.smartLabel4.TabIndex = 15; + this.smartLabel4.Text = "Alarm 0"; + this.smartLabel4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.smartLabel4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Top; + this.smartLabel4.Wordwrap = false; + // + // buttonAlarm3OK + // + this.buttonAlarm3OK.BackPictureBox = null; + this.buttonAlarm3OK.BackPictureBox1 = null; + this.buttonAlarm3OK.BackPictureBox2 = null; + this.buttonAlarm3OK.ButtonColor = System.Drawing.Color.Gray; + this.buttonAlarm3OK.ButtonImageAutoSize = true; + this.buttonAlarm3OK.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonAlarm3OK.DisableImage = null; + this.buttonAlarm3OK.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarm3OK.DownImage"))); + this.buttonAlarm3OK.GroupID = 0; + this.buttonAlarm3OK.InitVisible = true; + this.buttonAlarm3OK.Location = new System.Drawing.Point(331, 127); + this.buttonAlarm3OK.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonAlarm3OK.Name = "buttonAlarm3OK"; + this.buttonAlarm3OK.NestedClickEventPrevent = false; + this.buttonAlarm3OK.OutlinePixel = 1; + this.buttonAlarm3OK.RepeatInterval = 200; + this.buttonAlarm3OK.RepeatIntervalAccelerate = null; + this.buttonAlarm3OK.SafeInterval = 200; + this.buttonAlarm3OK.Size = new System.Drawing.Size(90, 25); + this.buttonAlarm3OK.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonAlarm3OK.TabIndex = 13; + this.buttonAlarm3OK.TextColor = System.Drawing.Color.Black; + this.buttonAlarm3OK.TextDownColor = System.Drawing.Color.White; + this.buttonAlarm3OK.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonAlarm3OK.TextLocation = new System.Drawing.Point(0, 0); + this.buttonAlarm3OK.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonAlarm3OK.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarm3OK.UpImage"))); + this.buttonAlarm3OK.Click += new System.EventHandler(this.buttonAlarm3OK_Click); + // + // panelAlarmMessageBox4 + // + this.panelAlarmMessageBox4.Controls.Add(this.labelMessage4); + this.panelAlarmMessageBox4.Controls.Add(this.smartLabel3); + this.panelAlarmMessageBox4.Controls.Add(this.buttonAlarm4OK); + this.panelAlarmMessageBox4.Controls.Add(this.pictureBox3); + this.panelAlarmMessageBox4.Location = new System.Drawing.Point(470, 791); + this.panelAlarmMessageBox4.Name = "panelAlarmMessageBox4"; + this.panelAlarmMessageBox4.Size = new System.Drawing.Size(450, 171); + this.panelAlarmMessageBox4.Visible = false; + // + // labelMessage4 + // + this.labelMessage4.BackPictureBox = this.pictureBox3; + this.labelMessage4.BackPictureBox1 = null; + this.labelMessage4.BackPictureBox2 = null; + this.labelMessage4.BorderColor = System.Drawing.Color.Black; + this.labelMessage4.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelMessage4.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); + this.labelMessage4.InitVisible = true; + this.labelMessage4.LineSpacing = 0F; + this.labelMessage4.Location = new System.Drawing.Point(75, 30); + this.labelMessage4.Name = "labelMessage4"; + this.labelMessage4.Size = new System.Drawing.Size(339, 91); + this.labelMessage4.TabIndex = 20; + this.labelMessage4.Text = "입력센서 에러"; + this.labelMessage4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelMessage4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelMessage4.Wordwrap = false; + // + // pictureBox3 + // + this.pictureBox3.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox3.Image"))); + this.pictureBox3.Location = new System.Drawing.Point(0, 0); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(450, 171); + // + // smartLabel3 + // + this.smartLabel3.BackPictureBox = this.pictureBox3; + this.smartLabel3.BackPictureBox1 = null; + this.smartLabel3.BackPictureBox2 = null; + this.smartLabel3.BorderColor = System.Drawing.Color.Black; + this.smartLabel3.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.smartLabel3.Font = new System.Drawing.Font("New Gulim", 10F, System.Drawing.FontStyle.Regular); + this.smartLabel3.InitVisible = true; + this.smartLabel3.LineSpacing = 0F; + this.smartLabel3.Location = new System.Drawing.Point(11, 4); + this.smartLabel3.Name = "smartLabel3"; + this.smartLabel3.Size = new System.Drawing.Size(300, 20); + this.smartLabel3.TabIndex = 15; + this.smartLabel3.Text = "Alarm"; + this.smartLabel3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.smartLabel3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Top; + this.smartLabel3.Wordwrap = false; + // + // buttonAlarm4OK + // + this.buttonAlarm4OK.BackPictureBox = null; + this.buttonAlarm4OK.BackPictureBox1 = null; + this.buttonAlarm4OK.BackPictureBox2 = null; + this.buttonAlarm4OK.ButtonColor = System.Drawing.Color.Gray; + this.buttonAlarm4OK.ButtonImageAutoSize = true; + this.buttonAlarm4OK.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonAlarm4OK.DisableImage = null; + this.buttonAlarm4OK.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarm4OK.DownImage"))); + this.buttonAlarm4OK.GroupID = 0; + this.buttonAlarm4OK.InitVisible = true; + this.buttonAlarm4OK.Location = new System.Drawing.Point(331, 127); + this.buttonAlarm4OK.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonAlarm4OK.Name = "buttonAlarm4OK"; + this.buttonAlarm4OK.NestedClickEventPrevent = false; + this.buttonAlarm4OK.OutlinePixel = 1; + this.buttonAlarm4OK.RepeatInterval = 200; + this.buttonAlarm4OK.RepeatIntervalAccelerate = null; + this.buttonAlarm4OK.SafeInterval = 200; + this.buttonAlarm4OK.Size = new System.Drawing.Size(90, 25); + this.buttonAlarm4OK.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonAlarm4OK.TabIndex = 13; + this.buttonAlarm4OK.TextColor = System.Drawing.Color.Black; + this.buttonAlarm4OK.TextDownColor = System.Drawing.Color.White; + this.buttonAlarm4OK.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonAlarm4OK.TextLocation = new System.Drawing.Point(0, 0); + this.buttonAlarm4OK.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonAlarm4OK.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonAlarm4OK.UpImage"))); + this.buttonAlarm4OK.Click += new System.EventHandler(this.buttonAlarm4OK_Click); + // // 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.panelAlarmMessageBox4); + this.Controls.Add(this.panelAlarmMessageBox3); + this.Controls.Add(this.panelAlarmMessageBox1); + this.Controls.Add(this.panelSubMenu2); this.Controls.Add(this.labelExpireOfPassword); this.Controls.Add(this.pictureBoxEthernetDisconnection); this.Controls.Add(this.pictureBoxEthernetConnection); this.Controls.Add(this.buttonCut); this.Controls.Add(this.buttonSubMenu); - this.Controls.Add(this.panelSubMenu); + this.Controls.Add(this.panelSubMenu1); this.Controls.Add(this.labelUserLevel); this.Controls.Add(this.labelUserID); this.Controls.Add(this.buttonUser); @@ -1525,7 +2151,11 @@ this.panelSetting.ResumeLayout(false); this.groupBoxConveyor.ResumeLayout(false); this.groupBoxSorter.ResumeLayout(false); - this.panelSubMenu.ResumeLayout(false); + this.panelSubMenu1.ResumeLayout(false); + this.panelSubMenu2.ResumeLayout(false); + this.panelAlarmMessageBox1.ResumeLayout(false); + this.panelAlarmMessageBox3.ResumeLayout(false); + this.panelAlarmMessageBox4.ResumeLayout(false); this.ResumeLayout(false); } @@ -1582,7 +2212,7 @@ private SmartX.SmartButton buttonUser; private SmartX.SmartLabel labelUserID; private SmartX.SmartLabel labelUserLevel; - private System.Windows.Forms.Panel panelSubMenu; + private System.Windows.Forms.Panel panelSubMenu1; private SmartX.SmartLabel labelTitleBypass; private System.Windows.Forms.PictureBox pictureBox1; private SmartX.SmartButton buttonBypassRun; @@ -1595,5 +2225,35 @@ private System.Windows.Forms.PictureBox pictureBoxEthernetConnection; private System.Windows.Forms.Timer timerServer; private SmartX.SmartLabel labelExpireOfPassword; + private SmartX.SmartLabel labelStaticAlarmContinuousNG; + private SmartX.SmartButton buttonAlarmContinuousNG; + private SmartX.SmartLabel labelAlarmContinuousNG; + private System.Windows.Forms.Panel panelSubMenu2; + private SmartX.SmartLabel labelATPC_SetCNT; + private SmartX.SmartButton buttonATPC_Enable; + private SmartX.SmartLabel labelStaticATPC; + private System.Windows.Forms.PictureBox pictureBox2; + private SmartX.SmartButton buttonATPC_Reset; + private SmartX.SmartLabel labelStaticATPC_Lack; + private SmartX.SmartLabel labelATPC_Lack; + private SmartX.SmartLabel labelStaticATPC_Pass; + private SmartX.SmartLabel labelATPC_Pass; + private SmartX.SmartLabel labelStaticATPC_Count; + private SmartX.SmartLabel labelATPC_counting; + private System.Windows.Forms.Panel panelAlarmMessageBox1; + private SmartX.SmartLabel labelMessage1; + private System.Windows.Forms.PictureBox pictureBoxAlarmMsg1; + private SmartX.SmartLabel smartLabel2; + private SmartX.SmartButton buttonAlarm1Ok; + private System.Windows.Forms.Panel panelAlarmMessageBox3; + private SmartX.SmartLabel labelMessage3; + private System.Windows.Forms.PictureBox pictureBox4; + private SmartX.SmartLabel smartLabel4; + private SmartX.SmartButton buttonAlarm3OK; + private System.Windows.Forms.Panel panelAlarmMessageBox4; + private SmartX.SmartLabel labelMessage4; + private System.Windows.Forms.PictureBox pictureBox3; + private SmartX.SmartLabel smartLabel3; + private SmartX.SmartButton buttonAlarm4OK; } } \ No newline at end of file diff --git a/INT69DB_2A/Forms/FormMainDisplay.cs b/INT69DB_2A/Forms/FormMainDisplay.cs index a02bd4b..123e82b 100644 --- a/INT69DB_2A/Forms/FormMainDisplay.cs +++ b/INT69DB_2A/Forms/FormMainDisplay.cs @@ -21,8 +21,8 @@ namespace INT69DB_2A.Forms public partial class FormMainDisplay : Form { #region Field - UserManager.UserMgr_user_info_t UserInfo = new UserManager.UserMgr_user_info_t(); public string ChangeID; + private int SubmenuIndex; private FormMain m_ParentForm; @@ -90,6 +90,7 @@ namespace INT69DB_2A.Forms if (this.ParentForm.SystemConfig.Language == DataStore.LanguageID.Korean) { + #region Korean if (this.ParentForm.SystemConfig.IsLogin == false) { this.buttonMenu.Location = new Point(597, 545); @@ -97,10 +98,12 @@ namespace INT69DB_2A.Forms this.buttonMenu.DisableImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.korFormMainDisplayMenuBigDisable)); this.buttonMenu.DownImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.korFormMainDisplayMenuBigDown)); this.buttonMenu.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.korFormMainDisplayMenuBigUp)); - } + } + #endregion } else if (this.ParentForm.SystemConfig.Language == DataStore.LanguageID.English) { + #region English this.groupBoxSorter.Text = "Sorter settings"; this.labelStaticSorterDelayTime.Text = "Delay"; this.labelStaticSorterRunTime.Text = "Run"; @@ -113,6 +116,17 @@ namespace INT69DB_2A.Forms this.labelStaticFeedingDelayTime.Text = "Delay"; this.labelStaticFeedingRunTime.Text = "Run"; + this.labelStaticAlarmContinuousNG.Text = "Continuous NG"; + this.labelMessage1.Text = "Alarm - Double Entry"; + this.labelMessage3.Text = "Continuous NG Occurs!"; + this.labelMessage4.Text = "Entry sensor error"; + + this.labelStaticATPC.Text = "Pass alarm"; + this.labelStaticATPC_Count.Text = "Count"; + this.labelStaticATPC_Pass.Text = "Pass"; + this.labelStaticATPC_Lack.Text = "Lack"; + this.buttonATPC_Reset.Text = "RST"; + this.buttonBypassOnce.DownImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.engBypassCountDown)); this.buttonBypassOnce.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.engBypassCountUp)); @@ -146,10 +160,12 @@ namespace INT69DB_2A.Forms this.buttonTare.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.engFormMainTareUp)); this.buttonUnder.DisableImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.engFormMainUnderDisable)); this.buttonUnder.DownImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.engFormMainUnderDown)); - this.buttonUnder.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.engFormMainUnderUp)); + this.buttonUnder.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.engFormMainUnderUp)); + #endregion } else if (this.ParentForm.SystemConfig.Language == DataStore.LanguageID.Chinese) { + #region Chinese //this.labelScreen.Text = "屏幕"; this.labelTitleTotalCount.Text = "总共"; @@ -169,6 +185,17 @@ namespace INT69DB_2A.Forms this.labelStaticFeedingDelayTime.Text = "延迟时间"; this.labelStaticFeedingRunTime.Text = "运行时间"; + this.labelStaticAlarmContinuousNG.Text = "连续不好"; + this.labelMessage1.Text = "报警 - 双倍"; + this.labelMessage3.Text = "连续出现 NG!"; + this.labelMessage4.Text = "入口感應器錯誤"; + + this.labelStaticATPC.Text = "通过报警"; + this.labelStaticATPC_Count.Text = "当前"; + this.labelStaticATPC_Pass.Text = "排放"; + this.labelStaticATPC_Lack.Text = "缺少"; + this.buttonATPC_Reset.Text = "重置"; + this.buttonBypassOnce.DownImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnBypassCountDown)); this.buttonBypassOnce.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnBypassCountUp)); this.buttonBypassDirection.DownImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnBypassOccasionDown)); @@ -204,7 +231,8 @@ namespace INT69DB_2A.Forms this.buttonTare.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnFormMainTareUp)); this.buttonUnder.DisableImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnFormMainUnderDisable)); this.buttonUnder.DownImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnFormMainUnderDown)); - this.buttonUnder.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnFormMainUnderUp)); + this.buttonUnder.UpImage = new Bitmap(images.GetImage(ImageDll.ButtonImages.chnFormMainUnderUp)); + #endregion } else if (this.ParentForm.SystemConfig.Language == DataStore.LanguageID.Czech) { @@ -231,8 +259,8 @@ namespace INT69DB_2A.Forms this.labelLotNo.Text = this.ParentForm.CurrentProductItem.LotNo; this.labelProductionSpeed.Text = "0"; this.buttonCut.Visible = this.ParentForm.SystemConfig.IsCutView; - this.pictureBoxUSBBackOn.Visible = this.ParentForm.SystemConfig.IsDataBackup; + this.labelIconBypassMode.Visible = this.ParentForm.SystemConfig.IsBypassMode; if (this.ParentForm.SystemConfig.Serial3Mode == 0) this.labelIconSerial3.Visible = false; @@ -244,7 +272,23 @@ namespace INT69DB_2A.Forms else this.buttonPrint.Visible = false; - this.labelIconBypassMode.Visible = this.ParentForm.SystemConfig.IsBypassMode; + // Alarm ContinuousNG CNT + this.labelAlarmContinuousNG.Text = this.ParentForm.SystemConfig.AlarmContinuousNG.ToString(); + // Alarm ContinuousNG Enable + if (this.ParentForm.SystemConfig.IsAlarmContinuousNGEnable == true) + this.buttonAlarmContinuousNG.ButtonDown(); + else + this.buttonAlarmContinuousNG.ButtonUp(); + + // Alarm TotalCount + this.labelATPC_SetCNT.Text = this.ParentForm.SystemConfig.AlarmTotalPassCnt.ToString(); + // Alarm TotalCount Enable + if (this.ParentForm.SystemConfig.IsAlarmTotalPassCntEnable == true) + this.buttonATPC_Enable.ButtonDown(); + else + this.buttonATPC_Enable.ButtonUp(); + // Alarm Totalcount Display + this.UpdateAlarmTotalPassCountDisplay(this.ParentForm.CurrentAlarmTotalPassCnt); switch (this.ParentForm.SystemConfig.EquipmentColumns) { @@ -391,18 +435,44 @@ namespace INT69DB_2A.Forms } private void DefaultSetting() { + int x = 0, y = 0; + + this.SubmenuIndex = 0; + this.RescaleControl(); this.ChangeID = ""; this.ColorButtonAccessTrue = Color.Black; this.ColorButtonAccessFalse = Color.DimGray; + // Panel Setting this.panelSetting.Location = new Point(60, 91); this.panelSetting.Visible = false; - this.panelSubMenu.Location = new Point(10, 489); - this.panelSubMenu.Visible = false; - this.panelSubMenu.BringToFront(); + // Panel SubMenu1 + this.panelSubMenu1.Location = new Point(10, 489); + this.panelSubMenu1.Visible = false; + this.panelSubMenu1.BringToFront(); + + // Panel SubMenu2 + this.panelSubMenu2.Location = new Point(10, 489); + this.panelSubMenu2.Visible = false; + this.panelSubMenu2.BringToFront(); + + // AlarmMessageBox + x = Screen.PrimaryScreen.Bounds.Width / 2 - this.panelAlarmMessageBox1.Size.Width / 2; + y = Screen.PrimaryScreen.Bounds.Height / 2 - this.panelAlarmMessageBox1.Size.Height / 2; + this.panelAlarmMessageBox1.Location = new Point(x, y); + this.panelAlarmMessageBox1.Visible = false; + this.panelAlarmMessageBox1.BringToFront(); + + this.panelAlarmMessageBox3.Location = new Point(x, y); + this.panelAlarmMessageBox3.Visible = false; + this.panelAlarmMessageBox3.BringToFront(); + + this.panelAlarmMessageBox4.Location = new Point(x, y); + this.panelAlarmMessageBox4.Visible = false; + this.panelAlarmMessageBox4.BringToFront(); this.groupBoxSorter.Visible = false; @@ -579,7 +649,6 @@ namespace INT69DB_2A.Forms { UserManager.UserManager_AutoLogoutTimeoutReset(); } - public string DisplayExpireOfPassword(DataStore.UserGroup group) { string ret = ""; @@ -596,32 +665,11 @@ namespace INT69DB_2A.Forms return ret; } - private bool UI_Invoke(ThreadStart invoker) + private void ClearAlarmTotalPassCount() { - try - { - if (this.InvokeRequired) - { - if (this.IsDisposed) - return true; - - this.Invoke(invoker); - } - else - { - invoker(); - } - - return true; - - } - catch (Exception e) - { - return false; - } - + this.ParentForm.CurrentAlarmTotalPassCnt.Clear(); + this.UpdateAlarmTotalPassCountDisplay(this.ParentForm.CurrentAlarmTotalPassCnt); } - private void UpdateDisplay(DataStore.MainDisplayStore displayForm) { if (displayForm == DataStore.MainDisplayStore.BarGraph) @@ -1097,6 +1145,31 @@ namespace INT69DB_2A.Forms if (this.labelExpireOfPassword.Text != expirePW) this.labelExpireOfPassword.Text = expirePW; } + 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; + } + + } public void Clear() { @@ -1169,6 +1242,16 @@ namespace INT69DB_2A.Forms default: break; } + + // 연속 NG 수량 Clear + for (int i = 0; i < this.ParentForm.SystemConfig.EquipmentColumns; i++) + { + this.ParentForm.CollectionWeightData[i].ContinuousNG = 0; + this.ParentForm.CollectionWeightData[i].IsContinuousNG = false; + } + + // Alarm Total Pass Count + this.ClearAlarmTotalPassCount(); } public void RescaleControl() { @@ -2379,6 +2462,19 @@ namespace INT69DB_2A.Forms this.SetTotalCount(); this.SetNGCount(); } + public void UpdateAlarmMessage1Display() + { + if (this.panelAlarmMessageBox1.Visible == false) + this.panelAlarmMessageBox1.Visible = true; + } + public void UpdateAlarmMessage3Display(bool status) + { + this.panelAlarmMessageBox3.Visible = status; + } + public void UpdateAlarmMessage4Display(bool status) + { + this.panelAlarmMessageBox4.Visible = status; + } public void UpdateDisplayTime() { this.labelTime.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); @@ -2410,6 +2506,22 @@ namespace INT69DB_2A.Forms // this.ParentForm.smartFileCommunicationLog.WriteString(string.Format("Disconnection icon ({0:yyyy-MM-dd HH:mm:ss})", DateTime.Now)); } } + public void UpdateAlarmTotalPassCountDisplay(Counter cnt) + { + string value = ""; + + value = cnt.CurrentTotalPass.ToString(); + if (this.labelATPC_counting.Text != value) + this.labelATPC_counting.Text = value; + + value = cnt.BeforeTotalPass.ToString(); + if (this.labelATPC_Pass.Text != value) + this.labelATPC_Pass.Text = value; + + value = cnt.BeforeLackCNT.ToString(); + if (this.labelATPC_Lack.Text != value) + this.labelATPC_Lack.Text = value; + } public void DisplayRefresh() { @@ -2458,6 +2570,14 @@ namespace INT69DB_2A.Forms } } + // Alarm ContinuousNG CNT + this.labelAlarmContinuousNG.Text = this.ParentForm.SystemConfig.AlarmContinuousNG.ToString(); + // Alarm ContinuousNG Enable + if (this.ParentForm.SystemConfig.IsAlarmContinuousNGEnable == true) + this.buttonAlarmContinuousNG.ButtonDown(); + else + this.buttonAlarmContinuousNG.ButtonUp(); + // Automatic Logout Reset if (this.ParentForm.SystemConfig.IsPart11 == true) this.Part11AutomaticLogoutReset(); @@ -2465,7 +2585,7 @@ namespace INT69DB_2A.Forms this.labelIconBypassMode.Visible = this.ParentForm.SystemConfig.IsBypassMode; this.UpdateDisplayUser(this.ParentForm.SystemConfig.CurrentUser); this.buttonSubMenu.ButtonUp(); - this.panelSubMenu.Visible = false; + this.panelSubMenu1.Visible = false; this.buttonCut.Visible = this.ParentForm.SystemConfig.IsCutView; } #endregion @@ -3019,13 +3139,30 @@ namespace INT69DB_2A.Forms if (this.ParentForm.SystemConfig.IsPart11 == true) this.Part11AutomaticLogoutReset(); - if (this.buttonSubMenu.ButtonStatus == SmartButton.BUTSTATUS.DOWN) + if (this.SubmenuIndex == 0) { - this.panelSubMenu.BringToFront(); - this.panelSubMenu.Visible = true; + this.panelSubMenu1.BringToFront(); + this.panelSubMenu1.Visible = true; + + this.panelSubMenu2.Visible = false; + this.SubmenuIndex = 1; + } + else if (this.SubmenuIndex == 1) + { + this.panelSubMenu1.Visible = false; + + this.panelSubMenu2.BringToFront(); + this.panelSubMenu2.Visible = true; + + this.SubmenuIndex = 2; } else - this.panelSubMenu.Visible = false; + { + this.panelSubMenu1.Visible = false; + this.panelSubMenu2.Visible = false; + + this.SubmenuIndex = 0; + } } private void buttonBypassDirection_Click(object sender, EventArgs e) { @@ -3166,6 +3303,193 @@ namespace INT69DB_2A.Forms } } } + + private void buttonAlarmContinuousNG_Click(object sender, EventArgs e) + { + string before = "", after = ""; + + // Automatic Logout Reset + if (this.ParentForm.SystemConfig.IsLogin == true) + this.Part11AutomaticLogoutReset(); + + if (this.buttonAlarmContinuousNG.ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.SystemConfig.IsAlarmContinuousNGEnable = true; + before = "OFF"; + after = "ON"; + } + else + { + this.ParentForm.SystemConfig.IsAlarmContinuousNGEnable = false; + before = "ON"; + after = "OFF"; + } + + this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingParameter.ACNC_Activate, "", before, after); + } + private void labelAlarmContinuousNG_Click(object sender, EventArgs e) + { + string before = "", after = ""; + + // Automatic Logout Reset + if (this.ParentForm.SystemConfig.IsLogin == true) + this.Part11AutomaticLogoutReset(); + + before = this.labelAlarmContinuousNG.Text; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelAlarmContinuousNG.Text, 4, 0, false, this.ParentForm.SystemConfig.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 1 || myKeyPad.doubleValue > 9999) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.SystemConfig.Language); + myMsg.ShowDialog(); + } + else + { + this.labelAlarmContinuousNG.Text = myKeyPad.StringValue; + after = this.labelAlarmContinuousNG.Text; + + // 연속 NG 수량 Clear + for (int i = 0; i < this.ParentForm.SystemConfig.EquipmentColumns; i++) + { + this.ParentForm.CollectionWeightData[i].ContinuousNG = 0; + this.ParentForm.CollectionWeightData[i].IsContinuousNG = false; + } + + this.ParentForm.SystemConfig.AlarmContinuousNG = myKeyPad.IntValue; + this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingParameter.ACNC_Count, "", before, after); + } + } + } + + private void labelATPC_SetCNT_Click(object sender, EventArgs e) + { + string before = "", after = ""; + + // Automatic Logout Reset + if (this.ParentForm.SystemConfig.IsLogin == true) + this.Part11AutomaticLogoutReset(); + + before = this.labelATPC_SetCNT.Text; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelATPC_SetCNT.Text, 4, 0, false, this.ParentForm.SystemConfig.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 20 || myKeyPad.doubleValue > 9999) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.SystemConfig.Language); + myMsg.ShowDialog(); + } + else + { + this.labelATPC_SetCNT.Text = myKeyPad.StringValue; + this.ParentForm.CurrentAlarmTotalPassCnt.SettingCount = myKeyPad.IntValue; + after = this.labelATPC_SetCNT.Text; + + this.ParentForm.SystemConfig.AlarmTotalPassCnt = myKeyPad.IntValue; + this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); + this.ClearAlarmTotalPassCount(); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingParameter.ATPC_Count, "", before, after); + } + } + } + private void buttonAlarmTotalCount_Click(object sender, EventArgs e) + { + string before = "", after = ""; + + // Automatic Logout Reset + if (this.ParentForm.SystemConfig.IsLogin == true) + this.Part11AutomaticLogoutReset(); + + if (this.buttonATPC_Enable.ButtonStatus == SmartButton.BUTSTATUS.DOWN) + { + this.ParentForm.SystemConfig.IsAlarmTotalPassCntEnable = true; + + before = "OFF"; + after = "ON"; + } + else + { + this.ParentForm.SystemConfig.IsAlarmTotalPassCntEnable = false; + + before = "ON"; + after = "OFF"; + } + + this.ClearAlarmTotalPassCount(); + this.ParentForm.SaveSystemConfigurationFile(this.ParentForm.SystemConfig); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingParameter.ATPC_Activate, "", before, after); + } + private void labelATPC_counting_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.ParentForm.SystemConfig.IsLogin == true) + this.Part11AutomaticLogoutReset(); + + // Clear Alarm Total Pass Count + this.ClearAlarmTotalPassCount(); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.ATPC_Reset, ""); + } + private void buttonATPC_Reset_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.ParentForm.SystemConfig.IsLogin == true) + this.Part11AutomaticLogoutReset(); + + // Clear Alarm Total Pass Count + this.ClearAlarmTotalPassCount(); + + // Part11 + if (this.ParentForm.SystemConfig.IsPart11 == true) + this.ParentForm.SetTrackingHistoryData(DataStore.TrackingOperation.ATPC_Reset, ""); + } + + private void buttonAlarm1Ok_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.ParentForm.SystemConfig.IsLogin == true) + this.Part11AutomaticLogoutReset(); + + this.panelAlarmMessageBox1.Visible = false; + } + private void buttonAlarm3OK_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.ParentForm.SystemConfig.IsLogin == true) + this.Part11AutomaticLogoutReset(); + + this.panelAlarmMessageBox3.Visible = false; + } + private void buttonAlarm4OK_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.ParentForm.SystemConfig.IsLogin == true) + this.Part11AutomaticLogoutReset(); + + this.panelAlarmMessageBox4.Visible = false; + } #endregion } } \ No newline at end of file diff --git a/INT69DB_2A/Forms/FormMainDisplay.resx b/INT69DB_2A/Forms/FormMainDisplay.resx index bc223a7..33888ee 100644 --- a/INT69DB_2A/Forms/FormMainDisplay.resx +++ b/INT69DB_2A/Forms/FormMainDisplay.resx @@ -3571,6 +3571,203 @@ T/1EH0cYP/QZtSVjRDHrck2SoZYSBCITsUh2Op1Wq/X+T/T525DxO+xhLqGIdZc6bGPrSphkIAppCEQm 4f79+xGOfOWD2KH+1H/vwZTOzk4u4wI6UpKBKKQh0GazMSYW/PeejWv+A91+0OSeY7CXAAAAAElFTkSu QmCC + + + + + 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 + zsDTa6oNLQAAAABJRU5ErkJggg== + + + + + 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 @@ -3807,72 +4004,6 @@ 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 @@ -4724,6 +4855,872 @@ 17, 11 + + + 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 + zsDTa6oNLQAAAABJRU5ErkJggg== + + + + + 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 + AAAAAElFTkSuQmCC + + + + + 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 + YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln + yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v + vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za + Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v + Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb + PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ + 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h + /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr + XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS + fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ + tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvgAADr4B6kKxwAAABLVJREFUWEflmFdPK0cY + hv3LSAAhmgDRE/oNoRpBEoooFogmBIQuQFQBoiZ00TuI3hG9lwAGAiYBrvPYs2ePk5NLOxd73ovRfDs7 + Wubx1waV7pPW19crKipSUlJ++GqUmppaV1d3cHAgIdDp9DguLy956ufn5+TkZGNj840S9a1BlpaW1tbW + dnZ2rq6uAQEBkZGRsbGxarW6qanpMw5YuLu7S/sMsrW1dXFx8fDw8Pb2/s6g7xUhHx8fX19fQAQHB8fE + xGg0moKCAo6fnZ3d0NCgx9HV1eXv729lZQU8yNnb20MhKCgoNDQ0KiqKPT8a9JMi9LNB8fHxgMjJySkr + K2tsbOzv75+dnU1KSlpYWFDFxcW5ubk5Ojo6Ozt7enoGBgbiQsnJyZmZmbm5ub8YBEJlqLCwsKioqLi4 + uLKyEhC4wtjY2OLi4v7+/vT0NC+ocBsoeHl5ASIsLAxyeA45lXBqbW1tb2/v6Oj4VSn67ZP6+vomJiaW + lpZ2dnbOzs60Wu3z8zPRoCLBiliKjo4m00IOEENDQzMzM/Pz85Bjj/K0sbFxdHR0fX39+Pj49vb2/v7+ + 8fEBClVISAhOQUQRHTgFCHGb3d3di4sL3r65ufldWeJECHf4yyBYCEFEj4OUSaZMS0srLS0lOsbHx7e3 + t9mG8xhKj+7V1KqpqSE2HRwcsrKy+JD09PV1bW0Nd2WU7NdXXkCSYSLJh/rTIAEFQUSPA9dISEggzVZV + VXV2dhIje3t7d3d34HgxgyBuYWHBSD4HColNWnh5mZqaYolRmHgryFZXV4VpchlDEZJwUGMoIrW1tT09 + PZQccNze3v5hHpG2MzIyxJx8xvn5nDDJbZiMzPltYLG8vCyWTC75x5adBX3GkZeXB47u7m5wkDjwYXKM + yXV+fs6Bgf6fJnGKydjc3Gz83Bx6enoSUIy5SDgSExPxDkKaOkywUHtIoiQbk2t0dJRzMkq2VotJCyDm + YhWTVlB+aCY9PDzIUGQu/wiW6upqcFBWSKVXV1f3ZpCMQ7Lv78X5xVys8jcQUBEREeKhmfQlESThoAcl + WMBBKp2cnNza2qLKkj5Mrs3NTQ7MVyT79haT7lDMh4eHMRnn5uaYUPXFc3OIWgEUQURAQXoc4eHhXOrB + QbDQroGDP5pGTdRnk4tAwBPFnGaPY5OtjE1G5uXl5fLcHCI5CiKymyAJB00HzXx9fT2plDpHxwYO4sUc + 4tYEEcon1wQ+jaSFq6uBgQEQMAqTq7d4U5imFcnxX0SQHgcXNn4uChvXE6KXzx8fH19eXkr7TC1BgWMj + rs6kKmnhCxy8yQvcpIRpWuEgImT0edUYB40gyaytrQ0WdISnp6ckDjbAz3yifg0ODkrG/ysRLDILAYJI + kXCo1eqWlhYS2MrKysnJCb0ArsEGfEmpMmYhsgbiOeVMf4WjO+SSR4yQMmABQtbYoFTJNUWuskzIEtyP + VIRJSUnJ4eGhcA05rtijSBlyhdaYBWKen59PVVXBCQcZGRkRriGzENtYVZ5kFqIZRb29vXV1dfTp+n8d + z8/Pw4Y2DIcBh3AnRbLQJwmDZNegyeJWDQtyhYQD8QaENBoN2fWrUnp6+tjYmICg0+n+BlmOjWZHYzsX + AAAAAElFTkSuQmCC + + + + + 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 + YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln + yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v + vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + 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 + AAAAAElFTkSuQmCC + + + + + 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 + + WEBPAD diff --git a/INT69DB_2A/Version.txt b/INT69DB_2A/Version.txt index 79c7200..2764cb2 100644 --- a/INT69DB_2A/Version.txt +++ b/INT69DB_2A/Version.txt @@ -14,6 +14,21 @@ Ƽ 2~6 ƽ 跮 */ +@ Ver 5.1.0 by LSJ + - 2023.12.28 + - Ver 5.0.1 Modify + - Framework : SmartX Framework V3.1.1(update: 2019.03.21) + - INT69DC_7C ϰ ˶ īƮ ߰ + NG ˶, īƮ + - ڵ + ź( ó), Part11 Audit trail + - Լ ޽ ǥ ߰ + 񿡼 ƽ1 + : 3 ϶ + 4 Ǵ Ȳ 3 ԷµǸ, 緯 ȸ ʰ, + 4 ߷ӿ ҷ ( Ͽ) + --> ǥ ϰ ־, Ȳ + @ Ver 5.0.1 by CJY - 2023.10.17 - Ver 5.0.0 Modify diff --git a/INT69DB_2A/obj/Release/INT69DB_2A.Controls.ControlCalibration5.resources b/INT69DB_2A/obj/Release/INT69DB_2A.Controls.ControlCalibration5.resources index e5aa5bd..9e21156 100644 Binary files a/INT69DB_2A/obj/Release/INT69DB_2A.Controls.ControlCalibration5.resources and b/INT69DB_2A/obj/Release/INT69DB_2A.Controls.ControlCalibration5.resources differ diff --git a/INT69DB_2A/obj/Release/INT69DB_2A.Forms.FormConfiguration.resources b/INT69DB_2A/obj/Release/INT69DB_2A.Forms.FormConfiguration.resources index 60c2e82..7ff02a0 100644 Binary files a/INT69DB_2A/obj/Release/INT69DB_2A.Forms.FormConfiguration.resources and b/INT69DB_2A/obj/Release/INT69DB_2A.Forms.FormConfiguration.resources differ diff --git a/INT69DB_2A/obj/Release/INT69DB_2A.Forms.FormMainDisplay.resources b/INT69DB_2A/obj/Release/INT69DB_2A.Forms.FormMainDisplay.resources index 3f5773c..6321bd6 100644 Binary files a/INT69DB_2A/obj/Release/INT69DB_2A.Forms.FormMainDisplay.resources and b/INT69DB_2A/obj/Release/INT69DB_2A.Forms.FormMainDisplay.resources differ