From 2f037c497cba98bdd15271a471740d5f4216829a Mon Sep 17 00:00:00 2001 From: "DESKTOP-999R8N3\\CJY" Date: Mon, 24 Jul 2023 13:23:49 +0900 Subject: [PATCH] =?UTF-8?q?=20-=20SerialMode=20=EC=B6=94=EA=B0=80=20=20-?= =?UTF-8?q?=20Part11=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95(=EB=A7=8C?= =?UTF-8?q?=EB=A3=8C=EC=9D=BC,=20=ED=9E=88=EC=8A=A4=ED=86=A0=EB=A6=AC?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=20=ED=95=AD=EB=AA=A9=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=EC=88=98=EC=A0=95)=20=20-=20=EB=A9=94=EC=9D=B8?= =?UTF-8?q?=ED=99=94=EB=A9=B4=20=EB=B0=94=EA=B7=B8=EB=9E=98=ED=94=84=20?= =?UTF-8?q?=EC=86=8D=EB=8F=84=ED=91=9C=EC=8B=9C=20500=20=EC=9D=B4=EC=83=81?= =?UTF-8?q?=EC=9D=B4=EB=A9=B4=20=EA=B0=B1=EC=8B=A0=20x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CenterBasic/ControlCenterBasicProduct.cs | 72 +- .../ControlCenterConfiEthernet.cs | 83 +- .../ControlCenterConfiSerial.cs | 393 ++++- .../ControlCenterEquipEngineer.cs | 9 +- .../ControlCenterEquipFunctionSetting.cs | 15 +- .../ControlCenterEquipInitialize.cs | 6 +- .../ControlCenterEquipUser.Designer.cs | 952 ++---------- .../CenterEquipment/ControlCenterEquipUser.cs | 698 +-------- .../ControlCenterEquipUser.resx | 899 ++++------- ...trolCenterEquipUserGroupEditor.Designer.cs | 227 ++- .../ControlCenterEquipUserGroupEditor.cs | 197 +++ .../ControlCenterEquipUserGroupEditor.resx | 414 +++++ .../ControlCenterInforSystem.Designer.cs | 128 +- .../ControlCenterInforSystem.cs | 22 + .../CenterLog/ControlCenterLogHelp.cs | 30 +- .../CenterLog/ControlCenterLogHistory.cs | 94 +- .../ControlCenterLogHistory.designer.cs | 197 ++- .../CenterLog/ControlCenterLogInspection.cs | 98 +- .../ControlCenterLogInspection.designer.cs | 141 +- .../CenterLog/ControlCenterLogOthers.cs | 74 +- .../ControlCenterLogOthers.designer.cs | 29 +- .../ControlCenterSystemExternalOutput.cs | 36 +- .../ControlCenterSystemJudgmentManual.cs | 18 +- .../ControlCenterSystemSorterSetting.cs | 36 +- .../Etc/ControlCenterSystemAutoZero.cs | 8 +- .../Etc/ControlConfiEthernetLocalIP.cs | 8 +- .../Controls/Etc/ControlConfiMULTiJET.cs | 135 ++ .../Etc/ControlConfiMULTiJET.designer.cs | 116 ++ .../Controls/Etc/ControlConfiMULTiJET.resx | 223 +++ ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs | 103 +- .../Controls/Etc/ControlConfiOptionBoard1.cs | 50 +- .../Etc/ControlConfiOptionBoard2.Designer.cs | 450 ++++-- .../Controls/Etc/ControlConfiOptionBoard2.cs | 246 ++- .../Etc/ControlConfiOptionBoard2.resx | 1062 ++++++++----- .../MainDisplay/ControlMainDisplayFeedback.cs | 48 +- .../MainDisplay/ControlMainDisplayMenu.cs | 36 +- .../MainDisplay/ControlMainDisplayModbus.cs | 16 +- .../MainDisplay/ControlMainDisplayStart.cs | 31 +- .../ControlMainDisplayStartGrapht.cs | 19 +- .../ControlMainDisplayWeightBigScreen.cs | 3 + .../ControlMainDisplayWeightSmall.Designer.cs | 4 +- .../ControlMainDisplayWeightSmall.cs | 20 +- ITC81DB_0H/Datastore/Barcode.cs | 48 + ITC81DB_0H/Datastore/DataStore.cs | 150 +- ITC81DB_0H/Datastore/Define.cs | 182 ++- ITC81DB_0H/Datastore/Helper.cs | 155 ++ ITC81DB_0H/DialogForms/DialogFormLogOn.cs | 102 +- ITC81DB_0H/Forms/FormMain.cs | 1382 +++++------------ ITC81DB_0H/Forms/FormMainDisplay.cs | 63 +- ITC81DB_0H/Forms/FormMenu.cs | 567 +++---- ITC81DB_0H/ITC81DB_2H.csproj | 10 + .../Part11_Encryption/Encryption.Define.cs | 9 + ITC81DB_0H/Part11_Encryption/Encryption.cs | 20 + .../Part11_UserManager/UserManager.Define.cs | 8 + ITC81DB_0H/Part11_UserManager/UserManager.cs | 34 +- ITC81DB_0H/Version.txt | 7 + ITC81DB_0H/bin/Release/DllAes128.dll | Bin 74752 -> 74752 bytes ITC81DB_0H/bin/Release/DllUserMgr.dll | Bin 49664 -> 49664 bytes ITC81DB_0H/bin/Release/ITC81DB_2H.exe | Bin 5498368 -> 5538304 bytes .../ITC81DB_2H.csproj.FileListAbsolute.txt | 1 + ITC81DB_0H/obj/Release/ITC81DB_2H.exe | Bin 5498368 -> 5538304 bytes 61 files changed, 5772 insertions(+), 4412 deletions(-) create mode 100644 ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.cs create mode 100644 ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.designer.cs create mode 100644 ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.resx diff --git a/ITC81DB_0H/Controls/CenterBasic/ControlCenterBasicProduct.cs b/ITC81DB_0H/Controls/CenterBasic/ControlCenterBasicProduct.cs index 757d2cb..6c80b93 100644 --- a/ITC81DB_0H/Controls/CenterBasic/ControlCenterBasicProduct.cs +++ b/ITC81DB_0H/Controls/CenterBasic/ControlCenterBasicProduct.cs @@ -299,8 +299,7 @@ namespace ITC81DB_0H.Controls { string before = "", after = ""; before = this.SelectedProductItem.Name; - this.SelectedProductItem.Name = this.textBoxProductName.Text; - after = this.SelectedProductItem.Name; + after = this.SelectedProductItem.Name = this.textBoxProductName.Text; this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].Name = this.textBoxProductName.Text; this.listBoxProductList.SelectedIndexChanged -= new EventHandler(this.listBoxProductList_SelectedIndexChanged); @@ -329,7 +328,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.ClearAlarm(0); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ChangeProductName, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ChangeName, "", before, after); } else if (e.KeyChar == 27) { @@ -431,6 +430,10 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelOverRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelOverRange.Text = myKeyPad.StringValue; @@ -438,6 +441,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].OverRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); this.DisplayControls(this.SelectedProductItem); + + after = this.labelOverRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "", before, after); } } } @@ -445,6 +453,7 @@ namespace ITC81DB_0H.Controls { int digit = 0, temp = 0, range = 0; string value = "", feedbackValue = ""; + string before = "", after = ""; int oldUnderRangeDeviation = this.SelectedProductItem.UnderRangeDeviation; int oldOverRangeDeviation = this.SelectedProductItem.OverRangeDeviation; @@ -454,12 +463,21 @@ namespace ITC81DB_0H.Controls if (myKeyPad.ShowDialog() != DialogResult.OK) return; + before = this.labelPassRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.SelectedProductItem.PassRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].PassRange = myKeyPad.StringValue.Replace(".", ""); + after = this.labelPassRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.PassRange, "", before, after); + #region UnderRange + before = this.labelUnderRange.Text; + temp = this.SelectedProductItem.PassRangeInt + oldUnderRangeDeviation; if (temp < 0) value = "0"; @@ -468,9 +486,16 @@ namespace ITC81DB_0H.Controls this.SelectedProductItem.UnderRange = value; this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].UnderRange = value; + + after = this.labelUnderRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "Change Pass Value", before, after); #endregion #region OverRange + before = this.labelOverRange.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) range = 9999; else @@ -490,6 +515,11 @@ namespace ITC81DB_0H.Controls this.SelectedProductItem.OverRange = value; this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].OverRange = value; + + after = this.labelOverRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "Change Pass Value", before, after); #endregion this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); @@ -510,6 +540,10 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelUnderRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelUnderRange.Text = myKeyPad.StringValue; @@ -518,6 +552,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); this.DisplayControls(this.SelectedProductItem); + + after = this.labelUnderRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "", before, after); } } } @@ -544,6 +583,10 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelOverRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelDeviationOver.Text = myKeyPad.StringValue; @@ -552,6 +595,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); this.DisplayControls(this.SelectedProductItem); + + after = this.labelOverRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "Change Deviation", before, after); } } } @@ -578,6 +626,10 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelUnderRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelDeviationUnder.Text = myKeyPad.StringValue; @@ -586,6 +638,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); this.DisplayControls(this.SelectedProductItem); + + after = this.labelUnderRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "Change Deviation", before, after); } } } @@ -605,12 +662,21 @@ namespace ITC81DB_0H.Controls } else { + string before = "", after = ""; + + before = this.labelTareRange.Text; + this.ParentForm.ParentForm.ClearAlarm(0); this.labelTareRange.Text = myKeyPad.StringValue; this.SelectedProductItem.TareRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CollectionProductItem[this.SelectedProductNo - 1].TareRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.SaveProductFile(this.SelectedProductItem, this.SelectedProductNo - 1); + + after = this.labelTareRange.Text; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TareRange, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs index 3ca9f9f..7411c04 100644 --- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs +++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs @@ -27,6 +27,7 @@ namespace ITC81DB_0H.Controls public ControlConfiSerialHitachi ControlHitachi; public ControlConfiSerialMarkoPrint ControlMarkoprint; public ControlConfiModbus ControlModbusTCP; + public ControlConfiMULTiJET ControlMultiJet; private delegate void ConnetedIPStatusCallback(string value); #endregion @@ -193,6 +194,12 @@ namespace ITC81DB_0H.Controls this.Controls.Add(this.ControlModbusTCP); this.ControlModbusTCP.Location = new Point(0, 217); + this.ControlMultiJet = new ControlConfiMULTiJET(this.ParentForm); + this.Controls.Add(this.ControlMultiJet); + this.ControlMultiJet.Location = new Point(0, 217); + + this.ControlVisible(false); + if (this.ParentForm.ParentForm.SystemConfig2.IsEthernetEnable == true) { this.buttonStart.Enabled = true; @@ -252,6 +259,11 @@ namespace ITC81DB_0H.Controls this.comboBoxEthernetMode.Items.Add("-"); // Impinj Speedway-R420(RFID) 21 this.comboBoxEthernetMode.Items.Add("Modbus TCP"); // 모드버스 TCP 22 this.comboBoxEthernetMode.Items.Add("STD2"); // STD2 23 + this.comboBoxEthernetMode.Items.Add("MULTi-JET"); // MULTi-JET 24 + this.comboBoxEthernetMode.Items.Add("DJ(VIDEOJET)"); // DJ VIDEOJET 25 + this.comboBoxEthernetMode.Items.Add("LINX8830"); // LINX8830 잉크젯 프린터 26 + this.comboBoxEthernetMode.Items.Add("MYJET"); // MYJET 잉크젯 프린터 27 + this.comboBoxEthernetMode.Items.Add("OPT4"); // 바코드 값과 함께 전송(Tasco건) 28 } else { @@ -364,9 +376,24 @@ namespace ITC81DB_0H.Controls case 20: // markem-imaje 9410 OPT3 this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; break; - case (int)Define.E_EthernetMode.f23_STD2: // STD2 + case (int)Define.E_CommMode.f22_Modbus: // Modbus_TCP + this.labelFormat.Text = "ID, Product No, Under, Pass, Over, Under Count, Pass Count, Over Count, NG Count, ExNG Count, Total Count, Grade, Weight, Status(Run/Stop)"; + break; + case (int)Define.E_CommMode.f23_STD2: // STD2 this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],P[6],O[6],UC[7],PC[7],OC[7],ExC[7],TC[9],Grd[1],Sign[1],Weight[6],ETX[1]"; break; + case (int)Define.E_CommMode.f24_MULTi_JET: // Multi-jet + this.labelFormat.Text = "0x1B,0x02,Slave Address[1],0x1D,0x02,0x01,0x0A,Date[10],0x02,0x07,Weight[6],'g',0x1B,0x03,Chksum[1]"; + break; + case (int)Define.E_CommMode.f26_LINX8830: // LINX8830 + this.labelFormat.Text = "0x1B,0x02,0x1D,0x06,0x00,Weight[6],0x1B,0x03"; + break; + case (int)Define.E_CommMode.f27_MYJET: // MYJET + this.labelFormat.Text = "0x1B,0x02,IP[1],0x1D,0x01,0x01,0x06,Weight[6],0x1B,0x03,Checksum[1]"; + break; + case (int)Define.E_CommMode.f28_OPT4: // OPT4 + this.labelFormat.Text = "0x02,Date[yyyy-MM-dd HH:mm:ss, 19];Grade[1];Weight[6];Data,0x03"; + break; default: this.buttonTestSend.Enabled = false; this.labelFormat.Text = "Private use"; @@ -410,10 +437,11 @@ namespace ITC81DB_0H.Controls { this.DisplayBottomSettingMenu(); - if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f9_Hitachi - || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f11_Markoprint - || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f16_OPC - || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f22_Modbus_TCP) + if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f9_Hitachi + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f11_Markoprint + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f22_Modbus + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f24_MULTi_JET) this.buttonAddon.Visible = true; else this.buttonAddon.Visible = false; @@ -423,6 +451,7 @@ namespace ITC81DB_0H.Controls this.ControlHitachi.Visible = visible; this.ControlMarkoprint.Visible = visible; this.ControlModbusTCP.Visible = visible; + this.ControlMultiJet.Visible = visible; } private void DisplayBottomSettingMenu() { @@ -430,25 +459,31 @@ namespace ITC81DB_0H.Controls this.buttonTestSend.Enabled = true; - if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f9_Hitachi) + if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f9_Hitachi) { this.ControlHitachi.Visible = true; this.ControlHitachi.BringToFront(); this.ControlHitachi.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } - else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f11_Markoprint) + else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f11_Markoprint) { this.ControlMarkoprint.Visible = true; this.ControlMarkoprint.BringToFront(); this.ControlMarkoprint.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } - else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f22_Modbus_TCP - || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_EthernetMode.f16_OPC) + else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f22_Modbus + || this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC) { this.ControlModbusTCP.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); this.ControlModbusTCP.Visible = true; this.ControlModbusTCP.BringToFront(); } + else if (this.comboBoxEthernetMode.SelectedIndex == (int)Define.E_CommMode.f24_MULTi_JET) + { + this.ControlMultiJet.Visible = true; + this.ControlMultiJet.BringToFront(); + this.ControlMultiJet.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); + } else { @@ -476,7 +511,7 @@ namespace ITC81DB_0H.Controls this.comboBoxEthernetOpMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.EthernetOperationMode; if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f23_STD2) + if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f23_STD2) this.comboBoxEthernetMode.SelectedIndex = ModeSTD2; else if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode > this.comboBoxEthernetMode.Items.Count - 1) { @@ -1086,9 +1121,9 @@ namespace ITC81DB_0H.Controls this.buttonSave2.Enabled = false; if (beforeServerIP != afterServerIP) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetServerIPAddress, "", beforeServerIP, afterServerIP); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPServerIPAddress, "", beforeServerIP, afterServerIP); if (beforeServerPort != afterServerPort) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetServerPort, "", beforeServerPort, afterServerPort); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPServerPort, "", beforeServerPort, afterServerPort); } private void labelHostPort_Click(object sender, EventArgs e) @@ -1383,20 +1418,20 @@ namespace ITC81DB_0H.Controls } if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2) - mode = (int)Define.E_SerialMode.f23_STD2; + mode = (int)Define.E_CommMode.f23_STD2; else mode = this.comboBoxEthernetMode.SelectedIndex; this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode = mode; afterComMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(mode); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f22_Modbus_TCP - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f16_OPC) this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(true); else this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(false); @@ -1409,11 +1444,11 @@ namespace ITC81DB_0H.Controls afterLocalPort = this.labelLocalPort.Text; if (beforeLocalPort != afterLocalPort) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalPort, "", beforeLocalPort, afterLocalPort); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalPort, "", beforeLocalPort, afterLocalPort); if (beforeOpMode != afterOpMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetOperationMode, "", beforeOpMode, afterOpMode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPOpMode, "", beforeOpMode, afterOpMode); if (beforeComMode != afterComMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetComMode, "", beforeComMode, afterComMode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPComMode, "", beforeComMode, afterComMode); } private void buttonAddon_Click(object sender, EventArgs e) diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs index 2dac3d6..d784af6 100644 --- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs +++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs @@ -29,6 +29,7 @@ namespace ITC81DB_0H.Controls public ControlConfiSerialMarkoPrint ControlMarkoprint; public ControlConfiSerialBarcode ControlBarcode; public ControlConfiModbus ControlModbusRTU; + public ControlConfiMULTiJET ControlMultiJet; #endregion #region Constructor @@ -148,6 +149,10 @@ namespace ITC81DB_0H.Controls this.Controls.Add(this.ControlModbusRTU); this.ControlModbusRTU.Location = new Point(0, 217); + this.ControlMultiJet = new ControlConfiMULTiJET(this.ParentForm); + this.Controls.Add(this.ControlMultiJet); + this.ControlMultiJet.Location = new Point(0, 217); + this.ControlVisible(false); this.comboBoxSerialBaudRate.Items.Clear(); @@ -194,6 +199,11 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.Items.Add("-"); // RFID 21 this.comboBoxSerialMode.Items.Add("Modbus RTU"); // 모드버스 RTU 22 this.comboBoxSerialMode.Items.Add("STD2"); // STD2 23 + this.comboBoxSerialMode.Items.Add("MULTi-JET"); // MULTi-JET 24 + this.comboBoxSerialMode.Items.Add("DJ(VIDEOJET)"); // DJ VIDEOJET 25 + this.comboBoxSerialMode.Items.Add("LINX8830"); // LINX8830 잉크젯 프린터 26 + this.comboBoxSerialMode.Items.Add("MYJET"); // MYJET 잉크젯 프린터 27 + this.comboBoxSerialMode.Items.Add("OPT4"); // 바코드 값과 함께 전송(Tasco건) 28 //this.comboBoxSerialMode.Items.Add("Barcode"); //this.comboBoxSerialMode.Items.Add("User Define"); } @@ -208,6 +218,232 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.SelectedIndexChanged += new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); } + public string ReturnBaudrateName(int num) + { + switch (num) + { + case 0: + return "9600"; + case 1: + return "19200"; + case 2: + return "38400"; + case 3: + return "57600"; + case 4: + return "115200"; + default: + return "9600"; + } + } + public string ReturnCommunicationModeName(int num) + { + if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + { + #region 독일어 + switch (num) + { + case 0: + return "Keiner"; + case 1: + return "STD1"; + case 2: + return "Fernzugriff"; + case 3: + return "Drucker"; + case 4: + return "imaje9410-1"; + case 5: + return "imaje9028-1"; + case 6: + return "OPT0"; + case 7: + return "imaje9410-2"; + case 8: + return "imaje9028-2"; + case 9: + return "Hitachi"; + case 10: + return "MACSA"; + case 11: + return "Markoprint"; + case 12: + return "alphaJET"; + case 13: + return "VJ1510"; + case 14: + return "OPT1"; + case 15: + return "OPT2"; + case 16: + return "OPC"; + case 17: + return "OPT3"; + case 18: + return "HP-200"; + case 19: + return "Smart Jet"; + case 20: + return "imaje 9410 OPT3"; + case 21: + return "RFID R420"; + case 22: + return "Modbus"; + case 23: + return "STD2"; + case 24: + return "MULTi-JET"; + case 25: + return "DJ(VIDEOJET)"; + case 26: + return "LINX8830"; + case 27: + return "MYJET"; + case 28: + return "OPT4"; + default: + return "Keiner"; + } + #endregion + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + { + #region 스페인어 + switch (num) + { + case 0: + return "Ninguna"; + case 1: + return "STD1"; + case 2: + return "Remoto"; + case 3: + return "Impresora industrial"; + case 4: + return "imaje9410-1"; + case 5: + return "imaje9028-1"; + case 6: + return "OPT0"; + case 7: + return "imaje9410-2"; + case 8: + return "imaje9028-2"; + case 9: + return "Hitachi"; + case 10: + return "MACSA"; + case 11: + return "Markoprint"; + case 12: + return "alphaJET"; + case 13: + return "VJ1510"; + case 14: + return "OPT1"; + case 15: + return "OPT2"; + case 16: + return "OPC"; + case 17: + return "OPT3"; + case 18: + return "HP-200"; + case 19: + return "Smart Jet"; + case 20: + return "imaje 9410 OPT3"; + case 21: + return "RFID R420"; + case 22: + return "Modbus"; + case 23: + return "STD2"; + case 24: + return "MULTi-JET"; + case 25: + return "DJ(VIDEOJET)"; + case 26: + return "LINX8830"; + case 27: + return "MYJET"; + case 28: + return "OPT4"; + default: + return "Ninguna"; + } + #endregion + } + else + { + #region 한국어 + switch (num) + { + case 0: + return "None"; + case 1: + return "STD1"; + case 2: + return "Remote"; + case 3: + return "Printer"; + case 4: + return "imaje9410-1"; + case 5: + return "imaje9028-1"; + case 6: + return "OPT0"; + case 7: + return "imaje9410-2"; + case 8: + return "imaje9028-2"; + case 9: + return "Hitachi"; + case 10: + return "MACSA"; + case 11: + return "Markoprint"; + case 12: + return "alphaJET"; + case 13: + return "VJ1510"; + case 14: + return "OPT1"; + case 15: + return "OPT2"; + case 16: + return "OPC"; + case 17: + return "OPT3"; + case 18: + return "HP-200"; + case 19: + return "Smart Jet"; + case 20: + return "imaje 9410 OPT3"; + case 21: + return "RFID R420"; + case 22: + return "Modbus"; + case 23: + return "STD2"; + case 24: + return "MULTi-JET"; + case 25: + return "DJ(VIDEOJET)"; + case 26: + return "LINX8830"; + case 27: + return "MYJET"; + case 28: + return "OPT4"; + default: + return "None"; + } + #endregion + } + } + private void UpdateLabelFormatDisplay() { if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) @@ -299,12 +535,27 @@ namespace ITC81DB_0H.Controls case 20: // markem-imaje 9410 OPT3 this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; break; - case (int)Define.E_SerialMode.f23_STD2: // STD2 + case (int)Define.E_CommMode.f23_STD2: // STD2 this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],P[6],O[6],UC[7],PC[7],OC[7],ExC[7],TC[9],Grd[1],Sign[1],Weight[6],ETX[1]"; break; + case (int)Define.E_CommMode.f24_MULTi_JET: // Multi-jet + this.labelFormat.Text = "0x1B,0x02,Slave Address[1],0x1D,0x02,0x01,0x0A,Date[10],0x02,0x07,Weight[6],'g',0x1B,0x03,Chksum[1]"; + break; + case (int)Define.E_CommMode.f26_LINX8830: // LINX8830 + this.labelFormat.Text = "0x1B,0x02,0x1D,0x06,0x00,Weight[6],0x1B,0x03"; + break; + case (int)Define.E_CommMode.f27_MYJET: // MYJET + this.labelFormat.Text = "0x1B,0x02,0x05,0x1D,0x01,0x01,0x06,Weight[6],0x1B,0x03,Checksum[1]"; + break; + case (int)Define.E_CommMode.f28_OPT4: // OPT4 + this.labelFormat.Text = "0x02,Date[yyyy-MM-dd HH:mm:ss, 19];Grade[1];Weight[6];Data,0x03"; + break; default: - this.buttonTestSend.Enabled = false; - this.labelFormat.Text = "Private use"; + if (this.ParentForm.ParentForm.SystemConfig2.Barcode == 0) + { + this.buttonTestSend.Enabled = false; + this.labelFormat.Text = "Private use"; + } break; } } @@ -315,6 +566,7 @@ namespace ITC81DB_0H.Controls this.ControlHitachi.Visible = visible; this.ControlMarkoprint.Visible = visible; this.ControlModbusRTU.Visible = visible; + this.ControlMultiJet.Visible = visible; //this.ControlBarcode.Visible = visible; } private void ButtonAddOnDisplay() @@ -322,10 +574,11 @@ namespace ITC81DB_0H.Controls this.ControlVisible(false); this.DisplayBottomSettingMenu(); - if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f9_Hitachi - || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f11_Markoprint - || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f16_OPC - || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f22_Modbus_RTU) + if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f9_Hitachi + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f11_Markoprint + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f22_Modbus + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f24_MULTi_JET) this.buttonAddon.Visible = true; else this.buttonAddon.Visible = false; @@ -356,7 +609,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - if (item.SerialCOM1Mode == (int)Define.E_SerialMode.f23_STD2) + if (item.SerialCOM1Mode == (int)Define.E_CommMode.f23_STD2) this.comboBoxSerialMode.SelectedIndex = ModeSTD2; else if (item.SerialCOM1Mode > this.comboBoxSerialMode.Items.Count - 1) this.comboBoxSerialMode.SelectedIndex = 0; @@ -371,12 +624,12 @@ namespace ITC81DB_0H.Controls this.labelTransmissionDelayTime.Text = item.TransmissionDelayTimeCOM1.ToString(); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f16_OPC) { this.comboBoxSerialBaudRate.Enabled = false; this.ControlModbusRTU.OPCSettings(); } - else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f22_Modbus_RTU) + else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f22_Modbus) this.ControlModbusRTU.ModbusRTUDefaultSettings(); else this.ControlModbusRTU.SerialDefaultSettings(); @@ -426,7 +679,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - if (item.SerialCOM3Mode == (int)Define.E_SerialMode.f23_STD2) + if (item.SerialCOM3Mode == (int)Define.E_CommMode.f23_STD2) this.comboBoxSerialMode.SelectedIndex = ModeSTD2; else if (item.SerialCOM3Mode > this.comboBoxSerialMode.Items.Count - 1) this.comboBoxSerialMode.SelectedIndex = 0; @@ -441,12 +694,12 @@ namespace ITC81DB_0H.Controls this.labelTransmissionDelayTime.Text = this.ParentForm.ParentForm.SystemConfig1.TransmissionDelayTimeCOM3.ToString(); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f16_OPC) // OPC + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f16_OPC) // OPC { this.comboBoxSerialBaudRate.Enabled = false; this.ControlModbusRTU.OPCSettings(); } - else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f22_Modbus_RTU) + else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f22_Modbus) this.ControlModbusRTU.ModbusRTUDefaultSettings(); else this.ControlModbusRTU.SerialDefaultSettings(); @@ -464,7 +717,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - if (item.SerialCOM4Mode == (int)Define.E_SerialMode.f23_STD2) + if (item.SerialCOM4Mode == (int)Define.E_CommMode.f23_STD2) this.comboBoxSerialMode.SelectedIndex = ModeSTD2; else if (item.SerialCOM4Mode > this.comboBoxSerialMode.Items.Count - 1) this.comboBoxSerialMode.SelectedIndex = 0; @@ -479,12 +732,12 @@ namespace ITC81DB_0H.Controls this.labelTransmissionDelayTime.Text = item.TransmissionDelayTimeCOM4.ToString(); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f16_OPC) // OPC + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f16_OPC) // OPC { this.comboBoxSerialBaudRate.Enabled = false; this.ControlModbusRTU.OPCSettings(); } - else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f22_Modbus_RTU) + else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f22_Modbus) this.ControlModbusRTU.ModbusRTUDefaultSettings(); else this.ControlModbusRTU.SerialDefaultSettings(); @@ -505,13 +758,23 @@ namespace ITC81DB_0H.Controls } private void SaveComboBox(int baudrate, int mode) { - string beforeBaudrate = "", afterBaudrate = "", beforeMode = "", afterMode = ""; - Define.E_MenuBottomConfiguration temp = this.ParentForm.CurrentConfigurationMenu(); + string[] beforeBaudrate = new string[3]; + string[] afterBaudrate = new string[3]; + string[] beforeMode = new string[3]; + string[] afterMode = new string[3]; + Define.E_MenuBottomConfiguration temp = this.ParentForm.CurrentConfigurationMenu(); this.ParentForm.ParentForm.ChangeSerialCOM3FrameBufferSize(1024); this.ParentForm.ParentForm.ChangeSerialCOM3ReceiveDetect(SmartX.SmartSerialPort.RECEIVEDETECTTYPE.EVENT_QUEUE); - if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f16_OPC) + beforeBaudrate[0] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate); + beforeBaudrate[1] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate); + beforeBaudrate[2] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate); + beforeMode[0] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode); + beforeMode[1] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode); + beforeMode[2] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode); + + if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC) { this.ControlModbusRTU.OPCSettings(); @@ -525,7 +788,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 0; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.comboBoxSerialBaudRate.Enabled = false; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_SerialMode.f16_OPC; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_CommMode.f16_OPC; this.ParentForm.ParentForm.OpenSerialCOM1(); break; case Define.E_MenuBottomConfiguration.SerialCOM3: @@ -535,7 +798,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 0; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.comboBoxSerialBaudRate.Enabled = false; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_SerialMode.f16_OPC; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_CommMode.f16_OPC; this.ParentForm.ParentForm.OpenSerialCOM3(); break; case Define.E_MenuBottomConfiguration.SerialCOM4: @@ -545,7 +808,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 0; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.comboBoxSerialBaudRate.Enabled = false; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_SerialMode.f16_OPC; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_CommMode.f16_OPC; this.ParentForm.ParentForm.OpenSerialCOM4(); break; default: @@ -553,7 +816,7 @@ namespace ITC81DB_0H.Controls } #endregion } - else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f21_Impinj_Speedway_R420) + else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f21_Impinj_Speedway_R420) { #region RFID Speedway R420 switch (temp) @@ -564,7 +827,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 4; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate = 4; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_SerialMode.f21_Impinj_Speedway_R420; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_CommMode.f21_Impinj_Speedway_R420; this.ParentForm.ParentForm.ChangeSerialCOM1FrameSeparateType(Define.E_SeparateType.ETXONLY); this.ParentForm.ParentForm.OpenSerialCOM1(); break; @@ -574,7 +837,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 4; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate = 4; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_SerialMode.f21_Impinj_Speedway_R420; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_CommMode.f21_Impinj_Speedway_R420; this.ParentForm.ParentForm.ChangeSerialCOM3FrameSeparateType(Define.E_SeparateType.ETXONLY); this.ParentForm.ParentForm.OpenSerialCOM3(); break; @@ -584,7 +847,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.SelectedIndex = 4; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate = 4; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_SerialMode.f21_Impinj_Speedway_R420; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_CommMode.f21_Impinj_Speedway_R420; this.ParentForm.ParentForm.ChangeSerialCOM4FrameSeparateType(Define.E_SeparateType.ETXONLY); this.ParentForm.ParentForm.OpenSerialCOM4(); break; @@ -601,61 +864,31 @@ namespace ITC81DB_0H.Controls { case Define.E_MenuBottomConfiguration.SerialCOM1: this.ParentForm.ParentForm.CloseSerialCOM1(); - beforeBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate); this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate = baudrate; - afterBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate); - if (beforeBaudrate != afterBaudrate) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM1Baudrate, "", beforeBaudrate, afterBaudrate); - - beforeMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2) - this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_SerialMode.f23_STD2; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)Define.E_CommMode.f23_STD2; else this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = mode; - afterMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode); - if (beforeMode != afterMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM1Mode, "", beforeMode, afterMode); - this.ParentForm.ParentForm.ChangeSerialCOM1FrameSeparateType(Define.E_SeparateType.STXANDETX); this.ParentForm.ParentForm.OpenSerialCOM1(); break; case Define.E_MenuBottomConfiguration.SerialCOM3: this.ParentForm.ParentForm.CloseSerialCOM3(); - beforeBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate); this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate = baudrate; - afterBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate); - if (beforeBaudrate != afterBaudrate) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM3Baudrate, "", beforeBaudrate, afterBaudrate); - - beforeMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2) - this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_SerialMode.f23_STD2; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)Define.E_CommMode.f23_STD2; else this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = mode; - afterMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode); - if (beforeMode != afterMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM3Mode, "", beforeMode, afterMode); - this.ParentForm.ParentForm.ChangeSerialCOM3FrameSeparateType(Define.E_SeparateType.STXANDETX); this.ParentForm.ParentForm.OpenSerialCOM3(); break; case Define.E_MenuBottomConfiguration.SerialCOM4: this.ParentForm.ParentForm.CloseSerialCOM4(); - beforeBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate); this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate = baudrate; - afterBaudrate = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate); - if (beforeBaudrate != afterBaudrate) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM4Baudrate, "", beforeBaudrate, afterBaudrate); - - beforeMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode); if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2) - this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_SerialMode.f23_STD2; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)Define.E_CommMode.f23_STD2; else this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = mode; - afterMode = this.ParentForm.ParentForm.ChildFormMenu.CenterInforSystem3.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode); - if (beforeMode != afterMode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM4Mode, "", beforeMode, afterMode); - this.ParentForm.ParentForm.ChangeSerialCOM4FrameSeparateType(Define.E_SeparateType.STXANDETX); this.ParentForm.ParentForm.OpenSerialCOM4(); break; @@ -663,15 +896,35 @@ namespace ITC81DB_0H.Controls break; } - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f22_Modbus_TCP) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f22_Modbus) this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(true); else this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(false); } + afterBaudrate[0] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate); + afterBaudrate[1] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate); + afterBaudrate[2] = this.ReturnBaudrateName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate); + afterMode[0] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode); + afterMode[1] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode); + afterMode[2] = this.ReturnCommunicationModeName(this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode); + + if (beforeBaudrate[0] != afterBaudrate[0]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM1Baudrate, "", beforeBaudrate[0], afterBaudrate[0]); + if (beforeBaudrate[1] != afterBaudrate[1]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM3Baudrate, "", beforeBaudrate[1], afterBaudrate[1]); + if (beforeBaudrate[2] != afterBaudrate[2]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM4Baudrate, "", beforeBaudrate[2], afterBaudrate[2]); + if (beforeMode[0] != afterMode[0]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM1Mode, "", beforeMode[0], afterMode[0]); + if (beforeMode[1] != afterMode[1]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM3Mode, "", beforeMode[1], afterMode[1]); + if (beforeMode[2] != afterMode[2]) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.COM4Mode, "", beforeMode[2], afterMode[2]); + this.ParentForm.ParentForm.SaveSystemConfigurationFile1(this.ParentForm.ParentForm.SystemConfig1); } @@ -696,25 +949,31 @@ namespace ITC81DB_0H.Controls this.buttonTestSend.Enabled = true; - if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f9_Hitachi) + if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f9_Hitachi) { this.ControlHitachi.Visible = true; this.ControlHitachi.BringToFront(); this.ControlHitachi.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } - else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f11_Markoprint) + else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f11_Markoprint) { this.ControlMarkoprint.Visible = true; this.ControlMarkoprint.BringToFront(); this.ControlMarkoprint.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } - else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_SerialMode.f16_OPC) + else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f22_Modbus + || this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f16_OPC) { this.ControlModbusRTU.Visible = true; this.ControlModbusRTU.BringToFront(); this.ControlModbusRTU.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); } + else if (this.comboBoxSerialMode.SelectedIndex == (int)Define.E_CommMode.f24_MULTi_JET) + { + this.ControlMultiJet.Visible = true; + this.ControlMultiJet.BringToFront(); + this.ControlMultiJet.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); + } else { diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs index 0d42534..d965f2c 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipEngineer.cs @@ -554,15 +554,18 @@ namespace ITC81DB_0H.Controls if (myDlg.ShowDialog() == DialogResult.Yes) { if (this.buttonPart11.ButtonStatus == SmartButton.BUTSTATUS.UP) + { this.ParentForm.ParentForm.SystemConfig3.IsPart11 = false; + this.ParentForm.ParentForm.SystemConfig1.IsLogin = false; + this.ParentForm.LoginVisible(false); + } else { - if (this.ParentForm.ParentForm.SystemConfig1.IsLogin == false) - this.ParentForm.ParentForm.SystemConfig1.IsLogin = true; + this.ParentForm.ParentForm.SystemConfig1.IsLogin = true; this.ParentForm.ParentForm.SystemConfig3.IsPart11 = true; + this.ParentForm.LoginVisible(true); } - this.ParentForm.ParentForm.ChildFormMenu.CenterEquipUser.DisplayOnlyPart11Item(); this.ParentForm.ParentForm.SaveSystemConfigurationFile1(this.ParentForm.ParentForm.SystemConfig1); this.ParentForm.ParentForm.SaveSystemConfigurationFile3(this.ParentForm.ParentForm.SystemConfig3); diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs index fa21cac..5c7213e 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs @@ -840,7 +840,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI6, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN6Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn6Mode, "", before, after); } private void comboBoxPIN5_SelectedIndexChanged(object sender, EventArgs e) { @@ -856,7 +856,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI5, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN5Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn5Mode, "", before, after); } private void comboBoxPIN4_SelectedIndexChanged(object sender, EventArgs e) { @@ -872,7 +872,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI4, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN4Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn4Mode, "", before, after); } private void comboBoxPIN3_SelectedIndexChanged(object sender, EventArgs e) { @@ -888,7 +888,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI3, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN3Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn3Mode, "", before, after); } private void comboBoxPIN2_SelectedIndexChanged(object sender, EventArgs e) { @@ -904,7 +904,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.PI2, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExInputPIN2Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExIn2Mode, "", before, after); } private void buttonLogin_Click(object sender, EventArgs e) @@ -913,10 +913,7 @@ namespace ITC81DB_0H.Controls string before = "", after = ""; if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) - { - this.buttonLogin.ButtonDown(); return; - } if (this.ParentForm.ParentForm.SystemConfig1.IsLogin == false) before = "OFF"; @@ -933,11 +930,13 @@ namespace ITC81DB_0H.Controls if (this.buttonLogin.ButtonStatus == SmartX.SmartButton.BUTSTATUS.UP) { this.ParentForm.ParentForm.SystemConfig1.IsLogin = false; + this.ParentForm.LoginVisible(false); after = "OFF"; } else { this.ParentForm.ParentForm.SystemConfig1.IsLogin = true; + this.ParentForm.LoginVisible(true); after = "ON"; } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipInitialize.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipInitialize.cs index d476dbb..564ac56 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipInitialize.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipInitialize.cs @@ -203,7 +203,7 @@ namespace ITC81DB_0H.Controls this.DeleteCounterFile(); this.progressBarInitialize.Value = 100; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Initialization_LCD, ""); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Init_LCD, ""); this.InitializeStep = Define.E_Step3.Step3; this.UpdateLabelStatus(this.InitializeStep, this.ParentForm.ParentForm.SystemConfig1.Language); @@ -227,7 +227,7 @@ namespace ITC81DB_0H.Controls this.CopyFolder(this.ParentForm.ParentForm.PathFlashDiskSystemFile2Folder, this.ParentForm.ParentForm.PathSDCardSystemFile2Folder); this.progressBarInitialize.Value += 15; this.DeleteCounterFile(); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Initialization_LCD, ""); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Init_LCD, ""); this.progressBarInitialize.Value += 15; this.timer.Enabled = true; @@ -406,7 +406,7 @@ namespace ITC81DB_0H.Controls this.progressBarInitialize.Value = 100; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Initialization_Main, ""); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Init_Main, ""); this.InitializeStep = Define.E_Step3.Step3; this.UpdateLabelStatus(this.InitializeStep, this.ParentForm.ParentForm.SystemConfig1.Language); diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs index 685f819..51ab4ce 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.Designer.cs @@ -30,20 +30,16 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterEquipUser)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.comboBoxAccessRight = new System.Windows.Forms.ComboBox(); + this.labelAccessRightAdmin = new SmartX.SmartLabel(); + this.smartSeparatorLine2 = new SmartX.SmartSeparatorLine(); + this.smartSeparatorLine1 = new SmartX.SmartSeparatorLine(); this.labelAutoLogoutWarning = new SmartX.SmartLabel(); this.labelTitlePassword = new SmartX.SmartLabel(); this.buttonNew = new SmartX.SmartButton(); this.smartKeyboard = new SmartX.SmartKeyboard(); this.buttonSave = new SmartX.SmartButton(); this.buttonDelete = new SmartX.SmartButton(); - this.buttonChangeLevelName = new SmartX.SmartButton(); - this.textBoxLevel2 = new System.Windows.Forms.TextBox(); - this.textBoxLevel1 = new System.Windows.Forms.TextBox(); - this.textBoxLevel3 = new System.Windows.Forms.TextBox(); - this.buttonLevel3 = new SmartX.SmartButton(); - this.buttonLevel2 = new SmartX.SmartButton(); - this.buttonLevel1 = new SmartX.SmartButton(); - this.labelAccessRight = new SmartX.SmartLabel(); this.labelTitleAccessRight = new SmartX.SmartLabel(); this.smartLabel11 = new SmartX.SmartLabel(); this.labelAutomaticLogoutTime = new SmartX.SmartLabel(); @@ -63,31 +59,7 @@ this.textBoxID = new System.Windows.Forms.TextBox(); this.buttonGroupEditor = new SmartX.SmartButton(); this.listBoxUserList = new SmartX.SmartListBox(); - this.groupBoxAccessRight = new SmartX.SmartGroupBox(); - this.checkBoxUser = new SmartX.SmartCheckBox(); - this.labelTitleMain = new SmartX.SmartLabel(); - this.labelTitleMenu = new SmartX.SmartLabel(); - this.checkBoxLog = new SmartX.SmartCheckBox(); - this.checkBoxFeature = new SmartX.SmartCheckBox(); - this.checkBoxInitialization = new SmartX.SmartCheckBox(); - this.checkBoxUpdate = new SmartX.SmartCheckBox(); - this.checkBoxExternalOutput = new SmartX.SmartCheckBox(); - this.checkBoxIOTest = new SmartX.SmartCheckBox(); - this.checkBoxAutoZero = new SmartX.SmartCheckBox(); - this.checkBoxSorter = new SmartX.SmartCheckBox(); - this.checkBoxJudgment = new SmartX.SmartCheckBox(); - this.checkBoxCalibration = new SmartX.SmartCheckBox(); - this.checkBoxEthernet = new SmartX.SmartCheckBox(); - this.checkBoxSerial = new SmartX.SmartCheckBox(); - this.checkBoxDataStat = new SmartX.SmartCheckBox(); - this.checkBoxProduct = new SmartX.SmartCheckBox(); - this.checkBoxTime = new SmartX.SmartCheckBox(); - this.checkBoxSubMenu = new SmartX.SmartCheckBox(); - this.checkBoxClear = new SmartX.SmartCheckBox(); - this.checkBoxChangeWeight = new SmartX.SmartCheckBox(); - this.checkBoxChangeNo = new SmartX.SmartCheckBox(); this.smartGroupBox1.SuspendLayout(); - this.groupBoxAccessRight.SuspendLayout(); this.SuspendLayout(); // // smartGroupBox1 @@ -95,20 +67,16 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.Black; this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.comboBoxAccessRight); + this.smartGroupBox1.Controls.Add(this.labelAccessRightAdmin); + this.smartGroupBox1.Controls.Add(this.smartSeparatorLine2); + this.smartGroupBox1.Controls.Add(this.smartSeparatorLine1); this.smartGroupBox1.Controls.Add(this.labelAutoLogoutWarning); this.smartGroupBox1.Controls.Add(this.labelTitlePassword); this.smartGroupBox1.Controls.Add(this.buttonNew); this.smartGroupBox1.Controls.Add(this.smartKeyboard); this.smartGroupBox1.Controls.Add(this.buttonSave); this.smartGroupBox1.Controls.Add(this.buttonDelete); - this.smartGroupBox1.Controls.Add(this.buttonChangeLevelName); - this.smartGroupBox1.Controls.Add(this.textBoxLevel2); - this.smartGroupBox1.Controls.Add(this.textBoxLevel1); - this.smartGroupBox1.Controls.Add(this.textBoxLevel3); - this.smartGroupBox1.Controls.Add(this.buttonLevel3); - this.smartGroupBox1.Controls.Add(this.buttonLevel2); - this.smartGroupBox1.Controls.Add(this.buttonLevel1); - this.smartGroupBox1.Controls.Add(this.labelAccessRight); this.smartGroupBox1.Controls.Add(this.labelTitleAccessRight); this.smartGroupBox1.Controls.Add(this.smartLabel11); this.smartGroupBox1.Controls.Add(this.labelAutomaticLogoutTime); @@ -128,7 +96,6 @@ this.smartGroupBox1.Controls.Add(this.textBoxID); this.smartGroupBox1.Controls.Add(this.buttonGroupEditor); this.smartGroupBox1.Controls.Add(this.listBoxUserList); - this.smartGroupBox1.Controls.Add(this.groupBoxAccessRight); this.smartGroupBox1.FrameLineColor1 = System.Drawing.Color.Black; this.smartGroupBox1.FrameLineColor2 = System.Drawing.Color.Black; this.smartGroupBox1.FrameLineThickness = 1; @@ -143,6 +110,66 @@ this.smartGroupBox1.Text = "smartGroupBox1"; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // comboBoxAccessRight + // + this.comboBoxAccessRight.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Regular); + this.comboBoxAccessRight.Location = new System.Drawing.Point(390, 76); + this.comboBoxAccessRight.Name = "comboBoxAccessRight"; + this.comboBoxAccessRight.Size = new System.Drawing.Size(250, 26); + this.comboBoxAccessRight.TabIndex = 206; + this.comboBoxAccessRight.SelectedIndexChanged += new System.EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + // + // labelAccessRightAdmin + // + this.labelAccessRightAdmin.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelAccessRightAdmin.BackPictureBox = null; + this.labelAccessRightAdmin.BackPictureBox1 = null; + this.labelAccessRightAdmin.BackPictureBox2 = null; + this.labelAccessRightAdmin.BorderColor = System.Drawing.Color.White; + this.labelAccessRightAdmin.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelAccessRightAdmin.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Bold); + this.labelAccessRightAdmin.ForeColor = System.Drawing.Color.White; + this.labelAccessRightAdmin.InitVisible = true; + this.labelAccessRightAdmin.LineSpacing = 0F; + this.labelAccessRightAdmin.Location = new System.Drawing.Point(390, 76); + this.labelAccessRightAdmin.Name = "labelAccessRightAdmin"; + this.labelAccessRightAdmin.Size = new System.Drawing.Size(250, 26); + this.labelAccessRightAdmin.TabIndex = 209; + this.labelAccessRightAdmin.Text = "Administrator"; + this.labelAccessRightAdmin.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelAccessRightAdmin.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelAccessRightAdmin.Wordwrap = false; + // + // smartSeparatorLine2 + // + this.smartSeparatorLine2.InitVisible = true; + this.smartSeparatorLine2.Line1Color = System.Drawing.Color.DimGray; + this.smartSeparatorLine2.Line1Width = 1F; + this.smartSeparatorLine2.Line2Color = System.Drawing.Color.LightGray; + this.smartSeparatorLine2.Line2Visible = true; + this.smartSeparatorLine2.Line2Width = 1F; + this.smartSeparatorLine2.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; + this.smartSeparatorLine2.Location = new System.Drawing.Point(263, 217); + this.smartSeparatorLine2.Name = "smartSeparatorLine2"; + this.smartSeparatorLine2.Size = new System.Drawing.Size(433, 2); + this.smartSeparatorLine2.TabIndex = 208; + this.smartSeparatorLine2.Text = "smartSeparatorLine2"; + // + // smartSeparatorLine1 + // + this.smartSeparatorLine1.InitVisible = true; + this.smartSeparatorLine1.Line1Color = System.Drawing.Color.DimGray; + this.smartSeparatorLine1.Line1Width = 1F; + this.smartSeparatorLine1.Line2Color = System.Drawing.Color.LightGray; + this.smartSeparatorLine1.Line2Visible = true; + this.smartSeparatorLine1.Line2Width = 1F; + this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; + this.smartSeparatorLine1.Location = new System.Drawing.Point(263, 120); + this.smartSeparatorLine1.Name = "smartSeparatorLine1"; + this.smartSeparatorLine1.Size = new System.Drawing.Size(433, 2); + this.smartSeparatorLine1.TabIndex = 207; + this.smartSeparatorLine1.Text = "smartSeparatorLine1"; + // // labelAutoLogoutWarning // this.labelAutoLogoutWarning.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); @@ -155,7 +182,7 @@ this.labelAutoLogoutWarning.ForeColor = System.Drawing.Color.Red; this.labelAutoLogoutWarning.InitVisible = true; this.labelAutoLogoutWarning.LineSpacing = 0F; - this.labelAutoLogoutWarning.Location = new System.Drawing.Point(547, 372); + this.labelAutoLogoutWarning.Location = new System.Drawing.Point(547, 237); this.labelAutoLogoutWarning.Name = "labelAutoLogoutWarning"; this.labelAutoLogoutWarning.Size = new System.Drawing.Size(149, 26); this.labelAutoLogoutWarning.TabIndex = 205; @@ -197,7 +224,7 @@ this.buttonNew.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonNew.DownImage"))); this.buttonNew.GroupID = 0; this.buttonNew.InitVisible = true; - this.buttonNew.Location = new System.Drawing.Point(263, 406); + this.buttonNew.Location = new System.Drawing.Point(14, 405); this.buttonNew.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonNew.Name = "buttonNew"; this.buttonNew.NestedClickEventPrevent = false; @@ -218,10 +245,11 @@ // // smartKeyboard // + this.smartKeyboard.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(198)))), ((int)(((byte)(195)))), ((int)(((byte)(198))))); this.smartKeyboard.ControlKeyDisable = false; this.smartKeyboard.DesignMinimize = true; this.smartKeyboard.FontColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); - this.smartKeyboard.HanYoungKeyDisable = false; + this.smartKeyboard.HanYoungKeyDisable = true; this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; this.smartKeyboard.KeyFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); this.smartKeyboard.KeyOutLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(157)))), ((int)(((byte)(157)))), ((int)(((byte)(157))))); @@ -261,7 +289,7 @@ this.buttonSave.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonSave.DownImage"))); this.buttonSave.GroupID = 0; this.buttonSave.InitVisible = true; - this.buttonSave.Location = new System.Drawing.Point(375, 406); + this.buttonSave.Location = new System.Drawing.Point(207, 405); this.buttonSave.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonSave.Name = "buttonSave"; this.buttonSave.NestedClickEventPrevent = false; @@ -293,7 +321,7 @@ this.buttonDelete.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDelete.DownImage"))); this.buttonDelete.GroupID = 0; this.buttonDelete.InitVisible = true; - this.buttonDelete.Location = new System.Drawing.Point(319, 406); + this.buttonDelete.Location = new System.Drawing.Point(70, 405); this.buttonDelete.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonDelete.Name = "buttonDelete"; this.buttonDelete.NestedClickEventPrevent = false; @@ -313,194 +341,6 @@ this.buttonDelete.Visible = false; this.buttonDelete.Click += new System.EventHandler(this.buttonDelete_Click); // - // buttonChangeLevelName - // - this.buttonChangeLevelName.BackPictureBox = null; - this.buttonChangeLevelName.BackPictureBox1 = null; - this.buttonChangeLevelName.BackPictureBox2 = null; - this.buttonChangeLevelName.ButtonColor = System.Drawing.Color.LightGray; - this.buttonChangeLevelName.ButtonImageAutoSize = true; - this.buttonChangeLevelName.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonChangeLevelName.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonChangeLevelName.DisableImage"))); - this.buttonChangeLevelName.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonChangeLevelName.DownImage"))); - this.buttonChangeLevelName.GroupID = 0; - this.buttonChangeLevelName.InitVisible = true; - this.buttonChangeLevelName.Location = new System.Drawing.Point(590, 405); - this.buttonChangeLevelName.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; - this.buttonChangeLevelName.Name = "buttonChangeLevelName"; - this.buttonChangeLevelName.NestedClickEventPrevent = false; - this.buttonChangeLevelName.OutlinePixel = 1; - this.buttonChangeLevelName.RepeatInterval = 200; - this.buttonChangeLevelName.RepeatIntervalAccelerate = null; - this.buttonChangeLevelName.SafeInterval = 200; - this.buttonChangeLevelName.Size = new System.Drawing.Size(50, 50); - this.buttonChangeLevelName.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonChangeLevelName.TabIndex = 200; - this.buttonChangeLevelName.TextColor = System.Drawing.Color.Black; - this.buttonChangeLevelName.TextDownColor = System.Drawing.Color.White; - this.buttonChangeLevelName.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonChangeLevelName.TextLocation = new System.Drawing.Point(0, 0); - this.buttonChangeLevelName.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonChangeLevelName.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonChangeLevelName.UpImage"))); - this.buttonChangeLevelName.Visible = false; - this.buttonChangeLevelName.Click += new System.EventHandler(this.buttonChangeLevelName_Click); - // - // textBoxLevel2 - // - this.textBoxLevel2.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); - this.textBoxLevel2.Location = new System.Drawing.Point(411, 110); - this.textBoxLevel2.Name = "textBoxLevel2"; - this.textBoxLevel2.Size = new System.Drawing.Size(140, 23); - this.textBoxLevel2.TabIndex = 198; - this.textBoxLevel2.Text = "Level2"; - this.textBoxLevel2.Visible = false; - this.textBoxLevel2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel2_KeyPress); - // - // textBoxLevel1 - // - this.textBoxLevel1.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); - this.textBoxLevel1.Location = new System.Drawing.Point(263, 110); - this.textBoxLevel1.Name = "textBoxLevel1"; - this.textBoxLevel1.Size = new System.Drawing.Size(140, 23); - this.textBoxLevel1.TabIndex = 195; - this.textBoxLevel1.Text = "Level1"; - this.textBoxLevel1.Visible = false; - this.textBoxLevel1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel1_KeyPress); - // - // textBoxLevel3 - // - this.textBoxLevel3.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); - this.textBoxLevel3.Location = new System.Drawing.Point(558, 110); - this.textBoxLevel3.Name = "textBoxLevel3"; - this.textBoxLevel3.Size = new System.Drawing.Size(140, 23); - this.textBoxLevel3.TabIndex = 197; - this.textBoxLevel3.Text = "Level3"; - this.textBoxLevel3.Visible = false; - this.textBoxLevel3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel3_KeyPress); - // - // buttonLevel3 - // - this.buttonLevel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel3.BackPictureBox = null; - this.buttonLevel3.BackPictureBox1 = null; - this.buttonLevel3.BackPictureBox2 = null; - this.buttonLevel3.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel3.ButtonImageAutoSize = true; - this.buttonLevel3.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLevel3.DisableImage = null; - this.buttonLevel3.DownImage = null; - this.buttonLevel3.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); - this.buttonLevel3.GroupID = 0; - this.buttonLevel3.InitVisible = true; - this.buttonLevel3.Location = new System.Drawing.Point(558, 107); - this.buttonLevel3.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLevel3.Name = "buttonLevel3"; - this.buttonLevel3.NestedClickEventPrevent = false; - this.buttonLevel3.OutlinePixel = 1; - this.buttonLevel3.RepeatInterval = 200; - this.buttonLevel3.RepeatIntervalAccelerate = null; - this.buttonLevel3.SafeInterval = 200; - this.buttonLevel3.Size = new System.Drawing.Size(140, 30); - this.buttonLevel3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLevel3.TabIndex = 194; - this.buttonLevel3.Text = "Level3"; - this.buttonLevel3.TextColor = System.Drawing.Color.White; - this.buttonLevel3.TextDownColor = System.Drawing.Color.MidnightBlue; - this.buttonLevel3.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLevel3.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLevel3.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLevel3.UpImage = null; - this.buttonLevel3.Click += new System.EventHandler(this.buttonLevel_Click); - // - // buttonLevel2 - // - this.buttonLevel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel2.BackPictureBox = null; - this.buttonLevel2.BackPictureBox1 = null; - this.buttonLevel2.BackPictureBox2 = null; - this.buttonLevel2.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel2.ButtonImageAutoSize = true; - this.buttonLevel2.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLevel2.DisableImage = null; - this.buttonLevel2.DownImage = null; - this.buttonLevel2.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); - this.buttonLevel2.GroupID = 0; - this.buttonLevel2.InitVisible = true; - this.buttonLevel2.Location = new System.Drawing.Point(411, 107); - this.buttonLevel2.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLevel2.Name = "buttonLevel2"; - this.buttonLevel2.NestedClickEventPrevent = false; - this.buttonLevel2.OutlinePixel = 1; - this.buttonLevel2.RepeatInterval = 200; - this.buttonLevel2.RepeatIntervalAccelerate = null; - this.buttonLevel2.SafeInterval = 200; - this.buttonLevel2.Size = new System.Drawing.Size(140, 30); - this.buttonLevel2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLevel2.TabIndex = 193; - this.buttonLevel2.Text = "Level2"; - this.buttonLevel2.TextColor = System.Drawing.Color.White; - this.buttonLevel2.TextDownColor = System.Drawing.Color.MidnightBlue; - this.buttonLevel2.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLevel2.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLevel2.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLevel2.UpImage = null; - this.buttonLevel2.Click += new System.EventHandler(this.buttonLevel_Click); - // - // buttonLevel1 - // - this.buttonLevel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel1.BackPictureBox = null; - this.buttonLevel1.BackPictureBox1 = null; - this.buttonLevel1.BackPictureBox2 = null; - this.buttonLevel1.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.buttonLevel1.ButtonImageAutoSize = true; - this.buttonLevel1.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonLevel1.DisableImage = null; - this.buttonLevel1.DownImage = null; - this.buttonLevel1.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); - this.buttonLevel1.GroupID = 0; - this.buttonLevel1.InitVisible = true; - this.buttonLevel1.Location = new System.Drawing.Point(263, 107); - this.buttonLevel1.Mode = SmartX.SmartButton.BUTTONMODE.RADIO; - this.buttonLevel1.Name = "buttonLevel1"; - this.buttonLevel1.NestedClickEventPrevent = false; - this.buttonLevel1.OutlinePixel = 1; - this.buttonLevel1.RepeatInterval = 200; - this.buttonLevel1.RepeatIntervalAccelerate = null; - this.buttonLevel1.SafeInterval = 200; - this.buttonLevel1.Size = new System.Drawing.Size(140, 30); - this.buttonLevel1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonLevel1.TabIndex = 192; - this.buttonLevel1.Text = "Level1"; - this.buttonLevel1.TextColor = System.Drawing.Color.White; - this.buttonLevel1.TextDownColor = System.Drawing.Color.MidnightBlue; - this.buttonLevel1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonLevel1.TextLocation = new System.Drawing.Point(0, 0); - this.buttonLevel1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonLevel1.UpImage = null; - this.buttonLevel1.Click += new System.EventHandler(this.buttonLevel_Click); - // - // labelAccessRight - // - this.labelAccessRight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.labelAccessRight.BackPictureBox = null; - this.labelAccessRight.BackPictureBox1 = null; - this.labelAccessRight.BackPictureBox2 = null; - this.labelAccessRight.BorderColor = System.Drawing.Color.White; - this.labelAccessRight.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelAccessRight.Font = new System.Drawing.Font("새굴림", 11F, System.Drawing.FontStyle.Bold); - this.labelAccessRight.ForeColor = System.Drawing.Color.White; - this.labelAccessRight.InitVisible = true; - this.labelAccessRight.LineSpacing = 0F; - this.labelAccessRight.Location = new System.Drawing.Point(390, 76); - this.labelAccessRight.Name = "labelAccessRight"; - this.labelAccessRight.Size = new System.Drawing.Size(161, 26); - this.labelAccessRight.TabIndex = 187; - this.labelAccessRight.Text = "Level1"; - this.labelAccessRight.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelAccessRight.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelAccessRight.Wordwrap = false; - // // labelTitleAccessRight // this.labelTitleAccessRight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); @@ -534,7 +374,7 @@ this.smartLabel11.ForeColor = System.Drawing.Color.White; this.smartLabel11.InitVisible = true; this.smartLabel11.LineSpacing = 0F; - this.smartLabel11.Location = new System.Drawing.Point(454, 372); + this.smartLabel11.Location = new System.Drawing.Point(454, 237); this.smartLabel11.Name = "smartLabel11"; this.smartLabel11.Size = new System.Drawing.Size(90, 26); this.smartLabel11.TabIndex = 185; @@ -555,7 +395,7 @@ this.labelAutomaticLogoutTime.ForeColor = System.Drawing.Color.Black; this.labelAutomaticLogoutTime.InitVisible = true; this.labelAutomaticLogoutTime.LineSpacing = 0F; - this.labelAutomaticLogoutTime.Location = new System.Drawing.Point(390, 372); + this.labelAutomaticLogoutTime.Location = new System.Drawing.Point(390, 237); this.labelAutomaticLogoutTime.Name = "labelAutomaticLogoutTime"; this.labelAutomaticLogoutTime.Size = new System.Drawing.Size(62, 26); this.labelAutomaticLogoutTime.TabIndex = 184; @@ -577,7 +417,7 @@ this.labelTitleAutomaticLogoutTime.ForeColor = System.Drawing.Color.White; this.labelTitleAutomaticLogoutTime.InitVisible = true; this.labelTitleAutomaticLogoutTime.LineSpacing = 0F; - this.labelTitleAutomaticLogoutTime.Location = new System.Drawing.Point(263, 372); + this.labelTitleAutomaticLogoutTime.Location = new System.Drawing.Point(263, 237); this.labelTitleAutomaticLogoutTime.Name = "labelTitleAutomaticLogoutTime"; this.labelTitleAutomaticLogoutTime.Size = new System.Drawing.Size(121, 26); this.labelTitleAutomaticLogoutTime.TabIndex = 183; @@ -598,7 +438,7 @@ this.labelExpiryDateOfPassword2.ForeColor = System.Drawing.Color.White; this.labelExpiryDateOfPassword2.InitVisible = true; this.labelExpiryDateOfPassword2.LineSpacing = 0F; - this.labelExpiryDateOfPassword2.Location = new System.Drawing.Point(549, 341); + this.labelExpiryDateOfPassword2.Location = new System.Drawing.Point(549, 172); this.labelExpiryDateOfPassword2.Name = "labelExpiryDateOfPassword2"; this.labelExpiryDateOfPassword2.Size = new System.Drawing.Size(149, 27); this.labelExpiryDateOfPassword2.TabIndex = 182; @@ -620,7 +460,7 @@ this.smartLabel8.ForeColor = System.Drawing.Color.White; this.smartLabel8.InitVisible = true; this.smartLabel8.LineSpacing = 0F; - this.smartLabel8.Location = new System.Drawing.Point(454, 341); + this.smartLabel8.Location = new System.Drawing.Point(454, 172); this.smartLabel8.Name = "smartLabel8"; this.smartLabel8.Size = new System.Drawing.Size(90, 26); this.smartLabel8.TabIndex = 181; @@ -641,7 +481,7 @@ this.labelExpiryDateOfPassword.ForeColor = System.Drawing.Color.Black; this.labelExpiryDateOfPassword.InitVisible = true; this.labelExpiryDateOfPassword.LineSpacing = 0F; - this.labelExpiryDateOfPassword.Location = new System.Drawing.Point(390, 341); + this.labelExpiryDateOfPassword.Location = new System.Drawing.Point(390, 172); this.labelExpiryDateOfPassword.Name = "labelExpiryDateOfPassword"; this.labelExpiryDateOfPassword.Size = new System.Drawing.Size(62, 26); this.labelExpiryDateOfPassword.TabIndex = 180; @@ -663,7 +503,7 @@ this.labelTitleExpiryDateOfPassword.ForeColor = System.Drawing.Color.White; this.labelTitleExpiryDateOfPassword.InitVisible = true; this.labelTitleExpiryDateOfPassword.LineSpacing = 0F; - this.labelTitleExpiryDateOfPassword.Location = new System.Drawing.Point(263, 341); + this.labelTitleExpiryDateOfPassword.Location = new System.Drawing.Point(263, 172); this.labelTitleExpiryDateOfPassword.Name = "labelTitleExpiryDateOfPassword"; this.labelTitleExpiryDateOfPassword.Size = new System.Drawing.Size(121, 26); this.labelTitleExpiryDateOfPassword.TabIndex = 179; @@ -684,7 +524,7 @@ this.labelExpiryDateOfAccount2.ForeColor = System.Drawing.Color.White; this.labelExpiryDateOfAccount2.InitVisible = true; this.labelExpiryDateOfAccount2.LineSpacing = 0F; - this.labelExpiryDateOfAccount2.Location = new System.Drawing.Point(549, 309); + this.labelExpiryDateOfAccount2.Location = new System.Drawing.Point(549, 140); this.labelExpiryDateOfAccount2.Name = "labelExpiryDateOfAccount2"; this.labelExpiryDateOfAccount2.Size = new System.Drawing.Size(149, 26); this.labelExpiryDateOfAccount2.TabIndex = 178; @@ -706,7 +546,7 @@ this.smartLabel3.ForeColor = System.Drawing.Color.White; this.smartLabel3.InitVisible = true; this.smartLabel3.LineSpacing = 0F; - this.smartLabel3.Location = new System.Drawing.Point(454, 309); + this.smartLabel3.Location = new System.Drawing.Point(454, 140); this.smartLabel3.Name = "smartLabel3"; this.smartLabel3.Size = new System.Drawing.Size(90, 26); this.smartLabel3.TabIndex = 177; @@ -727,7 +567,7 @@ this.labelExpiryDateOfAccount.ForeColor = System.Drawing.Color.Black; this.labelExpiryDateOfAccount.InitVisible = true; this.labelExpiryDateOfAccount.LineSpacing = 0F; - this.labelExpiryDateOfAccount.Location = new System.Drawing.Point(390, 309); + this.labelExpiryDateOfAccount.Location = new System.Drawing.Point(390, 140); this.labelExpiryDateOfAccount.Name = "labelExpiryDateOfAccount"; this.labelExpiryDateOfAccount.Size = new System.Drawing.Size(62, 26); this.labelExpiryDateOfAccount.TabIndex = 176; @@ -749,7 +589,7 @@ this.labelTitleExpiryDateOfAccount.ForeColor = System.Drawing.Color.White; this.labelTitleExpiryDateOfAccount.InitVisible = true; this.labelTitleExpiryDateOfAccount.LineSpacing = 0F; - this.labelTitleExpiryDateOfAccount.Location = new System.Drawing.Point(263, 309); + this.labelTitleExpiryDateOfAccount.Location = new System.Drawing.Point(263, 140); this.labelTitleExpiryDateOfAccount.Name = "labelTitleExpiryDateOfAccount"; this.labelTitleExpiryDateOfAccount.Size = new System.Drawing.Size(121, 26); this.labelTitleExpiryDateOfAccount.TabIndex = 175; @@ -921,7 +761,7 @@ this.listBoxUserList.InitVisible = true; this.listBoxUserList.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxUserList.ItemOffsetGap = 10; - this.listBoxUserList.ItemOffsetX = 0; + this.listBoxUserList.ItemOffsetX = 5; this.listBoxUserList.ItemOffsetY = 0; this.listBoxUserList.Location = new System.Drawing.Point(14, 12); this.listBoxUserList.MouseMoveEventSpace = 3; @@ -937,593 +777,11 @@ this.listBoxUserList.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxUserList.SeparationlineVisibleBottom = true; this.listBoxUserList.SeparationlineVisibleTop = true; - this.listBoxUserList.Size = new System.Drawing.Size(243, 444); + this.listBoxUserList.Size = new System.Drawing.Size(243, 386); this.listBoxUserList.TabIndex = 171; this.listBoxUserList.Text = "smartListBox1"; this.listBoxUserList.SelectedIndexChanged += new System.EventHandler(this.listBoxUserList_SelectedIndexChanged); // - // groupBoxAccessRight - // - this.groupBoxAccessRight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.groupBoxAccessRight.BackPictureBox = null; - this.groupBoxAccessRight.BackPictureBox1 = null; - this.groupBoxAccessRight.Controls.Add(this.checkBoxUser); - this.groupBoxAccessRight.Controls.Add(this.labelTitleMain); - this.groupBoxAccessRight.Controls.Add(this.labelTitleMenu); - this.groupBoxAccessRight.Controls.Add(this.checkBoxLog); - this.groupBoxAccessRight.Controls.Add(this.checkBoxFeature); - this.groupBoxAccessRight.Controls.Add(this.checkBoxInitialization); - this.groupBoxAccessRight.Controls.Add(this.checkBoxUpdate); - this.groupBoxAccessRight.Controls.Add(this.checkBoxExternalOutput); - this.groupBoxAccessRight.Controls.Add(this.checkBoxIOTest); - this.groupBoxAccessRight.Controls.Add(this.checkBoxAutoZero); - this.groupBoxAccessRight.Controls.Add(this.checkBoxSorter); - this.groupBoxAccessRight.Controls.Add(this.checkBoxJudgment); - this.groupBoxAccessRight.Controls.Add(this.checkBoxCalibration); - this.groupBoxAccessRight.Controls.Add(this.checkBoxEthernet); - this.groupBoxAccessRight.Controls.Add(this.checkBoxSerial); - this.groupBoxAccessRight.Controls.Add(this.checkBoxDataStat); - this.groupBoxAccessRight.Controls.Add(this.checkBoxProduct); - this.groupBoxAccessRight.Controls.Add(this.checkBoxTime); - this.groupBoxAccessRight.Controls.Add(this.checkBoxSubMenu); - this.groupBoxAccessRight.Controls.Add(this.checkBoxClear); - this.groupBoxAccessRight.Controls.Add(this.checkBoxChangeWeight); - this.groupBoxAccessRight.Controls.Add(this.checkBoxChangeNo); - this.groupBoxAccessRight.FrameLineColor1 = System.Drawing.Color.White; - this.groupBoxAccessRight.FrameLineColor2 = System.Drawing.Color.Black; - this.groupBoxAccessRight.FrameLineThickness = 1; - this.groupBoxAccessRight.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.Rectangle; - this.groupBoxAccessRight.Image = null; - this.groupBoxAccessRight.InitVisible = true; - this.groupBoxAccessRight.Location = new System.Drawing.Point(254, 129); - this.groupBoxAccessRight.Name = "groupBoxAccessRight"; - this.groupBoxAccessRight.RoundRadius = 5; - this.groupBoxAccessRight.Size = new System.Drawing.Size(453, 185); - this.groupBoxAccessRight.TabIndex = 188; - this.groupBoxAccessRight.TextColor = System.Drawing.Color.Black; - // - // checkBoxUser - // - this.checkBoxUser.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxUser.BackPictureBox = null; - this.checkBoxUser.BackPictureBox1 = null; - this.checkBoxUser.BackPictureBox2 = null; - this.checkBoxUser.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxUser.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxUser.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxUser.CheckBoxSymbolSize = 14; - this.checkBoxUser.Checked = false; - this.checkBoxUser.CheckLineWidth = 3; - this.checkBoxUser.Enabled = false; - this.checkBoxUser.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxUser.ForeColor = System.Drawing.Color.Silver; - this.checkBoxUser.ImageCheckBox = null; - this.checkBoxUser.ImageUnCheckBox = null; - this.checkBoxUser.InitVisible = true; - this.checkBoxUser.Location = new System.Drawing.Point(302, 52); - this.checkBoxUser.Name = "checkBoxUser"; - this.checkBoxUser.Size = new System.Drawing.Size(135, 14); - this.checkBoxUser.TabIndex = 194; - this.checkBoxUser.Text = "유저설정권한"; - this.checkBoxUser.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // labelTitleMain - // - this.labelTitleMain.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.labelTitleMain.BackPictureBox = null; - this.labelTitleMain.BackPictureBox1 = null; - this.labelTitleMain.BackPictureBox2 = null; - this.labelTitleMain.BorderColor = System.Drawing.Color.White; - this.labelTitleMain.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleMain.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); - this.labelTitleMain.ForeColor = System.Drawing.Color.White; - this.labelTitleMain.InitVisible = true; - this.labelTitleMain.LineSpacing = 0F; - this.labelTitleMain.Location = new System.Drawing.Point(16, 18); - this.labelTitleMain.Name = "labelTitleMain"; - this.labelTitleMain.Size = new System.Drawing.Size(135, 14); - this.labelTitleMain.TabIndex = 193; - this.labelTitleMain.Text = "Main"; - this.labelTitleMain.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelTitleMain.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleMain.Wordwrap = false; - // - // labelTitleMenu - // - this.labelTitleMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); - this.labelTitleMenu.BackPictureBox = null; - this.labelTitleMenu.BackPictureBox1 = null; - this.labelTitleMenu.BackPictureBox2 = null; - this.labelTitleMenu.BorderColor = System.Drawing.Color.White; - this.labelTitleMenu.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleMenu.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Bold); - this.labelTitleMenu.ForeColor = System.Drawing.Color.White; - this.labelTitleMenu.InitVisible = true; - this.labelTitleMenu.LineSpacing = 0F; - this.labelTitleMenu.Location = new System.Drawing.Point(16, 103); - this.labelTitleMenu.Name = "labelTitleMenu"; - this.labelTitleMenu.Size = new System.Drawing.Size(135, 14); - this.labelTitleMenu.TabIndex = 192; - this.labelTitleMenu.Text = "Menu"; - this.labelTitleMenu.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; - this.labelTitleMenu.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; - this.labelTitleMenu.Wordwrap = false; - // - // checkBoxLog - // - this.checkBoxLog.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxLog.BackPictureBox = null; - this.checkBoxLog.BackPictureBox1 = null; - this.checkBoxLog.BackPictureBox2 = null; - this.checkBoxLog.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxLog.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxLog.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxLog.CheckBoxSymbolSize = 14; - this.checkBoxLog.Checked = false; - this.checkBoxLog.CheckLineWidth = 3; - this.checkBoxLog.Enabled = false; - this.checkBoxLog.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxLog.ForeColor = System.Drawing.Color.Silver; - this.checkBoxLog.ImageCheckBox = null; - this.checkBoxLog.ImageUnCheckBox = null; - this.checkBoxLog.InitVisible = true; - this.checkBoxLog.Location = new System.Drawing.Point(302, 69); - this.checkBoxLog.Name = "checkBoxLog"; - this.checkBoxLog.Size = new System.Drawing.Size(135, 14); - this.checkBoxLog.TabIndex = 21; - this.checkBoxLog.Text = "로그"; - this.checkBoxLog.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxFeature - // - this.checkBoxFeature.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxFeature.BackPictureBox = null; - this.checkBoxFeature.BackPictureBox1 = null; - this.checkBoxFeature.BackPictureBox2 = null; - this.checkBoxFeature.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxFeature.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxFeature.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxFeature.CheckBoxSymbolSize = 14; - this.checkBoxFeature.Checked = false; - this.checkBoxFeature.CheckLineWidth = 3; - this.checkBoxFeature.Enabled = false; - this.checkBoxFeature.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxFeature.ForeColor = System.Drawing.Color.Silver; - this.checkBoxFeature.ImageCheckBox = null; - this.checkBoxFeature.ImageUnCheckBox = null; - this.checkBoxFeature.InitVisible = true; - this.checkBoxFeature.Location = new System.Drawing.Point(302, 35); - this.checkBoxFeature.Name = "checkBoxFeature"; - this.checkBoxFeature.Size = new System.Drawing.Size(135, 14); - this.checkBoxFeature.TabIndex = 20; - this.checkBoxFeature.Text = "기능설정"; - this.checkBoxFeature.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxInitialization - // - this.checkBoxInitialization.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxInitialization.BackPictureBox = null; - this.checkBoxInitialization.BackPictureBox1 = null; - this.checkBoxInitialization.BackPictureBox2 = null; - this.checkBoxInitialization.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxInitialization.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxInitialization.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxInitialization.CheckBoxSymbolSize = 14; - this.checkBoxInitialization.Checked = false; - this.checkBoxInitialization.CheckLineWidth = 3; - this.checkBoxInitialization.Enabled = false; - this.checkBoxInitialization.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxInitialization.ForeColor = System.Drawing.Color.Silver; - this.checkBoxInitialization.ImageCheckBox = null; - this.checkBoxInitialization.ImageUnCheckBox = null; - this.checkBoxInitialization.InitVisible = true; - this.checkBoxInitialization.Location = new System.Drawing.Point(302, 18); - this.checkBoxInitialization.Name = "checkBoxInitialization"; - this.checkBoxInitialization.Size = new System.Drawing.Size(135, 14); - this.checkBoxInitialization.TabIndex = 19; - this.checkBoxInitialization.Text = "공장초기화"; - this.checkBoxInitialization.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxUpdate - // - this.checkBoxUpdate.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxUpdate.BackPictureBox = null; - this.checkBoxUpdate.BackPictureBox1 = null; - this.checkBoxUpdate.BackPictureBox2 = null; - this.checkBoxUpdate.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxUpdate.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxUpdate.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxUpdate.CheckBoxSymbolSize = 14; - this.checkBoxUpdate.Checked = false; - this.checkBoxUpdate.CheckLineWidth = 3; - this.checkBoxUpdate.Enabled = false; - this.checkBoxUpdate.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxUpdate.ForeColor = System.Drawing.Color.Silver; - this.checkBoxUpdate.ImageCheckBox = null; - this.checkBoxUpdate.ImageUnCheckBox = null; - this.checkBoxUpdate.InitVisible = true; - this.checkBoxUpdate.Location = new System.Drawing.Point(161, 154); - this.checkBoxUpdate.Name = "checkBoxUpdate"; - this.checkBoxUpdate.Size = new System.Drawing.Size(135, 14); - this.checkBoxUpdate.TabIndex = 18; - this.checkBoxUpdate.Text = "업데이트"; - this.checkBoxUpdate.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxExternalOutput - // - this.checkBoxExternalOutput.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxExternalOutput.BackPictureBox = null; - this.checkBoxExternalOutput.BackPictureBox1 = null; - this.checkBoxExternalOutput.BackPictureBox2 = null; - this.checkBoxExternalOutput.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxExternalOutput.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxExternalOutput.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxExternalOutput.CheckBoxSymbolSize = 14; - this.checkBoxExternalOutput.Checked = false; - this.checkBoxExternalOutput.CheckLineWidth = 3; - this.checkBoxExternalOutput.Enabled = false; - this.checkBoxExternalOutput.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxExternalOutput.ForeColor = System.Drawing.Color.Silver; - this.checkBoxExternalOutput.ImageCheckBox = null; - this.checkBoxExternalOutput.ImageUnCheckBox = null; - this.checkBoxExternalOutput.InitVisible = true; - this.checkBoxExternalOutput.Location = new System.Drawing.Point(161, 137); - this.checkBoxExternalOutput.Name = "checkBoxExternalOutput"; - this.checkBoxExternalOutput.Size = new System.Drawing.Size(135, 14); - this.checkBoxExternalOutput.TabIndex = 16; - this.checkBoxExternalOutput.Text = "외부출력"; - this.checkBoxExternalOutput.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxIOTest - // - this.checkBoxIOTest.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxIOTest.BackPictureBox = null; - this.checkBoxIOTest.BackPictureBox1 = null; - this.checkBoxIOTest.BackPictureBox2 = null; - this.checkBoxIOTest.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxIOTest.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxIOTest.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxIOTest.CheckBoxSymbolSize = 14; - this.checkBoxIOTest.Checked = false; - this.checkBoxIOTest.CheckLineWidth = 3; - this.checkBoxIOTest.Enabled = false; - this.checkBoxIOTest.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxIOTest.ForeColor = System.Drawing.Color.Silver; - this.checkBoxIOTest.ImageCheckBox = null; - this.checkBoxIOTest.ImageUnCheckBox = null; - this.checkBoxIOTest.InitVisible = true; - this.checkBoxIOTest.Location = new System.Drawing.Point(161, 120); - this.checkBoxIOTest.Name = "checkBoxIOTest"; - this.checkBoxIOTest.Size = new System.Drawing.Size(135, 14); - this.checkBoxIOTest.TabIndex = 15; - this.checkBoxIOTest.Text = "I/O테스트"; - this.checkBoxIOTest.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxAutoZero - // - this.checkBoxAutoZero.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxAutoZero.BackPictureBox = null; - this.checkBoxAutoZero.BackPictureBox1 = null; - this.checkBoxAutoZero.BackPictureBox2 = null; - this.checkBoxAutoZero.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxAutoZero.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxAutoZero.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxAutoZero.CheckBoxSymbolSize = 14; - this.checkBoxAutoZero.Checked = false; - this.checkBoxAutoZero.CheckLineWidth = 3; - this.checkBoxAutoZero.Enabled = false; - this.checkBoxAutoZero.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxAutoZero.ForeColor = System.Drawing.Color.Silver; - this.checkBoxAutoZero.ImageCheckBox = null; - this.checkBoxAutoZero.ImageUnCheckBox = null; - this.checkBoxAutoZero.InitVisible = true; - this.checkBoxAutoZero.Location = new System.Drawing.Point(161, 103); - this.checkBoxAutoZero.Name = "checkBoxAutoZero"; - this.checkBoxAutoZero.Size = new System.Drawing.Size(135, 14); - this.checkBoxAutoZero.TabIndex = 14; - this.checkBoxAutoZero.Text = "자동영점"; - this.checkBoxAutoZero.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxSorter - // - this.checkBoxSorter.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxSorter.BackPictureBox = null; - this.checkBoxSorter.BackPictureBox1 = null; - this.checkBoxSorter.BackPictureBox2 = null; - this.checkBoxSorter.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxSorter.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxSorter.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxSorter.CheckBoxSymbolSize = 14; - this.checkBoxSorter.Checked = false; - this.checkBoxSorter.CheckLineWidth = 3; - this.checkBoxSorter.Enabled = false; - this.checkBoxSorter.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxSorter.ForeColor = System.Drawing.Color.Silver; - this.checkBoxSorter.ImageCheckBox = null; - this.checkBoxSorter.ImageUnCheckBox = null; - this.checkBoxSorter.InitVisible = true; - this.checkBoxSorter.Location = new System.Drawing.Point(161, 86); - this.checkBoxSorter.Name = "checkBoxSorter"; - this.checkBoxSorter.Size = new System.Drawing.Size(135, 14); - this.checkBoxSorter.TabIndex = 13; - this.checkBoxSorter.Text = "선별기설정"; - this.checkBoxSorter.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxJudgment - // - this.checkBoxJudgment.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxJudgment.BackPictureBox = null; - this.checkBoxJudgment.BackPictureBox1 = null; - this.checkBoxJudgment.BackPictureBox2 = null; - this.checkBoxJudgment.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxJudgment.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxJudgment.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxJudgment.CheckBoxSymbolSize = 14; - this.checkBoxJudgment.Checked = false; - this.checkBoxJudgment.CheckLineWidth = 3; - this.checkBoxJudgment.Enabled = false; - this.checkBoxJudgment.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxJudgment.ForeColor = System.Drawing.Color.Silver; - this.checkBoxJudgment.ImageCheckBox = null; - this.checkBoxJudgment.ImageUnCheckBox = null; - this.checkBoxJudgment.InitVisible = true; - this.checkBoxJudgment.Location = new System.Drawing.Point(161, 69); - this.checkBoxJudgment.Name = "checkBoxJudgment"; - this.checkBoxJudgment.Size = new System.Drawing.Size(135, 14); - this.checkBoxJudgment.TabIndex = 12; - this.checkBoxJudgment.Text = "판정설정"; - this.checkBoxJudgment.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxCalibration - // - this.checkBoxCalibration.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxCalibration.BackPictureBox = null; - this.checkBoxCalibration.BackPictureBox1 = null; - this.checkBoxCalibration.BackPictureBox2 = null; - this.checkBoxCalibration.CheckBoxBackColor = System.Drawing.Color.Silver; - this.checkBoxCalibration.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxCalibration.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxCalibration.CheckBoxSymbolSize = 14; - this.checkBoxCalibration.Checked = false; - this.checkBoxCalibration.CheckLineWidth = 3; - this.checkBoxCalibration.Enabled = false; - this.checkBoxCalibration.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxCalibration.ForeColor = System.Drawing.Color.Silver; - this.checkBoxCalibration.ImageCheckBox = null; - this.checkBoxCalibration.ImageUnCheckBox = null; - this.checkBoxCalibration.InitVisible = true; - this.checkBoxCalibration.Location = new System.Drawing.Point(161, 52); - this.checkBoxCalibration.Name = "checkBoxCalibration"; - this.checkBoxCalibration.Size = new System.Drawing.Size(135, 14); - this.checkBoxCalibration.TabIndex = 11; - this.checkBoxCalibration.Text = "중량조정"; - this.checkBoxCalibration.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxEthernet - // - this.checkBoxEthernet.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxEthernet.BackPictureBox = null; - this.checkBoxEthernet.BackPictureBox1 = null; - this.checkBoxEthernet.BackPictureBox2 = null; - this.checkBoxEthernet.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxEthernet.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxEthernet.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxEthernet.CheckBoxSymbolSize = 14; - this.checkBoxEthernet.Checked = false; - this.checkBoxEthernet.CheckLineWidth = 3; - this.checkBoxEthernet.Enabled = false; - this.checkBoxEthernet.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxEthernet.ForeColor = System.Drawing.Color.Silver; - this.checkBoxEthernet.ImageCheckBox = null; - this.checkBoxEthernet.ImageUnCheckBox = null; - this.checkBoxEthernet.InitVisible = true; - this.checkBoxEthernet.Location = new System.Drawing.Point(161, 35); - this.checkBoxEthernet.Name = "checkBoxEthernet"; - this.checkBoxEthernet.Size = new System.Drawing.Size(135, 14); - this.checkBoxEthernet.TabIndex = 8; - this.checkBoxEthernet.Text = "이더넷통신"; - this.checkBoxEthernet.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxSerial - // - this.checkBoxSerial.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxSerial.BackPictureBox = null; - this.checkBoxSerial.BackPictureBox1 = null; - this.checkBoxSerial.BackPictureBox2 = null; - this.checkBoxSerial.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxSerial.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxSerial.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxSerial.CheckBoxSymbolSize = 14; - this.checkBoxSerial.Checked = false; - this.checkBoxSerial.CheckLineWidth = 3; - this.checkBoxSerial.Enabled = false; - this.checkBoxSerial.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxSerial.ForeColor = System.Drawing.Color.Silver; - this.checkBoxSerial.ImageCheckBox = null; - this.checkBoxSerial.ImageUnCheckBox = null; - this.checkBoxSerial.InitVisible = true; - this.checkBoxSerial.Location = new System.Drawing.Point(161, 18); - this.checkBoxSerial.Name = "checkBoxSerial"; - this.checkBoxSerial.Size = new System.Drawing.Size(135, 14); - this.checkBoxSerial.TabIndex = 7; - this.checkBoxSerial.Text = "시리얼통신"; - this.checkBoxSerial.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxDataStat - // - this.checkBoxDataStat.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxDataStat.BackPictureBox = null; - this.checkBoxDataStat.BackPictureBox1 = null; - this.checkBoxDataStat.BackPictureBox2 = null; - this.checkBoxDataStat.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxDataStat.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxDataStat.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxDataStat.CheckBoxSymbolSize = 14; - this.checkBoxDataStat.Checked = false; - this.checkBoxDataStat.CheckLineWidth = 3; - this.checkBoxDataStat.Enabled = false; - this.checkBoxDataStat.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxDataStat.ForeColor = System.Drawing.Color.Silver; - this.checkBoxDataStat.ImageCheckBox = null; - this.checkBoxDataStat.ImageUnCheckBox = null; - this.checkBoxDataStat.InitVisible = true; - this.checkBoxDataStat.Location = new System.Drawing.Point(16, 154); - this.checkBoxDataStat.Name = "checkBoxDataStat"; - this.checkBoxDataStat.Size = new System.Drawing.Size(135, 14); - this.checkBoxDataStat.TabIndex = 6; - this.checkBoxDataStat.Text = "데이터집계"; - this.checkBoxDataStat.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxProduct - // - this.checkBoxProduct.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxProduct.BackPictureBox = null; - this.checkBoxProduct.BackPictureBox1 = null; - this.checkBoxProduct.BackPictureBox2 = null; - this.checkBoxProduct.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxProduct.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxProduct.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxProduct.CheckBoxSymbolSize = 14; - this.checkBoxProduct.Checked = false; - this.checkBoxProduct.CheckLineWidth = 3; - this.checkBoxProduct.Enabled = false; - this.checkBoxProduct.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxProduct.ForeColor = System.Drawing.Color.Silver; - this.checkBoxProduct.ImageCheckBox = null; - this.checkBoxProduct.ImageUnCheckBox = null; - this.checkBoxProduct.InitVisible = true; - this.checkBoxProduct.Location = new System.Drawing.Point(16, 137); - this.checkBoxProduct.Name = "checkBoxProduct"; - this.checkBoxProduct.Size = new System.Drawing.Size(135, 14); - this.checkBoxProduct.TabIndex = 5; - this.checkBoxProduct.Text = "품목설정"; - this.checkBoxProduct.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxTime - // - this.checkBoxTime.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxTime.BackPictureBox = null; - this.checkBoxTime.BackPictureBox1 = null; - this.checkBoxTime.BackPictureBox2 = null; - this.checkBoxTime.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxTime.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxTime.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxTime.CheckBoxSymbolSize = 14; - this.checkBoxTime.Checked = false; - this.checkBoxTime.CheckLineWidth = 3; - this.checkBoxTime.Enabled = false; - this.checkBoxTime.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxTime.ForeColor = System.Drawing.Color.Silver; - this.checkBoxTime.ImageCheckBox = null; - this.checkBoxTime.ImageUnCheckBox = null; - this.checkBoxTime.InitVisible = true; - this.checkBoxTime.Location = new System.Drawing.Point(16, 120); - this.checkBoxTime.Name = "checkBoxTime"; - this.checkBoxTime.Size = new System.Drawing.Size(135, 14); - this.checkBoxTime.TabIndex = 4; - this.checkBoxTime.Text = "시간설정"; - this.checkBoxTime.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxSubMenu - // - this.checkBoxSubMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxSubMenu.BackPictureBox = null; - this.checkBoxSubMenu.BackPictureBox1 = null; - this.checkBoxSubMenu.BackPictureBox2 = null; - this.checkBoxSubMenu.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxSubMenu.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxSubMenu.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxSubMenu.CheckBoxSymbolSize = 14; - this.checkBoxSubMenu.Checked = false; - this.checkBoxSubMenu.CheckLineWidth = 3; - this.checkBoxSubMenu.Enabled = false; - this.checkBoxSubMenu.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxSubMenu.ForeColor = System.Drawing.Color.Silver; - this.checkBoxSubMenu.ImageCheckBox = null; - this.checkBoxSubMenu.ImageUnCheckBox = null; - this.checkBoxSubMenu.InitVisible = true; - this.checkBoxSubMenu.Location = new System.Drawing.Point(16, 86); - this.checkBoxSubMenu.Name = "checkBoxSubMenu"; - this.checkBoxSubMenu.Size = new System.Drawing.Size(135, 14); - this.checkBoxSubMenu.TabIndex = 3; - this.checkBoxSubMenu.Text = "서브메뉴"; - this.checkBoxSubMenu.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxClear - // - this.checkBoxClear.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxClear.BackPictureBox = null; - this.checkBoxClear.BackPictureBox1 = null; - this.checkBoxClear.BackPictureBox2 = null; - this.checkBoxClear.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxClear.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxClear.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxClear.CheckBoxSymbolSize = 14; - this.checkBoxClear.Checked = false; - this.checkBoxClear.CheckLineWidth = 3; - this.checkBoxClear.Enabled = false; - this.checkBoxClear.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxClear.ForeColor = System.Drawing.Color.Silver; - this.checkBoxClear.ImageCheckBox = null; - this.checkBoxClear.ImageUnCheckBox = null; - this.checkBoxClear.InitVisible = true; - this.checkBoxClear.Location = new System.Drawing.Point(16, 69); - this.checkBoxClear.Name = "checkBoxClear"; - this.checkBoxClear.Size = new System.Drawing.Size(135, 14); - this.checkBoxClear.TabIndex = 2; - this.checkBoxClear.Text = "소거"; - this.checkBoxClear.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxChangeWeight - // - this.checkBoxChangeWeight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxChangeWeight.BackPictureBox = null; - this.checkBoxChangeWeight.BackPictureBox1 = null; - this.checkBoxChangeWeight.BackPictureBox2 = null; - this.checkBoxChangeWeight.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxChangeWeight.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxChangeWeight.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxChangeWeight.CheckBoxSymbolSize = 14; - this.checkBoxChangeWeight.Checked = false; - this.checkBoxChangeWeight.CheckLineWidth = 3; - this.checkBoxChangeWeight.Enabled = false; - this.checkBoxChangeWeight.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxChangeWeight.ForeColor = System.Drawing.Color.Silver; - this.checkBoxChangeWeight.ImageCheckBox = null; - this.checkBoxChangeWeight.ImageUnCheckBox = null; - this.checkBoxChangeWeight.InitVisible = true; - this.checkBoxChangeWeight.Location = new System.Drawing.Point(16, 52); - this.checkBoxChangeWeight.Name = "checkBoxChangeWeight"; - this.checkBoxChangeWeight.Size = new System.Drawing.Size(135, 14); - this.checkBoxChangeWeight.TabIndex = 1; - this.checkBoxChangeWeight.Text = "중량설정"; - this.checkBoxChangeWeight.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // - // checkBoxChangeNo - // - this.checkBoxChangeNo.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); - this.checkBoxChangeNo.BackPictureBox = null; - this.checkBoxChangeNo.BackPictureBox1 = null; - this.checkBoxChangeNo.BackPictureBox2 = null; - this.checkBoxChangeNo.CheckBoxBackColor = System.Drawing.Color.LightGray; - this.checkBoxChangeNo.CheckBoxCheckColor = System.Drawing.Color.Green; - this.checkBoxChangeNo.CheckBoxForeColor = System.Drawing.Color.Black; - this.checkBoxChangeNo.CheckBoxSymbolSize = 14; - this.checkBoxChangeNo.Checked = false; - this.checkBoxChangeNo.CheckLineWidth = 3; - this.checkBoxChangeNo.Enabled = false; - this.checkBoxChangeNo.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Regular); - this.checkBoxChangeNo.ForeColor = System.Drawing.Color.Silver; - this.checkBoxChangeNo.ImageCheckBox = null; - this.checkBoxChangeNo.ImageUnCheckBox = null; - this.checkBoxChangeNo.InitVisible = true; - this.checkBoxChangeNo.Location = new System.Drawing.Point(16, 35); - this.checkBoxChangeNo.Name = "checkBoxChangeNo"; - this.checkBoxChangeNo.Size = new System.Drawing.Size(135, 14); - this.checkBoxChangeNo.TabIndex = 0; - this.checkBoxChangeNo.Text = "품번번경"; - this.checkBoxChangeNo.TextVAlign = SmartX.SmartCheckBox.TextVerAlign.Middle; - // // ControlCenterEquipUser // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -1532,7 +790,6 @@ this.Name = "ControlCenterEquipUser"; this.Size = new System.Drawing.Size(710, 470); this.smartGroupBox1.ResumeLayout(false); - this.groupBoxAccessRight.ResumeLayout(false); this.ResumeLayout(false); } @@ -1549,37 +806,7 @@ private SmartX.SmartKeyboard smartKeyboard; private SmartX.SmartButton buttonPasswordEdit; public SmartX.SmartLabel labelTitleAccessRight; - public SmartX.SmartLabel labelAccessRight; - private SmartX.SmartGroupBox groupBoxAccessRight; - private SmartX.SmartCheckBox checkBoxChangeNo; - private SmartX.SmartCheckBox checkBoxCalibration; - private SmartX.SmartCheckBox checkBoxEthernet; - private SmartX.SmartCheckBox checkBoxSerial; - private SmartX.SmartCheckBox checkBoxDataStat; - private SmartX.SmartCheckBox checkBoxProduct; - private SmartX.SmartCheckBox checkBoxTime; - private SmartX.SmartCheckBox checkBoxSubMenu; - private SmartX.SmartCheckBox checkBoxClear; - private SmartX.SmartCheckBox checkBoxChangeWeight; - private SmartX.SmartCheckBox checkBoxLog; - private SmartX.SmartCheckBox checkBoxFeature; - private SmartX.SmartCheckBox checkBoxInitialization; - private SmartX.SmartCheckBox checkBoxUpdate; - private SmartX.SmartCheckBox checkBoxExternalOutput; - private SmartX.SmartCheckBox checkBoxIOTest; - private SmartX.SmartCheckBox checkBoxAutoZero; - private SmartX.SmartCheckBox checkBoxSorter; - private SmartX.SmartCheckBox checkBoxJudgment; - public SmartX.SmartLabel labelTitleMain; - public SmartX.SmartLabel labelTitleMenu; - private SmartX.SmartButton buttonLevel1; - private SmartX.SmartButton buttonLevel3; - private SmartX.SmartButton buttonLevel2; - private System.Windows.Forms.TextBox textBoxLevel2; - private System.Windows.Forms.TextBox textBoxLevel1; - private System.Windows.Forms.TextBox textBoxLevel3; private SmartX.SmartButton buttonDelete; - private SmartX.SmartButton buttonChangeLevelName; public SmartX.SmartLabel smartLabel11; public SmartX.SmartLabel labelAutomaticLogoutTime; public SmartX.SmartLabel labelTitleAutomaticLogoutTime; @@ -1595,6 +822,9 @@ private SmartX.SmartButton buttonNew; public SmartX.SmartLabel labelTitlePassword; public SmartX.SmartLabel labelAutoLogoutWarning; - private SmartX.SmartCheckBox checkBoxUser; + private System.Windows.Forms.ComboBox comboBoxAccessRight; + private SmartX.SmartSeparatorLine smartSeparatorLine2; + private SmartX.SmartSeparatorLine smartSeparatorLine1; + public SmartX.SmartLabel labelAccessRightAdmin; } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs index 1c2fa14..4980679 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.cs @@ -8,12 +8,12 @@ using System.Text; using System.Windows.Forms; using System.Threading; -using ITC81DB_0H.Forms; using ITC81DB_0H.Controls; using ITC81DB_0H.DialogForms; using ITC81DB_2H_ImageDll; using ITC81DB_2H.Datastore; using ITC81DB_0H.Part11_UserManager; +using ITC81DB_0H.Forms; namespace ITC81DB_0H.Controls { @@ -25,8 +25,11 @@ namespace ITC81DB_0H.Controls private bool IsNew; private object LockObject = new object(); private bool PasswordChar; - + private UserItem m_SelectedUserItem; + + private string BeforeID; + private string BeforePassword; #endregion #region Constructor @@ -72,31 +75,6 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "Auto Logout"; this.labelAutoLogoutWarning.Text = "* Applies to all ID"; this.labelTitleAccessRight.Text = "Access right"; - - this.labelTitleMain.Text = "Main"; - this.labelTitleMenu.Text = "Menu"; - - this.checkBoxChangeNo.Text = "Change No."; - this.checkBoxChangeWeight.Text = "Change Weight"; - this.checkBoxClear.Text = "Clear"; - this.checkBoxSubMenu.Text = "SubMenu"; - - this.checkBoxTime.Text = "Time setting"; - this.checkBoxProduct.Text = "Product settings"; - this.checkBoxDataStat.Text = "Data stats"; - this.checkBoxSerial.Text = "Serial port"; - this.checkBoxEthernet.Text = "Ethernet"; - this.checkBoxCalibration.Text = "Calibration"; - this.checkBoxJudgment.Text = "Judgment"; - this.checkBoxSorter.Text = "Sorter settings"; - this.checkBoxAutoZero.Text = "Auto zero"; - this.checkBoxIOTest.Text = "I/O test"; - this.checkBoxExternalOutput.Text = "External output"; - this.checkBoxUpdate.Text = "Update"; - this.checkBoxInitialization.Text = "Initialization"; - this.checkBoxFeature.Text = "Feature settings"; - this.checkBoxUser.Text = "User setting permission"; - this.checkBoxLog.Text = "Log"; } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) { @@ -109,31 +87,6 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "自动注销"; this.labelAutoLogoutWarning.Text = "* 适用于所有身份证"; this.labelTitleAccessRight.Text = "访问权"; - - this.labelTitleMain.Text = "主屏幕"; - this.labelTitleMenu.Text = "菜单"; - - this.checkBoxChangeNo.Text = "产品变化"; - this.checkBoxChangeWeight.Text = "体重设定"; - this.checkBoxClear.Text = "消除"; - this.checkBoxSubMenu.Text = "子菜单"; - - this.checkBoxTime.Text = "时间设定"; - this.checkBoxProduct.Text = "产品设置"; - this.checkBoxDataStat.Text = "数据统计"; - this.checkBoxSerial.Text = "串行端口"; - this.checkBoxEthernet.Text = "以太网"; - this.checkBoxCalibration.Text = "校准"; - this.checkBoxJudgment.Text = "判断设置"; - this.checkBoxSorter.Text = "筛选设定"; - this.checkBoxAutoZero.Text = "自动零点跟踪"; - this.checkBoxIOTest.Text = "I/O测试"; - this.checkBoxExternalOutput.Text = "外部输出"; - this.checkBoxUpdate.Text = "更新"; - this.checkBoxInitialization.Text = "工厂初期化"; - this.checkBoxFeature.Text = "功能设定"; - this.checkBoxUser.Text = "用户设置权限"; - this.checkBoxLog.Text = "日志"; } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Czech) { @@ -149,31 +102,6 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "Автоматический выход"; this.labelAutoLogoutWarning.Text = "* Все идентификаторы"; this.labelTitleAccessRight.Text = "Право доступа"; - - this.labelTitleMain.Text = "Зернистый"; - this.labelTitleMenu.Text = "Меню"; - - this.checkBoxChangeNo.Text = "Изменять товар"; - this.checkBoxChangeWeight.Text = "Настройки вектора"; - this.checkBoxClear.Text = "Сброс"; - this.checkBoxSubMenu.Text = "Подменю"; - - this.checkBoxTime.Text = "Настройки времени"; - this.checkBoxProduct.Text = "Настройки продукта"; - this.checkBoxDataStat.Text = "Статистика данных"; - this.checkBoxSerial.Text = "Послед. порт"; - this.checkBoxEthernet.Text = "Локальная сеть"; - this.checkBoxCalibration.Text = "Калибровка"; - this.checkBoxJudgment.Text = "Oтбраковки"; - this.checkBoxSorter.Text = "Cортировки"; - this.checkBoxAutoZero.Text = "Автоотслеживание нуля"; - this.checkBoxIOTest.Text = "Тест ввода/вывода"; - this.checkBoxExternalOutput.Text = "Внешний выход"; - this.checkBoxUpdate.Text = "Обновить"; - this.checkBoxInitialization.Text = "Инициализация"; - this.checkBoxFeature.Text = "Функция"; - this.checkBoxUser.Text = "Пользователь"; - this.checkBoxLog.Text = "Бревно"; } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) { @@ -186,31 +114,6 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "Automatische Abmeldung"; this.labelAutoLogoutWarning.Text = "* Gilt für alle ID"; this.labelTitleAccessRight.Text = "Zugangsberechtigung"; - - this.labelTitleMain.Text = "Hauptbildschirm"; - this.labelTitleMenu.Text = "Menü"; - - this.checkBoxChangeNo.Text = "Warenwechsel"; - this.checkBoxChangeWeight.Text = "Gewichts-Einstellungen"; - this.checkBoxClear.Text = "Löschen"; - this.checkBoxSubMenu.Text = "Untermenü"; - - this.checkBoxTime.Text = "Zeiteinstellung"; - this.checkBoxProduct.Text = "Produkt"; - this.checkBoxDataStat.Text = "Statistik"; - this.checkBoxSerial.Text = "Seriell"; - this.checkBoxEthernet.Text = "Ethernet"; - this.checkBoxCalibration.Text = "Kalibrierung"; - this.checkBoxJudgment.Text = "Beurteilung"; - this.checkBoxSorter.Text = "Sorter"; - this.checkBoxAutoZero.Text = "Automatische Nullung"; - this.checkBoxIOTest.Text = "I/O Test"; - this.checkBoxExternalOutput.Text = "Externer Ausgang"; - this.checkBoxUpdate.Text = "Aktualisierung"; - this.checkBoxInitialization.Text = "Werkseinstellung"; - this.checkBoxFeature.Text = "Besonderheit"; - this.checkBoxUser.Text = "Benutzer"; - this.checkBoxLog.Text = "Protokoll"; } else { @@ -223,38 +126,20 @@ namespace ITC81DB_0H.Controls this.labelTitleAutomaticLogoutTime.Text = "자동 로그아웃"; this.labelAutoLogoutWarning.Text = "* 모든 ID에 적용됨"; this.labelTitleAccessRight.Text = "접근 권한"; - - this.labelTitleMain.Text = "메인화면"; - this.labelTitleMenu.Text = "메뉴화면"; - - this.checkBoxChangeNo.Text = "품번변경"; - this.checkBoxChangeWeight.Text = "중량설정"; - this.checkBoxClear.Text = "소거"; - this.checkBoxSubMenu.Text = "서브메뉴"; - - this.checkBoxTime.Text = "시간설정"; - this.checkBoxProduct.Text = "품목설정"; - this.checkBoxDataStat.Text = "데이터집계"; - this.checkBoxSerial.Text = "시리얼통신"; - this.checkBoxEthernet.Text = "이더넷통신"; - this.checkBoxCalibration.Text = "중량조정"; - this.checkBoxJudgment.Text = "판정설정"; - this.checkBoxSorter.Text = "선별기설정"; - this.checkBoxAutoZero.Text = "자동영점"; - this.checkBoxIOTest.Text = "I/O테스트"; - this.checkBoxExternalOutput.Text = "외부출력"; - this.checkBoxUpdate.Text = "업데이트"; - this.checkBoxInitialization.Text = "공장초기화"; - this.checkBoxFeature.Text = "기능설정"; - this.checkBoxUser.Text = "유저설정권한"; - this.checkBoxLog.Text = "로그"; } } private void DefaultSetting() { this.IsNew = false; this.PasswordChar = false; - this.DisplayOnlyPart11Item(); + this.BeforeID = ""; + this.BeforePassword = ""; + this.DisplayOnlyPart11Item(this.ParentForm.ParentForm.SystemConfig3.IsPart11); + + this.UpdateAccessRightComboBox(); + this.comboBoxAccessRight.SelectedIndexChanged -= new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + this.comboBoxAccessRight.SelectedIndex = 0; + this.comboBoxAccessRight.SelectedIndexChanged += new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; this.smartKeyboard.Show(); @@ -284,9 +169,9 @@ namespace ITC81DB_0H.Controls } } - public void DisplayOnlyPart11Item() + public void DisplayOnlyPart11Item(bool bValue) { - if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) + if (bValue == true) { this.labelTitleExpiryDateOfAccount.Visible = true; this.labelExpiryDateOfAccount.Visible = true; @@ -301,6 +186,9 @@ namespace ITC81DB_0H.Controls this.smartLabel8.Visible = true; this.smartLabel11.Visible = true; this.labelAutoLogoutWarning.Visible = true; + + this.smartSeparatorLine1.Visible = true; + this.smartSeparatorLine2.Visible = true; } else { @@ -317,8 +205,18 @@ namespace ITC81DB_0H.Controls this.smartLabel8.Visible = false; this.smartLabel11.Visible = false; this.labelAutoLogoutWarning.Visible = false; + + this.smartSeparatorLine1.Visible = false; + this.smartSeparatorLine2.Visible = false; } } + public void UpdateAccessRightComboBox() + { + this.comboBoxAccessRight.Items.Clear(); + this.comboBoxAccessRight.Items.Add(this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name); + this.comboBoxAccessRight.Items.Add(this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name); + this.comboBoxAccessRight.Items.Add(this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name); + } private void SetTextBoxPasswordChar(bool bValue) { @@ -353,16 +251,7 @@ namespace ITC81DB_0H.Controls else this.textBoxPassword.BackColor = Color.Silver; } - private void SetEnableAccessRightButton(bool value) - { - this.buttonLevel1.Enabled = value; - this.buttonLevel2.Enabled = value; - this.buttonLevel3.Enabled = value; - this.buttonLevel1.ButtonUp(); - this.buttonLevel2.ButtonUp(); - this.buttonLevel3.ButtonUp(); - } private void SetEnableOnlyPart11Value(bool value) { this.labelExpiryDateOfAccount.Enabled = value; @@ -383,15 +272,10 @@ namespace ITC81DB_0H.Controls { this.listBoxUserList.Enabled = value; - this.buttonLevel1.Enabled = value; - this.buttonLevel2.Enabled = value; - this.buttonLevel3.Enabled = value; - this.buttonNew.Enabled = value; this.buttonDelete.Enabled = value; this.buttonSave.Enabled = value; - this.buttonChangeLevelName.Enabled = value; this.buttonGroupEditor.Enabled = value; this.SetEnableOnlyPart11Value(value); @@ -522,33 +406,6 @@ namespace ITC81DB_0H.Controls return; } - - if (this.labelAccessRight.Text == "") - { - // 필수 설정 항목을 설정해 주십시오 - DialogFormMessage msg = new DialogFormMessage(null, 16, this.ParentForm.ParentForm.SystemConfig1.Language); - msg.ShowDialog(); - - return; - } - - if (this.labelExpiryDateOfAccount.Text == "000") - { - // 필수 설정 항목을 설정해 주십시오 - DialogFormMessage msg = new DialogFormMessage(null, 16, this.ParentForm.ParentForm.SystemConfig1.Language); - msg.ShowDialog(); - - return; - } - - if (this.labelExpiryDateOfPassword.Text == "00") - { - // 필수 설정 항목을 설정해 주십시오 - DialogFormMessage msg = new DialogFormMessage(null, 16, this.ParentForm.ParentForm.SystemConfig1.Language); - msg.ShowDialog(); - - return; - } #endregion item.ID = this.textBoxID.Text; @@ -556,17 +413,15 @@ namespace ITC81DB_0H.Controls item.ExpireAccount = int.Parse(this.labelExpiryDateOfAccount.Text); item.ExpirePassword = int.Parse(this.labelExpiryDateOfPassword.Text); - if (this.buttonLevel1.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - item.ActiveLevel = 1; - else if (this.buttonLevel2.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - item.ActiveLevel = 2; - else if (this.buttonLevel3.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - item.ActiveLevel = 3; - else if (this.SelectedUserItem.Group == Define.E_UserGroup.Admin) + if (this.SelectedUserItem.Group == Define.E_UserGroup.Admin) { - if(this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) item.ActiveLevel = 9; } + else + { + item.ActiveLevel = this.comboBoxAccessRight.SelectedIndex + 1; + } menuId.fMenu = new bool[UserManager.USER_MENU_ID_MAX]; for (int i = 0; i < UserManager.USER_MENU_ID_MAX; i++) @@ -611,14 +466,8 @@ namespace ITC81DB_0H.Controls this.buttonSave.Visible = false; } - } - - public void UpdateLevelNameDisplay(SystemConfigurationItem2 system) - { - this.buttonLevel1.Text = this.textBoxLevel1.Text = system.UserGroupLevel1Name; - this.buttonLevel2.Text = this.textBoxLevel2.Text = system.UserGroupLevel2Name; - this.buttonLevel3.Text = this.textBoxLevel3.Text = system.UserGroupLevel3Name; - } + } + private void UpdateInitializeUserDisplay(SystemConfigurationItem2 system) { this.SelectedUserItem = new UserItem(); @@ -629,43 +478,22 @@ namespace ITC81DB_0H.Controls this.textBoxPassword.Text = ""; this.labelExpiryDateOfAccount.Text = "180"; this.labelExpiryDateOfPassword.Text = "90"; - this.labelExpiryDateOfAccount2.Text = "yyyy.mm.DD"; - this.labelExpiryDateOfPassword2.Text = "yyyy.mm.DD"; - this.labelAccessRight.Text = ""; + this.labelExpiryDateOfAccount2.Text = "-"; + this.labelExpiryDateOfPassword2.Text = "-"; this.labelExpiryDateOfAccount2.ForeColor = Color.White; this.labelExpiryDateOfPassword2.ForeColor = Color.White; - this.checkBoxChangeNo.Checked = false; - this.checkBoxChangeWeight.Checked = false; - this.checkBoxClear.Checked = false; - this.checkBoxSubMenu.Checked = false; - - this.checkBoxTime.Checked = false; - this.checkBoxProduct.Checked = false; - this.checkBoxDataStat.Checked = false; - this.checkBoxSerial.Checked = false; - this.checkBoxEthernet.Checked = false; - this.checkBoxCalibration.Checked = false; - this.checkBoxJudgment.Checked = false; - this.checkBoxSorter.Checked = false; - this.checkBoxAutoZero.Checked = false; - this.checkBoxIOTest.Checked = false; - this.checkBoxExternalOutput.Checked = false; - this.checkBoxUpdate.Checked = false; - this.checkBoxInitialization.Checked = false; - this.checkBoxFeature.Checked = false; - this.checkBoxUser.Checked = false; - this.checkBoxLog.Checked = false; + this.comboBoxAccessRight.SelectedIndexChanged -= new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + this.comboBoxAccessRight.SelectedIndex = 0; + this.comboBoxAccessRight.SelectedIndexChanged += new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); this.KeyboardClose(); this.SetEnableID(true); - this.SetEnableAccessRightButton(true); this.SetTextBoxPasswordChar(this.PasswordChar); this.buttonDelete.Visible = false; this.buttonSave.Visible = false; - this.buttonChangeLevelName.Visible = false; this.listBoxUserList.SelectedIndexChanged -= new EventHandler(this.listBoxUserList_SelectedIndexChanged); this.listBoxUserList.SelectItemIndex = -1; @@ -785,8 +613,7 @@ namespace ITC81DB_0H.Controls this.labelExpiryDateOfPassword2.ForeColor = Color.White; this.buttonDelete.Visible = false; - - this.SetEnableAccessRightButton(false); + this.comboBoxAccessRight.Visible = false; this.SetEnableOnlyPart11Value(false); if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.Admin @@ -797,17 +624,9 @@ namespace ITC81DB_0H.Controls } else { + #region 만료일 this.labelExpiryDateOfAccount.Text = item.ExpireAccount.ToString(); this.labelExpiryDateOfPassword.Text = item.ExpirePassword.ToString(); - this.SetEnableOnlyPart11Value(true); - - if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel < item.ActiveLevel) - { - this.buttonDelete.Visible = false; - this.SetEnableAccessRightButton(false); - this.SetEnableOnlyPart11Value(false); - this.SetEnablePassword(false); - } if (item.IsLockAccount == true) { @@ -874,9 +693,28 @@ namespace ITC81DB_0H.Controls this.labelExpiryDateOfPassword2.ForeColor = Color.White; this.labelExpiryDateOfPassword2.Text = string.Format("{0:yy/MM/dd} ~ {1:yy/MM/dd}", item.DateRegister, item.DateExpireRegister); } - } + #endregion - this.CheckBoxCheckedAsLevel(item.Group); + this.comboBoxAccessRight.Visible = true; + this.comboBoxAccessRight.BringToFront(); + this.comboBoxAccessRight.SelectedIndexChanged -= new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + this.comboBoxAccessRight.SelectedIndex = item.ActiveLevel - 1; + this.comboBoxAccessRight.SelectedIndexChanged += new EventHandler(this.comboBoxAccessRight_SelectedIndexChanged); + + if (this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.ActiveLevel < item.ActiveLevel) + { + this.buttonDelete.Visible = false; + this.comboBoxAccessRight.Enabled = false; + this.SetEnableOnlyPart11Value(false); + + this.SetEnablePassword(false); + } + else + { + this.SetEnableOnlyPart11Value(true); + this.comboBoxAccessRight.Enabled = true; + } + } //this.cbAdministrator.Visible = true; //this.cbAdministrator.Checked = item.IsAdmin; @@ -888,181 +726,6 @@ namespace ITC81DB_0H.Controls this.listBoxUserList.AddItem(items[i]); } - private void CheckBoxCheckedAsLevel(Define.E_UserGroup level) - { - switch (level) - { - case Define.E_UserGroup.Level1: - this.buttonLevel1.ButtonDown(); - this.buttonLevel2.ButtonUp(); - this.buttonLevel3.ButtonUp(); - - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name; - - this.checkBoxChangeNo.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMainDisplayProductNo; - this.checkBoxChangeWeight.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMainDisplayWeightSetting; - this.checkBoxClear.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMainDisplayClear; - this.checkBoxSubMenu.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsMainDisplaySubMenu; - - this.checkBoxTime.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsBasicTime; - this.checkBoxProduct.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsBasicProduct; - this.checkBoxDataStat.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsBasicDataStatistics; - this.checkBoxSerial.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsConfiSerial; - this.checkBoxEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsConfiEthernet; - this.checkBoxCalibration.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemCalibration; - this.checkBoxJudgment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemJudgmentSetting; - this.checkBoxSorter.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemSorterSetting; - this.checkBoxAutoZero.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemAutoZero; - this.checkBoxIOTest.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemIOTest; - this.checkBoxExternalOutput.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsSystemExternalOutput; - this.checkBoxUpdate.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsEquipUpdate; - this.checkBoxInitialization.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsEquipInitialize; - this.checkBoxFeature.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsEquipFunctionSetting; - this.checkBoxUser.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsEquipUserSetting; - this.checkBoxLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level1.IsLogEnable; - break; - case Define.E_UserGroup.Level2: - this.buttonLevel1.ButtonUp(); - this.buttonLevel2.ButtonDown(); - this.buttonLevel3.ButtonUp(); - - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name; - - this.checkBoxChangeNo.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMainDisplayProductNo; - this.checkBoxChangeWeight.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMainDisplayWeightSetting; - this.checkBoxClear.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMainDisplayClear; - this.checkBoxSubMenu.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsMainDisplaySubMenu; - - this.checkBoxTime.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsBasicTime; - this.checkBoxProduct.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsBasicProduct; - this.checkBoxDataStat.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsBasicDataStatistics; - this.checkBoxSerial.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsConfiSerial; - this.checkBoxEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsConfiEthernet; - this.checkBoxCalibration.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemCalibration; - this.checkBoxJudgment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemJudgmentSetting; - this.checkBoxSorter.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemSorterSetting; - this.checkBoxAutoZero.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemAutoZero; - this.checkBoxIOTest.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemIOTest; - this.checkBoxExternalOutput.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsSystemExternalOutput; - this.checkBoxUpdate.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsEquipUpdate; - this.checkBoxInitialization.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsEquipInitialize; - this.checkBoxFeature.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsEquipFunctionSetting; - this.checkBoxUser.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsEquipUserSetting; - this.checkBoxLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level2.IsLogEnable; - break; - case Define.E_UserGroup.Level3: - this.buttonLevel1.ButtonUp(); - this.buttonLevel2.ButtonUp(); - this.buttonLevel3.ButtonDown(); - - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name; - - this.checkBoxChangeNo.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMainDisplayProductNo; - this.checkBoxChangeWeight.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMainDisplayWeightSetting; - this.checkBoxClear.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMainDisplayClear; - this.checkBoxSubMenu.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsMainDisplaySubMenu; - - this.checkBoxTime.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsBasicTime; - this.checkBoxProduct.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsBasicProduct; - this.checkBoxDataStat.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsBasicDataStatistics; - this.checkBoxSerial.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsConfiSerial; - this.checkBoxEthernet.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsConfiEthernet; - this.checkBoxCalibration.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemCalibration; - this.checkBoxJudgment.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemJudgmentSetting; - this.checkBoxSorter.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemSorterSetting; - this.checkBoxAutoZero.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemAutoZero; - this.checkBoxIOTest.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemIOTest; - this.checkBoxExternalOutput.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsSystemExternalOutput; - this.checkBoxUpdate.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsEquipUpdate; - this.checkBoxInitialization.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsEquipInitialize; - this.checkBoxFeature.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsEquipFunctionSetting; - this.checkBoxUser.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsEquipUserSetting; - this.checkBoxLog.Checked = this.ParentForm.ParentForm.CurrentUserGroup.Level3.IsLogEnable; - break; - case Define.E_UserGroup.Admin: - this.SetEnableAccessRightButton(false); - - this.labelAccessRight.Text = "Administrator"; - - this.checkBoxChangeNo.Checked = true; - this.checkBoxChangeWeight.Checked = true; - this.checkBoxClear.Checked = true; - this.checkBoxSubMenu.Checked = true; - - this.checkBoxTime.Checked = true; - this.checkBoxProduct.Checked = true; - this.checkBoxDataStat.Checked = true; - this.checkBoxSerial.Checked = true; - this.checkBoxEthernet.Checked = true; - this.checkBoxCalibration.Checked = true; - this.checkBoxJudgment.Checked = true; - this.checkBoxSorter.Checked = true; - this.checkBoxAutoZero.Checked = true; - this.checkBoxIOTest.Checked = true; - this.checkBoxExternalOutput.Checked = true; - this.checkBoxUpdate.Checked = true; - this.checkBoxInitialization.Checked = true; - this.checkBoxFeature.Checked = true; - this.checkBoxUser.Checked = true; - this.checkBoxLog.Checked = true; - break; - case Define.E_UserGroup.Developer: - this.SetEnableAccessRightButton(false); - - this.labelAccessRight.Text = "Developer"; - - this.checkBoxChangeNo.Checked = true; - this.checkBoxChangeWeight.Checked = true; - this.checkBoxClear.Checked = true; - this.checkBoxSubMenu.Checked = true; - - this.checkBoxTime.Checked = true; - this.checkBoxProduct.Checked = true; - this.checkBoxDataStat.Checked = true; - this.checkBoxSerial.Checked = true; - this.checkBoxEthernet.Checked = true; - this.checkBoxCalibration.Checked = true; - this.checkBoxJudgment.Checked = true; - this.checkBoxSorter.Checked = true; - this.checkBoxAutoZero.Checked = true; - this.checkBoxIOTest.Checked = true; - this.checkBoxExternalOutput.Checked = true; - this.checkBoxUpdate.Checked = true; - this.checkBoxInitialization.Checked = true; - this.checkBoxFeature.Checked = true; - this.checkBoxUser.Checked = true; - this.checkBoxLog.Checked = true; - break; - default: - this.SetEnableAccessRightButton(false); - - this.labelAccessRight.Text = ""; - - this.checkBoxChangeNo.Checked = false; - this.checkBoxChangeWeight.Checked = false; - this.checkBoxClear.Checked = false; - this.checkBoxSubMenu.Checked = false; - - this.checkBoxTime.Checked = false; - this.checkBoxProduct.Checked = false; - this.checkBoxDataStat.Checked = false; - this.checkBoxSerial.Checked = false; - this.checkBoxEthernet.Checked = false; - this.checkBoxCalibration.Checked = false; - this.checkBoxJudgment.Checked = false; - this.checkBoxSorter.Checked = false; - this.checkBoxAutoZero.Checked = false; - this.checkBoxIOTest.Checked = false; - this.checkBoxExternalOutput.Checked = false; - this.checkBoxUpdate.Checked = false; - this.checkBoxInitialization.Checked = false; - this.checkBoxFeature.Checked = false; - this.checkBoxUser.Checked = false; - this.checkBoxLog.Checked = false; - break; - } - } - public void CallBackGetUserData(UserManager.UserMgr_user_list_t user) { this.UpdateCurrentUserItem(user); @@ -1126,7 +789,6 @@ namespace ITC81DB_0H.Controls this.SetEnableID(false); this.SetEnablePassword(false); this.SetEnableOnlyPart11Value(false); - this.buttonLevel1.Enabled = this.buttonLevel2.Enabled = this.buttonLevel3.Enabled = false; this.labelAutomaticLogoutTime.Enabled = false; DialogFormMessage dlg = new DialogFormMessage(Define.E_MessageBoxIcon.Asterisk, code, message1, message2, 0); @@ -1355,7 +1017,6 @@ namespace ITC81DB_0H.Controls this.labelAutomaticLogoutTime.Enabled = true; this.UpdateUserListBoxDisplay(this.ParentForm.ParentForm.ListDllUserName); - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); this.UpdateInitializeUserDisplay(this.ParentForm.ParentForm.SystemConfig2); } #endregion @@ -1366,7 +1027,6 @@ namespace ITC81DB_0H.Controls int index = this.listBoxUserList.SelectItemIndex; this.IsNew = false; - this.SetEnableAccessRightButton(true); this.SetEnablePassword(true); this.SetTextBoxPasswordChar(this.PasswordChar); this.labelAutomaticLogoutTime.Enabled = true; @@ -1374,8 +1034,6 @@ namespace ITC81DB_0H.Controls if (index == 0) { UserManager.UserManager_GetUserListID(this.listBoxUserList.Items[index]); - - this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Admin); } else if (index < 0) { @@ -1423,7 +1081,7 @@ namespace ITC81DB_0H.Controls { e.Handled = true; - this.textBoxID.Text = this.SelectedUserItem.ID; + this.textBoxID.Text = this.BeforeID; this.KeyboardClose(); } else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' @@ -1456,7 +1114,7 @@ namespace ITC81DB_0H.Controls this.SetTextBoxPasswordChar(this.PasswordChar); if (this.IsNew == true) this.SetEnableID(true); - this.textBoxPassword.Text = this.SelectedUserItem.Password; + this.textBoxPassword.Text = this.BeforePassword; this.KeyboardClose(); } else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' @@ -1465,33 +1123,20 @@ namespace ITC81DB_0H.Controls e.Handled = true; } } + private void smartKeyboard_OnXKeyClick(object sender, EventArgs e) { if (this.smartKeyboard.TargetInputObject == this.textBoxPassword) { - this.textBoxPassword.Text = this.SelectedUserItem.Password; + this.textBoxPassword.Text = this.BeforePassword; if (this.PasswordChar == false) this.SetTextBoxPasswordChar(this.PasswordChar); + this.textBoxPassword.Select(this.textBoxPassword.Text.Length, 0); } - else if (this.smartKeyboard.TargetInputObject == this.textBoxLevel1 - || this.smartKeyboard.TargetInputObject == this.textBoxLevel2 - || this.smartKeyboard.TargetInputObject == this.textBoxLevel3) + else if (this.smartKeyboard.TargetInputObject == this.textBoxID) { - if (this.buttonLevel1.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel1.Visible = false; - } - else if (this.buttonLevel2.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel2.Visible = false; - } - else if (this.buttonLevel3.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel3.Visible = false; - } - - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); - this.buttonChangeLevelName.Visible = true; + this.textBoxID.Text = this.BeforeID; + this.textBoxID.Select(this.textBoxID.Text.Length, 0); } this.KeyboardClose(); @@ -1499,130 +1144,9 @@ namespace ITC81DB_0H.Controls if (this.IsNew == true) this.SetEnableID(true); } - - private void textBoxLevel1_KeyPress(object sender, KeyPressEventArgs e) + + private void comboBoxAccessRight_SelectedIndexChanged(object sender, EventArgs e) { - if (e.KeyChar == '\r') - { - e.Handled = true; - this.KeyboardClose(); - - this.textBoxLevel1.Visible = false; - - if (this.textBoxLevel1.Text == "" - || this.textBoxLevel1.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name - || this.textBoxLevel1.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name) - { - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); - this.buttonChangeLevelName.Visible = true; - } - else - { - this.buttonLevel1.Text = this.textBoxLevel1.Text; - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name = this.buttonLevel1.Text; - this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); - - this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - } - } - else if (e.KeyChar == 27) - { - e.Handled = true; - - this.textBoxLevel1.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name; - this.KeyboardClose(); - } - else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' - || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') - { - e.Handled = true; - } - } - private void textBoxLevel2_KeyPress(object sender, KeyPressEventArgs e) - { - if (e.KeyChar == '\r') - { - e.Handled = true; - this.KeyboardClose(); - - this.textBoxLevel2.Visible = false; - - if (this.textBoxLevel2.Text == "" - || this.textBoxLevel2.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name - || this.textBoxLevel2.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name) - { - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); - this.buttonChangeLevelName.Visible = true; - } - else - { - this.buttonLevel2.Text = this.textBoxLevel2.Text; - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name = this.buttonLevel2.Text; - this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); - - this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - } - } - else if (e.KeyChar == 27) - { - e.Handled = true; - - this.textBoxLevel2.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name; - this.KeyboardClose(); - } - else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' - || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') - { - e.Handled = true; - } - } - private void textBoxLevel3_KeyPress(object sender, KeyPressEventArgs e) - { - if (e.KeyChar == '\r') - { - e.Handled = true; - this.KeyboardClose(); - - this.textBoxLevel3.Visible = false; - - if (this.textBoxLevel3.Text == "" - || this.textBoxLevel3.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name - || this.textBoxLevel3.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name) - { - this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); - this.buttonChangeLevelName.Visible = true; - } - else - { - this.buttonLevel3.Text = this.textBoxLevel3.Text; - this.labelAccessRight.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name = this.buttonLevel3.Text; - this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); - - this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); - } - } - else if (e.KeyChar == 27) - { - e.Handled = true; - - this.textBoxLevel3.Text = this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name; - this.KeyboardClose(); - } - else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' - || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') - { - e.Handled = true; - } - } - - private void buttonPassword_Click(object sender, EventArgs e) - { - this.SetTextBoxPasswordChar(true); - this.textBoxPassword.Text = "user1004!"; - if (this.buttonSave.Visible == false) this.buttonSave.Visible = true; } @@ -1665,6 +1189,8 @@ namespace ITC81DB_0H.Controls this.smartKeyboard.Size = new Size(704, 276); this.smartKeyboard.Hide(); + this.BeforeID = this.textBoxID.Text; + this.smartKeyboard.TargetInputObject = this.textBoxID; this.smartKeyboard.Show(); @@ -1681,6 +1207,8 @@ namespace ITC81DB_0H.Controls this.smartKeyboard.Size = new Size(704, 276); this.smartKeyboard.Hide(); + this.BeforePassword = this.textBoxPassword.Text; + this.smartKeyboard.TargetInputObject = this.textBoxPassword; this.smartKeyboard.Show(); @@ -1792,7 +1320,7 @@ namespace ITC81DB_0H.Controls UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, true, false); // Part 11 - detail = string.Format("Extension of ID expiry date : {0}", this.SelectedUserItem.ID); + detail = string.Format("Extend EXP date(ID) : {0}", this.SelectedUserItem.ID); this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail); } else @@ -1839,7 +1367,7 @@ namespace ITC81DB_0H.Controls UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, true, false); // Part 11 - detail = string.Format("ID Release : {0}", this.SelectedUserItem.ID); + detail = string.Format("Release ID : {0}", this.SelectedUserItem.ID); this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail); } } @@ -1857,7 +1385,7 @@ namespace ITC81DB_0H.Controls UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, false, true); // Part 11 - detail = string.Format("Extension of PW expiry date : {0}", this.SelectedUserItem.ID); + detail = string.Format("Extend EXP date(PW) : {0}", this.SelectedUserItem.ID); this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail); } else @@ -1904,7 +1432,7 @@ namespace ITC81DB_0H.Controls UserManager.UserManager_UserLockRelease(this.SelectedUserItem.ID, false, true); // Part 11 - detail = string.Format("PW Release : {0}", this.SelectedUserItem.ID); + detail = string.Format("Release PW: {0}", this.SelectedUserItem.ID); this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.UserEditor, detail); } } @@ -1916,68 +1444,6 @@ namespace ITC81DB_0H.Controls this.ParentForm.CenterEquipUserGroupEditor.BringToFront(); this.ParentForm.CenterEquipUserGroupEditor.DisplayRefresh(this.ParentForm.ParentForm.CurrentSystemStatus); } - - private void buttonLevel_Click(object sender, EventArgs e) - { - SmartX.SmartButton button = sender as SmartX.SmartButton; - - if (button == this.buttonLevel1) - { - this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Level1); - } - else if (button == this.buttonLevel2) - { - this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Level2); - } - else if (button == this.buttonLevel3) - { - this.CheckBoxCheckedAsLevel(Define.E_UserGroup.Level3); - } - - this.buttonChangeLevelName.Visible = true; - - if (this.buttonSave.Visible == false) - this.buttonSave.Visible = true; - } - private void buttonChangeLevelName_Click(object sender, EventArgs e) - { - this.SetEnableID(false); - this.SetEnablePassword(false); - this.SetEnableControl(false); - - if(this.buttonSave.Visible == true) - this.buttonSave.Visible = false; - - this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; - this.smartKeyboard.Location = new Point(3, 137); - this.smartKeyboard.Size = new Size(704, 276); - this.smartKeyboard.Hide(); - - if (this.buttonLevel1.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel1.Visible = true; - this.textBoxLevel1.BringToFront(); - this.smartKeyboard.TargetInputObject = this.textBoxLevel1; - this.textBoxLevel1.Select(this.textBoxLevel1.Text.Length, 0); - } - else if (this.buttonLevel2.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel2.Visible = true; - this.textBoxLevel2.BringToFront(); - this.smartKeyboard.TargetInputObject = this.textBoxLevel2; - this.textBoxLevel2.Select(this.textBoxLevel2.Text.Length, 0); - } - else if (this.buttonLevel3.ButtonStatus == SmartX.SmartButton.BUTSTATUS.DOWN) - { - this.textBoxLevel3.Visible = true; - this.textBoxLevel3.BringToFront(); - this.smartKeyboard.TargetInputObject = this.textBoxLevel3; - this.textBoxLevel3.Select(this.textBoxLevel3.Text.Length, 0); - } - - this.smartKeyboard.Show(); - this.buttonChangeLevelName.Visible = false; - } #endregion } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.resx b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.resx index 8da3f05..04e0040 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.resx +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUser.resx @@ -165,40 +165,34 @@ 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 - SUVORK5CYII= + 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 + RK5CYII= @@ -248,50 +242,39 @@ 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 - SUVORK5CYII= + 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 @@ -341,43 +324,43 @@ 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 - eo2GJkxMTPAf+yfKnQHgovQAAAAASUVORK5CYII= + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAACDVJREFUaEPVmulTVOkV + xu/fIQg6laTmQ2pSSSzLGTNlMjUalb3ZEZFVQBAEBHHDIuA4ioKAIEKzr7JLA6LIvjWyKGuDDpsM0iC4 + /gFPzrkZjNJ3ZHrqqvDhV13vOfe853n6vffcpgrByMgIq9nyxRfYqXCAXWQsjuTVIETVhdDbPZ+FEFUn + fHOqYRNxCV+b28B4y1YdvYyOEb7YN6sKcZ0aZAzMIFczj9xxLbLHF5A1pv2kcE/uzRrSB6ZxpUMD7/Ry + bN9r/p5m5q0R4y1bYBp4ii4ehXLwCVJH5xE78DMu9D9BVN8MInuJnk8I9fsPwb1ZQxxpSSNNysEZHK/p + xl6fYBgZG+saMSET8epxpI8+RcyDWUTcn0a4egrHOycR3DEhEvSJWenLGljLuZ5pXH44C+XInKh1j1fg + +0a+trDDpbYRpAzPid9AuHoSIZ0/0Wbrh2CCNbG2aNJ4fehnen7U2LbH9H9GjLdupYepBgn9U4iiowzt + pG+j/SccW6ewtjDSGE1a43sn4aUshzHdYsJOayecbxnCRboPw+gIg9qoYJ3DGk+Q1pj+WUQ1DWL7fksI + NpFxiOl+jDN0ZEHtjxHYtjFgrRHdU7jU9QgW4echHM68hYv3pxBGD1VgK120gThBmn/snoRrUgGEo6XN + iCJnQZQIaHm0oQimk4kmIz65tRACKtpxjoxw4ugGg08lUj0B34K7dCLlbYjomkRAMyU3GKz5HE0wn/w7 + EPzLWnGWFv5N4/LSOIa4nkk80i7j5evX4udVWnNc8vrfwdHmcZyl94t3Xh0Ev5IWnKaFHzWQjQYNYmkS + vn7zBm/egdcc57xknZ74N43hLE2vwzm3IRwpbsZpesn4NVBSJnzvjqB3eh6v6SRWw3HOS9XpC5/uWXrg + vXLoYfe92YRT9II5cm9MNrxrBzClfSZpZGphScxL1ekLmzlDD7xndg0En6IGnKSFb71GNjxV/ZhekDbC + cc5L1enLkXsanG59BI8sFQTvwnuiEZ/6UdnwVPXRiSzi1atXOnCc81J1+uJ7bxSnWsfhnllFb/b8eoST + Ee+7o7LhUUVG5n/FCMU5L1WnL2zmZAsZSScjXnl3EU4vF+87I7LhcasXk/MLePnypQ4c57xUnb740NA4 + 2TwGN+UtCB65d3CCZvLh28Oy4V7Rg4k5LV68eKEDxzkvVacv3nXDCG/U4FBaJQT3nDqENY7Dq3ZYNtzK + P2yE81J1+sJmTtA7ySW1AoJbVi1CaYx51gz9NqoHEdWsgXpiDo/nFn4FLZaWl/H8+XMdOM556boFcV/e + n/tI9n8Hr9ohhNHkOphSBsE1swbHaSZ7VA+tjWoQV9o0WF7WFSgnvD/34X6SOn6BzYTRGHa+XgrhUEY1 + QmjhTkVr4VrRj6HpOWq0/NHhPtxPSscKHnRqoTS5DiSXQHBRqhBMo8ytamBNXErvQ7v4DEtLSx8d7sP9 + pHSs4K4awHGaXE7XiiEcTKtCEC1cbz1ckwM3OzE4+USysdxwH+4npWMFt6qHCLkzDMfEmxCcUysRVDeC + QxUP18T5ZjeiVF1YXFzEs2fPPhq8P/fhflI6VnCtfIhgmlwOCYUQnG5U4BgtXMofrIlzSQ/ss5oQSj80 + mwfHMTI5I83EDLQLC6Kg1XCc85J1BO8bWtwk9uF+UjpWOFTxAEE0uewS6G92x+vlCKTFwbL+tSntg1OR + GnbZTVDcuA2rZBUsk6p0sEisgGbqiaQRjnNeqo734315f+7D/SR1/IJLeT+O1QzC9mo+BIfkMgTQGHMu + 7f9tlPTRvdsDx0I1HPI7JLHNbBQFL9C3vxqOc16qjuF9eX/uI9n/HdhMIE0um7g8CPZJpThKiwMsUCbs + 89o/aITzUnX64kwnFlg9AOvYXAh210rgXzUIp5u9smGX04ZRut+1Wq0OHOe8VJ2+HCjuRQBNLsWVHAi2 + CcXwo5nsWES3i0zYZrfSAz2N+fl5HTjOeak6fXGiW/AojWFFDBmxiS+CLy3sC+/LhnVWyweNcF6qTl8c + iu7Dr/IBrC5lQbC+Wghfmsn2+ZSUCeuMFgw9nsLTp0914Djnper0xaGAjNAYtryYCUERVwAfWtjmdcuG + VXozGh5oJI1wnPNSdfpil98NX5pcFj9mQLCKzYc3LWxy1bJhldGK0KJmzK0ywWuOc16qTl9s89TwKeuD + +YV0CJZX8nC4pB/W2WrZUGR0wCzpDkJy66EeGsfM7Kz4yWuOc16qTl9scshISS/MflBCsLicS0b6oMjq + ko/MTlgqW2F6rQ57r1Rgz8US8ZPXHOe8ZJ2eWGd3wbu4B6bn0yCYRKfCk55+3txKTuhbt0xvg/mNJpin + NIifvOa45PW/A2sy40W/BPZGJEDYffIyPAroG6KEJTffQFhndcIjvx3fBUdD2OkRDNesBlhndsAivX1D + YUtGXDPrscP5CIQ//3MvHJMq6WdzF8zT2jcMFoQDabZPLMOXO3ZB2GxkhN0nY+GQ1iAmzVLbNgSWynY4 + pt3FdyEXYGi4mYxs3owvv/kX9v+QDoWyBaaprTC5sb5hjYrUJuw7r8Qft30D9iAaMTQ0xF/NnWCTUAlL + usg0hQqur09Ym1VKE2wTK/HVv61E7W//hYPNGBgY4m8KF9GlBc17Ltqf3IJ96wTWwiYsEmuxL1qJv5jY + kWYDUftbI/83Y4A/bf8Wu45FwexyIczjVfQSq4dJciP2JX0eTAgz0sBazGIK8a3/Ofzh7zveM/GekRUz + fFSbREP/wDZ7L+wKjML3p+Ox+0zCZ+H7U1exKyAS22zdxedh0yYDUeO7JoyMjPBfLBZ99hJvLW4AAAAA + SUVORK5CYII= @@ -427,39 +410,36 @@ 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 @@ -509,50 +489,40 @@ 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 @@ -602,50 +572,46 @@ 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 @@ -695,42 +661,28 @@ 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 - SUVORK5CYII= + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAABOJJREFUaEPdmtlLlG0Y + xt//I7fyTPFMBEUkCDpWMElcUNwQwt1Ky303t1zKPfc109Lcd1NLKvUgyANBQf+O++N3x/i5zMHAJ+nz + HVxzMPO+81zXXM993fczM5aLi4tchru7u8TFxUlfX5/s7u7K8fGxnJ6eysnJyV8Fax4dHcmPHz/k3bt3 + EhUVJXfv3r3CF1wRwsU7OztyeHgov379UiHfv3/X524CrA0HuMBpa2tLQkNDL3AGZ0JQ+urVK714b29P + b1hZWZHFxUWZm5uT2dnZGwFrw2F1dVW2t7dlf39fORYWFoqrq+tVIZWVlfL792/59u2bLC0tyczMjExO + TsrHjx9lYmJCxsfHbwSsDQe4wGl5eVk5HhwcSG5u7kUh0dHRKgIX+BQ+ffqkb/Lhw4dbBTjBDZfgCudH + jx79EXLv3j21DCCCT2BsbOzWAkFwhOvXr191+7u5uYkVGxsrP3/+lIWFBbXQ3s23DYiBK7VDPVP8Vnt7 + u2xsbOge5KL3798bAbhOTU3J5uamvH79WixUAfbf6OioUWCLEUzUjUVtkAaoHBkZMQpwplZIMouCwSJe + GB4eNgpw/vz5sxa8RYxhzdDQkHFADLXN9rK+fPmiCTA4OGgcEIMJ1LhFYlHo/f39xmFgYEALntbx/xGy + vr6umdzb22scOGZgAiOLtba2pjHW09NjHBBDl1chjMc0l+7ubuOAGHYTvUSFkMddXV3GATG2pmjRFcnj + zs5O48DxFxOmp6f/CCGPOzo6jANiMEGF0EyIsba2NuPA5I4JjFgqhExubW11GMnJyeLj4yMeHh7i6el5 + bfDy8pL79+9Ldna23XUvAzF0eBVCMyGPW1paHEJaWpp4e3tLUFCQxMTESEJCwrUhPj5eIiMjJSQkRIqL + i+2ufx6IYTcxb1nz8/MaY2/fvnUIDx8+VBH2iFwX+IBevHhhd/3zaG5uVhP0PEJ0EWNNTU0O4cGDB9fu + xGU8efJEysrK7K5/Hm/evFETGHpVCJnc2NjoEB4/fiyJiYl2CVwX2FaQtLf+eSAGE1QI0UWM1dfXO4SC + ggJJTU1VXLegpKQkKSkpOatZe+ufR0NDg5rAvKVCyGQO8I6iqqpKE4O0u3xG+C+wHV8d5YMYmqIKIbog + VVtbaxzq6upUNIOjCiHGampqjANiaIoMjhbRxX5ku5iG6upqNYHtqELIY76JNw2IQQjHEIujIlFXUVFh + HPgFARMICYuKJ5NpQKahvLxcTWBwtKh4Yoz8Ng2lpaVqAtFtUfEIoZuaBsTQFBkcLSqePOanLNNQVFSk + JtCYLQqFTM7PzzcOjEuYwEhzJiQvL884IIamqEIYg8ljfljMyckxCojBBEYsi1GYDskLHGZMApxt44r1 + 8uVLtYcnOSubBHYRU3BmZqZYgYGBmsXY9Pz5c2OQlZWlnGmIHL8t/j3A1iLKuODp06dGAK70Ebq7s7Oz + WDygiH3GvuMirLrNgKOtJAICAv4V4uTkJOHh4dryUZqRkSHp6em3EnCDI7NWcHCwcj/7C4dNTEREhLZ+ + LuQmvsOync9vGnCBk21L8d3XnTt3lPuZEJsYXsAq7CMRnj17pjfzRikpKTcC1sYFuMAJQb6+vhdEXBBi + E4MzXOTv768OcaMt7kiKvwnbmogJCwsTPz8/5QbH8yJcXFzkHy+tNzQzINeKAAAAAElFTkSuQmCC @@ -780,49 +732,30 @@ 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 @@ -872,312 +805,36 @@ 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 - SUVORK5CYII= - - - - - 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 - KacAAAAASUVORK5CYII= - - - - - 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 - NBeN7Ndd9m8AAAAASUVORK5CYII= - - - - - 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 + aHkAAAAASUVORK5CYII= diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.Designer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.Designer.cs index 8d376b5..1d68027 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.Designer.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.Designer.cs @@ -30,6 +30,14 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterEquipUserGroupEditor)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.smartKeyboard = new SmartX.SmartKeyboard(); + this.buttonEditLevel3 = new SmartX.SmartButton(); + this.buttonEditLevel2 = new SmartX.SmartButton(); + this.buttonEditLevel1 = new SmartX.SmartButton(); + this.textBoxLevel2 = new System.Windows.Forms.TextBox(); + this.textBoxLevel1 = new System.Windows.Forms.TextBox(); + this.textBoxLevel3 = new System.Windows.Forms.TextBox(); + this.labelTitleChangeName = new SmartX.SmartLabel(); this.checkBoxL3Log = new SmartX.SmartCheckBox(); this.checkBoxNotLoginLog = new SmartX.SmartCheckBox(); this.checkBoxL2Log = new SmartX.SmartCheckBox(); @@ -158,6 +166,14 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.Black; this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.smartKeyboard); + this.smartGroupBox1.Controls.Add(this.buttonEditLevel3); + this.smartGroupBox1.Controls.Add(this.buttonEditLevel2); + this.smartGroupBox1.Controls.Add(this.buttonEditLevel1); + this.smartGroupBox1.Controls.Add(this.textBoxLevel2); + this.smartGroupBox1.Controls.Add(this.textBoxLevel1); + this.smartGroupBox1.Controls.Add(this.textBoxLevel3); + this.smartGroupBox1.Controls.Add(this.labelTitleChangeName); this.smartGroupBox1.Controls.Add(this.checkBoxL3Log); this.smartGroupBox1.Controls.Add(this.checkBoxNotLoginLog); this.smartGroupBox1.Controls.Add(this.checkBoxL2Log); @@ -292,6 +308,199 @@ this.smartGroupBox1.Text = "smartGroupBox1"; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // smartKeyboard + // + this.smartKeyboard.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(198)))), ((int)(((byte)(195)))), ((int)(((byte)(198))))); + this.smartKeyboard.ControlKeyDisable = true; + this.smartKeyboard.DesignMinimize = true; + this.smartKeyboard.FontColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); + this.smartKeyboard.HanYoungKeyDisable = true; + this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; + this.smartKeyboard.KeyFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(51)))), ((int)(((byte)(51))))); + this.smartKeyboard.KeyOutLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(157)))), ((int)(((byte)(157)))), ((int)(((byte)(157))))); + this.smartKeyboard.KeyOutLineWidth = 1; + this.smartKeyboard.KeyPressImage1 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyPressImage1"))); + this.smartKeyboard.KeyPressImage2 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyPressImage2"))); + this.smartKeyboard.KeyPressImage3 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyPressImage3"))); + this.smartKeyboard.KeyUpImage1 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage1"))); + this.smartKeyboard.KeyUpImage2 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage2"))); + this.smartKeyboard.KeyUpImage3 = ((System.Drawing.Image)(resources.GetObject("smartKeyboard.KeyUpImage3"))); + this.smartKeyboard.LeftMargin = 5; + this.smartKeyboard.Location = new System.Drawing.Point(12, 3); + this.smartKeyboard.Name = "smartKeyboard"; + this.smartKeyboard.PressFontColor = System.Drawing.Color.FromArgb(((int)(((byte)(37)))), ((int)(((byte)(37)))), ((int)(((byte)(37))))); + this.smartKeyboard.PressKeyFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(146)))), ((int)(((byte)(146)))), ((int)(((byte)(146))))); + this.smartKeyboard.PressKeyOutLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(41)))), ((int)(((byte)(41))))); + this.smartKeyboard.RoundedCorners = true; + this.smartKeyboard.SetBackimage = null; + this.smartKeyboard.Size = new System.Drawing.Size(16, 11); + this.smartKeyboard.TabIndex = 730; + this.smartKeyboard.TABKeyDisable = false; + this.smartKeyboard.TargetInputObject = null; + this.smartKeyboard.Text = "smartKeyboard1"; + this.smartKeyboard.ThemeStyle = SmartX.SmartKeyboard.KEYBOARDTHEMESTYLE.STANDARD8; + this.smartKeyboard.TopMargin = 110; + this.smartKeyboard.OnXKeyClick += new System.EventHandler(this.smartKeyboard_OnXKeyClick); + // + // buttonEditLevel3 + // + this.buttonEditLevel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel3.BackPictureBox = null; + this.buttonEditLevel3.BackPictureBox1 = null; + this.buttonEditLevel3.BackPictureBox2 = null; + this.buttonEditLevel3.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel3.ButtonImageAutoSize = true; + this.buttonEditLevel3.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonEditLevel3.DisableImage = null; + this.buttonEditLevel3.DownImage = null; + this.buttonEditLevel3.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.buttonEditLevel3.GroupID = 0; + this.buttonEditLevel3.InitVisible = true; + this.buttonEditLevel3.Location = new System.Drawing.Point(302, 436); + this.buttonEditLevel3.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonEditLevel3.Name = "buttonEditLevel3"; + this.buttonEditLevel3.NestedClickEventPrevent = false; + this.buttonEditLevel3.OutlinePixel = 1; + this.buttonEditLevel3.RepeatInterval = 200; + this.buttonEditLevel3.RepeatIntervalAccelerate = null; + this.buttonEditLevel3.SafeInterval = 200; + this.buttonEditLevel3.Size = new System.Drawing.Size(50, 23); + this.buttonEditLevel3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonEditLevel3.TabIndex = 728; + this.buttonEditLevel3.Text = "Edit"; + this.buttonEditLevel3.TextColor = System.Drawing.Color.White; + this.buttonEditLevel3.TextDownColor = System.Drawing.Color.MidnightBlue; + this.buttonEditLevel3.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonEditLevel3.TextLocation = new System.Drawing.Point(0, 0); + this.buttonEditLevel3.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonEditLevel3.UpImage = null; + this.buttonEditLevel3.Click += new System.EventHandler(this.buttonEdit_Click); + // + // buttonEditLevel2 + // + this.buttonEditLevel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel2.BackPictureBox = null; + this.buttonEditLevel2.BackPictureBox1 = null; + this.buttonEditLevel2.BackPictureBox2 = null; + this.buttonEditLevel2.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel2.ButtonImageAutoSize = true; + this.buttonEditLevel2.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonEditLevel2.DisableImage = null; + this.buttonEditLevel2.DownImage = null; + this.buttonEditLevel2.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.buttonEditLevel2.GroupID = 0; + this.buttonEditLevel2.InitVisible = true; + this.buttonEditLevel2.Location = new System.Drawing.Point(302, 411); + this.buttonEditLevel2.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonEditLevel2.Name = "buttonEditLevel2"; + this.buttonEditLevel2.NestedClickEventPrevent = false; + this.buttonEditLevel2.OutlinePixel = 1; + this.buttonEditLevel2.RepeatInterval = 200; + this.buttonEditLevel2.RepeatIntervalAccelerate = null; + this.buttonEditLevel2.SafeInterval = 200; + this.buttonEditLevel2.Size = new System.Drawing.Size(50, 23); + this.buttonEditLevel2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonEditLevel2.TabIndex = 727; + this.buttonEditLevel2.Text = "Edit"; + this.buttonEditLevel2.TextColor = System.Drawing.Color.White; + this.buttonEditLevel2.TextDownColor = System.Drawing.Color.MidnightBlue; + this.buttonEditLevel2.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonEditLevel2.TextLocation = new System.Drawing.Point(0, 0); + this.buttonEditLevel2.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonEditLevel2.UpImage = null; + this.buttonEditLevel2.Click += new System.EventHandler(this.buttonEdit_Click); + // + // buttonEditLevel1 + // + this.buttonEditLevel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel1.BackPictureBox = null; + this.buttonEditLevel1.BackPictureBox1 = null; + this.buttonEditLevel1.BackPictureBox2 = null; + this.buttonEditLevel1.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.buttonEditLevel1.ButtonImageAutoSize = true; + this.buttonEditLevel1.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonEditLevel1.DisableImage = null; + this.buttonEditLevel1.DownImage = null; + this.buttonEditLevel1.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.buttonEditLevel1.GroupID = 0; + this.buttonEditLevel1.InitVisible = true; + this.buttonEditLevel1.Location = new System.Drawing.Point(302, 386); + this.buttonEditLevel1.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonEditLevel1.Name = "buttonEditLevel1"; + this.buttonEditLevel1.NestedClickEventPrevent = false; + this.buttonEditLevel1.OutlinePixel = 1; + this.buttonEditLevel1.RepeatInterval = 200; + this.buttonEditLevel1.RepeatIntervalAccelerate = null; + this.buttonEditLevel1.SafeInterval = 200; + this.buttonEditLevel1.Size = new System.Drawing.Size(50, 23); + this.buttonEditLevel1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonEditLevel1.TabIndex = 726; + this.buttonEditLevel1.Text = "Edit"; + this.buttonEditLevel1.TextColor = System.Drawing.Color.White; + this.buttonEditLevel1.TextDownColor = System.Drawing.Color.MidnightBlue; + this.buttonEditLevel1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonEditLevel1.TextLocation = new System.Drawing.Point(0, 0); + this.buttonEditLevel1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonEditLevel1.UpImage = null; + this.buttonEditLevel1.Click += new System.EventHandler(this.buttonEdit_Click); + // + // textBoxLevel2 + // + this.textBoxLevel2.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); + this.textBoxLevel2.Location = new System.Drawing.Point(125, 411); + this.textBoxLevel2.MaxLength = 15; + this.textBoxLevel2.Name = "textBoxLevel2"; + this.textBoxLevel2.Size = new System.Drawing.Size(171, 23); + this.textBoxLevel2.TabIndex = 725; + this.textBoxLevel2.Text = "Level2"; + this.textBoxLevel2.GotFocus += new System.EventHandler(this.textBoxLevel2_GotFocus); + this.textBoxLevel2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel2_KeyPress); + // + // textBoxLevel1 + // + this.textBoxLevel1.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); + this.textBoxLevel1.Location = new System.Drawing.Point(125, 386); + this.textBoxLevel1.MaxLength = 15; + this.textBoxLevel1.Name = "textBoxLevel1"; + this.textBoxLevel1.Size = new System.Drawing.Size(171, 23); + this.textBoxLevel1.TabIndex = 723; + this.textBoxLevel1.Text = "Level1"; + this.textBoxLevel1.GotFocus += new System.EventHandler(this.textBoxLevel1_GotFocus); + this.textBoxLevel1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel1_KeyPress); + // + // textBoxLevel3 + // + this.textBoxLevel3.Font = new System.Drawing.Font("Arial", 11F, System.Drawing.FontStyle.Regular); + this.textBoxLevel3.Location = new System.Drawing.Point(125, 436); + this.textBoxLevel3.MaxLength = 15; + this.textBoxLevel3.Name = "textBoxLevel3"; + this.textBoxLevel3.Size = new System.Drawing.Size(171, 23); + this.textBoxLevel3.TabIndex = 724; + this.textBoxLevel3.Text = "Level3"; + this.textBoxLevel3.GotFocus += new System.EventHandler(this.textBoxLevel3_GotFocus); + this.textBoxLevel3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBoxLevel3_KeyPress); + // + // labelTitleChangeName + // + this.labelTitleChangeName.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.labelTitleChangeName.BackPictureBox = null; + this.labelTitleChangeName.BackPictureBox1 = null; + this.labelTitleChangeName.BackPictureBox2 = null; + this.labelTitleChangeName.BorderColor = System.Drawing.Color.Wheat; + this.labelTitleChangeName.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleChangeName.Font = new System.Drawing.Font("Arial", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleChangeName.ForeColor = System.Drawing.Color.White; + this.labelTitleChangeName.InitVisible = true; + this.labelTitleChangeName.LineSpacing = 0F; + this.labelTitleChangeName.Location = new System.Drawing.Point(12, 386); + this.labelTitleChangeName.Name = "labelTitleChangeName"; + this.labelTitleChangeName.Size = new System.Drawing.Size(107, 73); + this.labelTitleChangeName.TabIndex = 729; + this.labelTitleChangeName.Text = "레벨명변경"; + this.labelTitleChangeName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleChangeName.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleChangeName.Wordwrap = true; + // // checkBoxL3Log // this.checkBoxL3Log.BackPictureBox = null; @@ -462,7 +671,7 @@ this.checkBoxL3EquipmentEngineer.ImageCheckBox = null; this.checkBoxL3EquipmentEngineer.ImageUnCheckBox = null; this.checkBoxL3EquipmentEngineer.InitVisible = true; - this.checkBoxL3EquipmentEngineer.Location = new System.Drawing.Point(292, 441); + this.checkBoxL3EquipmentEngineer.Location = new System.Drawing.Point(636, 356); this.checkBoxL3EquipmentEngineer.Name = "checkBoxL3EquipmentEngineer"; this.checkBoxL3EquipmentEngineer.Size = new System.Drawing.Size(20, 20); this.checkBoxL3EquipmentEngineer.TabIndex = 694; @@ -886,7 +1095,7 @@ this.checkBoxNotLoginEquipmentEngineer.ImageCheckBox = null; this.checkBoxNotLoginEquipmentEngineer.ImageUnCheckBox = null; this.checkBoxNotLoginEquipmentEngineer.InitVisible = true; - this.checkBoxNotLoginEquipmentEngineer.Location = new System.Drawing.Point(321, 441); + this.checkBoxNotLoginEquipmentEngineer.Location = new System.Drawing.Point(665, 356); this.checkBoxNotLoginEquipmentEngineer.Name = "checkBoxNotLoginEquipmentEngineer"; this.checkBoxNotLoginEquipmentEngineer.Size = new System.Drawing.Size(20, 20); this.checkBoxNotLoginEquipmentEngineer.TabIndex = 664; @@ -905,7 +1114,7 @@ this.labelTitleEngineer.ForeColor = System.Drawing.Color.White; this.labelTitleEngineer.InitVisible = true; this.labelTitleEngineer.LineSpacing = 0F; - this.labelTitleEngineer.Location = new System.Drawing.Point(12, 441); + this.labelTitleEngineer.Location = new System.Drawing.Point(356, 356); this.labelTitleEngineer.Name = "labelTitleEngineer"; this.labelTitleEngineer.Size = new System.Drawing.Size(219, 20); this.labelTitleEngineer.TabIndex = 663; @@ -930,7 +1139,7 @@ this.checkBoxL2EquipmentEngineer.ImageCheckBox = null; this.checkBoxL2EquipmentEngineer.ImageUnCheckBox = null; this.checkBoxL2EquipmentEngineer.InitVisible = true; - this.checkBoxL2EquipmentEngineer.Location = new System.Drawing.Point(265, 441); + this.checkBoxL2EquipmentEngineer.Location = new System.Drawing.Point(609, 356); this.checkBoxL2EquipmentEngineer.Name = "checkBoxL2EquipmentEngineer"; this.checkBoxL2EquipmentEngineer.Size = new System.Drawing.Size(20, 20); this.checkBoxL2EquipmentEngineer.TabIndex = 662; @@ -953,7 +1162,7 @@ this.checkBoxL1EquipmentEngineer.ImageCheckBox = null; this.checkBoxL1EquipmentEngineer.ImageUnCheckBox = null; this.checkBoxL1EquipmentEngineer.InitVisible = true; - this.checkBoxL1EquipmentEngineer.Location = new System.Drawing.Point(237, 441); + this.checkBoxL1EquipmentEngineer.Location = new System.Drawing.Point(581, 356); this.checkBoxL1EquipmentEngineer.Name = "checkBoxL1EquipmentEngineer"; this.checkBoxL1EquipmentEngineer.Size = new System.Drawing.Size(20, 20); this.checkBoxL1EquipmentEngineer.TabIndex = 661; @@ -2952,5 +3161,13 @@ private SmartX.SmartCheckBox checkBoxL2Log; private SmartX.SmartCheckBox checkBoxL1Log; private SmartX.SmartLabel labelTitleLog; + private SmartX.SmartButton buttonEditLevel3; + private SmartX.SmartButton buttonEditLevel2; + private SmartX.SmartButton buttonEditLevel1; + private System.Windows.Forms.TextBox textBoxLevel2; + private System.Windows.Forms.TextBox textBoxLevel1; + private System.Windows.Forms.TextBox textBoxLevel3; + private SmartX.SmartLabel labelTitleChangeName; + private SmartX.SmartKeyboard smartKeyboard; } } diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.cs index 1545ce7..19c9a07 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.cs +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.cs @@ -11,6 +11,7 @@ using ITC81DB_0H.Forms; using ITC81DB_0H.DialogForms; using ITC81DB_2H_ImageDll; using ITC81DB_2H.Datastore; +using SmartX; namespace ITC81DB_0H.Controls { @@ -18,6 +19,10 @@ namespace ITC81DB_0H.Controls { #region Field private FormMenu m_ParentForm; + + private string BeforeTextBox1; + private string BeforeTextBox2; + private string BeforeTextBox3; #endregion #region Constructor @@ -79,6 +84,7 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "Engineer settings"; this.labelTitleLog.Text = "Log"; + this.labelTitleChangeName.Text = "Change Lv Name"; #endregion } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) @@ -115,6 +121,7 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "工程师设置"; this.labelTitleLog.Text = "日志"; + this.labelTitleChangeName.Text = "更改级别名称"; #endregion } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Czech) @@ -154,6 +161,7 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "Инженерные настройки"; this.labelTitleLog.Text = "Системный журнал"; + this.labelTitleChangeName.Text = "Изменить имя уровня"; #endregion } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) @@ -190,6 +198,7 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "Ingenieur-Einstellungen"; this.labelTitleLog.Text = "Systemprotokoll"; + this.labelTitleChangeName.Text = "Ebenennamen ändern"; #endregion } else @@ -226,11 +235,15 @@ namespace ITC81DB_0H.Controls this.labelTitleEngineer.Text = "엔지니어설정"; this.labelTitleLog.Text = "로그"; + this.labelTitleChangeName.Text = "레벨명변경"; #endregion } } private void DefaultSetting() { + this.BeforeTextBox1 = ""; + this.BeforeTextBox2 = ""; + this.BeforeTextBox3 = ""; } private void UpdateDisplay(UserGroup group) @@ -407,6 +420,13 @@ namespace ITC81DB_0H.Controls this.ParentForm.BottomLog.UpdateMenuDisplay(status); } + public void UpdateLevelNameDisplay(SystemConfigurationItem2 system) + { + this.textBoxLevel1.Text = system.UserGroupLevel1Name; + this.textBoxLevel2.Text = system.UserGroupLevel2Name; + this.textBoxLevel3.Text = system.UserGroupLevel3Name; + } + public void DisplayRefresh(SystemStatus status) { if(this.ParentForm.ParentForm.CurrentSystemStatus.CurrentUser.Group == Define.E_UserGroup.Developer) @@ -414,6 +434,7 @@ namespace ITC81DB_0H.Controls else this.UpdateNotLoginVisible(false); this.UpdateDisplay(this.ParentForm.ParentForm.CurrentUserGroup); + this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); } #endregion @@ -424,6 +445,182 @@ namespace ITC81DB_0H.Controls this.buttonSave.Visible = true; } + + private void textBoxLevel1_GotFocus(object sender, EventArgs e) + { + this.smartKeyboard.TargetInputObject = this.textBoxLevel1; + this.textBoxLevel1.Select(this.textBoxLevel1.Text.Length, 0); + } + private void textBoxLevel2_GotFocus(object sender, EventArgs e) + { + this.smartKeyboard.TargetInputObject = this.textBoxLevel2; + this.textBoxLevel2.Select(this.textBoxLevel2.Text.Length, 0); + } + private void textBoxLevel3_GotFocus(object sender, EventArgs e) + { + this.smartKeyboard.TargetInputObject = this.textBoxLevel3; + this.textBoxLevel3.Select(this.textBoxLevel3.Text.Length, 0); + } + + private void buttonEdit_Click(object sender, EventArgs e) + { + SmartButton button = sender as SmartButton; + + this.smartKeyboard.KeyboardType = SmartX.SmartKeyboard.KEYBOARDTYPES.NORMAL; + this.smartKeyboard.Location = new Point(8, 0); + this.smartKeyboard.Size = new Size(695, 377); + this.smartKeyboard.KeyFillColor = Color.Black; + this.smartKeyboard.BackColor = Color.FromArgb(30, 30, 30); + + if (button == this.buttonEditLevel1) + { + this.BeforeTextBox1 = this.textBoxLevel1.Text; + this.smartKeyboard.TargetInputObject = this.textBoxLevel1; + this.textBoxLevel1.Select(this.textBoxLevel1.Text.Length, 0); + } + else if (button == this.buttonEditLevel2) + { + this.BeforeTextBox2 = this.textBoxLevel2.Text; + this.smartKeyboard.TargetInputObject = this.textBoxLevel2; + this.textBoxLevel2.Select(this.textBoxLevel2.Text.Length, 0); + } + else if (button == this.buttonEditLevel3) + { + this.BeforeTextBox3 = this.textBoxLevel3.Text; + this.smartKeyboard.TargetInputObject = this.textBoxLevel3; + this.textBoxLevel3.Select(this.textBoxLevel3.Text.Length, 0); + } + + this.smartKeyboard.Show(); + } + + private void textBoxLevel1_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + e.Handled = true; + this.smartKeyboard.Hide(); + + if (this.textBoxLevel1.Text == "" + || this.textBoxLevel1.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name + || this.textBoxLevel1.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name) + { + this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); + } + else + { + this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name = this.textBoxLevel1.Text; + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + + this.ParentForm.ParentForm.ChildFormMenu.CenterEquipUser.UpdateAccessRightComboBox(); + this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + } + } + else if (e.KeyChar == 27) + { + e.Handled = true; + + this.textBoxLevel1.Text = this.BeforeTextBox1; + this.smartKeyboard.Hide(); + } + else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' + || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') + { + e.Handled = true; + } + } + private void textBoxLevel2_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + e.Handled = true; + this.smartKeyboard.Hide(); + + if (this.textBoxLevel2.Text == "" + || this.textBoxLevel2.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name + || this.textBoxLevel2.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name) + { + this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); + } + else + { + this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name = this.textBoxLevel2.Text; + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + + this.ParentForm.ParentForm.ChildFormMenu.CenterEquipUser.UpdateAccessRightComboBox(); + this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + } + } + else if (e.KeyChar == 27) + { + e.Handled = true; + + this.textBoxLevel2.Text = this.BeforeTextBox2; + this.smartKeyboard.Hide(); + } + else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' + || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') + { + e.Handled = true; + } + } + private void textBoxLevel3_KeyPress(object sender, KeyPressEventArgs e) + { + if (e.KeyChar == '\r') + { + e.Handled = true; + this.smartKeyboard.Hide(); + + if (this.textBoxLevel3.Text == "" + || this.textBoxLevel3.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel1Name + || this.textBoxLevel3.Text == this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel2Name) + { + this.UpdateLevelNameDisplay(this.ParentForm.ParentForm.SystemConfig2); + } + else + { + this.ParentForm.ParentForm.SystemConfig2.UserGroupLevel3Name = this.textBoxLevel3.Text; + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + + this.ParentForm.ParentForm.ChildFormMenu.CenterEquipUser.UpdateAccessRightComboBox(); + this.ParentForm.ParentForm.ChildFormMainDisplay.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + this.ParentForm.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.ParentForm.CurrentSystemStatus); + } + } + else if (e.KeyChar == 27) + { + e.Handled = true; + + this.textBoxLevel3.Text = this.BeforeTextBox3; + this.smartKeyboard.Hide(); + } + else if (e.KeyChar == '<' || e.KeyChar == '>' || e.KeyChar == '|' || e.KeyChar == '"' || e.KeyChar == '?' + || e.KeyChar == '*' || e.KeyChar == ':' || e.KeyChar == '/' || e.KeyChar == '\\') + { + e.Handled = true; + } + } + + private void smartKeyboard_OnXKeyClick(object sender, EventArgs e) + { + if (this.smartKeyboard.TargetInputObject == this.textBoxLevel1) + { + this.textBoxLevel1.Text = this.BeforeTextBox1; + } + else if (this.smartKeyboard.TargetInputObject == this.textBoxLevel2) + { + this.textBoxLevel2.Text = this.BeforeTextBox2; + } + else if (this.smartKeyboard.TargetInputObject == this.textBoxLevel3) + { + this.textBoxLevel3.Text = this.BeforeTextBox3; + } + + this.smartKeyboard.Hide(); + } + private void buttonSave_Click(object sender, EventArgs e) { #region Level1 diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.resx b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.resx index 8ccd266..2d82866 100644 --- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.resx +++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipUserGroupEditor.resx @@ -118,6 +118,420 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + 6nc2xOg6Bq4AAAAASUVORK5CYII= + + + + + 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 + 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/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAABPlJREFUeF7t2UkvbFsY + xnFfQN+Uvi19T+m7KkX0QogIMWFCCGIkrkQIMyYGxEATEQOJb6BvDkEIX+AkZ2J+v8B777OSXaWoe+6Z + KLXkGfxSp2ST/drnX2vtzUf+9hEi0suHcMvKyiQ7O1vMZrMkJCRIXFycxMbGSkxMjDZwvvHx8er8k5KS + JDk5WVJSUiQ1NdUB7/F1zJmYmKjVrNHR0Q7GrL+bV+dZ3/vO19a4ppGRkRIeHi6hoaESFRUllZWVLo2C + S7iFhYWSmZkpGRkZ6heA4fHLMYb3VsZ/XOOCAs4ZcP64gL9jzOjtcxr+a17M8X/zfpdZjXndzfiWTvMa + c+JDBgEjWpPJJP7+/lJeXu4+XIvF4og2PT1d8vPzpbi42KGoqEgdQ0SfB4tnQUGB5Obmqg4RckhIiAQE + BMjg4KBruHZ7rWO7gYMrKiqkvr5e6urqxGazSXV1tVRVVRGRB2BrXFpaquJFuNg2BwYGSnBwsGxsbDjD + ReU4ICcnR0Xa2toq7e3t0tTU5IjXarWSF8K1ec/dceT9ampqHLA1RrjY7mPbjGj9/Pxcw0WwWHFROVba + trY2aWlpkdraWvUJgBUYD63Iu+DiuuPuWNILbk3xkBi3r+jTuI1dX193hltUZJG0tDT1DYgV8eITAO/f + 7r2J6POhNzxjysrKUqsuFlR8IGMBdVlxESjCLSkpUcs0tltYafFQyt0PJqLPZYSbl5en7nmxoNrtdtnc + 3HSGi5qxVUaoCBbxom4s1+5+KBF9LiNcvOK5E541NTY2yvb2tmu4+JstQkXdOJDhEn0dhkukIYZLpCGG + S6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGG + S6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGGS6QhhkukIYZLpCGG + S6QhhkukIYZLpCGGS6ShPw7XbDYzXCIv8Yfhlqlw8Q0ItqqqiuESfSEEm5mZKXl5eapHhNvQ0CBbW1vO + cCsqyiUpKUkKCgrU6osD8cpwib4GgkW4CBg9Itrm5mbZ2dlxhoulOC4uTrKzs1WspaWlisViUTETkWcg + VECL6enp6t82m01aWlqks7NT9vb2nOHa7XYxmUySmJgoqampqnR8I/bYRORZ6A/RokXEjNW2q6tL+vr6 + 5ODgwBluR0eHBAUFSUREhMTGxqqA8ZQZcO9LRJ6BW1bjFeHiYXF3d7cMDQ3J6OiobGxsOMOdnf1L/Pz8 + VLxhYWGSkJCg9tjvl3Ei+lzGVhm3rFarVXp7e2ViYuLfRmdlbm7ONVxA2b6+vhIaGqrubZuamtSeGrUT + kef09PRIf3+/DA8Pq2BXVlZkdXVVDg8PVasu4f74canuc7FM49HzwMCAjIyMyPj4uExOThKRh0xNTcn0 + 9LQsLS3J2tqa+tvt/v6+PDw8fAwXfv36qWJF9WNjYzIzMyPz8/OysLBARB6yuLgoy8vLsr6+Lru7u3J6 + euoSLbiEC6+vr/L09CSXl5cOFxcXcn5+rpydnXk1nCPO9/r6Wm5vb+X+/l4eHx/l+flZXl5eHPAec+IX + cnd3Jzc3N3J1deUyqw7z4nxx7oB5MQ/mejvvd5kV5/jdr+3JyYkcHx/L0dGResUM8L7TD+ESkbfzkX8A + aDYV804BSLEAAAAASUVORK5CYII= + + + + + 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 + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAAA7NJREFUaEPtm0kvZGEU + hm3M8zzPhJjnGBfmeWZhShAWBDGEIIZE0MQsodHSId3KtLLwA/yyt70nubhdtejlR39JPdetiu/me845 + 99bmLTvg9fWf8Ho0f2CxWPDy8iJ/Ly8vcXp6iqOjI+zv72Nvb08Zdnd3sbOzI2xtbWFtbQ1zc3MYGxvD + 6uqq8Lfb6/H9DQWfn5/x9PSE+/t7XF1d4ezsDMfHxzg8PMTBwYFSGA2g+ObmJpaWljA6OoqWlhZkZGRg + amrKtixFHx8fRfL6+lo6yqqxYsvLy1hcXMTCwoKSzM/PY3Z2FuPj4+jt7UVZWRni4uIQHBwsXTfJUvT8 + /BwXFxc4OTnB9va2VGliYgLDw8Po7+9HX1+f0vT09KCzsxPV1dVIS0tDVFQU/P39RdgYaZF9eLjH+vo6 + NjY2pIuTk5MYGBiQxY2NjaitrUVNTY2SUM6AHc3Ly0NiYiLCw8Ph6+sLDw8Psyw7OzMzg+npaYyMjEiV + mpqaUF5ejpKSEhQVFaGgoEB5cnNzpavx8fEICQmBt7c33N3d8e3bprmzQ0NDGBwcRHd3t3SztLRULpCT + kyNkZ2crDfeYmZmJlJSUt/vVy8sLbm5u1mNMya6uLrS2tqKqqko6ypGwdWFVMWRjY2PfZF1dXbGysvIu + e3dnkfuTcHwrKipkdDkWti6qKv8ke3t7g/b2dnR0dMgI81790rJtbW0i/OVlLRYtq2VVRstqWS2rZZVF + y2pZLatllUXLalktq2WVRctqWS2rZZVFy2pZLatllUXLalktq2WVRcv+97KMBH01WU9PT2vZm5vfkuRk + dxsaGiQW91llk5OTERMTg6CgIJF1cXGRiOKb7K9f16ivr0dzczPq6uok3VZYWPjpZBm7TUpKQnR0NAIC + AiS3aCX78+elCDLsyBEuLi5Gfn6+ROSysrI+Bewqc4sJCQmIiIiAn5+fRPmcnZ3Nst+/nyA1NVWqw4Ws + UHp6uiwmPFcZ7pH7ZxqVI2yENNlVR0dHc3bxx48Lyecy4MhEJ6tjwAuojLFP7pvjGxoaKl1lGtXJyQkO + Dg4Sp3+TZVAzMDBQKsJ/DgsLk7xuZGSkwEKoCvfHseWe+VAyMsYcX4ra29ubZQkfTj4+PgIXsDpMYvNG + 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 + 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 + 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 + rkJggg== + + iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH diff --git a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.Designer.cs b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.Designer.cs index 61b666f..57b297b 100644 --- a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.Designer.cs +++ b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.Designer.cs @@ -30,6 +30,10 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterInforSystem)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.labelTitleDllAes128 = new SmartX.SmartLabel(); + this.labelTitleDllUserMgr = new SmartX.SmartLabel(); + this.labelAes128Ver = new SmartX.SmartLabel(); + this.labelUserMgrVer = new SmartX.SmartLabel(); this.buttonNext = new SmartX.SmartButton(); this.smartLabel1 = new SmartX.SmartLabel(); this.smartLabel3 = new SmartX.SmartLabel(); @@ -55,6 +59,10 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(46)))), ((int)(((byte)(46))))); this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.labelTitleDllAes128); + this.smartGroupBox1.Controls.Add(this.labelTitleDllUserMgr); + this.smartGroupBox1.Controls.Add(this.labelAes128Ver); + this.smartGroupBox1.Controls.Add(this.labelUserMgrVer); this.smartGroupBox1.Controls.Add(this.buttonNext); this.smartGroupBox1.Controls.Add(this.smartLabel1); this.smartGroupBox1.Controls.Add(this.smartLabel3); @@ -85,6 +93,94 @@ this.smartGroupBox1.TabIndex = 176; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // labelTitleDllAes128 + // + this.labelTitleDllAes128.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleDllAes128.BackPictureBox = null; + this.labelTitleDllAes128.BackPictureBox1 = null; + this.labelTitleDllAes128.BackPictureBox2 = null; + this.labelTitleDllAes128.BorderColor = System.Drawing.Color.Black; + this.labelTitleDllAes128.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDllAes128.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelTitleDllAes128.ForeColor = System.Drawing.Color.White; + this.labelTitleDllAes128.InitVisible = true; + this.labelTitleDllAes128.LineSpacing = 0F; + this.labelTitleDllAes128.Location = new System.Drawing.Point(385, 327); + this.labelTitleDllAes128.Name = "labelTitleDllAes128"; + this.labelTitleDllAes128.Size = new System.Drawing.Size(150, 33); + this.labelTitleDllAes128.TabIndex = 200; + this.labelTitleDllAes128.Text = "DllAes128 Ver."; + this.labelTitleDllAes128.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleDllAes128.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDllAes128.Visible = false; + this.labelTitleDllAes128.Wordwrap = false; + // + // labelTitleDllUserMgr + // + this.labelTitleDllUserMgr.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelTitleDllUserMgr.BackPictureBox = null; + this.labelTitleDllUserMgr.BackPictureBox1 = null; + this.labelTitleDllUserMgr.BackPictureBox2 = null; + this.labelTitleDllUserMgr.BorderColor = System.Drawing.Color.Black; + this.labelTitleDllUserMgr.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDllUserMgr.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelTitleDllUserMgr.ForeColor = System.Drawing.Color.White; + this.labelTitleDllUserMgr.InitVisible = true; + this.labelTitleDllUserMgr.LineSpacing = 0F; + this.labelTitleDllUserMgr.Location = new System.Drawing.Point(61, 327); + this.labelTitleDllUserMgr.Name = "labelTitleDllUserMgr"; + this.labelTitleDllUserMgr.Size = new System.Drawing.Size(150, 33); + this.labelTitleDllUserMgr.TabIndex = 199; + this.labelTitleDllUserMgr.Text = "DllUserMgr Ver."; + this.labelTitleDllUserMgr.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleDllUserMgr.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDllUserMgr.Visible = false; + this.labelTitleDllUserMgr.Wordwrap = false; + // + // labelAes128Ver + // + this.labelAes128Ver.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelAes128Ver.BackPictureBox = null; + this.labelAes128Ver.BackPictureBox1 = null; + this.labelAes128Ver.BackPictureBox2 = null; + this.labelAes128Ver.BorderColor = System.Drawing.Color.Black; + this.labelAes128Ver.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelAes128Ver.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelAes128Ver.ForeColor = System.Drawing.Color.White; + this.labelAes128Ver.InitVisible = true; + this.labelAes128Ver.LineSpacing = 0F; + this.labelAes128Ver.Location = new System.Drawing.Point(541, 327); + this.labelAes128Ver.Name = "labelAes128Ver"; + this.labelAes128Ver.Size = new System.Drawing.Size(139, 33); + this.labelAes128Ver.TabIndex = 198; + this.labelAes128Ver.Text = "1.0"; + this.labelAes128Ver.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelAes128Ver.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelAes128Ver.Visible = false; + this.labelAes128Ver.Wordwrap = false; + // + // labelUserMgrVer + // + this.labelUserMgrVer.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30))))); + this.labelUserMgrVer.BackPictureBox = null; + this.labelUserMgrVer.BackPictureBox1 = null; + this.labelUserMgrVer.BackPictureBox2 = null; + this.labelUserMgrVer.BorderColor = System.Drawing.Color.Black; + this.labelUserMgrVer.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelUserMgrVer.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); + this.labelUserMgrVer.ForeColor = System.Drawing.Color.White; + this.labelUserMgrVer.InitVisible = true; + this.labelUserMgrVer.LineSpacing = 0F; + this.labelUserMgrVer.Location = new System.Drawing.Point(216, 327); + this.labelUserMgrVer.Name = "labelUserMgrVer"; + this.labelUserMgrVer.Size = new System.Drawing.Size(163, 33); + this.labelUserMgrVer.TabIndex = 197; + this.labelUserMgrVer.Text = "1.0"; + this.labelUserMgrVer.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelUserMgrVer.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelUserMgrVer.Visible = false; + this.labelUserMgrVer.Wordwrap = false; + // // buttonNext // this.buttonNext.BackPictureBox = null; @@ -126,7 +222,7 @@ this.smartLabel1.BackPictureBox2 = null; this.smartLabel1.BorderColor = System.Drawing.Color.Black; this.smartLabel1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel1.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel1.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel1.ForeColor = System.Drawing.Color.White; this.smartLabel1.InitVisible = true; this.smartLabel1.LineSpacing = 0F; @@ -147,7 +243,7 @@ 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("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel3.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel3.ForeColor = System.Drawing.Color.White; this.smartLabel3.InitVisible = true; this.smartLabel3.LineSpacing = 0F; @@ -168,7 +264,7 @@ 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("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel4.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel4.ForeColor = System.Drawing.Color.White; this.smartLabel4.InitVisible = true; this.smartLabel4.LineSpacing = 0F; @@ -255,7 +351,7 @@ this.labelSerialNo.BackPictureBox2 = null; this.labelSerialNo.BorderColor = System.Drawing.Color.Black; this.labelSerialNo.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelSerialNo.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelSerialNo.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.labelSerialNo.ForeColor = System.Drawing.Color.White; this.labelSerialNo.InitVisible = true; this.labelSerialNo.LineSpacing = 0F; @@ -263,7 +359,7 @@ this.labelSerialNo.Name = "labelSerialNo"; this.labelSerialNo.Size = new System.Drawing.Size(139, 33); this.labelSerialNo.TabIndex = 61; - this.labelSerialNo.Text = "18G0000"; + this.labelSerialNo.Text = "23G0000"; this.labelSerialNo.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; this.labelSerialNo.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelSerialNo.Wordwrap = false; @@ -278,7 +374,7 @@ 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("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel2.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel2.ForeColor = System.Drawing.Color.White; this.smartLabel2.InitVisible = true; this.smartLabel2.LineSpacing = 0F; @@ -299,7 +395,7 @@ this.smartLabel34.BackPictureBox2 = null; this.smartLabel34.BorderColor = System.Drawing.Color.Black; this.smartLabel34.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel34.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel34.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel34.ForeColor = System.Drawing.Color.White; this.smartLabel34.InitVisible = true; this.smartLabel34.LineSpacing = 0F; @@ -320,7 +416,7 @@ this.smartLabel35.BackPictureBox2 = null; this.smartLabel35.BorderColor = System.Drawing.Color.Black; this.smartLabel35.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel35.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel35.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel35.ForeColor = System.Drawing.Color.White; this.smartLabel35.InitVisible = true; this.smartLabel35.LineSpacing = 0F; @@ -341,7 +437,7 @@ this.smartLabel36.BackPictureBox2 = null; this.smartLabel36.BorderColor = System.Drawing.Color.Black; this.smartLabel36.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.smartLabel36.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.smartLabel36.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.smartLabel36.ForeColor = System.Drawing.Color.White; this.smartLabel36.InitVisible = true; this.smartLabel36.LineSpacing = 0F; @@ -362,7 +458,7 @@ this.labelModel.BackPictureBox2 = null; this.labelModel.BorderColor = System.Drawing.Color.Black; this.labelModel.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelModel.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelModel.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.labelModel.ForeColor = System.Drawing.Color.White; this.labelModel.InitVisible = true; this.labelModel.LineSpacing = 0F; @@ -383,11 +479,11 @@ this.labelDisplayVer.BackPictureBox2 = null; this.labelDisplayVer.BorderColor = System.Drawing.Color.Black; this.labelDisplayVer.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelDisplayVer.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelDisplayVer.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.labelDisplayVer.ForeColor = System.Drawing.Color.White; this.labelDisplayVer.InitVisible = true; this.labelDisplayVer.LineSpacing = 0F; - this.labelDisplayVer.Location = new System.Drawing.Point(542, 289); + this.labelDisplayVer.Location = new System.Drawing.Point(542, 288); this.labelDisplayVer.Name = "labelDisplayVer"; this.labelDisplayVer.Size = new System.Drawing.Size(139, 33); this.labelDisplayVer.TabIndex = 55; @@ -404,11 +500,11 @@ this.labelControlVer.BackPictureBox2 = null; this.labelControlVer.BorderColor = System.Drawing.Color.Black; this.labelControlVer.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelControlVer.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold); + this.labelControlVer.Font = new System.Drawing.Font("새굴림", 13F, System.Drawing.FontStyle.Bold); this.labelControlVer.ForeColor = System.Drawing.Color.White; this.labelControlVer.InitVisible = true; this.labelControlVer.LineSpacing = 0F; - this.labelControlVer.Location = new System.Drawing.Point(217, 289); + this.labelControlVer.Location = new System.Drawing.Point(217, 288); this.labelControlVer.Name = "labelControlVer"; this.labelControlVer.Size = new System.Drawing.Size(163, 33); this.labelControlVer.TabIndex = 54; @@ -492,5 +588,9 @@ public SmartX.SmartLabel smartLabel4; public SmartX.SmartLabel smartLabel5; private SmartX.SmartButton buttonNext; + private SmartX.SmartLabel labelTitleDllAes128; + private SmartX.SmartLabel labelTitleDllUserMgr; + public SmartX.SmartLabel labelAes128Ver; + public SmartX.SmartLabel labelUserMgrVer; } } diff --git a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs index 90f4da2..7caf617 100644 --- a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs +++ b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs @@ -11,6 +11,8 @@ using ITC81DB_0H.DialogForms; using ITC81DB_0H.Forms; using ITC81DB_2H_ImageDll; using ITC81DB_2H.Datastore; +using ITC81DB_0H.Part11_UserManager; +using ITC81DB_0H.Part11_Encryption; namespace ITC81DB_0H.Controls { @@ -66,10 +68,25 @@ namespace ITC81DB_0H.Controls } private void DefaultSetting() { + this.labelUserMgrVer.Text = ""; + this.labelAes128Ver.Text = ""; this.labelSerialNo.Text = this.ParentForm.ParentForm.SystemConfig1.SerialNumber; this.labelDisplayVer.Text = FormMain.DisplayVersion; } + public void UpdatePart11UserManagerVersionDisplay(string ver) + { + this.labelUserMgrVer.Text = ver; + this.labelTitleDllUserMgr.Visible = true; + this.labelUserMgrVer.Visible = true; + } + public void UpdatePart11AesEncryptionVersionDisplay(string ver) + { + this.labelAes128Ver.Text = ver; + this.labelTitleDllAes128.Visible = true; + this.labelAes128Ver.Visible = true; + } + public void UpdateMainBoardVersionDisplay(string version) { if (version.Length < 8) @@ -95,6 +112,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SetDisplayMode(Define.E_DisplayMode.Menu); this.ParentForm.DisplayTitleRoot(this.ParentForm.ParentForm.CurrentSystemStatus); + if (this.ParentForm.ParentForm.SystemConfig1.IsLogin == true) + UserManager.UserManager_GetVersion(); + if (this.ParentForm.ParentForm.SystemConfig3.IsPart11 == true) + Encryption.AesEncryption_GetVersion(); + this.smartKeyboard.Hide(); this.textBoxSerialNo.Text = this.labelSerialNo.Text; diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHelp.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHelp.cs index 107beb6..d487dfc 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHelp.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHelp.cs @@ -55,9 +55,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersUp)); } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) { @@ -67,9 +67,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnHelpLogOthersUp)); } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Czech) { @@ -82,9 +82,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.rusHelpLogOthersUp)); } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) { @@ -94,9 +94,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerHelpLogOthersUp)); } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) { @@ -106,9 +106,9 @@ namespace ITC81DB_0H.Controls this.buttonLogHistory.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryDisable)); this.buttonLogHistory.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryDown)); this.buttonLogHistory.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogHistoryUp)); - this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDisable)); - this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersDown)); - this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.korHelpLogOthersUp)); + this.buttonLogOthers.DisableImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersDisable)); + this.buttonLogOthers.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersDown)); + this.buttonLogOthers.UpImage = new Bitmap(images.GetImage(Class1.ButtonImages.engHelpLogOthersUp)); } else { diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.cs index 8d9ea77..ed0d479 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.cs @@ -38,6 +38,8 @@ namespace ITC81DB_0H.Controls private List ListLoginID; private List ListEvent; private List ListDetail; + private List ListBefore; + private List ListAfter; #endregion #region Constructor @@ -103,7 +105,7 @@ namespace ITC81DB_0H.Controls { this.labelTitleFileList.Text = "파일 목록"; this.labelTitleFileName.Text = "파일 이름"; - this.labelTitleFind.Text = "Search line"; + this.labelTitleFind.Text = "데이터 검색(Line)"; } } private void DefaultSetting() @@ -119,6 +121,8 @@ namespace ITC81DB_0H.Controls this.ListLoginID = new List(); this.ListEvent = new List(); this.ListDetail = new List(); + this.ListBefore = new List(); + this.ListAfter = new List(); this.CollectionListBox = new Collection(); this.CollectionListBox.Clear(); @@ -126,6 +130,8 @@ namespace ITC81DB_0H.Controls this.CollectionListBox.Add(this.listBoxLoginID); this.CollectionListBox.Add(this.listBoxEvent); this.CollectionListBox.Add(this.listBoxDetail); + this.CollectionListBox.Add(this.listBoxBefore); + this.CollectionListBox.Add(this.listBoxAfter); } private void UpdateInitialStatus() { @@ -263,6 +269,17 @@ namespace ITC81DB_0H.Controls } } + private void SearchLineEnabled(bool bValue) + { + if (bValue == false) + this.labelFind.BackColor = Color.Gray; + else + this.labelFind.BackColor = Color.White; + + this.labelFind.Enabled = bValue; + this.buttonFind.Enabled = bValue; + } + public void ClearData() { this.CollectionData.Clear(); @@ -271,6 +288,8 @@ namespace ITC81DB_0H.Controls this.ListLoginID.Clear(); this.ListEvent.Clear(); this.ListDetail.Clear(); + this.ListBefore.Clear(); + this.ListAfter.Clear(); } public void ClearListBox() { @@ -357,6 +376,8 @@ namespace ITC81DB_0H.Controls this.ListLoginID.Add(this.CollectionData[i][2]); this.ListEvent.Add(this.CollectionData[i][3]); this.ListDetail.Add(this.CollectionData[i][4]); + this.ListBefore.Add(this.CollectionData[i][5]); + this.ListAfter.Add(this.CollectionData[i][6]); } } private void UpdateListBoxDataDisplay() @@ -367,6 +388,8 @@ namespace ITC81DB_0H.Controls this.listBoxLoginID.AddItem(this.ListLoginID[i]); this.listBoxEvent.AddItem(this.ListEvent[i]); this.listBoxDetail.AddItem(this.ListDetail[i]); + this.listBoxBefore.AddItem(this.ListBefore[i]); + this.listBoxAfter.AddItem(this.ListAfter[i]); } } @@ -387,8 +410,8 @@ namespace ITC81DB_0H.Controls bool bValue = this.smartFile1.ReadStringAllBuffer(); if (bValue == false) { - this.smartFile1.Close(); - this.IsFileOpen = false; + this.FileClose(); + return; } @@ -409,14 +432,18 @@ namespace ITC81DB_0H.Controls this.TotalCount = (int)lineNum - 1; // 맨 첫 줄 제외 this.CurrentCount = this.TotalCount; - this.labelFind.Text = this.CurrentCount.ToString(); + if (this.TotalCount < ListBoxLineCount) + this.SearchLineEnabled(false); + else + this.SearchLineEnabled(true); + this.labelFind.Text = this.CurrentCount.ToString(); + this.UpdateData(startIndex, endIndex); + // File Name string[] data = fullFilePath.Split('\\'); this.labelFileName.Text = data[data.Length - 1]; - this.UpdateData(startIndex, endIndex); - this.ParentForm.SplashFinish(); this.Enabled = true; @@ -426,8 +453,7 @@ namespace ITC81DB_0H.Controls DialogFormMessage myMsg = new DialogFormMessage(16, this.ParentForm.ParentForm.SystemConfig1.Language); myMsg.ShowDialog(); this.ParentForm.SplashFinish(); - this.smartFile1.Close(); - this.IsFileOpen = false; + this.FileClose(); this.Enabled = true; } } @@ -529,6 +555,50 @@ namespace ITC81DB_0H.Controls else { this.labelFind.Text = myKeyPad.StringValue; + + if (this.labelFind.Text == "" || this.labelFind.Text == null || this.listBoxTime.ItemCount == 0) + return; + + int startIndex = 0, endIndex = 0; + int index = int.Parse(this.labelFind.Text); + + try + { + this.ClearData(); + this.ClearListBox(); + + if (this.TotalCount > ListBoxLineCount) + { + if (index - ListBoxLineCount < 0) + { + startIndex = 0 + 1; + endIndex = ListBoxLineCount + 1; + + this.CurrentCount = ListBoxLineCount; + } + else + { + startIndex = index - ListBoxLineCount; + endIndex = index; + + this.CurrentCount = index; + } + } + else + { + startIndex = 0 + 1; + endIndex = this.TotalCount + 1; + + this.CurrentCount = this.TotalCount; + } + + this.UpdateData(startIndex, endIndex); + } + catch + { + DialogFormMessage myMsg = new DialogFormMessage(16, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } } } } @@ -582,7 +652,6 @@ namespace ITC81DB_0H.Controls private void buttonBackup_Click(object sender, EventArgs e) { this.FileClose(); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.DataBackup, "History"); this.ParentForm.Backup(Define.E_DataType.History, this.treeView); } @@ -594,6 +663,13 @@ namespace ITC81DB_0H.Controls { this.ListBoxScrollDown(ListBoxLineCount); } + + private void listBox_Click(object sender, EventArgs e) + { + SmartX.SmartListBox listBox = sender as SmartX.SmartListBox; + + listBox.SelectItemIndex = -1; + } #endregion } } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.designer.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.designer.cs index 8ed0d31..02c36ac 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.designer.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogHistory.designer.cs @@ -30,6 +30,10 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterLogHistory)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.listBoxAfter = new SmartX.SmartListBox(); + this.smartLabel6 = new SmartX.SmartLabel(); + this.listBoxBefore = new SmartX.SmartListBox(); + this.smartLabel5 = new SmartX.SmartLabel(); this.listBoxLoginID = new SmartX.SmartListBox(); this.smartLabel1 = new SmartX.SmartLabel(); this.labelTitleFind = new SmartX.SmartLabel(); @@ -62,6 +66,10 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(46)))), ((int)(((byte)(46))))); this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.listBoxAfter); + this.smartGroupBox1.Controls.Add(this.smartLabel6); + this.smartGroupBox1.Controls.Add(this.listBoxBefore); + this.smartGroupBox1.Controls.Add(this.smartLabel5); this.smartGroupBox1.Controls.Add(this.listBoxLoginID); this.smartGroupBox1.Controls.Add(this.smartLabel1); this.smartGroupBox1.Controls.Add(this.labelTitleFind); @@ -98,6 +106,118 @@ this.smartGroupBox1.TabIndex = 173; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // listBoxAfter + // + this.listBoxAfter.BackColor = System.Drawing.Color.White; + this.listBoxAfter.BackPictureBox = null; + this.listBoxAfter.BackPictureBox1 = null; + this.listBoxAfter.BackPictureBox2 = null; + this.listBoxAfter.ColumnAlign = SmartX.SmartListBox.COLUMNALIGNS.CENTER; + this.listBoxAfter.ColumnDelimiter = '\0'; + this.listBoxAfter.ColumnOffsets = null; + this.listBoxAfter.Enabled = false; + this.listBoxAfter.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular); + this.listBoxAfter.FontColor = System.Drawing.Color.Black; + this.listBoxAfter.InitVisible = true; + this.listBoxAfter.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; + this.listBoxAfter.ItemOffsetGap = 8; + this.listBoxAfter.ItemOffsetX = 5; + this.listBoxAfter.ItemOffsetY = 0; + this.listBoxAfter.Location = new System.Drawing.Point(596, 141); + this.listBoxAfter.MouseMoveEventSpace = 3; + this.listBoxAfter.MouseMoveSpace = 10; + this.listBoxAfter.Name = "listBoxAfter"; + this.listBoxAfter.OutLineColor = System.Drawing.SystemColors.ControlText; + this.listBoxAfter.SelectColor = System.Drawing.Color.Blue; + this.listBoxAfter.SelectFilled = true; + this.listBoxAfter.SelectFontColor = System.Drawing.Color.DarkBlue; + this.listBoxAfter.SelectItemIndex = -1; + this.listBoxAfter.SeparationlineColor1 = System.Drawing.Color.Gray; + this.listBoxAfter.SeparationlineColor2 = System.Drawing.Color.LightGray; + this.listBoxAfter.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; + this.listBoxAfter.SeparationlineVisibleBottom = true; + this.listBoxAfter.SeparationlineVisibleTop = true; + this.listBoxAfter.Size = new System.Drawing.Size(50, 318); + this.listBoxAfter.TabIndex = 257; + this.listBoxAfter.Text = "smartListBox2"; + // + // smartLabel6 + // + this.smartLabel6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.smartLabel6.BackPictureBox = null; + this.smartLabel6.BackPictureBox1 = null; + this.smartLabel6.BackPictureBox2 = null; + this.smartLabel6.BorderColor = System.Drawing.Color.Black; + this.smartLabel6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.smartLabel6.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel6.ForeColor = System.Drawing.Color.White; + this.smartLabel6.InitVisible = true; + this.smartLabel6.LineSpacing = 0F; + this.smartLabel6.Location = new System.Drawing.Point(596, 118); + this.smartLabel6.Name = "smartLabel6"; + this.smartLabel6.Size = new System.Drawing.Size(50, 23); + this.smartLabel6.TabIndex = 256; + this.smartLabel6.Text = "After"; + this.smartLabel6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.smartLabel6.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.smartLabel6.Wordwrap = false; + // + // listBoxBefore + // + this.listBoxBefore.BackColor = System.Drawing.Color.White; + this.listBoxBefore.BackPictureBox = null; + this.listBoxBefore.BackPictureBox1 = null; + this.listBoxBefore.BackPictureBox2 = null; + this.listBoxBefore.ColumnAlign = SmartX.SmartListBox.COLUMNALIGNS.CENTER; + this.listBoxBefore.ColumnDelimiter = '\0'; + this.listBoxBefore.ColumnOffsets = null; + this.listBoxBefore.Enabled = false; + this.listBoxBefore.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular); + this.listBoxBefore.FontColor = System.Drawing.Color.Black; + this.listBoxBefore.InitVisible = true; + this.listBoxBefore.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; + this.listBoxBefore.ItemOffsetGap = 8; + this.listBoxBefore.ItemOffsetX = 5; + this.listBoxBefore.ItemOffsetY = 0; + this.listBoxBefore.Location = new System.Drawing.Point(545, 141); + this.listBoxBefore.MouseMoveEventSpace = 3; + this.listBoxBefore.MouseMoveSpace = 10; + this.listBoxBefore.Name = "listBoxBefore"; + this.listBoxBefore.OutLineColor = System.Drawing.SystemColors.ControlText; + this.listBoxBefore.SelectColor = System.Drawing.Color.Blue; + this.listBoxBefore.SelectFilled = true; + this.listBoxBefore.SelectFontColor = System.Drawing.Color.DarkBlue; + this.listBoxBefore.SelectItemIndex = -1; + this.listBoxBefore.SeparationlineColor1 = System.Drawing.Color.Gray; + this.listBoxBefore.SeparationlineColor2 = System.Drawing.Color.LightGray; + this.listBoxBefore.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; + this.listBoxBefore.SeparationlineVisibleBottom = true; + this.listBoxBefore.SeparationlineVisibleTop = true; + this.listBoxBefore.Size = new System.Drawing.Size(50, 318); + this.listBoxBefore.TabIndex = 255; + this.listBoxBefore.Text = "smartListBox1"; + // + // smartLabel5 + // + this.smartLabel5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.smartLabel5.BackPictureBox = null; + this.smartLabel5.BackPictureBox1 = null; + this.smartLabel5.BackPictureBox2 = null; + this.smartLabel5.BorderColor = System.Drawing.Color.Black; + this.smartLabel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.smartLabel5.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel5.ForeColor = System.Drawing.Color.White; + this.smartLabel5.InitVisible = true; + this.smartLabel5.LineSpacing = 0F; + this.smartLabel5.Location = new System.Drawing.Point(545, 118); + this.smartLabel5.Name = "smartLabel5"; + this.smartLabel5.Size = new System.Drawing.Size(50, 23); + this.smartLabel5.TabIndex = 254; + this.smartLabel5.Text = "Before"; + this.smartLabel5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.smartLabel5.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.smartLabel5.Wordwrap = false; + // // listBoxLoginID // this.listBoxLoginID.BackColor = System.Drawing.Color.White; @@ -115,7 +235,7 @@ this.listBoxLoginID.ItemOffsetGap = 8; this.listBoxLoginID.ItemOffsetX = 2; this.listBoxLoginID.ItemOffsetY = 0; - this.listBoxLoginID.Location = new System.Drawing.Point(301, 141); + this.listBoxLoginID.Location = new System.Drawing.Point(267, 141); this.listBoxLoginID.MouseMoveEventSpace = 3; this.listBoxLoginID.MouseMoveSpace = 10; this.listBoxLoginID.Name = "listBoxLoginID"; @@ -129,9 +249,10 @@ this.listBoxLoginID.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxLoginID.SeparationlineVisibleBottom = true; this.listBoxLoginID.SeparationlineVisibleTop = true; - this.listBoxLoginID.Size = new System.Drawing.Size(68, 318); + this.listBoxLoginID.Size = new System.Drawing.Size(60, 318); this.listBoxLoginID.TabIndex = 253; this.listBoxLoginID.Text = "smartListBox1"; + this.listBoxLoginID.Click += new System.EventHandler(this.listBox_Click); // // smartLabel1 // @@ -145,11 +266,11 @@ this.smartLabel1.ForeColor = System.Drawing.Color.White; this.smartLabel1.InitVisible = true; this.smartLabel1.LineSpacing = 0F; - this.smartLabel1.Location = new System.Drawing.Point(301, 118); + this.smartLabel1.Location = new System.Drawing.Point(267, 118); this.smartLabel1.Name = "smartLabel1"; - this.smartLabel1.Size = new System.Drawing.Size(68, 23); + this.smartLabel1.Size = new System.Drawing.Size(60, 23); this.smartLabel1.TabIndex = 252; - this.smartLabel1.Text = "Login ID"; + this.smartLabel1.Text = "ID"; this.smartLabel1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; this.smartLabel1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.smartLabel1.Wordwrap = false; @@ -165,9 +286,9 @@ this.labelTitleFind.ForeColor = System.Drawing.Color.White; this.labelTitleFind.InitVisible = true; this.labelTitleFind.LineSpacing = 0F; - this.labelTitleFind.Location = new System.Drawing.Point(240, 78); + this.labelTitleFind.Location = new System.Drawing.Point(214, 78); this.labelTitleFind.Name = "labelTitleFind"; - this.labelTitleFind.Size = new System.Drawing.Size(173, 34); + this.labelTitleFind.Size = new System.Drawing.Size(204, 34); this.labelTitleFind.TabIndex = 251; this.labelTitleFind.Text = "데이터 찾기(Line)"; this.labelTitleFind.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -186,7 +307,7 @@ this.labelFind.ForeColor = System.Drawing.Color.Black; this.labelFind.InitVisible = true; this.labelFind.LineSpacing = 0F; - this.labelFind.Location = new System.Drawing.Point(419, 77); + this.labelFind.Location = new System.Drawing.Point(424, 77); this.labelFind.Name = "labelFind"; this.labelFind.Size = new System.Drawing.Size(175, 35); this.labelFind.TabIndex = 250; @@ -207,7 +328,7 @@ this.buttonFind.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.DownImage"))); this.buttonFind.GroupID = 0; this.buttonFind.InitVisible = true; - this.buttonFind.Location = new System.Drawing.Point(600, 77); + this.buttonFind.Location = new System.Drawing.Point(605, 77); this.buttonFind.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonFind.Name = "buttonFind"; this.buttonFind.NestedClickEventPrevent = false; @@ -224,6 +345,7 @@ this.buttonFind.TextLocation = new System.Drawing.Point(0, 0); this.buttonFind.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; this.buttonFind.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.UpImage"))); + this.buttonFind.Visible = false; this.buttonFind.Click += new System.EventHandler(this.buttonFind_Click); // // buttonRead @@ -238,7 +360,7 @@ this.buttonRead.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonRead.DownImage"))); this.buttonRead.GroupID = 0; this.buttonRead.InitVisible = true; - this.buttonRead.Location = new System.Drawing.Point(600, 37); + this.buttonRead.Location = new System.Drawing.Point(605, 37); this.buttonRead.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonRead.Name = "buttonRead"; this.buttonRead.NestedClickEventPrevent = false; @@ -274,7 +396,7 @@ this.listBoxDetail.ItemOffsetGap = 8; this.listBoxDetail.ItemOffsetX = 2; this.listBoxDetail.ItemOffsetY = 0; - this.listBoxDetail.Location = new System.Drawing.Point(489, 141); + this.listBoxDetail.Location = new System.Drawing.Point(419, 141); this.listBoxDetail.MouseMoveEventSpace = 3; this.listBoxDetail.MouseMoveSpace = 10; this.listBoxDetail.Name = "listBoxDetail"; @@ -288,9 +410,10 @@ this.listBoxDetail.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxDetail.SeparationlineVisibleBottom = true; this.listBoxDetail.SeparationlineVisibleTop = true; - this.listBoxDetail.Size = new System.Drawing.Size(152, 318); + this.listBoxDetail.Size = new System.Drawing.Size(125, 318); this.listBoxDetail.TabIndex = 243; this.listBoxDetail.Text = "smartListBox2"; + this.listBoxDetail.Click += new System.EventHandler(this.listBox_Click); // // listBoxEvent // @@ -309,7 +432,7 @@ this.listBoxEvent.ItemOffsetGap = 8; this.listBoxEvent.ItemOffsetX = 2; this.listBoxEvent.ItemOffsetY = 0; - this.listBoxEvent.Location = new System.Drawing.Point(370, 141); + this.listBoxEvent.Location = new System.Drawing.Point(328, 141); this.listBoxEvent.MouseMoveEventSpace = 3; this.listBoxEvent.MouseMoveSpace = 10; this.listBoxEvent.Name = "listBoxEvent"; @@ -323,9 +446,10 @@ this.listBoxEvent.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxEvent.SeparationlineVisibleBottom = true; this.listBoxEvent.SeparationlineVisibleTop = true; - this.listBoxEvent.Size = new System.Drawing.Size(118, 318); + this.listBoxEvent.Size = new System.Drawing.Size(90, 318); this.listBoxEvent.TabIndex = 242; this.listBoxEvent.Text = "smartListBox1"; + this.listBoxEvent.Click += new System.EventHandler(this.listBox_Click); // // listBoxTime // @@ -344,7 +468,7 @@ this.listBoxTime.ItemOffsetGap = 8; this.listBoxTime.ItemOffsetX = 2; this.listBoxTime.ItemOffsetY = 0; - this.listBoxTime.Location = new System.Drawing.Point(240, 141); + this.listBoxTime.Location = new System.Drawing.Point(214, 141); this.listBoxTime.MouseMoveEventSpace = 3; this.listBoxTime.MouseMoveSpace = 10; this.listBoxTime.Name = "listBoxTime"; @@ -358,16 +482,17 @@ this.listBoxTime.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxTime.SeparationlineVisibleBottom = true; this.listBoxTime.SeparationlineVisibleTop = true; - this.listBoxTime.Size = new System.Drawing.Size(60, 318); + this.listBoxTime.Size = new System.Drawing.Size(52, 318); this.listBoxTime.TabIndex = 241; this.listBoxTime.Text = "smartListBox1"; + this.listBoxTime.Click += new System.EventHandler(this.listBox_Click); // // treeView // this.treeView.CheckBoxes = true; this.treeView.Location = new System.Drawing.Point(8, 37); this.treeView.Name = "treeView"; - this.treeView.Size = new System.Drawing.Size(226, 422); + this.treeView.Size = new System.Drawing.Size(200, 422); this.treeView.TabIndex = 240; this.treeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView_AfterSelect); // @@ -382,7 +507,7 @@ this.labelTotalIndex.ForeColor = System.Drawing.Color.White; this.labelTotalIndex.InitVisible = true; this.labelTotalIndex.LineSpacing = 0F; - this.labelTotalIndex.Location = new System.Drawing.Point(646, 273); + this.labelTotalIndex.Location = new System.Drawing.Point(652, 273); this.labelTotalIndex.Name = "labelTotalIndex"; this.labelTotalIndex.Size = new System.Drawing.Size(50, 21); this.labelTotalIndex.TabIndex = 239; @@ -402,7 +527,7 @@ this.labelCurrentIndex.ForeColor = System.Drawing.Color.White; this.labelCurrentIndex.InitVisible = true; this.labelCurrentIndex.LineSpacing = 0F; - this.labelCurrentIndex.Location = new System.Drawing.Point(646, 238); + this.labelCurrentIndex.Location = new System.Drawing.Point(652, 238); this.labelCurrentIndex.Name = "labelCurrentIndex"; this.labelCurrentIndex.Size = new System.Drawing.Size(50, 21); this.labelCurrentIndex.TabIndex = 238; @@ -420,7 +545,7 @@ this.smartSeparatorLine1.Line2Visible = true; this.smartSeparatorLine1.Line2Width = 1F; this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; - this.smartSeparatorLine1.Location = new System.Drawing.Point(646, 265); + this.smartSeparatorLine1.Location = new System.Drawing.Point(652, 265); this.smartSeparatorLine1.Name = "smartSeparatorLine1"; this.smartSeparatorLine1.Size = new System.Drawing.Size(50, 2); this.smartSeparatorLine1.TabIndex = 237; @@ -438,9 +563,9 @@ this.smartLabel4.ForeColor = System.Drawing.Color.White; this.smartLabel4.InitVisible = true; this.smartLabel4.LineSpacing = 0F; - this.smartLabel4.Location = new System.Drawing.Point(489, 118); + this.smartLabel4.Location = new System.Drawing.Point(419, 118); this.smartLabel4.Name = "smartLabel4"; - this.smartLabel4.Size = new System.Drawing.Size(152, 23); + this.smartLabel4.Size = new System.Drawing.Size(125, 23); this.smartLabel4.TabIndex = 231; this.smartLabel4.Text = "Detail"; this.smartLabel4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -459,9 +584,9 @@ this.smartLabel3.ForeColor = System.Drawing.Color.White; this.smartLabel3.InitVisible = true; this.smartLabel3.LineSpacing = 0F; - this.smartLabel3.Location = new System.Drawing.Point(370, 118); + this.smartLabel3.Location = new System.Drawing.Point(328, 118); this.smartLabel3.Name = "smartLabel3"; - this.smartLabel3.Size = new System.Drawing.Size(118, 23); + this.smartLabel3.Size = new System.Drawing.Size(90, 23); this.smartLabel3.TabIndex = 228; this.smartLabel3.Text = "Event"; this.smartLabel3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -480,9 +605,9 @@ this.smartLabel2.ForeColor = System.Drawing.Color.White; this.smartLabel2.InitVisible = true; this.smartLabel2.LineSpacing = 0F; - this.smartLabel2.Location = new System.Drawing.Point(240, 118); + this.smartLabel2.Location = new System.Drawing.Point(214, 118); this.smartLabel2.Name = "smartLabel2"; - this.smartLabel2.Size = new System.Drawing.Size(60, 23); + this.smartLabel2.Size = new System.Drawing.Size(52, 23); this.smartLabel2.TabIndex = 227; this.smartLabel2.Text = "Time"; this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -502,7 +627,7 @@ this.buttonDown.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonDown.GroupID = 0; this.buttonDown.InitVisible = true; - this.buttonDown.Location = new System.Drawing.Point(646, 310); + this.buttonDown.Location = new System.Drawing.Point(652, 310); this.buttonDown.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonDown.Name = "buttonDown"; this.buttonDown.NestedClickEventPrevent = false; @@ -535,7 +660,7 @@ this.buttonUp.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonUp.GroupID = 0; this.buttonUp.InitVisible = true; - this.buttonUp.Location = new System.Drawing.Point(646, 73); + this.buttonUp.Location = new System.Drawing.Point(652, 73); this.buttonUp.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonUp.Name = "buttonUp"; this.buttonUp.NestedClickEventPrevent = false; @@ -567,9 +692,9 @@ this.labelFileName.ForeColor = System.Drawing.Color.White; this.labelFileName.InitVisible = true; this.labelFileName.LineSpacing = 0F; - this.labelFileName.Location = new System.Drawing.Point(240, 37); + this.labelFileName.Location = new System.Drawing.Point(214, 37); this.labelFileName.Name = "labelFileName"; - this.labelFileName.Size = new System.Drawing.Size(354, 35); + this.labelFileName.Size = new System.Drawing.Size(385, 35); this.labelFileName.TabIndex = 224; this.labelFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; this.labelFileName.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; @@ -586,9 +711,9 @@ this.labelTitleFileName.ForeColor = System.Drawing.Color.White; this.labelTitleFileName.InitVisible = true; this.labelTitleFileName.LineSpacing = 0F; - this.labelTitleFileName.Location = new System.Drawing.Point(240, 12); + this.labelTitleFileName.Location = new System.Drawing.Point(214, 12); this.labelTitleFileName.Name = "labelTitleFileName"; - this.labelTitleFileName.Size = new System.Drawing.Size(396, 21); + this.labelTitleFileName.Size = new System.Drawing.Size(432, 21); this.labelTitleFileName.TabIndex = 223; this.labelTitleFileName.Text = "파일 이름"; this.labelTitleFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -628,7 +753,7 @@ this.labelCount.LineSpacing = 0F; this.labelCount.Location = new System.Drawing.Point(148, 12); this.labelCount.Name = "labelCount"; - this.labelCount.Size = new System.Drawing.Size(86, 21); + this.labelCount.Size = new System.Drawing.Size(60, 21); this.labelCount.TabIndex = 219; this.labelCount.Text = "0"; this.labelCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -648,7 +773,7 @@ this.buttonBackup.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold); this.buttonBackup.GroupID = 0; this.buttonBackup.InitVisible = true; - this.buttonBackup.Location = new System.Drawing.Point(646, 12); + this.buttonBackup.Location = new System.Drawing.Point(652, 12); this.buttonBackup.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonBackup.Name = "buttonBackup"; this.buttonBackup.NestedClickEventPrevent = false; @@ -711,6 +836,10 @@ private SmartX.SmartListBox listBoxLoginID; private SmartX.SmartLabel smartLabel1; private System.Windows.Forms.TreeView treeView; + private SmartX.SmartListBox listBoxAfter; + private SmartX.SmartLabel smartLabel6; + private SmartX.SmartListBox listBoxBefore; + private SmartX.SmartLabel smartLabel5; } } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.cs index 95c3ea3..e30d713 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.cs @@ -33,8 +33,10 @@ namespace ITC81DB_0H.Controls private List ListInspectionFile; private Collection CollectionListBox; private Collection CollectionData; // 파일에서 읽은 데이터 + private Collection CollectionStringData; private List ListTime; + private List ListNo; private List ListGrade; private List ListUnder; private List ListPass; @@ -105,7 +107,7 @@ namespace ITC81DB_0H.Controls { this.labelTitleFileList.Text = "파일 목록"; this.labelTitleFileName.Text = "파일 이름"; - this.labelTitleFind.Text = "Search line"; + this.labelTitleFind.Text = "데이터 검색(Line)"; } } private void DefaultSetting() @@ -118,15 +120,18 @@ namespace ITC81DB_0H.Controls this.CollectionData = new Collection(); this.ListTime = new List(); + this.ListNo = new List(); this.ListGrade = new List(); this.ListUnder = new List(); this.ListPass = new List(); this.ListOver = new List(); this.ListWeight = new List(); + this.CollectionStringData = new Collection(); this.CollectionListBox = new Collection(); this.CollectionListBox.Clear(); this.CollectionListBox.Add(this.listBoxTime); + this.CollectionListBox.Add(this.listBoxNo); this.CollectionListBox.Add(this.listBoxGrade); this.CollectionListBox.Add(this.listBoxUnder); this.CollectionListBox.Add(this.listBoxPass); @@ -223,7 +228,7 @@ namespace ITC81DB_0H.Controls this.labelCount.Text = fileCount.ToString(); } - + /// /// 모든 자식 노드를 가져온다. /// @@ -287,11 +292,23 @@ namespace ITC81DB_0H.Controls } } + private void SearchLineEnabled(bool bValue) + { + if (bValue == false) + this.labelFind.BackColor = Color.Gray; + else + this.labelFind.BackColor = Color.White; + + this.labelFind.Enabled = bValue; + this.buttonFind.Enabled = bValue; + } + public void ClearData() { this.CollectionData.Clear(); this.ListTime.Clear(); + this.ListNo.Clear(); this.ListGrade.Clear(); this.ListUnder.Clear(); this.ListPass.Clear(); @@ -369,12 +386,18 @@ namespace ITC81DB_0H.Controls this.UpdateListBoxDataDisplay(); this.UpdateListBoxCount(); } + private void UpdateListBoxCount() + { + this.labelTotalIndex.Text = this.TotalCount.ToString(); + this.labelCurrentIndex.Text = this.CurrentCount.ToString(); + } private void UpdateListData() { // List Item Add for (int i = 0; i < this.CollectionData.Count; i++) { this.ListTime.Add(this.CollectionData[i][1]); + this.ListNo.Add(this.CollectionData[i][2]); this.ListGrade.Add(this.CollectionData[i][10]); this.ListUnder.Add(this.CollectionData[i][5]); this.ListPass.Add(this.CollectionData[i][6]); @@ -382,16 +405,12 @@ namespace ITC81DB_0H.Controls this.ListWeight.Add(this.CollectionData[i][9]); } } - private void UpdateListBoxCount() - { - this.labelTotalIndex.Text = this.TotalCount.ToString(); - this.labelCurrentIndex.Text = this.CurrentCount.ToString(); - } private void UpdateListBoxDataDisplay() { for (int i = 0; i < this.ListTime.Count; i++) { this.listBoxTime.AddItem(this.ListTime[i]); + this.listBoxNo.AddItem(this.ListNo[i]); this.listBoxGrade.AddItem(this.ListGrade[i]); this.listBoxUnder.AddItem(this.ListUnder[i]); this.listBoxPass.AddItem(this.ListPass[i]); @@ -441,6 +460,11 @@ namespace ITC81DB_0H.Controls this.TotalCount = (int)lineNum - 1; // 맨 첫 줄 제외 this.CurrentCount = this.TotalCount; + if (this.TotalCount < ListBoxLineCount) + this.SearchLineEnabled(false); + else + this.SearchLineEnabled(true); + this.labelFind.Text = this.CurrentCount.ToString(); this.UpdateData(startIndex, endIndex); @@ -517,22 +541,7 @@ namespace ITC81DB_0H.Controls //this.labelFileName.Text = e.Node.Text; this.SelectedNodeFullPath = this.treeView.SelectedNode.FullPath; } - //else - //{ - // var nodes = e.Node; - // foreach (TreeNode node in nodes.Nodes) - // { - // List childNodes = new List(); - // this.GetAllChildNodes(node, ref childNodes); - - // foreach (TreeNode childNode in childNodes) - // { - // childNode.Checked = nodes.Checked; - // } - // } - //} } - private void buttonRead_Click(object sender, EventArgs e) { if (this.SelectedNodeFullPath == "" || this.SelectedNodeFullPath == null) @@ -569,6 +578,50 @@ namespace ITC81DB_0H.Controls else { this.labelFind.Text = myKeyPad.StringValue; + + if (this.labelFind.Text == "" || this.labelFind.Text == null || this.listBoxTime.ItemCount == 0) + return; + + int startIndex = 0, endIndex = 0; + int index = int.Parse(this.labelFind.Text); + + try + { + this.ClearData(); + this.ClearListBox(); + + if (this.TotalCount > ListBoxLineCount) + { + if (index - ListBoxLineCount < 0) + { + startIndex = 0 + 1; + endIndex = ListBoxLineCount + 1; + + this.CurrentCount = ListBoxLineCount; + } + else + { + startIndex = index - ListBoxLineCount; + endIndex = index; + + this.CurrentCount = index; + } + } + else + { + startIndex = 0 + 1; + endIndex = this.TotalCount + 1; + + this.CurrentCount = this.TotalCount; + } + + this.UpdateData(startIndex, endIndex); + } + catch + { + DialogFormMessage myMsg = new DialogFormMessage(16, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } } } } @@ -622,7 +675,6 @@ namespace ITC81DB_0H.Controls private void buttonBackup_Click(object sender, EventArgs e) { this.FileClose(); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.DataBackup, "Inspection"); this.ParentForm.Backup(Define.E_DataType.Inspection, this.treeView); } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.designer.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.designer.cs index 95a3f16..462f2b5 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.designer.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogInspection.designer.cs @@ -30,6 +30,8 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterLogInspection)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.listBoxNo = new SmartX.SmartListBox(); + this.smartLabel7 = new SmartX.SmartLabel(); this.listBoxPass = new SmartX.SmartListBox(); this.smartLabel1 = new SmartX.SmartLabel(); this.labelTitleFind = new SmartX.SmartLabel(); @@ -66,6 +68,8 @@ this.smartGroupBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(46)))), ((int)(((byte)(46))))); this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.listBoxNo); + this.smartGroupBox1.Controls.Add(this.smartLabel7); this.smartGroupBox1.Controls.Add(this.listBoxPass); this.smartGroupBox1.Controls.Add(this.smartLabel1); this.smartGroupBox1.Controls.Add(this.labelTitleFind); @@ -106,6 +110,62 @@ this.smartGroupBox1.TabIndex = 173; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // listBoxNo + // + this.listBoxNo.BackColor = System.Drawing.Color.White; + this.listBoxNo.BackPictureBox = null; + this.listBoxNo.BackPictureBox1 = null; + this.listBoxNo.BackPictureBox2 = null; + this.listBoxNo.ColumnAlign = SmartX.SmartListBox.COLUMNALIGNS.CENTER; + this.listBoxNo.ColumnDelimiter = '\0'; + this.listBoxNo.ColumnOffsets = null; + this.listBoxNo.Enabled = false; + this.listBoxNo.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular); + this.listBoxNo.FontColor = System.Drawing.Color.Black; + this.listBoxNo.InitVisible = true; + this.listBoxNo.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; + this.listBoxNo.ItemOffsetGap = 8; + this.listBoxNo.ItemOffsetX = 5; + this.listBoxNo.ItemOffsetY = 0; + this.listBoxNo.Location = new System.Drawing.Point(296, 141); + this.listBoxNo.MouseMoveEventSpace = 3; + this.listBoxNo.MouseMoveSpace = 10; + this.listBoxNo.Name = "listBoxNo"; + this.listBoxNo.OutLineColor = System.Drawing.SystemColors.ControlText; + this.listBoxNo.SelectColor = System.Drawing.Color.Blue; + this.listBoxNo.SelectFilled = true; + this.listBoxNo.SelectFontColor = System.Drawing.Color.DarkBlue; + this.listBoxNo.SelectItemIndex = -1; + this.listBoxNo.SeparationlineColor1 = System.Drawing.Color.Gray; + this.listBoxNo.SeparationlineColor2 = System.Drawing.Color.LightGray; + this.listBoxNo.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; + this.listBoxNo.SeparationlineVisibleBottom = true; + this.listBoxNo.SeparationlineVisibleTop = true; + this.listBoxNo.Size = new System.Drawing.Size(45, 318); + this.listBoxNo.TabIndex = 253; + this.listBoxNo.Text = "smartListBox1"; + // + // smartLabel7 + // + this.smartLabel7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(81)))), ((int)(((byte)(159)))), ((int)(((byte)(198))))); + this.smartLabel7.BackPictureBox = null; + this.smartLabel7.BackPictureBox1 = null; + this.smartLabel7.BackPictureBox2 = null; + this.smartLabel7.BorderColor = System.Drawing.Color.Black; + this.smartLabel7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.smartLabel7.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel7.ForeColor = System.Drawing.Color.White; + this.smartLabel7.InitVisible = true; + this.smartLabel7.LineSpacing = 0F; + this.smartLabel7.Location = new System.Drawing.Point(296, 118); + this.smartLabel7.Name = "smartLabel7"; + this.smartLabel7.Size = new System.Drawing.Size(45, 23); + this.smartLabel7.TabIndex = 252; + this.smartLabel7.Text = "No."; + this.smartLabel7.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.smartLabel7.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.smartLabel7.Wordwrap = false; + // // listBoxPass // this.listBoxPass.BackColor = System.Drawing.Color.White; @@ -121,9 +181,9 @@ this.listBoxPass.InitVisible = true; this.listBoxPass.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxPass.ItemOffsetGap = 8; - this.listBoxPass.ItemOffsetX = 2; + this.listBoxPass.ItemOffsetX = 5; this.listBoxPass.ItemOffsetY = 0; - this.listBoxPass.Location = new System.Drawing.Point(439, 141); + this.listBoxPass.Location = new System.Drawing.Point(464, 141); this.listBoxPass.MouseMoveEventSpace = 3; this.listBoxPass.MouseMoveSpace = 10; this.listBoxPass.Name = "listBoxPass"; @@ -137,7 +197,7 @@ this.listBoxPass.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxPass.SeparationlineVisibleBottom = true; this.listBoxPass.SeparationlineVisibleTop = true; - this.listBoxPass.Size = new System.Drawing.Size(62, 318); + this.listBoxPass.Size = new System.Drawing.Size(60, 318); this.listBoxPass.TabIndex = 251; this.listBoxPass.Text = "smartListBox3"; // @@ -153,9 +213,9 @@ this.smartLabel1.ForeColor = System.Drawing.Color.White; this.smartLabel1.InitVisible = true; this.smartLabel1.LineSpacing = 0F; - this.smartLabel1.Location = new System.Drawing.Point(439, 118); + this.smartLabel1.Location = new System.Drawing.Point(464, 118); this.smartLabel1.Name = "smartLabel1"; - this.smartLabel1.Size = new System.Drawing.Size(62, 23); + this.smartLabel1.Size = new System.Drawing.Size(60, 23); this.smartLabel1.TabIndex = 250; this.smartLabel1.Text = "Pass"; this.smartLabel1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -175,7 +235,7 @@ this.labelTitleFind.LineSpacing = 0F; this.labelTitleFind.Location = new System.Drawing.Point(240, 78); this.labelTitleFind.Name = "labelTitleFind"; - this.labelTitleFind.Size = new System.Drawing.Size(173, 34); + this.labelTitleFind.Size = new System.Drawing.Size(178, 34); this.labelTitleFind.TabIndex = 249; this.labelTitleFind.Text = "데이터 찾기(Line)"; this.labelTitleFind.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -194,7 +254,7 @@ this.labelFind.ForeColor = System.Drawing.Color.Black; this.labelFind.InitVisible = true; this.labelFind.LineSpacing = 0F; - this.labelFind.Location = new System.Drawing.Point(419, 77); + this.labelFind.Location = new System.Drawing.Point(424, 77); this.labelFind.Name = "labelFind"; this.labelFind.Size = new System.Drawing.Size(175, 35); this.labelFind.TabIndex = 248; @@ -215,7 +275,7 @@ this.buttonFind.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.DownImage"))); this.buttonFind.GroupID = 0; this.buttonFind.InitVisible = true; - this.buttonFind.Location = new System.Drawing.Point(600, 77); + this.buttonFind.Location = new System.Drawing.Point(605, 77); this.buttonFind.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonFind.Name = "buttonFind"; this.buttonFind.NestedClickEventPrevent = false; @@ -232,6 +292,7 @@ this.buttonFind.TextLocation = new System.Drawing.Point(0, 0); this.buttonFind.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; this.buttonFind.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.UpImage"))); + this.buttonFind.Visible = false; this.buttonFind.Click += new System.EventHandler(this.buttonFind_Click); // // buttonRead @@ -246,7 +307,7 @@ this.buttonRead.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonRead.DownImage"))); this.buttonRead.GroupID = 0; this.buttonRead.InitVisible = true; - this.buttonRead.Location = new System.Drawing.Point(600, 37); + this.buttonRead.Location = new System.Drawing.Point(605, 37); this.buttonRead.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonRead.Name = "buttonRead"; this.buttonRead.NestedClickEventPrevent = false; @@ -280,9 +341,9 @@ this.listBoxWeight.InitVisible = true; this.listBoxWeight.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxWeight.ItemOffsetGap = 8; - this.listBoxWeight.ItemOffsetX = 2; + this.listBoxWeight.ItemOffsetX = 5; this.listBoxWeight.ItemOffsetY = 0; - this.listBoxWeight.Location = new System.Drawing.Point(565, 141); + this.listBoxWeight.Location = new System.Drawing.Point(586, 141); this.listBoxWeight.MouseMoveEventSpace = 3; this.listBoxWeight.MouseMoveSpace = 10; this.listBoxWeight.Name = "listBoxWeight"; @@ -296,7 +357,7 @@ this.listBoxWeight.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxWeight.SeparationlineVisibleBottom = true; this.listBoxWeight.SeparationlineVisibleTop = true; - this.listBoxWeight.Size = new System.Drawing.Size(76, 318); + this.listBoxWeight.Size = new System.Drawing.Size(60, 318); this.listBoxWeight.TabIndex = 245; this.listBoxWeight.Text = "smartListBox4"; // @@ -315,9 +376,9 @@ this.listBoxOver.InitVisible = true; this.listBoxOver.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxOver.ItemOffsetGap = 8; - this.listBoxOver.ItemOffsetX = 2; + this.listBoxOver.ItemOffsetX = 5; this.listBoxOver.ItemOffsetY = 0; - this.listBoxOver.Location = new System.Drawing.Point(502, 141); + this.listBoxOver.Location = new System.Drawing.Point(525, 141); this.listBoxOver.MouseMoveEventSpace = 3; this.listBoxOver.MouseMoveSpace = 10; this.listBoxOver.Name = "listBoxOver"; @@ -331,7 +392,7 @@ this.listBoxOver.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxOver.SeparationlineVisibleBottom = true; this.listBoxOver.SeparationlineVisibleTop = true; - this.listBoxOver.Size = new System.Drawing.Size(62, 318); + this.listBoxOver.Size = new System.Drawing.Size(60, 318); this.listBoxOver.TabIndex = 244; this.listBoxOver.Text = "smartListBox3"; // @@ -350,9 +411,9 @@ this.listBoxUnder.InitVisible = true; this.listBoxUnder.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxUnder.ItemOffsetGap = 8; - this.listBoxUnder.ItemOffsetX = 2; + this.listBoxUnder.ItemOffsetX = 5; this.listBoxUnder.ItemOffsetY = 0; - this.listBoxUnder.Location = new System.Drawing.Point(376, 141); + this.listBoxUnder.Location = new System.Drawing.Point(403, 141); this.listBoxUnder.MouseMoveEventSpace = 3; this.listBoxUnder.MouseMoveSpace = 10; this.listBoxUnder.Name = "listBoxUnder"; @@ -366,7 +427,7 @@ this.listBoxUnder.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxUnder.SeparationlineVisibleBottom = true; this.listBoxUnder.SeparationlineVisibleTop = true; - this.listBoxUnder.Size = new System.Drawing.Size(62, 318); + this.listBoxUnder.Size = new System.Drawing.Size(60, 318); this.listBoxUnder.TabIndex = 243; this.listBoxUnder.Text = "smartListBox2"; // @@ -385,9 +446,9 @@ this.listBoxGrade.InitVisible = true; this.listBoxGrade.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxGrade.ItemOffsetGap = 8; - this.listBoxGrade.ItemOffsetX = 2; + this.listBoxGrade.ItemOffsetX = 5; this.listBoxGrade.ItemOffsetY = 0; - this.listBoxGrade.Location = new System.Drawing.Point(301, 141); + this.listBoxGrade.Location = new System.Drawing.Point(342, 141); this.listBoxGrade.MouseMoveEventSpace = 3; this.listBoxGrade.MouseMoveSpace = 10; this.listBoxGrade.Name = "listBoxGrade"; @@ -401,7 +462,7 @@ this.listBoxGrade.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxGrade.SeparationlineVisibleBottom = true; this.listBoxGrade.SeparationlineVisibleTop = true; - this.listBoxGrade.Size = new System.Drawing.Size(74, 318); + this.listBoxGrade.Size = new System.Drawing.Size(60, 318); this.listBoxGrade.TabIndex = 242; this.listBoxGrade.Text = "smartListBox1"; // @@ -436,7 +497,7 @@ this.listBoxTime.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxTime.SeparationlineVisibleBottom = true; this.listBoxTime.SeparationlineVisibleTop = true; - this.listBoxTime.Size = new System.Drawing.Size(60, 318); + this.listBoxTime.Size = new System.Drawing.Size(55, 318); this.listBoxTime.TabIndex = 241; this.listBoxTime.Text = "smartListBox1"; // @@ -460,7 +521,7 @@ this.labelTotalIndex.ForeColor = System.Drawing.Color.White; this.labelTotalIndex.InitVisible = true; this.labelTotalIndex.LineSpacing = 0F; - this.labelTotalIndex.Location = new System.Drawing.Point(646, 273); + this.labelTotalIndex.Location = new System.Drawing.Point(652, 273); this.labelTotalIndex.Name = "labelTotalIndex"; this.labelTotalIndex.Size = new System.Drawing.Size(50, 21); this.labelTotalIndex.TabIndex = 239; @@ -480,7 +541,7 @@ this.labelCurrentIndex.ForeColor = System.Drawing.Color.White; this.labelCurrentIndex.InitVisible = true; this.labelCurrentIndex.LineSpacing = 0F; - this.labelCurrentIndex.Location = new System.Drawing.Point(646, 238); + this.labelCurrentIndex.Location = new System.Drawing.Point(652, 238); this.labelCurrentIndex.Name = "labelCurrentIndex"; this.labelCurrentIndex.Size = new System.Drawing.Size(50, 21); this.labelCurrentIndex.TabIndex = 238; @@ -498,7 +559,7 @@ this.smartSeparatorLine1.Line2Visible = true; this.smartSeparatorLine1.Line2Width = 1F; this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; - this.smartSeparatorLine1.Location = new System.Drawing.Point(646, 265); + this.smartSeparatorLine1.Location = new System.Drawing.Point(652, 265); this.smartSeparatorLine1.Name = "smartSeparatorLine1"; this.smartSeparatorLine1.Size = new System.Drawing.Size(50, 2); this.smartSeparatorLine1.TabIndex = 237; @@ -516,9 +577,9 @@ this.smartLabel6.ForeColor = System.Drawing.Color.White; this.smartLabel6.InitVisible = true; this.smartLabel6.LineSpacing = 0F; - this.smartLabel6.Location = new System.Drawing.Point(565, 118); + this.smartLabel6.Location = new System.Drawing.Point(586, 118); this.smartLabel6.Name = "smartLabel6"; - this.smartLabel6.Size = new System.Drawing.Size(76, 23); + this.smartLabel6.Size = new System.Drawing.Size(60, 23); this.smartLabel6.TabIndex = 236; this.smartLabel6.Text = "Weight"; this.smartLabel6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -537,9 +598,9 @@ this.smartLabel5.ForeColor = System.Drawing.Color.White; this.smartLabel5.InitVisible = true; this.smartLabel5.LineSpacing = 0F; - this.smartLabel5.Location = new System.Drawing.Point(502, 118); + this.smartLabel5.Location = new System.Drawing.Point(525, 118); this.smartLabel5.Name = "smartLabel5"; - this.smartLabel5.Size = new System.Drawing.Size(62, 23); + this.smartLabel5.Size = new System.Drawing.Size(60, 23); this.smartLabel5.TabIndex = 233; this.smartLabel5.Text = "Over"; this.smartLabel5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -558,9 +619,9 @@ this.smartLabel4.ForeColor = System.Drawing.Color.White; this.smartLabel4.InitVisible = true; this.smartLabel4.LineSpacing = 0F; - this.smartLabel4.Location = new System.Drawing.Point(376, 118); + this.smartLabel4.Location = new System.Drawing.Point(403, 118); this.smartLabel4.Name = "smartLabel4"; - this.smartLabel4.Size = new System.Drawing.Size(62, 23); + this.smartLabel4.Size = new System.Drawing.Size(60, 23); this.smartLabel4.TabIndex = 231; this.smartLabel4.Text = "Under"; this.smartLabel4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -579,9 +640,9 @@ this.smartLabel3.ForeColor = System.Drawing.Color.White; this.smartLabel3.InitVisible = true; this.smartLabel3.LineSpacing = 0F; - this.smartLabel3.Location = new System.Drawing.Point(301, 118); + this.smartLabel3.Location = new System.Drawing.Point(342, 118); this.smartLabel3.Name = "smartLabel3"; - this.smartLabel3.Size = new System.Drawing.Size(74, 23); + this.smartLabel3.Size = new System.Drawing.Size(60, 23); this.smartLabel3.TabIndex = 228; this.smartLabel3.Text = "Grade"; this.smartLabel3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -602,7 +663,7 @@ this.smartLabel2.LineSpacing = 0F; this.smartLabel2.Location = new System.Drawing.Point(240, 118); this.smartLabel2.Name = "smartLabel2"; - this.smartLabel2.Size = new System.Drawing.Size(60, 23); + this.smartLabel2.Size = new System.Drawing.Size(55, 23); this.smartLabel2.TabIndex = 227; this.smartLabel2.Text = "Time"; this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -622,7 +683,7 @@ this.buttonDown.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonDown.GroupID = 0; this.buttonDown.InitVisible = true; - this.buttonDown.Location = new System.Drawing.Point(646, 310); + this.buttonDown.Location = new System.Drawing.Point(652, 310); this.buttonDown.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonDown.Name = "buttonDown"; this.buttonDown.NestedClickEventPrevent = false; @@ -655,7 +716,7 @@ this.buttonUp.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonUp.GroupID = 0; this.buttonUp.InitVisible = true; - this.buttonUp.Location = new System.Drawing.Point(646, 73); + this.buttonUp.Location = new System.Drawing.Point(652, 73); this.buttonUp.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonUp.Name = "buttonUp"; this.buttonUp.NestedClickEventPrevent = false; @@ -689,7 +750,7 @@ this.labelFileName.LineSpacing = 0F; this.labelFileName.Location = new System.Drawing.Point(240, 37); this.labelFileName.Name = "labelFileName"; - this.labelFileName.Size = new System.Drawing.Size(354, 35); + this.labelFileName.Size = new System.Drawing.Size(359, 35); this.labelFileName.TabIndex = 224; this.labelFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; this.labelFileName.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; @@ -708,7 +769,7 @@ this.labelTitleFileName.LineSpacing = 0F; this.labelTitleFileName.Location = new System.Drawing.Point(240, 12); this.labelTitleFileName.Name = "labelTitleFileName"; - this.labelTitleFileName.Size = new System.Drawing.Size(396, 21); + this.labelTitleFileName.Size = new System.Drawing.Size(406, 21); this.labelTitleFileName.TabIndex = 223; this.labelTitleFileName.Text = "파일 이름"; this.labelTitleFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -768,7 +829,7 @@ this.buttonBackup.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold); this.buttonBackup.GroupID = 0; this.buttonBackup.InitVisible = true; - this.buttonBackup.Location = new System.Drawing.Point(646, 12); + this.buttonBackup.Location = new System.Drawing.Point(652, 12); this.buttonBackup.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonBackup.Name = "buttonBackup"; this.buttonBackup.NestedClickEventPrevent = false; @@ -835,6 +896,8 @@ private SmartX.SmartLabel labelFind; private SmartX.SmartListBox listBoxPass; private SmartX.SmartLabel smartLabel1; + private SmartX.SmartLabel smartLabel7; + private SmartX.SmartListBox listBoxNo; } } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.cs index ef99c7f..7ef0229 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.cs @@ -97,7 +97,7 @@ namespace ITC81DB_0H.Controls { this.labelTitleFileList.Text = "파일 목록"; this.labelTitleFileName.Text = "파일 이름"; - this.labelTitleFind.Text = "Search line"; + this.labelTitleFind.Text = "데이터 검색(Line)"; } } private void DefaultSetting() @@ -245,6 +245,17 @@ namespace ITC81DB_0H.Controls } } + private void SearchLineEnabled(bool bValue) + { + if (bValue == false) + this.labelFind.BackColor = Color.Gray; + else + this.labelFind.BackColor = Color.White; + + this.labelFind.Enabled = bValue; + this.buttonFind.Enabled = bValue; + } + public void ClearData() { this.CollectionData.Clear(); @@ -253,7 +264,7 @@ namespace ITC81DB_0H.Controls { this.listBoxLog.ClearAll(); } - + private void ListBoxScrollUp(int value) { if (this.CurrentCount == ListBoxLineCount || (this.CurrentCount < ListBoxLineCount && this.CurrentCount == this.TotalCount) @@ -328,7 +339,7 @@ namespace ITC81DB_0H.Controls this.labelTotalIndex.Text = this.TotalCount.ToString(); this.labelCurrentIndex.Text = this.CurrentCount.ToString(); } - + public void LoadDatas(string fullFilePath) { // 맨 끝 ListBoxLineCount 만큼의 데이터 Load @@ -369,14 +380,18 @@ namespace ITC81DB_0H.Controls this.CurrentCount = this.TotalCount; + if (this.TotalCount < ListBoxLineCount) + this.SearchLineEnabled(false); + else + this.SearchLineEnabled(true); + this.labelFind.Text = this.CurrentCount.ToString(); + this.UpdateData(startIndex, endIndex); // File Name string[] data = fullFilePath.Split('\\'); this.labelFileName.Text = data[data.Length - 1]; - - this.UpdateData(startIndex, endIndex); - + this.ParentForm.SplashFinish(); this.Enabled = true; @@ -450,7 +465,7 @@ namespace ITC81DB_0H.Controls //{ // var node = e.Node; // int count = node.Nodes.Count; - + // for (int i = 0; i < count; i++) // node.Nodes[i].Checked = node.Checked; //} @@ -491,6 +506,50 @@ namespace ITC81DB_0H.Controls else { this.labelFind.Text = myKeyPad.StringValue; + + if (this.labelFind.Text == "" || this.labelFind.Text == null || this.listBoxLog.ItemCount == 0) + return; + + int startIndex = 0, endIndex = 0; + int index = int.Parse(this.labelFind.Text); + + try + { + this.ClearData(); + this.ClearListBox(); + + if (this.TotalCount > ListBoxLineCount) + { + if (index - ListBoxLineCount < 0) + { + startIndex = 0 + 1; + endIndex = ListBoxLineCount + 1; + + this.CurrentCount = ListBoxLineCount; + } + else + { + startIndex = index - ListBoxLineCount; + endIndex = index; + + this.CurrentCount = index; + } + } + else + { + startIndex = 0 + 1; + endIndex = this.TotalCount + 1; + + this.CurrentCount = this.TotalCount; + } + + this.UpdateData(startIndex, endIndex); + } + catch + { + DialogFormMessage myMsg = new DialogFormMessage(16, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } } } } @@ -544,7 +603,6 @@ namespace ITC81DB_0H.Controls private void buttonBackup_Click(object sender, EventArgs e) { this.FileClose(); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.DataBackup, "Others"); this.ParentForm.Backup(Define.E_DataType.Others, this.treeView); } diff --git a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.designer.cs b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.designer.cs index dc81b1e..1d4abd2 100644 --- a/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.designer.cs +++ b/ITC81DB_0H/Controls/CenterLog/ControlCenterLogOthers.designer.cs @@ -99,7 +99,7 @@ this.labelTitleFind.LineSpacing = 0F; this.labelTitleFind.Location = new System.Drawing.Point(254, 78); this.labelTitleFind.Name = "labelTitleFind"; - this.labelTitleFind.Size = new System.Drawing.Size(159, 34); + this.labelTitleFind.Size = new System.Drawing.Size(164, 34); this.labelTitleFind.TabIndex = 251; this.labelTitleFind.Text = "데이터 찾기(Line)"; this.labelTitleFind.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -118,7 +118,7 @@ this.labelFind.ForeColor = System.Drawing.Color.Black; this.labelFind.InitVisible = true; this.labelFind.LineSpacing = 0F; - this.labelFind.Location = new System.Drawing.Point(419, 77); + this.labelFind.Location = new System.Drawing.Point(424, 77); this.labelFind.Name = "labelFind"; this.labelFind.Size = new System.Drawing.Size(175, 35); this.labelFind.TabIndex = 250; @@ -139,7 +139,7 @@ this.buttonFind.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.DownImage"))); this.buttonFind.GroupID = 0; this.buttonFind.InitVisible = true; - this.buttonFind.Location = new System.Drawing.Point(600, 77); + this.buttonFind.Location = new System.Drawing.Point(605, 77); this.buttonFind.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonFind.Name = "buttonFind"; this.buttonFind.NestedClickEventPrevent = false; @@ -156,6 +156,7 @@ this.buttonFind.TextLocation = new System.Drawing.Point(0, 0); this.buttonFind.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; this.buttonFind.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonFind.UpImage"))); + this.buttonFind.Visible = false; this.buttonFind.Click += new System.EventHandler(this.buttonFind_Click); // // buttonRead @@ -170,7 +171,7 @@ this.buttonRead.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonRead.DownImage"))); this.buttonRead.GroupID = 0; this.buttonRead.InitVisible = true; - this.buttonRead.Location = new System.Drawing.Point(600, 37); + this.buttonRead.Location = new System.Drawing.Point(605, 37); this.buttonRead.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonRead.Name = "buttonRead"; this.buttonRead.NestedClickEventPrevent = false; @@ -203,7 +204,7 @@ this.smartLabel4.LineSpacing = 0F; this.smartLabel4.Location = new System.Drawing.Point(254, 118); this.smartLabel4.Name = "smartLabel4"; - this.smartLabel4.Size = new System.Drawing.Size(387, 23); + this.smartLabel4.Size = new System.Drawing.Size(392, 23); this.smartLabel4.TabIndex = 242; this.smartLabel4.Text = "Detail"; this.smartLabel4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; @@ -225,7 +226,7 @@ this.listBoxLog.InitVisible = true; this.listBoxLog.ItemAddOrder = SmartX.SmartListBox.ITEMADDORDERS.BOTTOMADD; this.listBoxLog.ItemOffsetGap = 8; - this.listBoxLog.ItemOffsetX = 2; + this.listBoxLog.ItemOffsetX = 5; this.listBoxLog.ItemOffsetY = 0; this.listBoxLog.Location = new System.Drawing.Point(254, 141); this.listBoxLog.MouseMoveEventSpace = 3; @@ -241,7 +242,7 @@ this.listBoxLog.SeparationLineStyle = SmartX.SmartListBox.SEPARATIONLINETYPES.FixedSingle; this.listBoxLog.SeparationlineVisibleBottom = true; this.listBoxLog.SeparationlineVisibleTop = true; - this.listBoxLog.Size = new System.Drawing.Size(387, 318); + this.listBoxLog.Size = new System.Drawing.Size(392, 318); this.listBoxLog.TabIndex = 241; this.listBoxLog.Text = "smartListBox1"; this.listBoxLog.Click += new System.EventHandler(this.listBox_Click); @@ -266,7 +267,7 @@ this.labelTotalIndex.ForeColor = System.Drawing.Color.White; this.labelTotalIndex.InitVisible = true; this.labelTotalIndex.LineSpacing = 0F; - this.labelTotalIndex.Location = new System.Drawing.Point(646, 273); + this.labelTotalIndex.Location = new System.Drawing.Point(652, 273); this.labelTotalIndex.Name = "labelTotalIndex"; this.labelTotalIndex.Size = new System.Drawing.Size(50, 21); this.labelTotalIndex.TabIndex = 239; @@ -286,7 +287,7 @@ this.labelCurrentIndex.ForeColor = System.Drawing.Color.White; this.labelCurrentIndex.InitVisible = true; this.labelCurrentIndex.LineSpacing = 0F; - this.labelCurrentIndex.Location = new System.Drawing.Point(646, 238); + this.labelCurrentIndex.Location = new System.Drawing.Point(652, 238); this.labelCurrentIndex.Name = "labelCurrentIndex"; this.labelCurrentIndex.Size = new System.Drawing.Size(50, 21); this.labelCurrentIndex.TabIndex = 238; @@ -304,7 +305,7 @@ this.smartSeparatorLine1.Line2Visible = true; this.smartSeparatorLine1.Line2Width = 1F; this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Horizontal; - this.smartSeparatorLine1.Location = new System.Drawing.Point(646, 265); + this.smartSeparatorLine1.Location = new System.Drawing.Point(652, 265); this.smartSeparatorLine1.Name = "smartSeparatorLine1"; this.smartSeparatorLine1.Size = new System.Drawing.Size(50, 2); this.smartSeparatorLine1.TabIndex = 237; @@ -323,7 +324,7 @@ this.buttonDown.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonDown.GroupID = 0; this.buttonDown.InitVisible = true; - this.buttonDown.Location = new System.Drawing.Point(646, 310); + this.buttonDown.Location = new System.Drawing.Point(652, 310); this.buttonDown.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonDown.Name = "buttonDown"; this.buttonDown.NestedClickEventPrevent = false; @@ -356,7 +357,7 @@ this.buttonUp.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Regular); this.buttonUp.GroupID = 0; this.buttonUp.InitVisible = true; - this.buttonUp.Location = new System.Drawing.Point(646, 73); + this.buttonUp.Location = new System.Drawing.Point(652, 73); this.buttonUp.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonUp.Name = "buttonUp"; this.buttonUp.NestedClickEventPrevent = false; @@ -390,7 +391,7 @@ this.labelFileName.LineSpacing = 0F; this.labelFileName.Location = new System.Drawing.Point(254, 37); this.labelFileName.Name = "labelFileName"; - this.labelFileName.Size = new System.Drawing.Size(340, 35); + this.labelFileName.Size = new System.Drawing.Size(345, 35); this.labelFileName.TabIndex = 224; this.labelFileName.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; this.labelFileName.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; @@ -469,7 +470,7 @@ this.buttonBackup.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold); this.buttonBackup.GroupID = 0; this.buttonBackup.InitVisible = true; - this.buttonBackup.Location = new System.Drawing.Point(646, 12); + this.buttonBackup.Location = new System.Drawing.Point(652, 12); this.buttonBackup.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonBackup.Name = "buttonBackup"; this.buttonBackup.NestedClickEventPrevent = false; diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs index 0ccf1c9..174b9a9 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs @@ -649,7 +649,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut1Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput1Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut1Mode, "", before, after); } private void labelSorter1DelayTime_Click(object sender, EventArgs e) { @@ -677,7 +677,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut1DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput1Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut1Delay, "", before, after); } } } @@ -707,7 +707,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut1RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput1Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut1Run, "", before, after); } } } @@ -733,7 +733,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut2Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput2Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut2Mode, "", before, after); } private void labelSorter2DelayTime_Click(object sender, EventArgs e) { @@ -761,7 +761,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut2DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput2Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut2Delay, "", before, after); } } } @@ -791,7 +791,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut2RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput2Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut2Run, "", before, after); } } } @@ -817,7 +817,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut3Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput3Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut3Mode, "", before, after); } private void labelSorter3DelayTime_Click(object sender, EventArgs e) { @@ -845,7 +845,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut3DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput3Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut3Delay, "", before, after); } } } @@ -875,7 +875,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut3RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput3Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut3Run, "", before, after); } } } @@ -901,7 +901,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut4Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput4Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut4Mode, "", before, after); } private void labelSorter4DelayTime_Click(object sender, EventArgs e) { @@ -929,7 +929,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut4DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput4Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut4Delay, "", before, after); } } } @@ -959,7 +959,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut4RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput4Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut4Run, "", before, after); } } } @@ -984,7 +984,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut5Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput5Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut5Mode, "", before, after); } private void labelSorter5DelayTime_Click(object sender, EventArgs e) { @@ -1012,7 +1012,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut5DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput5Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut5Delay, "", before, after); } } } @@ -1042,7 +1042,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut5RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput5Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut5Run, "", before, after); } } } @@ -1067,7 +1067,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut6Mode, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput6Mode, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut6Mode, "", before, after); } private void labelSorter6DelayTime_Click(object sender, EventArgs e) { @@ -1095,7 +1095,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut6DelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput6Delay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut6Delay, "", before, after); } } } @@ -1125,7 +1125,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalOut6RunTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOutput6Operation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ExOut6Run, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemJudgmentManual.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemJudgmentManual.cs index 7c1d68d..d25683e 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemJudgmentManual.cs +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemJudgmentManual.cs @@ -480,7 +480,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementFilter, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeFilter, "", before, after); } } } @@ -519,13 +519,13 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.DoubleDelayTime, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDoubleDelay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDoubleDelay, "", before, after); } this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDelay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDelay, "", before, after); } } } @@ -565,7 +565,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDoubleDelay, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDoubleDelay, "", before, after); } } } @@ -597,7 +597,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementNumber, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeNumber, "", before, after); } } } @@ -641,7 +641,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, "0", CommunicationAddress.BLDCMotorSpeed, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementSpeed, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeSpeed, "", before, after); } } } @@ -675,7 +675,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDescendDelayTime, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDesDelay, "", before, after); } } } @@ -707,7 +707,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementAscendDelayTime, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeAscDelay, "", before, after); } } } @@ -742,7 +742,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgementDynamicCorrection, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.JudgeDynamic, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemSorterSetting.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemSorterSetting.cs index 67a415c..500e979 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemSorterSetting.cs +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemSorterSetting.cs @@ -467,17 +467,17 @@ namespace ITC81DB_0H.Controls after2Run = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2RunTime.ToString(); if (before1Mode != after1Mode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterAMode, "", before1Mode, after1Mode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorAMode, "", before1Mode, after1Mode); if (before1Delay != after1Delay) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterADelay, "", before1Delay, after1Delay); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorADelay, "", before1Delay, after1Delay); if (before1Run != after1Run) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterAOperation, "", before1Run, after1Run); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorARun, "", before1Run, after1Run); if (before2Mode != after2Mode) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterBMode, "", before2Mode, after2Mode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBMode, "", before2Mode, after2Mode); if (before2Delay != after2Delay) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterBDelay, "", before2Delay, after2Delay); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBDelay, "", before2Delay, after2Delay); if (before2Run != after2Run) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorterBOperation, "", before2Run, after2Run); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBRun, "", before2Run, after2Run); StringBuilder sb = new StringBuilder(); sb.Append(Helper.StringZeroFillDigits4(this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1Mode.ToString())); @@ -493,8 +493,11 @@ namespace ITC81DB_0H.Controls private void radioButtonDoubleEntry_Click(object sender, EventArgs e) { + string before = "", after = ""; string value = ""; + before = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterDoubleEntry; + if (this.radioButtonDoubleEntryNone.Checked == true) value = "0000"; else if (this.radioButtonDoubleEntrySorterA.Checked == true) @@ -504,14 +507,20 @@ namespace ITC81DB_0H.Controls else value = "0000"; - this.ParentForm.ParentForm.CurrentSystemParameter1.SorterDoubleEntry = value; + after = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterDoubleEntry = value; this.ParentForm.ParentForm.SaveSystemParameter1File(this.ParentForm.ParentForm.CurrentSystemParameter1); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.DoubleEnter, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorDoubleEntry, "", before, after); } private void radioButtonExternalInput_Click(object sender, EventArgs e) { + string before = "", after = ""; string value = ""; + before = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterExternalNgInput; + if (this.radioButtonExternalInputNone.Checked == true) value = "0000"; else if (this.radioButtonExternalInputSorterA.Checked == true) @@ -521,14 +530,20 @@ namespace ITC81DB_0H.Controls else value = "0000"; - this.ParentForm.ParentForm.CurrentSystemParameter1.SorterExternalNgInput = value; + after = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterExternalNgInput = value; this.ParentForm.ParentForm.SaveSystemParameter1File(this.ParentForm.ParentForm.CurrentSystemParameter1); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalInput, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorExternalInput, "", before, after); } private void radioButtonEtcNg_Click(object sender, EventArgs e) { + string before = "", after = ""; string value = ""; + before = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterEtcNg; + if (this.radioButtonEtcNgNone.Checked == true) value = "0000"; else if (this.radioButtonEtcNgSorterA.Checked == true) @@ -538,9 +553,12 @@ namespace ITC81DB_0H.Controls else value = "0000"; - this.ParentForm.ParentForm.CurrentSystemParameter1.SorterEtcNg = value; + after = this.ParentForm.ParentForm.CurrentSystemParameter1.SorterEtcNg = value; this.ParentForm.ParentForm.SaveSystemParameter1File(this.ParentForm.ParentForm.CurrentSystemParameter1); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ExternalNG, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorExternalNG, "", before, after); } private void comboBoxSorterA_SelectedIndexChanged(object sender, EventArgs e) diff --git a/ITC81DB_0H/Controls/Etc/ControlCenterSystemAutoZero.cs b/ITC81DB_0H/Controls/Etc/ControlCenterSystemAutoZero.cs index c065f73..c5b969c 100644 --- a/ITC81DB_0H/Controls/Etc/ControlCenterSystemAutoZero.cs +++ b/ITC81DB_0H/Controls/Etc/ControlCenterSystemAutoZero.cs @@ -149,7 +149,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.AutoZeroIsUsing, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.AutoZeroIsUsing, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Auto0IsUsing, "", before, after); } private void labelPlusRange_Click(object sender, EventArgs e) { @@ -177,7 +177,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.AutoZeroPlusRange, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.AutoZeroRangePlus, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Auto0RangePlus, "", before, after); } } } @@ -207,7 +207,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.AutoZeroMinusRange, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.AutoZeroRangeMinus, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Auto0RangeMinus, "", before, after); } } } @@ -225,7 +225,7 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.AutoZeroVariate, value); if (before != after) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.AutoZeroVariation, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Auto0Variation, "", before, after); } #endregion } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiEthernetLocalIP.cs b/ITC81DB_0H/Controls/Etc/ControlConfiEthernetLocalIP.cs index c3fceb4..5212f5f 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiEthernetLocalIP.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiEthernetLocalIP.cs @@ -253,11 +253,11 @@ namespace ITC81DB_0H.Controls this.ParentForm.ParentForm.EthernetClientConnect(); if (beforeIP != afterIP) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalIPAddress, "", beforeIP, afterIP); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalIPAddress, "", beforeIP, afterIP); if (beforeSubnetMask != afterSubnetMask) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalSubnetMask, "", beforeSubnetMask, afterSubnetMask); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalSubnetMask, "", beforeSubnetMask, afterSubnetMask); if (beforeGateway != afterGateway) - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalGateway, "", beforeGateway, afterGateway); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalGateway, "", beforeGateway, afterGateway); } private void labelLocalIP1_Click(object sender, EventArgs e) @@ -573,7 +573,7 @@ namespace ITC81DB_0H.Controls else after = "DHCP"; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.EthernetLocalIPConfiguration, "", before, after); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TCPLocalIPConfig, "", before, after); } else { diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.cs b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.cs new file mode 100644 index 0000000..33020f3 --- /dev/null +++ b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.cs @@ -0,0 +1,135 @@ +using System; +using System.Linq; +using System.Collections.ObjectModel; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Windows.Forms; + +using ITC81DB_2H_ImageDll; +using ITC81DB_0H.DialogForms; +using ITC81DB_0H.Forms; +using ITC81DB_2H.Datastore; + +namespace ITC81DB_0H +{ + public partial class ControlConfiMULTiJET : UserControl + { + #region Field + private FormMenu m_ParentForm; + #endregion + + #region Constructor + public ControlConfiMULTiJET(FormMenu parent) + { + InitializeComponent(); + + this.ParentForm = parent; + + this.InitializeDesign(); + this.DefaultSetting(); + } + #endregion + + #region Property + public FormMenu ParentForm + { + get { return this.m_ParentForm; } + private set { this.m_ParentForm = value; } + } + #endregion + + #region Method + public void InitializeDesign() + { + Class1 images = new Class1(); + + if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.English) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engBackgroundBottomAddOn)); + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.chnBackgroundBottomAddOn)); + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Czech) + { + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.rusBackgroundBottomAddOn)); + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.gerBackgroundBottomAddOn)); + } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engBackgroundBottomAddOn)); + } + else + { + this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.korBackgroundBottomAddOn)); + } + } + private void DefaultSetting() + { + } + + public void DisplayRefresh(Define.E_MenuBottomConfiguration menu) + { + if (menu == Define.E_MenuBottomConfiguration.SerialCOM1) + { + this.labelSlaveAddress.Text = this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM1.ToString(); + } + else if (menu == Define.E_MenuBottomConfiguration.SerialCOM3) + { + this.labelSlaveAddress.Text = this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM3.ToString(); + } + else if (menu == Define.E_MenuBottomConfiguration.SerialCOM4) + { + this.labelSlaveAddress.Text = this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM4.ToString(); + } + } + #endregion + + #region Event Handler + private void labelSlaveAddress_Click(object sender, EventArgs e) + { + string value = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSlaveAddress.Text, 3, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.IntValue < 1 || myKeyPad.IntValue > 255) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else + { + this.labelSlaveAddress.Text = myKeyPad.StringValue; + + Define.E_MenuBottomConfiguration temp = this.ParentForm.CurrentConfigurationMenu(); + + if (temp == Define.E_MenuBottomConfiguration.SerialCOM1) + this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM1 = myKeyPad.IntValue; + else if (temp == Define.E_MenuBottomConfiguration.SerialCOM3) + this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM3 = myKeyPad.IntValue; + else if (temp == Define.E_MenuBottomConfiguration.SerialCOM4) + this.ParentForm.ParentForm.SystemConfig3.MULTiJETSlaveAddressCOM4 = myKeyPad.IntValue; + + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + } + } + } + #endregion + + } +} diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.designer.cs b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.designer.cs new file mode 100644 index 0000000..871c7c9 --- /dev/null +++ b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.designer.cs @@ -0,0 +1,116 @@ +namespace ITC81DB_0H +{ + partial class ControlConfiMULTiJET + { + /// + /// 필수 디자이너 변수입니다. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 사용 중인 모든 리소스를 정리합니다. + /// + /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 구성 요소 디자이너에서 생성한 코드 + + /// + /// 디자이너 지원에 필요한 메서드입니다. + /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlConfiMULTiJET)); + this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.labelSlaveAddress = new SmartX.SmartLabel(); + this.labelTitleSlaveAddress = new SmartX.SmartLabel(); + this.smartGroupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // smartGroupBox1 + // + this.smartGroupBox1.BackPictureBox = null; + this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.labelSlaveAddress); + this.smartGroupBox1.Controls.Add(this.labelTitleSlaveAddress); + this.smartGroupBox1.FrameLineColor1 = System.Drawing.Color.Black; + this.smartGroupBox1.FrameLineColor2 = System.Drawing.Color.Black; + this.smartGroupBox1.FrameLineThickness = 1; + this.smartGroupBox1.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.None; + this.smartGroupBox1.Image = ((System.Drawing.Image)(resources.GetObject("smartGroupBox1.Image"))); + this.smartGroupBox1.InitVisible = true; + this.smartGroupBox1.Location = new System.Drawing.Point(0, 0); + this.smartGroupBox1.Name = "smartGroupBox1"; + this.smartGroupBox1.RoundRadius = 5; + this.smartGroupBox1.Size = new System.Drawing.Size(710, 253); + this.smartGroupBox1.TabIndex = 6; + this.smartGroupBox1.Text = "smartGroupBox1"; + this.smartGroupBox1.TextColor = System.Drawing.Color.Black; + // + // labelSlaveAddress + // + this.labelSlaveAddress.BackColor = System.Drawing.SystemColors.Window; + this.labelSlaveAddress.BackPictureBox = null; + this.labelSlaveAddress.BackPictureBox1 = null; + this.labelSlaveAddress.BackPictureBox2 = null; + this.labelSlaveAddress.BorderColor = System.Drawing.Color.Black; + this.labelSlaveAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelSlaveAddress.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); + this.labelSlaveAddress.InitVisible = true; + this.labelSlaveAddress.LineSpacing = 0F; + this.labelSlaveAddress.Location = new System.Drawing.Point(435, 16); + this.labelSlaveAddress.Name = "labelSlaveAddress"; + this.labelSlaveAddress.Size = new System.Drawing.Size(82, 28); + this.labelSlaveAddress.TabIndex = 135; + this.labelSlaveAddress.Text = "58"; + this.labelSlaveAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelSlaveAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelSlaveAddress.Wordwrap = false; + this.labelSlaveAddress.Click += new System.EventHandler(this.labelSlaveAddress_Click); + // + // labelTitleSlaveAddress + // + this.labelTitleSlaveAddress.BackPictureBox1 = null; + this.labelTitleSlaveAddress.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleSlaveAddress.BorderColor = System.Drawing.Color.Black; + this.labelTitleSlaveAddress.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleSlaveAddress.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleSlaveAddress.ForeColor = System.Drawing.Color.White; + this.labelTitleSlaveAddress.InitVisible = true; + this.labelTitleSlaveAddress.LineSpacing = 0F; + this.labelTitleSlaveAddress.Location = new System.Drawing.Point(117, 16); + this.labelTitleSlaveAddress.Name = "labelTitleSlaveAddress"; + this.labelTitleSlaveAddress.Size = new System.Drawing.Size(312, 28); + this.labelTitleSlaveAddress.TabIndex = 134; + this.labelTitleSlaveAddress.Text = "Slave Address"; + this.labelTitleSlaveAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.labelTitleSlaveAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleSlaveAddress.Wordwrap = false; + // + // ControlConfiMULTiJET + // + this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; + this.Controls.Add(this.smartGroupBox1); + this.Name = "ControlConfiMULTiJET"; + this.Size = new System.Drawing.Size(710, 253); + this.smartGroupBox1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private SmartX.SmartGroupBox smartGroupBox1; + public SmartX.SmartLabel labelSlaveAddress; + private SmartX.SmartLabel labelTitleSlaveAddress; + } +} diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.resx b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.resx new file mode 100644 index 0000000..7e32bd5 --- /dev/null +++ b/ITC81DB_0H/Controls/Etc/ControlConfiMULTiJET.resx @@ -0,0 +1,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + + + + WEBPAD + + \ No newline at end of file diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs index 15c6276..1f7064c 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs @@ -101,11 +101,11 @@ namespace ITC81DB_0H.Controls this.comboBoxRole.Enabled = false; this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction = 0; if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM1) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM1 = 1; + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM1 = 1; else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM3) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM3 = 1; + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3 = 1; else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM4) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM4 = 1; + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4 = 1; this.labelSlaveID.Text = "1"; this.labelSlaveID.Enabled = false; this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); @@ -129,17 +129,17 @@ namespace ITC81DB_0H.Controls this.StartAddressControlVisible(true); if (menu == Define.E_MenuBottomConfiguration.SerialCOM1) { - this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM1.ToString(); + this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM1.ToString(); this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1.ToString(); } else if (menu == Define.E_MenuBottomConfiguration.SerialCOM3) { - this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM3.ToString(); + this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3.ToString(); this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3.ToString(); } else if (menu == Define.E_MenuBottomConfiguration.SerialCOM4) { - this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM4.ToString(); + this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4.ToString(); this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4.ToString(); } } @@ -193,7 +193,7 @@ namespace ITC81DB_0H.Controls this.comboBoxRole.SelectedIndexChanged -= new EventHandler(this.comboBoxRole_SelectedIndexChanged); if (menu == Define.E_MenuBottomConfiguration.Ethernet) { - if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f16_OPC) { this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction = (int)Define.E_ModbusFunction._04_ReadInputRegister; this.comboBoxRole.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction; @@ -218,9 +218,9 @@ namespace ITC81DB_0H.Controls } else { - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_EthernetMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_EthernetMode.f16_OPC - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_EthernetMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f16_OPC + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f16_OPC) { this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction = (int)Define.E_ModbusFunction._04_ReadInputRegister; this.comboBoxRole.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction; @@ -247,6 +247,8 @@ namespace ITC81DB_0H.Controls // Slave ID는 Modbus TCP에서는 0x01로 고정 private void labelSlaveID_Click(object sender, EventArgs e) { + string before = "", after = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSlaveID.Text, 3, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -262,11 +264,32 @@ namespace ITC81DB_0H.Controls this.labelSlaveID.Text = myKeyPad.StringValue; if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM1) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM1 = myKeyPad.IntValue; + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM1.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM1 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_SlaveID, "COM1", before, after); + } else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM3) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM3 = myKeyPad.IntValue; + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_SlaveID, "COM3", before, after); + } else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM4) - this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM4 = myKeyPad.IntValue; + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_SlaveID, "COM4", before, after); + } this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); } @@ -275,6 +298,8 @@ namespace ITC81DB_0H.Controls private void labelStartAddress_Click(object sender, EventArgs e) { + string before = "", after = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelStartAddress.Text, 5, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -290,13 +315,41 @@ namespace ITC81DB_0H.Controls this.labelStartAddress.Text = myKeyPad.StringValue; if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM1) + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1.ToString(); this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "COM1", before, after); + } else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM3) + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3.ToString(); this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "COM3", before, after); + } else if (this.ParentForm.CurrentConfigurationMenu() == Define.E_MenuBottomConfiguration.SerialCOM4) + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4.ToString(); this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4 = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "COM4", before, after); + } else + { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPStartAddress.ToString(); this.ParentForm.ParentForm.SystemConfig2.ModbusTCPStartAddress = myKeyPad.IntValue; + after = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_StartAddr, "TCP", before, after); + } this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); } @@ -305,25 +358,41 @@ namespace ITC81DB_0H.Controls private void comboBoxRole_SelectedIndexChanged(object sender, EventArgs e) { + string before = "", after = ""; + Define.E_MenuBottomConfiguration menu = this.ParentForm.CurrentConfigurationMenu(); if (menu == Define.E_MenuBottomConfiguration.Ethernet) { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction = this.comboBoxRole.SelectedIndex; if (this.comboBoxRole.SelectedIndex == (int)Define.E_ModbusFunction._04_ReadInputRegister) this.ModbusTCP04Addon(); else this.ModbusTCP16Addon(); + + after = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction.ToString(); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_Role, "TCP", before, after); } else { + before = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction.ToString(); + this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction = this.comboBoxRole.SelectedIndex; if (this.comboBoxRole.SelectedIndex == (int)Define.E_ModbusFunction._04_ReadInputRegister) this.ModbusRTU04Addon(); else this.ModbusRTU16Addon(menu); + + after = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction.ToString(); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_Role, "RTU", before, after); } this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); @@ -331,6 +400,8 @@ namespace ITC81DB_0H.Controls private void labelReadTimeout_Click(object sender, EventArgs e) { + string before = "", after = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelReadTimeout.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -343,7 +414,11 @@ namespace ITC81DB_0H.Controls } else { - this.labelReadTimeout.Text = myKeyPad.StringValue; + before = this.labelReadTimeout.Text; + after = this.labelReadTimeout.Text = myKeyPad.StringValue; + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.Mod_Timeout, "", before, after); // 코드 완성 안됨. 추후 사용하게 되면 추가 작업해야함 } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs index eca9f0a..0269a18 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs @@ -272,6 +272,8 @@ namespace ITC81DB_0H.Controls } public void DisplayRefresh(SystemStatus status) { + this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplay = Define.E_DisplayStore.ConfiOptionBoard1; + int temp = this.ParentForm.ParentForm.SystemConfig1.ProductNumber; this.ParentForm.ParentForm.LoadProductFile(ref this.CurrentProductItem, temp - 1); @@ -283,6 +285,10 @@ namespace ITC81DB_0H.Controls private void labelSampleCount_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSampleCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -298,12 +304,15 @@ namespace ITC81DB_0H.Controls this.labelSampleCount.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelSampleCount.Text); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount = myKeyPad.StringValue; + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount = myKeyPad.StringValue; this.ParentForm.ParentForm.ChildFormMainDisplay.CurrentBottomMenuControlEnable(); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1SamplingCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1SampleCount, "", before, after); } } } @@ -311,6 +320,10 @@ namespace ITC81DB_0H.Controls private void labelDelayCount_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelDelayCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -326,10 +339,13 @@ namespace ITC81DB_0H.Controls this.labelDelayCount.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelDelayCount.Text); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount = myKeyPad.StringValue; + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount = myKeyPad.StringValue; this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1DelayCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1DelayCount, "", before, after); } } } @@ -337,7 +353,10 @@ namespace ITC81DB_0H.Controls private void radioButtonPulseWidth_Click(object sender, EventArgs e) { int temp = 0; - string value = ""; + string value = ""; string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1PulseWidth; + SmartX.SmartRadioButton rb = sender as SmartX.SmartRadioButton; if (rb == null) @@ -364,11 +383,14 @@ namespace ITC81DB_0H.Controls break; } - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1PulseWidth = temp.ToString(); + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1PulseWidth = temp.ToString(); value = Helper.StringZeroFillDigits4(temp.ToString()); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1PulseWidth, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1PulseWidth, "", before, after); } private void checkBoxUse_Click(object sender, EventArgs e) @@ -394,6 +416,8 @@ namespace ITC81DB_0H.Controls sValue = Helper.StringToDecimalPlaces(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces); if (this.labelLowerLimit.Text != sValue) this.labelLowerLimit.Text = sValue; + + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.OPT1Using, "ON"); } else { @@ -414,6 +438,8 @@ namespace ITC81DB_0H.Controls sValue = Helper.StringToDecimalPlaces(this.ParentForm.ParentForm.CurrentProductItem.UnderRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces); if (this.labelLowerLimit.Text != sValue) this.labelLowerLimit.Text = sValue; + + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.OPT1Using, "OFF"); } this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange = this.labelUpperLimit.Text.Replace(".", ""); @@ -435,8 +461,11 @@ namespace ITC81DB_0H.Controls private void labelUpperLimit_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; int digit = 0; + before = this.labelUpperLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -460,7 +489,7 @@ namespace ITC81DB_0H.Controls } else { - this.labelUpperLimit.Text = myKeyPad.StringValue; + after = this.labelUpperLimit.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CurrentFeedbackItem.OverRangeDeviation = this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayFeedback.CaculateDeviation(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRangeInt); @@ -468,6 +497,9 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1OverRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1OverRange, "", before, after); } } } @@ -475,8 +507,11 @@ namespace ITC81DB_0H.Controls private void labelLowerLimit_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; int digit = 0; + before = this.labelLowerLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -500,7 +535,7 @@ namespace ITC81DB_0H.Controls } else { - this.labelLowerLimit.Text = myKeyPad.StringValue; + after = this.labelLowerLimit.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CurrentFeedbackItem.UnderRangeDeviation = this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayFeedback.CaculateDeviation(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRangeInt); @@ -508,6 +543,9 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1UnderRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1UnderRange, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs index b677103..f8c2c31 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.Designer.cs @@ -30,33 +30,53 @@ { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlConfiOptionBoard2)); this.smartGroupBox1 = new SmartX.SmartGroupBox(); + this.labelTitleHelp = new SmartX.SmartLabel(); + this.smartLabel8 = new SmartX.SmartLabel(); + this.smartLabel7 = new SmartX.SmartLabel(); + this.labelZeroZoneCount = new SmartX.SmartLabel(); + this.labelTitleZeroZoneCount = new SmartX.SmartLabel(); + this.labelTitleZeroZoneCycle = new SmartX.SmartLabel(); + this.labelTitleOutputPort = new SmartX.SmartLabel(); + this.labelTitleSetting = new SmartX.SmartLabel(); + this.labelZeroZoneCycle = new SmartX.SmartLabel(); + this.buttonItemNo = new SmartX.SmartButton(); + this.panel1 = new System.Windows.Forms.Panel(); + this.radioButtonPortNone = new SmartX.SmartRadioButton(); + this.radioButtonPort56 = new SmartX.SmartRadioButton(); + this.radioButtonPort78 = new SmartX.SmartRadioButton(); this.labelHelp5 = new SmartX.SmartLabel(); this.labelHelp4 = new SmartX.SmartLabel(); this.labelHelp3 = new SmartX.SmartLabel(); this.labelHelp2 = new SmartX.SmartLabel(); this.labelHelp1 = new SmartX.SmartLabel(); - this.radioButtonPort78 = new SmartX.SmartRadioButton(); - this.radioButtonPort56 = new SmartX.SmartRadioButton(); - this.radioButtonPortNone = new SmartX.SmartRadioButton(); this.labelDelayTime1 = new SmartX.SmartLabel(); this.labelTitleDelayTime1 = new SmartX.SmartLabel(); this.labelDelayTime2 = new SmartX.SmartLabel(); this.labelTitleDelayTime2 = new SmartX.SmartLabel(); this.smartGroupBox1.SuspendLayout(); + this.panel1.SuspendLayout(); this.SuspendLayout(); // // smartGroupBox1 // this.smartGroupBox1.BackPictureBox = null; this.smartGroupBox1.BackPictureBox1 = null; + this.smartGroupBox1.Controls.Add(this.labelTitleHelp); + this.smartGroupBox1.Controls.Add(this.smartLabel8); + this.smartGroupBox1.Controls.Add(this.smartLabel7); + this.smartGroupBox1.Controls.Add(this.labelZeroZoneCount); + this.smartGroupBox1.Controls.Add(this.labelTitleZeroZoneCount); + this.smartGroupBox1.Controls.Add(this.labelTitleZeroZoneCycle); + this.smartGroupBox1.Controls.Add(this.labelTitleOutputPort); + this.smartGroupBox1.Controls.Add(this.labelTitleSetting); + this.smartGroupBox1.Controls.Add(this.labelZeroZoneCycle); + this.smartGroupBox1.Controls.Add(this.buttonItemNo); + this.smartGroupBox1.Controls.Add(this.panel1); this.smartGroupBox1.Controls.Add(this.labelHelp5); this.smartGroupBox1.Controls.Add(this.labelHelp4); this.smartGroupBox1.Controls.Add(this.labelHelp3); this.smartGroupBox1.Controls.Add(this.labelHelp2); this.smartGroupBox1.Controls.Add(this.labelHelp1); - this.smartGroupBox1.Controls.Add(this.radioButtonPort78); - this.smartGroupBox1.Controls.Add(this.radioButtonPort56); - this.smartGroupBox1.Controls.Add(this.radioButtonPortNone); this.smartGroupBox1.Controls.Add(this.labelDelayTime1); this.smartGroupBox1.Controls.Add(this.labelTitleDelayTime1); this.smartGroupBox1.Controls.Add(this.labelDelayTime2); @@ -75,6 +95,307 @@ this.smartGroupBox1.Text = "smartGroupBox1"; this.smartGroupBox1.TextColor = System.Drawing.Color.Black; // + // labelTitleHelp + // + this.labelTitleHelp.BackPictureBox1 = null; + this.labelTitleHelp.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleHelp.BorderColor = System.Drawing.Color.Black; + this.labelTitleHelp.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleHelp.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleHelp.ForeColor = System.Drawing.Color.White; + this.labelTitleHelp.InitVisible = true; + this.labelTitleHelp.LineSpacing = 0F; + this.labelTitleHelp.Location = new System.Drawing.Point(18, 311); + this.labelTitleHelp.Name = "labelTitleHelp"; + this.labelTitleHelp.Size = new System.Drawing.Size(82, 30); + this.labelTitleHelp.TabIndex = 196; + this.labelTitleHelp.Text = "도움말"; + this.labelTitleHelp.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleHelp.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleHelp.Wordwrap = false; + // + // smartLabel8 + // + this.smartLabel8.BackPictureBox1 = null; + this.smartLabel8.BackPictureBox2 = this.smartGroupBox1; + this.smartLabel8.BorderColor = System.Drawing.Color.Black; + this.smartLabel8.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.smartLabel8.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel8.ForeColor = System.Drawing.Color.White; + this.smartLabel8.InitVisible = true; + this.smartLabel8.LineSpacing = 0F; + this.smartLabel8.Location = new System.Drawing.Point(633, 151); + this.smartLabel8.Name = "smartLabel8"; + this.smartLabel8.Size = new System.Drawing.Size(56, 26); + this.smartLabel8.TabIndex = 195; + this.smartLabel8.Text = "ea"; + this.smartLabel8.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.smartLabel8.TextVAlign = SmartX.SmartLabel.TextVerAlign.Bottom; + this.smartLabel8.Wordwrap = false; + // + // smartLabel7 + // + this.smartLabel7.BackPictureBox1 = null; + this.smartLabel7.BackPictureBox2 = this.smartGroupBox1; + this.smartLabel7.BorderColor = System.Drawing.Color.Black; + this.smartLabel7.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.smartLabel7.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.smartLabel7.ForeColor = System.Drawing.Color.White; + this.smartLabel7.InitVisible = true; + this.smartLabel7.LineSpacing = 0F; + this.smartLabel7.Location = new System.Drawing.Point(633, 113); + this.smartLabel7.Name = "smartLabel7"; + this.smartLabel7.Size = new System.Drawing.Size(56, 26); + this.smartLabel7.TabIndex = 194; + this.smartLabel7.Text = "sec"; + this.smartLabel7.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; + this.smartLabel7.TextVAlign = SmartX.SmartLabel.TextVerAlign.Bottom; + this.smartLabel7.Wordwrap = false; + // + // labelZeroZoneCount + // + this.labelZeroZoneCount.BackColor = System.Drawing.Color.Black; + this.labelZeroZoneCount.BackPictureBox = null; + this.labelZeroZoneCount.BackPictureBox1 = null; + this.labelZeroZoneCount.BackPictureBox2 = null; + this.labelZeroZoneCount.BorderColor = System.Drawing.Color.Black; + this.labelZeroZoneCount.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelZeroZoneCount.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold); + this.labelZeroZoneCount.ForeColor = System.Drawing.Color.White; + this.labelZeroZoneCount.InitVisible = true; + this.labelZeroZoneCount.LineSpacing = 0F; + this.labelZeroZoneCount.Location = new System.Drawing.Point(477, 151); + this.labelZeroZoneCount.Name = "labelZeroZoneCount"; + this.labelZeroZoneCount.Size = new System.Drawing.Size(150, 30); + this.labelZeroZoneCount.TabIndex = 193; + this.labelZeroZoneCount.Text = "100"; + this.labelZeroZoneCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelZeroZoneCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelZeroZoneCount.Wordwrap = false; + this.labelZeroZoneCount.Click += new System.EventHandler(this.labelZeroZoneCount_Click); + // + // labelTitleZeroZoneCount + // + this.labelTitleZeroZoneCount.BackPictureBox1 = null; + this.labelTitleZeroZoneCount.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleZeroZoneCount.BorderColor = System.Drawing.Color.Black; + this.labelTitleZeroZoneCount.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleZeroZoneCount.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleZeroZoneCount.ForeColor = System.Drawing.Color.White; + this.labelTitleZeroZoneCount.InitVisible = true; + this.labelTitleZeroZoneCount.LineSpacing = 0F; + this.labelTitleZeroZoneCount.Location = new System.Drawing.Point(363, 151); + this.labelTitleZeroZoneCount.Name = "labelTitleZeroZoneCount"; + this.labelTitleZeroZoneCount.Size = new System.Drawing.Size(104, 30); + this.labelTitleZeroZoneCount.TabIndex = 192; + this.labelTitleZeroZoneCount.Text = "영점실행개수"; + this.labelTitleZeroZoneCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleZeroZoneCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleZeroZoneCount.Wordwrap = false; + // + // labelTitleZeroZoneCycle + // + this.labelTitleZeroZoneCycle.BackPictureBox1 = null; + this.labelTitleZeroZoneCycle.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleZeroZoneCycle.BorderColor = System.Drawing.Color.Black; + this.labelTitleZeroZoneCycle.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleZeroZoneCycle.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleZeroZoneCycle.ForeColor = System.Drawing.Color.White; + this.labelTitleZeroZoneCycle.InitVisible = true; + this.labelTitleZeroZoneCycle.LineSpacing = 0F; + this.labelTitleZeroZoneCycle.Location = new System.Drawing.Point(363, 113); + this.labelTitleZeroZoneCycle.Name = "labelTitleZeroZoneCycle"; + this.labelTitleZeroZoneCycle.Size = new System.Drawing.Size(104, 30); + this.labelTitleZeroZoneCycle.TabIndex = 191; + this.labelTitleZeroZoneCycle.Text = "영점실행주기"; + this.labelTitleZeroZoneCycle.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleZeroZoneCycle.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleZeroZoneCycle.Wordwrap = false; + // + // labelTitleOutputPort + // + this.labelTitleOutputPort.BackPictureBox1 = null; + this.labelTitleOutputPort.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleOutputPort.BorderColor = System.Drawing.Color.Black; + this.labelTitleOutputPort.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleOutputPort.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleOutputPort.ForeColor = System.Drawing.Color.White; + this.labelTitleOutputPort.InitVisible = true; + this.labelTitleOutputPort.LineSpacing = 0F; + this.labelTitleOutputPort.Location = new System.Drawing.Point(363, 49); + this.labelTitleOutputPort.Name = "labelTitleOutputPort"; + this.labelTitleOutputPort.Size = new System.Drawing.Size(104, 30); + this.labelTitleOutputPort.TabIndex = 190; + this.labelTitleOutputPort.Text = "출력Port"; + this.labelTitleOutputPort.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleOutputPort.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleOutputPort.Wordwrap = false; + // + // labelTitleSetting + // + this.labelTitleSetting.BackPictureBox1 = null; + this.labelTitleSetting.BackPictureBox2 = this.smartGroupBox1; + this.labelTitleSetting.BorderColor = System.Drawing.Color.Black; + this.labelTitleSetting.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleSetting.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.labelTitleSetting.ForeColor = System.Drawing.Color.White; + this.labelTitleSetting.InitVisible = true; + this.labelTitleSetting.LineSpacing = 0F; + this.labelTitleSetting.Location = new System.Drawing.Point(18, 114); + this.labelTitleSetting.Name = "labelTitleSetting"; + this.labelTitleSetting.Size = new System.Drawing.Size(104, 30); + this.labelTitleSetting.TabIndex = 188; + this.labelTitleSetting.Text = "품목별 설정"; + this.labelTitleSetting.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleSetting.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleSetting.Wordwrap = false; + // + // labelZeroZoneCycle + // + this.labelZeroZoneCycle.BackColor = System.Drawing.Color.Black; + this.labelZeroZoneCycle.BackPictureBox = null; + this.labelZeroZoneCycle.BackPictureBox1 = null; + this.labelZeroZoneCycle.BackPictureBox2 = null; + this.labelZeroZoneCycle.BorderColor = System.Drawing.Color.Black; + this.labelZeroZoneCycle.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.labelZeroZoneCycle.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold); + this.labelZeroZoneCycle.ForeColor = System.Drawing.Color.White; + this.labelZeroZoneCycle.InitVisible = true; + this.labelZeroZoneCycle.LineSpacing = 0F; + this.labelZeroZoneCycle.Location = new System.Drawing.Point(477, 113); + this.labelZeroZoneCycle.Name = "labelZeroZoneCycle"; + this.labelZeroZoneCycle.Size = new System.Drawing.Size(150, 30); + this.labelZeroZoneCycle.TabIndex = 187; + this.labelZeroZoneCycle.Text = "100"; + this.labelZeroZoneCycle.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; + this.labelZeroZoneCycle.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelZeroZoneCycle.Wordwrap = false; + this.labelZeroZoneCycle.Click += new System.EventHandler(this.labelZeroZoneCycle_Click); + // + // buttonItemNo + // + this.buttonItemNo.BackPictureBox = null; + this.buttonItemNo.BackPictureBox1 = null; + this.buttonItemNo.BackPictureBox2 = null; + this.buttonItemNo.ButtonColor = System.Drawing.Color.Gray; + this.buttonItemNo.ButtonImageAutoSize = true; + this.buttonItemNo.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonItemNo.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonItemNo.DisableImage"))); + this.buttonItemNo.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonItemNo.DownImage"))); + this.buttonItemNo.Font = new System.Drawing.Font("Arial", 18F, System.Drawing.FontStyle.Bold); + this.buttonItemNo.GroupID = 0; + this.buttonItemNo.InitVisible = true; + this.buttonItemNo.Location = new System.Drawing.Point(15, 15); + this.buttonItemNo.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonItemNo.Name = "buttonItemNo"; + this.buttonItemNo.NestedClickEventPrevent = false; + this.buttonItemNo.OutlinePixel = 1; + this.buttonItemNo.RepeatInterval = 200; + this.buttonItemNo.RepeatIntervalAccelerate = null; + this.buttonItemNo.SafeInterval = 200; + this.buttonItemNo.Size = new System.Drawing.Size(335, 45); + this.buttonItemNo.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonItemNo.TabIndex = 182; + this.buttonItemNo.Text = "100"; + this.buttonItemNo.TextColor = System.Drawing.Color.White; + this.buttonItemNo.TextDownColor = System.Drawing.Color.White; + this.buttonItemNo.TextHAlign = SmartX.SmartButton.TextHorAlign.Right; + this.buttonItemNo.TextLocation = new System.Drawing.Point(-20, 0); + this.buttonItemNo.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonItemNo.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonItemNo.UpImage"))); + this.buttonItemNo.Click += new System.EventHandler(this.buttonItemNo_Click); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.Black; + this.panel1.Controls.Add(this.radioButtonPortNone); + this.panel1.Controls.Add(this.radioButtonPort56); + this.panel1.Controls.Add(this.radioButtonPort78); + this.panel1.Location = new System.Drawing.Point(477, 18); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(212, 89); + // + // radioButtonPortNone + // + this.radioButtonPortNone.BackColor = System.Drawing.Color.Black; + this.radioButtonPortNone.BackPictureBox = null; + this.radioButtonPortNone.BackPictureBox1 = null; + this.radioButtonPortNone.BackPictureBox2 = null; + this.radioButtonPortNone.Checked = false; + this.radioButtonPortNone.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.radioButtonPortNone.ForeColor = System.Drawing.Color.White; + this.radioButtonPortNone.GroupID = 0; + this.radioButtonPortNone.ImageCheckRadioButton = null; + this.radioButtonPortNone.ImageUnCheckRadioButton = null; + this.radioButtonPortNone.InitVisible = true; + this.radioButtonPortNone.Location = new System.Drawing.Point(3, 4); + this.radioButtonPortNone.Name = "radioButtonPortNone"; + this.radioButtonPortNone.OutputOnly = false; + this.radioButtonPortNone.RadioBackColor = System.Drawing.Color.White; + this.radioButtonPortNone.RadioCheckColor = System.Drawing.Color.Green; + this.radioButtonPortNone.RadioForeColor = System.Drawing.Color.Black; + this.radioButtonPortNone.RadioSymbolSize = 14; + this.radioButtonPortNone.Shadow = false; + this.radioButtonPortNone.Size = new System.Drawing.Size(200, 23); + this.radioButtonPortNone.TabIndex = 138; + this.radioButtonPortNone.Text = "None"; + this.radioButtonPortNone.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; + this.radioButtonPortNone.Click += new System.EventHandler(this.radioButtonPort_Click); + // + // radioButtonPort56 + // + this.radioButtonPort56.BackColor = System.Drawing.Color.Black; + this.radioButtonPort56.BackPictureBox = null; + this.radioButtonPort56.BackPictureBox1 = null; + this.radioButtonPort56.BackPictureBox2 = null; + this.radioButtonPort56.Checked = false; + this.radioButtonPort56.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.radioButtonPort56.ForeColor = System.Drawing.Color.White; + this.radioButtonPort56.GroupID = 0; + this.radioButtonPort56.ImageCheckRadioButton = null; + this.radioButtonPort56.ImageUnCheckRadioButton = null; + this.radioButtonPort56.InitVisible = true; + this.radioButtonPort56.Location = new System.Drawing.Point(3, 33); + this.radioButtonPort56.Name = "radioButtonPort56"; + this.radioButtonPort56.OutputOnly = false; + this.radioButtonPort56.RadioBackColor = System.Drawing.Color.White; + this.radioButtonPort56.RadioCheckColor = System.Drawing.Color.Green; + this.radioButtonPort56.RadioForeColor = System.Drawing.Color.Black; + this.radioButtonPort56.RadioSymbolSize = 14; + this.radioButtonPort56.Shadow = false; + this.radioButtonPort56.Size = new System.Drawing.Size(200, 23); + this.radioButtonPort56.TabIndex = 139; + this.radioButtonPort56.Text = "Output Port 5,6"; + this.radioButtonPort56.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; + this.radioButtonPort56.Click += new System.EventHandler(this.radioButtonPort_Click); + // + // radioButtonPort78 + // + this.radioButtonPort78.BackColor = System.Drawing.Color.Black; + this.radioButtonPort78.BackPictureBox = null; + this.radioButtonPort78.BackPictureBox1 = null; + this.radioButtonPort78.BackPictureBox2 = null; + this.radioButtonPort78.Checked = false; + this.radioButtonPort78.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); + this.radioButtonPort78.ForeColor = System.Drawing.Color.White; + this.radioButtonPort78.GroupID = 0; + this.radioButtonPort78.ImageCheckRadioButton = null; + this.radioButtonPort78.ImageUnCheckRadioButton = null; + this.radioButtonPort78.InitVisible = true; + this.radioButtonPort78.Location = new System.Drawing.Point(3, 62); + this.radioButtonPort78.Name = "radioButtonPort78"; + this.radioButtonPort78.OutputOnly = false; + this.radioButtonPort78.RadioBackColor = System.Drawing.Color.White; + this.radioButtonPort78.RadioCheckColor = System.Drawing.Color.Green; + this.radioButtonPort78.RadioForeColor = System.Drawing.Color.Black; + this.radioButtonPort78.RadioSymbolSize = 14; + this.radioButtonPort78.Shadow = false; + this.radioButtonPort78.Size = new System.Drawing.Size(200, 23); + this.radioButtonPort78.TabIndex = 140; + this.radioButtonPort78.Text = "Output Port 7,8"; + this.radioButtonPort78.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; + this.radioButtonPort78.Click += new System.EventHandler(this.radioButtonPort_Click); + // // labelHelp5 // this.labelHelp5.BackPictureBox1 = null; @@ -85,7 +406,7 @@ this.labelHelp5.ForeColor = System.Drawing.Color.White; this.labelHelp5.InitVisible = true; this.labelHelp5.LineSpacing = 0F; - this.labelHelp5.Location = new System.Drawing.Point(103, 430); + this.labelHelp5.Location = new System.Drawing.Point(103, 431); this.labelHelp5.Name = "labelHelp5"; this.labelHelp5.Size = new System.Drawing.Size(585, 15); this.labelHelp5.TabIndex = 145; @@ -104,7 +425,7 @@ this.labelHelp4.ForeColor = System.Drawing.Color.White; this.labelHelp4.InitVisible = true; this.labelHelp4.LineSpacing = 0F; - this.labelHelp4.Location = new System.Drawing.Point(103, 409); + this.labelHelp4.Location = new System.Drawing.Point(103, 410); this.labelHelp4.Name = "labelHelp4"; this.labelHelp4.Size = new System.Drawing.Size(585, 15); this.labelHelp4.TabIndex = 144; @@ -123,7 +444,7 @@ this.labelHelp3.ForeColor = System.Drawing.Color.White; this.labelHelp3.InitVisible = true; this.labelHelp3.LineSpacing = 0F; - this.labelHelp3.Location = new System.Drawing.Point(103, 388); + this.labelHelp3.Location = new System.Drawing.Point(103, 389); this.labelHelp3.Name = "labelHelp3"; this.labelHelp3.Size = new System.Drawing.Size(585, 15); this.labelHelp3.TabIndex = 143; @@ -142,7 +463,7 @@ this.labelHelp2.ForeColor = System.Drawing.Color.White; this.labelHelp2.InitVisible = true; this.labelHelp2.LineSpacing = 0F; - this.labelHelp2.Location = new System.Drawing.Point(103, 367); + this.labelHelp2.Location = new System.Drawing.Point(103, 368); this.labelHelp2.Name = "labelHelp2"; this.labelHelp2.Size = new System.Drawing.Size(585, 15); this.labelHelp2.TabIndex = 142; @@ -161,7 +482,7 @@ this.labelHelp1.ForeColor = System.Drawing.Color.White; this.labelHelp1.InitVisible = true; this.labelHelp1.LineSpacing = 0F; - this.labelHelp1.Location = new System.Drawing.Point(103, 346); + this.labelHelp1.Location = new System.Drawing.Point(103, 347); this.labelHelp1.Name = "labelHelp1"; this.labelHelp1.Size = new System.Drawing.Size(585, 15); this.labelHelp1.TabIndex = 141; @@ -170,81 +491,6 @@ this.labelHelp1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelHelp1.Wordwrap = false; // - // radioButtonPort78 - // - this.radioButtonPort78.BackPictureBox1 = null; - this.radioButtonPort78.BackPictureBox2 = this.smartGroupBox1; - this.radioButtonPort78.Checked = false; - this.radioButtonPort78.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); - this.radioButtonPort78.ForeColor = System.Drawing.Color.White; - this.radioButtonPort78.GroupID = 0; - this.radioButtonPort78.ImageCheckRadioButton = null; - this.radioButtonPort78.ImageUnCheckRadioButton = null; - this.radioButtonPort78.InitVisible = true; - this.radioButtonPort78.Location = new System.Drawing.Point(130, 113); - this.radioButtonPort78.Name = "radioButtonPort78"; - this.radioButtonPort78.OutputOnly = false; - this.radioButtonPort78.RadioBackColor = System.Drawing.Color.White; - this.radioButtonPort78.RadioCheckColor = System.Drawing.Color.Green; - this.radioButtonPort78.RadioForeColor = System.Drawing.Color.Black; - this.radioButtonPort78.RadioSymbolSize = 14; - this.radioButtonPort78.Shadow = false; - this.radioButtonPort78.Size = new System.Drawing.Size(200, 30); - this.radioButtonPort78.TabIndex = 140; - this.radioButtonPort78.Text = "Output Port 7,8"; - this.radioButtonPort78.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; - this.radioButtonPort78.Click += new System.EventHandler(this.radioButtonPort_Click); - // - // radioButtonPort56 - // - this.radioButtonPort56.BackPictureBox1 = null; - this.radioButtonPort56.BackPictureBox2 = this.smartGroupBox1; - this.radioButtonPort56.Checked = false; - this.radioButtonPort56.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); - this.radioButtonPort56.ForeColor = System.Drawing.Color.White; - this.radioButtonPort56.GroupID = 0; - this.radioButtonPort56.ImageCheckRadioButton = null; - this.radioButtonPort56.ImageUnCheckRadioButton = null; - this.radioButtonPort56.InitVisible = true; - this.radioButtonPort56.Location = new System.Drawing.Point(130, 77); - this.radioButtonPort56.Name = "radioButtonPort56"; - this.radioButtonPort56.OutputOnly = false; - this.radioButtonPort56.RadioBackColor = System.Drawing.Color.White; - this.radioButtonPort56.RadioCheckColor = System.Drawing.Color.Green; - this.radioButtonPort56.RadioForeColor = System.Drawing.Color.Black; - this.radioButtonPort56.RadioSymbolSize = 14; - this.radioButtonPort56.Shadow = false; - this.radioButtonPort56.Size = new System.Drawing.Size(200, 30); - this.radioButtonPort56.TabIndex = 139; - this.radioButtonPort56.Text = "Output Port 5,6"; - this.radioButtonPort56.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; - this.radioButtonPort56.Click += new System.EventHandler(this.radioButtonPort_Click); - // - // radioButtonPortNone - // - this.radioButtonPortNone.BackPictureBox1 = null; - this.radioButtonPortNone.BackPictureBox2 = this.smartGroupBox1; - this.radioButtonPortNone.Checked = false; - this.radioButtonPortNone.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); - this.radioButtonPortNone.ForeColor = System.Drawing.Color.White; - this.radioButtonPortNone.GroupID = 0; - this.radioButtonPortNone.ImageCheckRadioButton = null; - this.radioButtonPortNone.ImageUnCheckRadioButton = null; - this.radioButtonPortNone.InitVisible = true; - this.radioButtonPortNone.Location = new System.Drawing.Point(130, 41); - this.radioButtonPortNone.Name = "radioButtonPortNone"; - this.radioButtonPortNone.OutputOnly = false; - this.radioButtonPortNone.RadioBackColor = System.Drawing.Color.White; - this.radioButtonPortNone.RadioCheckColor = System.Drawing.Color.Green; - this.radioButtonPortNone.RadioForeColor = System.Drawing.Color.Black; - this.radioButtonPortNone.RadioSymbolSize = 14; - this.radioButtonPortNone.Shadow = false; - this.radioButtonPortNone.Size = new System.Drawing.Size(200, 30); - this.radioButtonPortNone.TabIndex = 138; - this.radioButtonPortNone.Text = "None"; - this.radioButtonPortNone.TextVAlign = SmartX.SmartRadioButton.TextVerAlign.Middle; - this.radioButtonPortNone.Click += new System.EventHandler(this.radioButtonPort_Click); - // // labelDelayTime1 // this.labelDelayTime1.BackColor = System.Drawing.SystemColors.Window; @@ -256,9 +502,9 @@ this.labelDelayTime1.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelDelayTime1.InitVisible = true; this.labelDelayTime1.LineSpacing = 0F; - this.labelDelayTime1.Location = new System.Drawing.Point(608, 60); + this.labelDelayTime1.Location = new System.Drawing.Point(272, 97); this.labelDelayTime1.Name = "labelDelayTime1"; - this.labelDelayTime1.Size = new System.Drawing.Size(80, 30); + this.labelDelayTime1.Size = new System.Drawing.Size(70, 30); this.labelDelayTime1.TabIndex = 137; this.labelDelayTime1.Text = "100"; this.labelDelayTime1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; @@ -272,13 +518,13 @@ this.labelTitleDelayTime1.BackPictureBox2 = this.smartGroupBox1; this.labelTitleDelayTime1.BorderColor = System.Drawing.Color.Black; this.labelTitleDelayTime1.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleDelayTime1.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelTitleDelayTime1.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); this.labelTitleDelayTime1.ForeColor = System.Drawing.Color.White; this.labelTitleDelayTime1.InitVisible = true; this.labelTitleDelayTime1.LineSpacing = 0F; - this.labelTitleDelayTime1.Location = new System.Drawing.Point(452, 60); + this.labelTitleDelayTime1.Location = new System.Drawing.Point(130, 97); this.labelTitleDelayTime1.Name = "labelTitleDelayTime1"; - this.labelTitleDelayTime1.Size = new System.Drawing.Size(150, 30); + this.labelTitleDelayTime1.Size = new System.Drawing.Size(136, 30); this.labelTitleDelayTime1.TabIndex = 136; this.labelTitleDelayTime1.Text = "지연시간1"; this.labelTitleDelayTime1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -296,9 +542,9 @@ this.labelDelayTime2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.labelDelayTime2.InitVisible = true; this.labelDelayTime2.LineSpacing = 0F; - this.labelDelayTime2.Location = new System.Drawing.Point(608, 96); + this.labelDelayTime2.Location = new System.Drawing.Point(272, 133); this.labelDelayTime2.Name = "labelDelayTime2"; - this.labelDelayTime2.Size = new System.Drawing.Size(80, 30); + this.labelDelayTime2.Size = new System.Drawing.Size(70, 30); this.labelDelayTime2.TabIndex = 135; this.labelDelayTime2.Text = "100"; this.labelDelayTime2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right; @@ -312,13 +558,13 @@ this.labelTitleDelayTime2.BackPictureBox2 = this.smartGroupBox1; this.labelTitleDelayTime2.BorderColor = System.Drawing.Color.Black; this.labelTitleDelayTime2.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.labelTitleDelayTime2.Font = new System.Drawing.Font("새굴림", 12F, System.Drawing.FontStyle.Bold); + this.labelTitleDelayTime2.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold); this.labelTitleDelayTime2.ForeColor = System.Drawing.Color.White; this.labelTitleDelayTime2.InitVisible = true; this.labelTitleDelayTime2.LineSpacing = 0F; - this.labelTitleDelayTime2.Location = new System.Drawing.Point(452, 96); + this.labelTitleDelayTime2.Location = new System.Drawing.Point(130, 133); this.labelTitleDelayTime2.Name = "labelTitleDelayTime2"; - this.labelTitleDelayTime2.Size = new System.Drawing.Size(150, 30); + this.labelTitleDelayTime2.Size = new System.Drawing.Size(136, 30); this.labelTitleDelayTime2.TabIndex = 134; this.labelTitleDelayTime2.Text = "지연시간2"; this.labelTitleDelayTime2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; @@ -333,6 +579,7 @@ this.Name = "ControlConfiOptionBoard2"; this.Size = new System.Drawing.Size(710, 470); this.smartGroupBox1.ResumeLayout(false); + this.panel1.ResumeLayout(false); this.ResumeLayout(false); } @@ -352,5 +599,16 @@ private SmartX.SmartLabel labelHelp3; private SmartX.SmartLabel labelHelp2; private SmartX.SmartLabel labelHelp1; + private System.Windows.Forms.Panel panel1; + private SmartX.SmartButton buttonItemNo; + public SmartX.SmartLabel labelZeroZoneCycle; + private SmartX.SmartLabel labelTitleSetting; + private SmartX.SmartLabel labelTitleZeroZoneCount; + private SmartX.SmartLabel labelTitleZeroZoneCycle; + private SmartX.SmartLabel labelTitleOutputPort; + private SmartX.SmartLabel smartLabel7; + public SmartX.SmartLabel labelZeroZoneCount; + private SmartX.SmartLabel labelTitleHelp; + private SmartX.SmartLabel smartLabel8; } } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs index f3981d8..d99b8e3 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.cs @@ -19,7 +19,7 @@ namespace ITC81DB_0H.Controls #region Field private FormMenu m_ParentForm; #endregion - + #region Constructor public ControlConfiOptionBoard2(FormMenu parent) { @@ -29,7 +29,7 @@ namespace ITC81DB_0H.Controls this.InitializeDesign(); this.DefaultSetting(); - } + } #endregion #region Property @@ -37,7 +37,7 @@ namespace ITC81DB_0H.Controls { get { return this.m_ParentForm; } private set { this.m_ParentForm = value; } - } + } #endregion #region Method @@ -47,8 +47,6 @@ namespace ITC81DB_0H.Controls if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.English) { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "Delay 1 time"; this.labelTitleDelayTime2.Text = "Delay 2 time"; @@ -57,6 +55,10 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "Output port 5, 6"; this.radioButtonPort78.Text = "Output port 7, 8"; + this.labelTitleOutputPort.Text = "Output Port"; + this.labelTitleZeroZoneCycle.Text = "Zero Zone Cycle"; + this.labelTitleZeroZoneCount.Text = "Zero Zone Count"; + this.labelHelp1.Text = "1. A : The object enters."; this.labelHelp2.Text = "2. B : The object enters into the range of dispenser sensor."; this.labelHelp3.Text = "3. C : After 'Delay 1 time', stick 'Dispenser 1' out."; @@ -65,8 +67,6 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.chnBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "延迟1时间"; this.labelTitleDelayTime2.Text = "延迟2时间"; @@ -75,6 +75,10 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "输出 5, 6"; this.radioButtonPort78.Text = "输出 7, 8"; + this.labelTitleOutputPort.Text = "输出端口"; + this.labelTitleZeroZoneCycle.Text = "零执行周期"; + this.labelTitleZeroZoneCount.Text = "零游程次数"; + this.labelHelp1.Text = "1. A : 被测量物体进入"; this.labelHelp2.Text = "2. B : 被测量物体进入感应器检测范围"; this.labelHelp3.Text = "3. C : 延迟1时间后,分配器1上升"; @@ -86,8 +90,6 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.rusBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 10, FontStyle.Bold); this.labelTitleDelayTime1.Text = "Время задержки 1"; this.labelTitleDelayTime2.Text = "Время задержки 2"; @@ -96,6 +98,10 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "Порт выхода 5, 6"; this.radioButtonPort78.Text = "Порт выхода 7, 8"; + this.labelTitleOutputPort.Text = "Выходной порт"; + this.labelTitleZeroZoneCycle.Text = "Нулевой цикл"; + this.labelTitleZeroZoneCount.Text = "Нулевой счет"; + this.labelHelp1.Text = "1. A : Входит измеряемый объект"; this.labelHelp2.Text = "2. B : Объект входит в зону действия датчика дозатора"; this.labelHelp3.Text = "3. C : После «Задержки 1» отключите «Вход дозатора1»"; @@ -104,8 +110,6 @@ namespace ITC81DB_0H.Controls } else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.gerBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "Vezögerung 1"; this.labelTitleDelayTime2.Text = "Vezögerung 2"; @@ -114,16 +118,38 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "Ausgangsport 5, 6"; this.radioButtonPort78.Text = "Ausgangsport 7, 8"; + this.labelTitleOutputPort.Text = "Ausgangsport"; + this.labelTitleZeroZoneCycle.Text = "Nullzonenzyklus"; + this.labelTitleZeroZoneCount.Text = "Nullzonenanzahl"; + this.labelHelp1.Text = "1. A : Das Objekt tritt ein."; this.labelHelp2.Text = "2. B : Das Objekt gelangt in den Bereich des Spenders sensors."; this.labelHelp3.Text = "3. C : Nach 'Verzögerung 1' stecken Sie 'Dispenser 1' heraus."; this.labelHelp4.Text = "4. D : Gleichzeitig senkt 'Dispenser 2' ab."; this.labelHelp5.Text = "5. Nach 2 Stunden Verspätung kehren wir wieder in den A-Zustand zurück."; } + else if (this.ParentForm.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + { + this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 10, FontStyle.Bold); + this.labelTitleDelayTime1.Text = "1 Tiempo de retardo"; + this.labelTitleDelayTime2.Text = "2 Tiempo de retardo"; + + this.radioButtonPortNone.Text = "Ninguna"; + this.radioButtonPort56.Text = "Puerto de salida 5, 6"; + this.radioButtonPort78.Text = "Puerto de salida 7, 8"; + + this.labelTitleOutputPort.Text = "Puerto de salida"; + this.labelTitleZeroZoneCycle.Text = "Ciclo zona cero"; + this.labelTitleZeroZoneCount.Text = "Recuento de cero"; + + this.labelHelp1.Text = "1. A : El objeto entra."; + this.labelHelp2.Text = "2. B : El objeto entra en el rango de sensor de dispensador."; + this.labelHelp3.Text = "3. C : Después de 'Tiempo de retraso 1', Stick 'Dispenser 1' Out"; + this.labelHelp4.Text = "4. D : Al mismo tiempo, 'Dispenser 2' desciende."; + this.labelHelp5.Text = "5. Después de 'retraso 2' tiempo, vuelve a un."; + } else { - this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.korBackgroundDispenser)); - this.labelTitleDelayTime1.Font = this.labelTitleDelayTime2.Font = new Font("새굴림", 12, FontStyle.Bold); this.labelTitleDelayTime1.Text = "지연시간 1"; this.labelTitleDelayTime2.Text = "지연시간 2"; @@ -132,6 +158,10 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Text = "Output port 5, 6"; this.radioButtonPort78.Text = "Output port 7, 8"; + this.labelTitleOutputPort.Text = "출력 Port"; + this.labelTitleZeroZoneCycle.Text = "영점실행주기"; + this.labelTitleZeroZoneCount.Text = "영점실행개수"; + this.labelHelp1.Text = "1. A : 피계량물이 진입한다."; this.labelHelp2.Text = "2. B : 피계량물이 Dispenser sensor 범위 안에 진입한다."; this.labelHelp3.Text = "3. C : '지연시간1'만큼 지난 후, Dispenser1이 올라온다."; @@ -141,27 +171,62 @@ namespace ITC81DB_0H.Controls } private void DefaultSetting() { - this.UpdateDisplay(this.ParentForm.ParentForm.CurrentSystemParameter2); + this.UpdateCurrentProductDisplay(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.CurrentSystemParameter1, this.ParentForm.ParentForm.CurrentSystemParameter2); } - private void UpdateDisplay(SystemParameter2 parameter) + public void UpdateCurrentProductDisplay(ProductItem product, SystemParameter1 parameter1, SystemParameter2 parameter2) + { + string value = ""; + + value = product.Number.ToString(); + if (this.buttonItemNo.Text != value) + this.buttonItemNo.Text = value; + + value = parameter2.OPT2ZeroZoneCycle; + if (this.labelZeroZoneCycle.Text != value) + this.labelZeroZoneCycle.Text = value; + + value = parameter2.OPT2ZeroZoneCount; + if (this.labelZeroZoneCount.Text != value) + this.labelZeroZoneCount.Text = value; + + this.UpdateDelayTime(product); + this.UpdateDisplay(parameter1, parameter2); + } + private void UpdateDelayTime(ProductItem product) + { + string sValue = ""; + + sValue = product.DispenserDelayTime1; + if (this.labelDelayTime1.Text != sValue) + this.labelDelayTime1.Text = sValue; + + sValue = product.DispenserDelayTime2; + if (this.labelDelayTime2.Text != sValue) + this.labelDelayTime2.Text = sValue; + } + private void UpdateDisplay(SystemParameter1 parameter1, SystemParameter2 parameter2) { int iValue = 0; string sValue = ""; try { - iValue = int.Parse(parameter.OPT2Port); + iValue = int.Parse(parameter2.OPT2Port); } - catch + catch { iValue = 0; } + this.radioButtonPortNone.Click -= new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort56.Click -= new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort78.Click -= new EventHandler(this.radioButtonPort_Click); + if (iValue == 1) { this.radioButtonPortNone.Checked = false; - this.radioButtonPort56.Checked = true; this.radioButtonPort78.Checked = false; + this.radioButtonPort56.Checked = true; } else if (iValue == 2) { @@ -175,26 +240,55 @@ namespace ITC81DB_0H.Controls this.radioButtonPort56.Checked = false; this.radioButtonPort78.Checked = false; } - - sValue = parameter.OPT2DelayTime1; - if (this.labelDelayTime1.Text != sValue) - this.labelDelayTime1.Text = sValue; - - sValue = parameter.OPT2DelayTime2; - if (this.labelDelayTime2.Text != sValue) - this.labelDelayTime2.Text = sValue; + this.radioButtonPortNone.Click += new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort56.Click += new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort78.Click += new EventHandler(this.radioButtonPort_Click); } public void DisplayRefresh(SystemStatus status) { - this.UpdateDisplay(this.ParentForm.ParentForm.CurrentSystemParameter2); + this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplay = Define.E_DisplayStore.ConfiOptionBoard2; + + // 로그 + if (this.ParentForm.ParentForm.IsCommunicationLogOpen == true) + this.ParentForm.ParentForm.smartFileCommunicationLog.WriteString(string.Format("Current Product ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, this.ParentForm.ParentForm.SystemConfig1.ProductNumber.ToString())); + + this.UpdateCurrentProductDisplay(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.CurrentSystemParameter1, this.ParentForm.ParentForm.CurrentSystemParameter2); } #endregion #region Event Handler + private void buttonItemNo_Click(object sender, EventArgs e) + { + string message = ""; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.buttonItemNo.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 1 || myKeyPad.doubleValue > this.ParentForm.ParentForm.ProductCount) + { + // 입력범위를 확인하세요 + message = string.Format("1 ~ {0}", this.ParentForm.ParentForm.ProductCount); + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language, message); + myMsg.ShowDialog(); + } + else + { + this.buttonItemNo.Text = myKeyPad.StringValue; + + this.buttonItemNo.Text = "**"; + this.ParentForm.ParentForm.TransferProductParameter(myKeyPad.IntValue); + } + } + } + private void labelDelayTime1_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentProductItem.DispenserDelayTime1; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelDelayTime1.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -210,17 +304,22 @@ namespace ITC81DB_0H.Controls this.labelDelayTime1.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelDelayTime1.Text); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2DelayTime1 = myKeyPad.StringValue; + after = this.ParentForm.ParentForm.CurrentProductItem.DispenserDelayTime1 = myKeyPad.StringValue; - this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT2DelayTime1, value); + this.ParentForm.ParentForm.SaveProductFile(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2Delay1, "", before, after); } } } - private void labelDelayTime2_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentProductItem.DispenserDelayTime2; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelDelayTime2.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -236,10 +335,12 @@ namespace ITC81DB_0H.Controls this.labelDelayTime2.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelDelayTime2.Text); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2DelayTime2 = myKeyPad.StringValue; + after = this.ParentForm.ParentForm.CurrentProductItem.DispenserDelayTime2 = myKeyPad.StringValue; - this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); - this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT2DelayTime2, value); + this.ParentForm.ParentForm.SaveProductFile(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2Delay2, "", before, after); } } } @@ -247,7 +348,13 @@ namespace ITC81DB_0H.Controls private void radioButtonPort_Click(object sender, EventArgs e) { string value = ""; + string before = "", after = ""; + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2Port; + + this.radioButtonPortNone.Click -= new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort56.Click -= new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort78.Click -= new EventHandler(this.radioButtonPort_Click); if (this.radioButtonPortNone.Checked == true) { value = "0000"; @@ -266,10 +373,79 @@ namespace ITC81DB_0H.Controls this.radioButtonPortNone.Checked = false; this.radioButtonPort56.Checked = false; } + this.radioButtonPortNone.Click += new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort56.Click += new EventHandler(this.radioButtonPort_Click); + this.radioButtonPort78.Click += new EventHandler(this.radioButtonPort_Click); - this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2Port = value; + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2Port = value; this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT2Port, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2Port, "", before, after); + } + + private void labelZeroZoneCycle_Click(object sender, EventArgs e) + { + string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2ZeroZoneCycle; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelZeroZoneCycle.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 9999) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else + { + this.labelZeroZoneCycle.Text = myKeyPad.StringValue; + + value = Helper.StringZeroFillDigits4(this.labelZeroZoneCycle.Text); + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2ZeroZoneCycle = myKeyPad.StringValue; + this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.SubBoardAll, CommunicationAddress.OPT2ZeroZoneCycle, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2ZeroCycle, "", before, after); + } + } + } + private void labelZeroZoneCount_Click(object sender, EventArgs e) + { + string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2ZeroZoneCount; + + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelZeroZoneCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); + + if (myKeyPad.ShowDialog() == DialogResult.OK) + { + if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 9999) + { + // 입력범위를 확인하세요 + DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else + { + this.labelZeroZoneCount.Text = myKeyPad.StringValue; + + value = Helper.StringZeroFillDigits4(this.labelZeroZoneCount.Text); + after = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT2ZeroZoneCount = myKeyPad.StringValue; + this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); + this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.SubBoardAll, CommunicationAddress.OPT2ZeroZoneCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT2ZeroCount, "", before, after); + } + } } #endregion } diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx index 2789724..51d29b0 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx +++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard2.resx @@ -118,6 +118,257 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + PwiLiCKz1c8RAAAAAElFTkSuQmCC + + + + + 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 + TkSuQmCC + + + + + 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 @@ -165,376 +416,447 @@ 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 - zDnXTjR3T15oXl77dvmrGsf3OHYKxbi48T2enULSjO+x7hSKMcU4aaT1TJs2zfzVX/2V9+ca2z/8wz+U - vyuJlXc/2GLGT33GHH7GGPOtIy4K8oNfXWEuveNx8+aGD8rX5s/+++/vfTzr+dv//t+9p9fzhS98wcyb - N6/8XUnR0so6aQVzJN38/d//vfcxj02zZsKECeXvmnZ899+iGCes29n4wYdm9esbzOIXXzeLlr+W0f+/ - 9uZGs/WjT8qXIqRz+eiTbeayUqndc8jIwaK759BRZt/jbjT7nzTWHHja/eZHZz1a4aAzHzY/+N095ru/ - vtnsNeyyipL8mwvHZes4Vra8sqb8f4R8lk+2bc/+EFu++s3B2Sn6t07ftn17+ZKEtJbX33rPTHlqmbnu - nplmxLUTzfBzbjc//d315sDjrxykfw89+1Zz2mX3mavHzTCTZi3Nfn+nGF9nsijGCet03tv0oXnoyefN - 2Vc/lG1lcwuFz0HHX2XOv3Gymf3cqqzAEBIry1aty9bW/seo2I403/nl6FIRvjMrvT8+9/Egh/xxsjng - lPFmn2OvN3sceXG2dn99QZyCvGH+fLNt06byv0g/RxsNxtz/lDmyVESqZ6WPCsuN9z2VrcMdOz4tXwsh - tbNt+w4zZc4Lpfl1907raa+jrjD7/OoGs+9xYyp8e/hVg3PPGv6nO0q/6xcn9Xvb15ksinHCOpWXX3vb - jLp9mtnvmMsrnjx7DrusVEiu2+mJ9p1jrjV7DLmk4rL7HXOp+Y8bHjWvJvrXKOlebrhv9uC60lBvpQzX - csgfp5r9TrzdfKv8i+LY/xhr3nq3tWL76aefmnWPTTWbS3OP9Ge2l4rKhMcWmZ+cdN3gms0cOdJ8+xdX - 7lxUfnVjdrrOdy+vjQy3T3w629JMiC8rX32rVGjvHFwzew671Oz3m9vMD0+73xx6zmPeeWfp/B+e/kA2 - +/Y66rPf89qq/Njc5eXvUOz4OpNFMU5Y7OivRe17aZ8k2jKnrWoHnHy3OeTsyd4nmOtHZ00y3//tWLP3 - 0VcPXse+w0dlW0E2bdla/i6ENBeVgotveSxbR/rD6/uldfjjc6Z51167fnj6g9kuGfpeenVk5avNv0nP - 5pMPPjDrpkzOthqT/sqO0h9Fj8xakr1UbWefiop231EB8a25alqD3zvh1mxLn72OQ35zbfamUXa1IDYf - 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 - AAAAuHmO+f8Bb0FuHjduk4cAAAAASUVORK5CYII= + 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 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4 + t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK06bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0 + 6bHhQ48F/OWlxyY4t2GCcZKhaQP+8tK0KYqiKO/l1k9r4sxJBOMkQzAG/OUlGNNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNj + w4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWladNjw4ceC/jLS49NcG7D + BOMkQ9MG/OWladNjw4ceC/jLS49NcG7DBOMkQ9MG/OWlaVMURVHey62f1sSZkwjGSYZgDPjLSzCmx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnG + SYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YP + PRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+DchgnGSYamDfjLS9Omx4YPPRbwl5cem+Dchi8p + GG/YsEEeGVdc6QkRbDRtwD+XXXaZrFu3zrWfuqHHhg89FvCP1x6b4NyGLykY64s/NXlRpSdEsNG0Af9c + eeWVUlRU5NpP3dBjw4ceC/jHa49NcG7DlxSMi4uLpcec0kpPiGCjaQP+adq0qaSkpLj2Uzf02PChxwL+ + 8dpjE5zb8CUF4969e8uUhWWVnhDBRtMG/NOrVy9p3769az91Q48NH3os4B+vPTbBuQ1fUjD+xS9+IevX + r5dXZi6t9KQILpo24I9rr71WSkpK5JprrnHtp27oseFDjwX8cTE9NsG5DV9SMFYff/yxzCgp5wKRkKBp + Aw3v8ssvlwEDBkirVq1c+2hN6LHhQo8FGt6l9Fjl3IYvORiruXPnytj81fLQmHPPhWCiaQMN60/+5E+k + R48e8tFHH7n2z9qgx4YHPRZoWHXRY53bcJ0E46uvvloyMjJkZkm5vMZbfoFG0wYaTqNGjWTgwIHSs2dP + ueqqq1z7Z23QY8ODHgs0nLrqsc5tuE6CccIf/vAHe3shvVik+5xSaTdpkTzMEY5AoWkD9ecnP/mJ/Oxn + P7NXRutFIHl5eRf91p4bemzw0WOB+lNfPda5DddpMFZ6sYheSa0nQFdUVNgmAQDJQENrYWGhvV1Qu3bt + 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 + Y+TGp4fad5zufKa/XW8mpy2xR5KDXG5jNYKDYBxxdVUHDh+TjOI10q7bWLm+bU8bem58epjc9sJYubPr + l3L3G7PlnrfnnXX3W3OkyStT7c9v7mRCUrt+cl3rz6TVW6NlVs5K+xY7Fa3asH23dP54sg0wN3UaaY8A + N38vU+7/IMeG3vOCcE00JJvfa/7uArnrzVly87Mj7fN2/niS56PHx7//Xr7LzJRDmzbFv0MFqfbsPyQz + s1fIY2+MivUW0ytufMb0li5fyJ2vTDG9pGpvmS1NXp5if35TpxGx03HafC4PvzxMvpi7yL5LRYWn9J3H + gmUbTKgdZ3d8NAzf9sI4ufvN2dK8xwK5793Msz2hknivaN4j0+x4zzdBeZLcZNabRm16yf0vDpGpC0rl + oBm3glhuYzWCg2AccZdap8+ckRyzF9/po4n2iLDuneveuzYtbUp69O/cEUCHePOyPzPueWuu3PHSxLON + 68keYyV94Ro5dpyjPFGo/NIN0twMRtebkHLnK1+adcAMZmfXC0fgvRj2eTLljpe/NM8/QB7oOlTyl62P + v/KF64cNG+RAbo7sX7VKxKzPVDBK313QneRWb4+xp9vc9Mxw2yPuMTvVutxr01vUve/EQtHNz4yQ68wO + e4tXhsuXaUvlwKGj8Veiglrf7NpvL8DVHRs9feqOlyZJs+7p8eXu0gtqor9jdqSbvjpNbjY7TDpePfeH + SbJ83dfxVwtOuY3VCA6CccRdSulR3c/HLJBbOvSRG0zTuvPlKfZcUD2Sp293uzanathBzPyeNj19K0wD + 9q1P9ZceQ+ZWe4EVFY7SdxKadOpvj/Tc/easeJB1Xw8uha5Dd78xS254eojc03mQfd0L1xnZV1oqPxTk + y57ihXL6mPdTMai6ry3f7pU3+s20p0jc+PRwafrKNGneI8P2lYvtLfr7d70+0767cGP7vvbdi7KNO+Kv + SAWtVq3/1p4Ko6dB3PbCF/a6g4t6d6kS3VnSdWGBHa+u7zjInpah70icPh2cnWK3sRrBQTCOuIut9dt2 + Scf3vrAXQOnbWnYvPnG0xrUh1Y4dxIxm3TPk9hfH21MyHn19lJRv2hl/ZSpMVbh8o9zxTD97Ws29b8+z + y9ZtudcVHfT07XR9vTue7itF5vVrqtM//ih7FhbJ/twc2ZmVKcf37Y3/hPKrFq7cJA92HSbXt+tnjxDH + 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 + OOU2ViM4CMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYA + AACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAA + DIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCM + AQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAA + ABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAg + GAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgA + AAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACA + QTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIx + AAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAA + AINgDAAAABgEYwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgE + YwAAAMAgGAMAAAAGwRgAAAAwCMYAAACAQTAGAAAADIIxAAAAYBCMAQAAAINgDAAAABgEYwAAAMAgGAMA + AAAGwRgAAAAwfA3Gq1atkiuuuMJ1wgAAAICGctlll8m6detcM2tNnFn4koJxbm6u/PznP3edOAAAAKCh + XHnllVJUVOSaWWvizMKXFIxHjRolTZs2dZ04AAAAoKFoJk1JSXHNrDVxZuFLCsbt2rWTXr16uU4cAAAA + 0FA0k7Zv3941s9bEmYUvKRhfffXVUlxcLNdee63rBAIAAAD1TbNoSUmJXHPNNa6ZtSbOLHxJwVi1atVK + BgwYIJdffrnrhAIAAAD1RTOoZlHNpG5Z9UKcWfiSg7H66KOPpEePHvKnf/qnrhMMAAAA1LU/+ZM/sRlU + s6hbRq0NZxauk2B81VVXSc+ePWXgwIFy3XXXuU44AAAAUFcaNWpks6dmUM2ibhm1NpxZuE6CccITTzwh + eXl59uRnvTLwZz/7mfzkJz9xnRkAAACgtjRTarbUjKlZUzPnxZ4+4eTMwnUajJVekKd3q9DbZRQWFtob + LeunkAAAAAAXSzOlZkvNmJo1NXO6ZVGvnFm4zoMxAAAAEBbOLEwwBgAAQNJyZmGCMQAAAJKWMwsTjAEA + AJC0nFmYYAwAAICk5czCBGMAAAAkLWcWJhgDAAAgaTmzMMEYAAAAScuZhQnGAAAASFrOLEwwBgAAQNJy + ZmGCMQAAAJKWMwsTjAEAAJC0nFm4UjAGAAAAkhXBGAAAADAIxgAAAMDohfL/Ayer/Ught5jUAAAAAElF + TkSuQmCC diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayFeedback.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayFeedback.cs index db7cc24..4c28be1 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayFeedback.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayFeedback.cs @@ -213,6 +213,10 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSampleCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -225,13 +229,16 @@ namespace ITC81DB_0H } else { - this.labelSampleCount.Text = myKeyPad.StringValue; + after = this.labelSampleCount.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelSampleCount.Text); this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount = myKeyPad.StringValue; this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1SamplingCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1SampleCount, "", before, after); } } } @@ -242,6 +249,10 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = ""; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount; + DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelDelayCount.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language); if (myKeyPad.ShowDialog() == DialogResult.OK) @@ -254,13 +265,16 @@ namespace ITC81DB_0H } else { - this.labelDelayCount.Text = myKeyPad.StringValue; + after = this.labelDelayCount.Text = myKeyPad.StringValue; value = Helper.StringZeroFillDigits4(this.labelDelayCount.Text); this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1DelayCount = myKeyPad.StringValue; this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1DelayCount, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1DelayCount, "", before, after); } } } @@ -272,8 +286,11 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = ""; + string before = "", after = ""; int digit = 0; + before = this.labelUpperLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -297,7 +314,7 @@ namespace ITC81DB_0H } else { - this.labelUpperLimit.Text = myKeyPad.StringValue; + after = this.labelUpperLimit.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CurrentFeedbackItem.OverRangeDeviation = @@ -307,6 +324,9 @@ namespace ITC81DB_0H value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange); this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1OverRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1OverRange, "", before, after); } } } @@ -317,8 +337,11 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = ""; + string before = "", after = ""; int digit = 0; + before = this.labelLowerLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -342,7 +365,7 @@ namespace ITC81DB_0H } else { - this.labelLowerLimit.Text = myKeyPad.StringValue; + after = this.labelLowerLimit.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange = myKeyPad.StringValue.Replace(".", ""); this.ParentForm.ParentForm.CurrentFeedbackItem.UnderRangeDeviation = @@ -352,6 +375,9 @@ namespace ITC81DB_0H this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1UnderRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1UnderRange, "", before, after); } } } @@ -363,9 +389,12 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = "", sValue = ""; + string before = "", after = ""; double dValue = 0.0; int digit = 0; + before = this.labelUpperLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -395,6 +424,7 @@ namespace ITC81DB_0H else { string temp = ""; + after = sValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange = sValue.Replace(".", ""); if (myKeyPad.StringValue.Contains('+') == true) @@ -409,6 +439,9 @@ namespace ITC81DB_0H this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1OverRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1OverRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1OverRange, "", before, after); } } } @@ -419,9 +452,12 @@ namespace ITC81DB_0H this.ParentForm.Part11AutomaticLogoutReset(); string value = "", sValue = ""; + string before = "", after = ""; double dValue = 0.0; int digit = 0; + before = this.labelLowerLimit.Text; + if (this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces == 0) digit = 4; // V6.2.0 @@ -448,6 +484,7 @@ namespace ITC81DB_0H } else { + after = sValue; this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange = sValue.Replace(".", ""); if (myKeyPad.doubleValue == 0) @@ -461,6 +498,9 @@ namespace ITC81DB_0H this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2); value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1UnderRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1UnderRange, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OPT1UnderRange, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs index cebef2f..cf1d59c 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs @@ -475,13 +475,19 @@ namespace ITC81DB_0H.Controls } else { - this.labelSorterADelayTime.Text = myKeyPad.StringValue; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1DelayTime.ToString(); + after = this.labelSorterADelayTime.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1DelayTime = myKeyPad.IntValue; this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); value = Helper.StringZeroFillDigits4(this.labelSorterADelayTime.Text); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.Sorter1DelayTime, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorADelay, "", before, after); } } } @@ -505,13 +511,19 @@ namespace ITC81DB_0H.Controls } else { - this.labelSorterARunTime.Text = myKeyPad.StringValue; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1RunTime.ToString(); + after = this.labelSorterARunTime.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter1RunTime = myKeyPad.IntValue; this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); value = Helper.StringZeroFillDigits4(this.labelSorterARunTime.Text); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.Sorter1RunTime, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorARun, "", before, after); } } } @@ -540,13 +552,19 @@ namespace ITC81DB_0H.Controls } else { - this.labelSorterBDelayTime.Text = myKeyPad.StringValue; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2DelayTime.ToString(); + after = this.labelSorterBDelayTime.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2DelayTime = myKeyPad.IntValue; this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); value = Helper.StringZeroFillDigits4(this.labelSorterBDelayTime.Text); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.Sorter2DelayTime, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBDelay, "", before, after); } } } @@ -570,13 +588,19 @@ namespace ITC81DB_0H.Controls } else { - this.labelSorterBRunTime.Text = myKeyPad.StringValue; + string before = "", after = ""; + + before = this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2RunTime.ToString(); + after = this.labelSorterBRunTime.Text = myKeyPad.StringValue; this.ParentForm.ParentForm.CurrentJudgmentSetItem.Sorter2RunTime = myKeyPad.IntValue; this.ParentForm.ParentForm.SaveJudgmentSetFile(this.ParentForm.ParentForm.CurrentJudgmentSetItem, this.ParentForm.ParentForm.SystemConfig1.ProductNumber - 1); value = Helper.StringZeroFillDigits4(this.labelSorterBRunTime.Text); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.Sorter2RunTime, value); + + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.SorBRun, "", before, after); } } } @@ -636,7 +660,7 @@ namespace ITC81DB_0H.Controls else this.ParentForm.ParentForm.TransferData(CommunicationCommand.ByNGON, CommunicationID.MainBoard); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Bypass, "ON"); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Bypass, "Consecute - ON"); } else { @@ -648,7 +672,7 @@ namespace ITC81DB_0H.Controls else this.ParentForm.ParentForm.TransferData(CommunicationCommand.ByNGOFF, CommunicationID.MainBoard); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Bypass, "OFF"); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.Bypass, "Consecute - OFF"); } } } diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs index afd9f9c..1d0b06d 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs @@ -281,17 +281,17 @@ namespace ITC81DB_0H.Controls public void DisplayRefresh(SystemStatus status) { this.comboBoxPort.Items.Clear(); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f16_OPC) this.comboBoxPort.Items.Add("COM1"); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f16_OPC) this.comboBoxPort.Items.Add("COM3"); - if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f22_Modbus_RTU - || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f16_OPC) this.comboBoxPort.Items.Add("COM4"); - if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f22_Modbus_TCP - || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_EthernetMode.f16_OPC) + if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f22_Modbus + || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)Define.E_CommMode.f16_OPC) this.comboBoxPort.Items.Add("TCP"); this.comboBoxPort.SelectedIndex = 0; diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStart.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStart.cs index 90d1aca..960d8c9 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStart.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStart.cs @@ -306,9 +306,12 @@ namespace ITC81DB_0H.Controls { string value = ""; - value = data.ProductionSpeed.ToString(); - if (this.labelSpeed.Text != value) - this.labelSpeed.Text = value; + if (data.ProductionSpeed <= 500) + { + value = data.ProductionSpeed.ToString(); + if (this.labelSpeed.Text != value) + this.labelSpeed.Text = value; + } this.SetProgressBarValue(this.progressBar, data.Weight, data.JudgmentStatus, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces); @@ -457,7 +460,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.UnderRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.UnderRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightUnderRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "", before, after); } } private void buttonPassRange_Click(object sender, EventArgs e) @@ -560,17 +564,16 @@ namespace ITC81DB_0H.Controls if (this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayFeedback.IsUsingFeedback() == true) this.ParentForm.ParentForm.UpdateFeedbackData(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.CurrentSystemParameter2); - this.buttonPassRange.Text = myKeyPad.StringValue; - this.buttonUnderRange.Text = underRange; - this.buttonOverRange.Text = overRange; - after = this.buttonPassRange.Text = myKeyPad.StringValue; afterUnder = this.buttonUnderRange.Text = underRange; afterOver = this.buttonOverRange.Text = overRange; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightPassRange, "", before, after); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightUnderRange, "", beforeUnder, afterUnder); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightOverRange, "", beforeOver, afterOver); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.PassRange, "", before, after); + if (beforeUnder != afterUnder) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "Change Pass Value", beforeUnder, afterUnder); + if (beforeOver != afterOver) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "Change Pass Value", beforeOver, afterOver); } private void buttonOverRange_Click(object sender, EventArgs e) { @@ -666,7 +669,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.OverRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OverRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightOverRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "", before, after); } } @@ -713,7 +717,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.TareRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.TareRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightTareRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.TareRange, "", before, after); } } } diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStartGrapht.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStartGrapht.cs index 95f48a0..e5b9cab 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStartGrapht.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayStartGrapht.cs @@ -376,7 +376,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.UnderRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.UnderRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightUnderRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "", before, after); } } private void buttonPassRange_Click(object sender, EventArgs e) @@ -481,17 +482,16 @@ namespace ITC81DB_0H.Controls if (this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayFeedback.IsUsingFeedback() == true) this.ParentForm.ParentForm.UpdateFeedbackData(this.ParentForm.ParentForm.CurrentProductItem, this.ParentForm.ParentForm.CurrentSystemParameter2); - this.buttonPassRange.Text = myKeyPad.StringValue; - this.buttonUnderRange.Text = underRange; - this.buttonOverRange.Text = overRange; - after = this.buttonPassRange.Text = myKeyPad.StringValue; afterUnder = this.buttonUnderRange.Text = underRange; afterOver = this.buttonOverRange.Text = overRange; - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightPassRange, "", before, after); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightUnderRange, "", beforeUnder, afterUnder); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightOverRange, "", beforeOver, afterOver); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.PassRange, "", before, after); + if (beforeUnder != afterUnder) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.UnderRange, "Change Pass Value", beforeUnder, afterUnder); + if (beforeOver != afterOver) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "Change Pass Value", beforeOver, afterOver); } private void buttonOverRange_Click(object sender, EventArgs e) { @@ -587,7 +587,8 @@ namespace ITC81DB_0H.Controls value = Helper.StringZeroFillDigits7(this.ParentForm.ParentForm.CurrentProductItem.OverRange); this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OverRange, value); - this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.WeightOverRange, "", before, after); + if (before != after) + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.OverRange, "", before, after); } } #endregion diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightBigScreen.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightBigScreen.cs index db89644..f2f47ff 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightBigScreen.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightBigScreen.cs @@ -408,6 +408,7 @@ namespace ITC81DB_0H if (myDlg.ShowDialog() == DialogResult.Yes) { this.ParentForm.ParentForm.ClearAlarm(1); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.CountClear, ""); } } @@ -417,6 +418,7 @@ namespace ITC81DB_0H if (myDlg.ShowDialog() == DialogResult.Yes) { this.ParentForm.ParentForm.ClearAlarm(2); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.CountClear, ""); } } @@ -424,6 +426,7 @@ namespace ITC81DB_0H { this.ParentForm.ParentForm.CurrentBarcode.Clear(); this.UpdateBarcodeDisplay(this.ParentForm.ParentForm.CurrentBarcode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.BarcodeClear, ""); } #endregion } diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.Designer.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.Designer.cs index 3904bc9..46a2038 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.Designer.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.Designer.cs @@ -488,7 +488,7 @@ this.labelCountingOutput2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelCountingOutput2.Visible = false; this.labelCountingOutput2.Wordwrap = false; - this.labelCountingOutput2.Click += new System.EventHandler(this.labelAlarm2_Click); + this.labelCountingOutput2.Click += new System.EventHandler(this.labelCountingOutput2_Click); // // pictureBoxRandomModeDisable // @@ -519,7 +519,7 @@ this.labelCountingOutput1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelCountingOutput1.Visible = false; this.labelCountingOutput1.Wordwrap = false; - this.labelCountingOutput1.Click += new System.EventHandler(this.labelAlarm1_Click); + this.labelCountingOutput1.Click += new System.EventHandler(this.labelCountingOutput1_Click); // // pictureBoxCountingOutputCount // diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.cs index 294f4d9..23683ae 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayWeightSmall.cs @@ -11,6 +11,7 @@ using SmartX; using ITC81DB_0H.Forms; using ITC81DB_2H_ImageDll; using ITC81DB_2H.Datastore; +using ITC81DB_0H.DialogForms; namespace ITC81DB_0H.Controls { @@ -402,20 +403,31 @@ namespace ITC81DB_0H.Controls #endregion #region Event Handler - private void labelAlarm1_Click(object sender, EventArgs e) + private void labelCountingOutput1_Click(object sender, EventArgs e) { - this.ParentForm.ParentForm.ClearAlarm(1); + DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig1.Language, 20); + if (myDlg.ShowDialog() == DialogResult.Yes) + { + this.ParentForm.ParentForm.ClearAlarm(1); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.CountClear, ""); + } } - private void labelAlarm2_Click(object sender, EventArgs e) + private void labelCountingOutput2_Click(object sender, EventArgs e) { - this.ParentForm.ParentForm.ClearAlarm(2); + DialogFormYesNo myDlg = new DialogFormYesNo(this.ParentForm.ParentForm.SystemConfig1.Language, 20); + if (myDlg.ShowDialog() == DialogResult.Yes) + { + this.ParentForm.ParentForm.ClearAlarm(2); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.CountClear, ""); + } } private void labelBarcodeCount_Click(object sender, EventArgs e) { this.ParentForm.ParentForm.CurrentBarcode.Clear(); this.UpdateBarcodeDisplay(this.ParentForm.ParentForm.CurrentBarcode); + this.ParentForm.ParentForm.SetTrackingHistoryData(Define.E_TrackingOperation.BarcodeClear, ""); } #endregion } diff --git a/ITC81DB_0H/Datastore/Barcode.cs b/ITC81DB_0H/Datastore/Barcode.cs index 0154b1c..ad71106 100644 --- a/ITC81DB_0H/Datastore/Barcode.cs +++ b/ITC81DB_0H/Datastore/Barcode.cs @@ -145,6 +145,45 @@ namespace ITC81DB_0H productNo = 0; return ret = BarcodeStatus.None; } + public BarcodeStatus GetData(ref int productNo, int startIndex, int endIndex) + { + string value = ""; + BarcodeStatus ret = BarcodeStatus.None; + + if (this.QueueBarcode.Count > 0) + { + value = this.QueueBarcode.Peek(); + + if (value == "NoRead") + { + productNo = 991; + return ret = BarcodeStatus.NoRead; + } + else + { + int length = endIndex - startIndex + 1; + if (value.Length >= length) + value = value.Substring(startIndex, length); + if (value.Length > 14) + value = value.Substring(value.Length - 14, 14); + + for (int i = 0; i < this.CollectionLotNo.Count; i++) + { + if (this.CollectionLotNo[i] == value) + { + productNo = i + 1; + return ret = BarcodeStatus.Normal; + } + } + + productNo = 992; + return ret = BarcodeStatus.NoMatch; + } + } + + productNo = 0; + return ret = BarcodeStatus.None; + } /// /// 바코드 길이를 14 이하로 결정 @@ -159,6 +198,15 @@ namespace ITC81DB_0H return barcode; } + public string BarcodePeek() + { + string ret = ""; + + if (this.QueueBarcode.Count > 0) + ret = this.QueueBarcode.Peek(); + + return ret; + } public void BarcodeDequeue() { if(this.QueueBarcode.Count > 0) diff --git a/ITC81DB_0H/Datastore/DataStore.cs b/ITC81DB_0H/Datastore/DataStore.cs index 65958e9..fbbe845 100644 --- a/ITC81DB_0H/Datastore/DataStore.cs +++ b/ITC81DB_0H/Datastore/DataStore.cs @@ -397,6 +397,10 @@ namespace ITC81DB_0H public static readonly string OPT2DelayTime1 = "6232"; // 옵션 - OPT2_지연시간2 public static readonly string OPT2DelayTime2 = "6233"; + // 옵션 - OPT2_영점실행주기 + public static readonly string OPT2ZeroZoneCycle = "6234"; + // 옵션 - OPT2_영점실행개수 + public static readonly string OPT2ZeroZoneCount = "6235"; // 옵션 - 메인보드와의 통신 Baudrate public static readonly string BLDCCommBaudrate = "6700"; // 옵션 - 메인보드와의 통신 Parity bit @@ -1887,7 +1891,7 @@ namespace ITC81DB_0H this.TransmissionDelayTimeCOM4 = 0; this.StatisticsPrintFormat = 0; - this.SerialNumber = "23B0000"; + this.SerialNumber = "23G0000"; this.MainBoardVersion = "000"; this.Unit = "g"; this.UserDefineCOM1 = ""; @@ -2020,9 +2024,9 @@ namespace ITC81DB_0H private int m_ModbusTCPSelectFunction; private int m_ModbusRTUSelectFunction; - private int m_ModbusRTUSlaveIDCOM1; - private int m_ModbusRTUSlaveIDCOM3; - private int m_ModbusRTUSlaveIDCOM4; + private int m_ModbusSlaveIDCOM1; + private int m_ModbusSlaveIDCOM3; + private int m_ModbusSlaveIDCOM4; private bool m_IsBypassDirectionPass; private bool m_IsBypassOnce; @@ -2345,20 +2349,20 @@ namespace ITC81DB_0H get { return this.m_ModbusRTUSelectFunction; } set { this.m_ModbusRTUSelectFunction = value; } } - public int ModbusRTUSlaveIDCOM1 + public int ModbusSlaveIDCOM1 { - get { return this.m_ModbusRTUSlaveIDCOM1; } - set { this.m_ModbusRTUSlaveIDCOM1 = value; } + get { return this.m_ModbusSlaveIDCOM1; } + set { this.m_ModbusSlaveIDCOM1 = value; } } - public int ModbusRTUSlaveIDCOM3 + public int ModbusSlaveIDCOM3 { - get { return this.m_ModbusRTUSlaveIDCOM3; } - set { this.m_ModbusRTUSlaveIDCOM3 = value; } + get { return this.m_ModbusSlaveIDCOM3; } + set { this.m_ModbusSlaveIDCOM3 = value; } } - public int ModbusRTUSlaveIDCOM4 + public int ModbusSlaveIDCOM4 { - get { return this.m_ModbusRTUSlaveIDCOM4; } - set { this.m_ModbusRTUSlaveIDCOM4 = value; } + get { return this.m_ModbusSlaveIDCOM4; } + set { this.m_ModbusSlaveIDCOM4 = value; } } public bool IsBypassDirectionPass @@ -2485,9 +2489,9 @@ namespace ITC81DB_0H this.ModbusTCPSelectFunction = 0; this.ModbusRTUSelectFunction = 0; - this.ModbusRTUSlaveIDCOM1 = 1; - this.ModbusRTUSlaveIDCOM3 = 1; - this.ModbusRTUSlaveIDCOM4 = 1; + this.ModbusSlaveIDCOM1 = 1; + this.ModbusSlaveIDCOM3 = 1; + this.ModbusSlaveIDCOM4 = 1; this.IsBypassDirectionPass = true; this.IsBypassOnce = true; @@ -2617,6 +2621,11 @@ namespace ITC81DB_0H #region Field private bool m_IsPart11; + private int m_MULTiJETSlaveAddressCOM1; + private int m_MULTiJETSlaveAddressCOM3; + private int m_MULTiJETSlaveAddressCOM4; + private int m_MULTiJETSlaveAddressEthernet; + private int m_StoragePeriod; #endregion @@ -2634,6 +2643,27 @@ namespace ITC81DB_0H set { this.m_IsPart11 = value; } } + public int MULTiJETSlaveAddressCOM1 + { + get { return this.m_MULTiJETSlaveAddressCOM1; } + set { this.m_MULTiJETSlaveAddressCOM1 = value; } + } + public int MULTiJETSlaveAddressCOM3 + { + get { return this.m_MULTiJETSlaveAddressCOM3; } + set { this.m_MULTiJETSlaveAddressCOM3 = value; } + } + public int MULTiJETSlaveAddressCOM4 + { + get { return this.m_MULTiJETSlaveAddressCOM4; } + set { this.m_MULTiJETSlaveAddressCOM4 = value; } + } + public int MULTiJETSlaveAddressEthernet + { + get { return this.m_MULTiJETSlaveAddressEthernet; } + set { this.m_MULTiJETSlaveAddressEthernet = value; } + } + public int StoragePeriod { get { return this.m_StoragePeriod; } @@ -2646,6 +2676,11 @@ namespace ITC81DB_0H { this.IsPart11 = false; + this.MULTiJETSlaveAddressCOM1 = 58; + this.MULTiJETSlaveAddressCOM3 = 58; + this.MULTiJETSlaveAddressCOM4 = 58; + this.MULTiJETSlaveAddressEthernet = 58; + this.StoragePeriod = 12; } #endregion @@ -2711,10 +2746,10 @@ namespace ITC81DB_0H public int DummyInt23; public int DummyInt24; public int DummyInt25; - public int DummyInt26; - public int DummyInt27; - public int DummyInt28; - public int DummyInt29; + public int MULTiJETSlaveAddressCOM1; + public int MULTiJETSlaveAddressCOM3; + public int MULTiJETSlaveAddressCOM4; + public int MULTiJETSlaveAddressEthernet; public int StoragePeriod; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] @@ -2761,7 +2796,11 @@ namespace ITC81DB_0H private string m_UnderRange; private string m_PassRange; private string m_OverRange; - private string m_TareRange; + private string m_TareRange; + private string m_SensingTime; + private string m_DispenserDelayTime1; + private string m_DispenserDelayTime2; + private string m_Sorting; private int m_ProgressBarMaximum; private int m_ProgressBarMinimum; @@ -2831,6 +2870,21 @@ namespace ITC81DB_0H get { return this.m_TareRange; } set { this.m_TareRange = value; } } + public string DispenserDelayTime1 + { + get { return this.m_DispenserDelayTime1; } + set { this.m_DispenserDelayTime1 = value; } + } + public string DispenserDelayTime2 + { + get { return this.m_DispenserDelayTime2; } + set { this.m_DispenserDelayTime2 = value; } + } + public string Sorting + { + get { return this.m_Sorting; } + set { this.m_Sorting = value; } + } public int OverRangeDeviation { @@ -2893,6 +2947,11 @@ namespace ITC81DB_0H { get { return int.Parse(this.TareRange); } } + public string SensingTime + { + get { return this.m_SensingTime; } + set { this.m_SensingTime = value; } + } public int ProgressBarMaximum { @@ -2937,6 +2996,10 @@ namespace ITC81DB_0H this.UnderRange = "1000"; this.OverRange = "3000"; this.TareRange = "0"; + this.SensingTime = "0"; + this.DispenserDelayTime1 = "200"; + this.DispenserDelayTime2 = "200"; + this.Sorting = "0"; this.ProgressBarMinimum = 0; this.ProgressBarMaximum = 5000; @@ -3026,9 +3089,10 @@ namespace ITC81DB_0H public string TareRange; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)] - public string DummyString1; + public string DispenserDelayTime1; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)] - public string DummyString2; + public string DispenserDelayTime2; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] public string DummyString3; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)] @@ -4540,13 +4604,14 @@ namespace ITC81DB_0H private string m_OPT2DelayTime1; private string m_OPT2DelayTime2; + private string m_OPT2ZeroZoneCycle; + private string m_OPT2ZeroZoneCount; + private string m_Dummy1; private string m_Dummy2; private string m_Dummy3; private string m_Dummy4; private string m_Dummy5; - private string m_Dummy6; - private string m_Dummy7; #endregion #region Constructor @@ -4630,6 +4695,17 @@ namespace ITC81DB_0H set { this.m_OPT2DelayTime2 = value; } } + public string OPT2ZeroZoneCycle + { + get { return this.m_OPT2ZeroZoneCycle; } + set { this.m_OPT2ZeroZoneCycle = value; } + } + public string OPT2ZeroZoneCount + { + get { return this.m_OPT2ZeroZoneCount; } + set { this.m_OPT2ZeroZoneCount = value; } + } + public string Dummy1 { get { return this.m_Dummy1; } @@ -4655,16 +4731,6 @@ namespace ITC81DB_0H get { return this.m_Dummy5; } set { this.m_Dummy5 = value; } } - public string Dummy6 - { - get { return this.m_Dummy6; } - set { this.m_Dummy6 = value; } - } - public string Dummy7 - { - get { return this.m_Dummy7; } - set { this.m_Dummy7 = value; } - } #endregion #region Method @@ -4682,13 +4748,14 @@ namespace ITC81DB_0H this.OPT2DelayTime1 = "0"; this.OPT2DelayTime2 = "0"; + this.OPT2ZeroZoneCycle = "0"; + this.OPT2ZeroZoneCount = "0"; + this.Dummy1 = "0"; this.Dummy2 = "0"; this.Dummy3 = "0"; this.Dummy4 = "0"; this.Dummy5 = "0"; - this.Dummy6 = "0"; - this.Dummy7 = "0"; } #endregion } @@ -4719,6 +4786,11 @@ namespace ITC81DB_0H [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string OPT2DelayTime2; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] + public string OPT2ZeroZoneCycle; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] + public string OPT2ZeroZoneCount; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string Dummy1; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] @@ -4729,10 +4801,6 @@ namespace ITC81DB_0H public string Dummy4; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string Dummy5; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string Dummy6; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] - public string Dummy7; } #endregion #region SystemParameter3 diff --git a/ITC81DB_0H/Datastore/Define.cs b/ITC81DB_0H/Datastore/Define.cs index 385514c..d6e1582 100644 --- a/ITC81DB_0H/Datastore/Define.cs +++ b/ITC81DB_0H/Datastore/Define.cs @@ -42,6 +42,8 @@ namespace ITC81DB_2H.Datastore ConfiEthernet, ConfiHelp, ConfiOptionBoard, + ConfiOptionBoard1, + ConfiOptionBoard2, EquipHelp, EquipUpdate, @@ -181,6 +183,7 @@ namespace ITC81DB_2H.Datastore ExNg, ExNg1, // 외부입력 PIN5 ExNg2, // 외부입력 Photo B + LengthError, // 제품길이 이상 } public enum E_WeightStatus @@ -316,7 +319,7 @@ namespace ITC81DB_2H.Datastore COM4 = 2, } - public enum E_SerialMode + public enum E_CommMode { f0_None = 0, f1_STD1, @@ -340,36 +343,13 @@ namespace ITC81DB_2H.Datastore f19_SmartJet, f20_imaje_9410_OPT3 = 20, f21_Impinj_Speedway_R420 = 21, // RFID - f22_Modbus_RTU, - f23_STD2, - } - - public enum E_EthernetMode - { - f0_None = 0, - f1_STD1, - f2_Remote, - f3_Printer, - f4_imaje_9410_OPT1, - f5_imaje_9028_OPT1 = 5, - f6_OPT0, - f7_imaje_9410_OPT2, - f8_imaje_9028_OPT2, - f9_Hitachi, - f10_MACSA_Laser = 10, - f11_Markoprint, - f12_alphaJET, - f13_Marking_VJ1510, - f14_OPT1, - f15_OPT2 = 15, - f16_OPC, - f17_OPT3, - f18_HP_200, - f19_SmartJet, - f20_imaje_9410_OPT3 = 20, - f21_Impinj_Speedway_R420 = 21, // RFID - f22_Modbus_TCP, + f22_Modbus, f23_STD2, + f24_MULTi_JET, + f25_DJ_VIDEOJET, + f26_LINX8830, + f27_MYJET, + f28_OPT4, } public enum E_ExternalOutputMode @@ -416,7 +396,7 @@ namespace ITC81DB_2H.Datastore { None, PowerOn, - BootingComplete, + Booting, Start, Stop, Bypass, @@ -424,10 +404,13 @@ namespace ITC81DB_2H.Datastore Logout, Zero, Clear, + BarcodeClear, + CountClear, UserEditor, Update, - Initialization_Main, - Initialization_LCD, + OPT1Using, + Init_Main, + Init_LCD, DataBackup, } @@ -435,15 +418,15 @@ namespace ITC81DB_2H.Datastore { None, - ProductNumber, - WeightOverRange, - WeightPassRange, - WeightUnderRange, - WeightTareRange, + ProductNo, + OverRange, + PassRange, + UnderRange, + TareRange, ChangeTime, - ChangeProductName, + ChangeName, ChangeLOT, COM1Baudrate, @@ -452,67 +435,82 @@ namespace ITC81DB_2H.Datastore COM3Mode, COM4Baudrate, COM4Mode, - EthernetOperationMode, - EthernetComMode, - EthernetLocalPort, - EthernetLocalIPConfiguration, - EthernetLocalIPAddress, - EthernetLocalSubnetMask, - EthernetLocalGateway, - EthernetServerIPAddress, - EthernetServerPort, + TCPOpMode, + TCPComMode, + TCPLocalPort, + TCPLocalIPConfig, + TCPLocalIPAddress, + TCPLocalSubnetMask, + TCPLocalGateway, + TCPServerIPAddress, + TCPServerPort, + Mod_Role, + Mod_SlaveID, + Mod_Timeout, + Mod_StartAddr, CalBalanceWeight, CalDecimalPoint, - JudgementFilter, - JudgementDelay, - JudgementDoubleDelay, - JudgementNumber, - JudgementSpeed, - JudgementDynamicCorrection, - JudgementDescendDelayTime, - JudgementAscendDelayTime, + JudgeFilter, + JudgeDelay, + JudgeDoubleDelay, + JudgeNumber, + JudgeSpeed, + JudgeDynamic, + JudgeDesDelay, + JudgeAscDelay, - SorterAMode, - SorterADelay, - SorterAOperation, - SorterBMode, - SorterBDelay, - SorterBOperation, - SorterDoubleEntry, - SorterExternalInput, - SorterExternalNG, + SorAMode, + SorADelay, + SorARun, + SorBMode, + SorBDelay, + SorBRun, + SorDoubleEntry, + SorExternalInput, + SorExternalNG, - AutoZeroIsUsing, - AutoZeroRangePlus, - AutoZeroRangeMinus, - AutoZeroVariation, + Auto0IsUsing, + Auto0RangePlus, + Auto0RangeMinus, + Auto0Variation, - ExInputPIN2Mode, - ExInputPIN3Mode, - ExInputPIN4Mode, - ExInputPIN5Mode, - ExInputPIN6Mode, + ExIn2Mode, + ExIn3Mode, + ExIn4Mode, + ExIn5Mode, + ExIn6Mode, - ExOutput1Mode, - ExOutput1Delay, - ExOutput1Operation, - ExOutput2Mode, - ExOutput2Delay, - ExOutput2Operation, - ExOutput3Mode, - ExOutput3Delay, - ExOutput3Operation, - ExOutput4Mode, - ExOutput4Delay, - ExOutput4Operation, - ExOutput5Mode, - ExOutput5Delay, - ExOutput5Operation, - ExOutput6Mode, - ExOutput6Delay, - ExOutput6Operation, + ExOut1Mode, + ExOut1Delay, + ExOut1Run, + ExOut2Mode, + ExOut2Delay, + ExOut2Run, + ExOut3Mode, + ExOut3Delay, + ExOut3Run, + ExOut4Mode, + ExOut4Delay, + ExOut4Run, + ExOut5Mode, + ExOut5Delay, + ExOut5Run, + ExOut6Mode, + ExOut6Delay, + ExOut6Run, + + OPT1SampleCount, + OPT1DelayCount, + OPT1PulseWidth, + OPT1OverRange, + OPT1UnderRange, + OPT2Delay1, + OPT2Delay2, + OPT2Port, + OPT2ZeroCycle, + OPT2ZeroCount, EquipmentID, BuzzerONTime, diff --git a/ITC81DB_0H/Datastore/Helper.cs b/ITC81DB_0H/Datastore/Helper.cs index 4751707..f2f4af0 100644 --- a/ITC81DB_0H/Datastore/Helper.cs +++ b/ITC81DB_0H/Datastore/Helper.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Collections.Generic; using System.Text; +using System.IO; using ITC81DB_2H.Datastore; @@ -307,6 +308,160 @@ namespace ITC81DB_0H return "0000000"; } + /// + /// 16진수를 10진수로 변환(String to String) + /// + /// + /// + public static string HexToDec(string value) + { + return Convert.ToInt64(value, 16).ToString(); + } + + /// + /// 16진수를 2진수로 변환(String to String) + /// + /// + /// + public static string HexToBin(string value) + { + return Convert.ToString(Convert.ToInt64(value, 16), 2); + } + + /// + /// 10진수를 2진수로 변환(String to String) + /// + /// + /// + public static string DecToBin(string value) + { + return Convert.ToString(Convert.ToInt64(value), 2); + } + + /// + /// 2진수를 10진수로 변환(String to String) + /// + /// + /// + public static string BinToDec(string value) + { + return Convert.ToInt64(value, 2).ToString(); + } + + /// + /// 2진수를 16진수로 변환(String to String) + /// + /// + /// + public static string BinToHex(string value) + { + return Convert.ToString(Convert.ToInt32(value, 2), 16); + } + + /// + /// string(255 이하의 숫자 string)을 16진수로 변환하는 방법 + /// + /// 1자리 string + /// + public static byte StringToHex(string value) + { + try + { + int iValue = int.Parse(value); + + if (0 <= iValue && iValue < 256) + { + string temp = iValue.ToString("X"); + return Convert.ToByte(temp, 16); + } + else + return 0x00; + } + catch + { + return 0x00; + } + } + + /// + /// Remove Folder로 이동 + /// + /// Remove Folder로 이동할 폴더 + public static void MoveToRemoveFolder(string directory) + { + bool removeFolderCheck = false; + string currentFolderPath = "", removeFolderPath = ""; + + currentFolderPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\"; + if (currentFolderPath.StartsWith("\\F") == true) + removeFolderPath = "Flash Disk\\RemoveFile\\"; + else + removeFolderPath = "SD Card\\RemoveFile\\"; + + FileInfo[] oldFiles; + DirectoryInfo[] oldDirectory; + DirectoryInfo dirOldFolder = new DirectoryInfo(directory); + DirectoryInfo dirFolderRemove = new DirectoryInfo(removeFolderPath); + + removeFolderCheck = dirFolderRemove.Exists; + if (removeFolderCheck == false) + dirFolderRemove.Create(); + + oldDirectory = dirOldFolder.GetDirectories(); + + foreach (DirectoryInfo subDirectory in oldDirectory) + { + oldFiles = subDirectory.GetFiles(); + foreach (FileInfo subFile in oldFiles) + subFile.MoveTo(removeFolderPath + DateTime.Now.ToString("yyyyMMddHHmmss") + subFile.Name.ToString()); + } + } + /// + /// 폴더 복사 + /// + /// 복사 출발점 폴더 + /// 복사 도착점 폴더 + public static void CopyToFolder(string departure, string destination) + { + DirectoryInfo dirDestinationFolder = new DirectoryInfo(destination); + if (dirDestinationFolder.Exists == false) + dirDestinationFolder.Create(); + + DirectoryInfo dirDepartureFolder = new DirectoryInfo(departure); + if (dirDepartureFolder.Exists == false) + dirDepartureFolder.Create(); + + FileInfo[] newFiles = dirDepartureFolder.GetFiles(); + + foreach (FileInfo subFile in newFiles) + subFile.CopyTo(destination + subFile.Name.ToString(), true); + } + /// + /// 폴더 이동 + /// + /// 복사 출발점 폴더 + /// 복사 도착점 폴더 + public static void MoveToFolder(string departure, string destination) + { + DirectoryInfo dirDestinationFolder = new DirectoryInfo(destination); + if (dirDestinationFolder.Exists == false) + dirDestinationFolder.Create(); + else + { + dirDestinationFolder.Delete(true); + dirDestinationFolder.Create(); + } + + DirectoryInfo dirDepartureFolder = new DirectoryInfo(departure); + if (dirDepartureFolder.Exists == false) + dirDepartureFolder.Create(); + + FileInfo[] newFiles = dirDepartureFolder.GetFiles(); + + foreach (FileInfo subFile in newFiles) + subFile.MoveTo(destination + subFile.Name.ToString()); + } + public static byte ChecksumCalculator(byte[] array) { byte checksum = 0x00; diff --git a/ITC81DB_0H/DialogForms/DialogFormLogOn.cs b/ITC81DB_0H/DialogForms/DialogFormLogOn.cs index 12c69e4..3490eea 100644 --- a/ITC81DB_0H/DialogForms/DialogFormLogOn.cs +++ b/ITC81DB_0H/DialogForms/DialogFormLogOn.cs @@ -23,6 +23,7 @@ namespace ITC81DB_0H.DialogForms // false : 패스워드 변경, true : 로그인 private bool IsLogin; private string ID; + private string Password; UserManager.UserMgr_user_info_t UserInfo = new UserManager.UserMgr_user_info_t(); @@ -178,8 +179,10 @@ namespace ITC81DB_0H.DialogForms DialogFormLogOn changePW = new DialogFormLogOn(this.ParentForm, this.ParentForm.SystemConfig1.Language, this.textBoxID.Text); if (changePW.ShowDialog() == DialogResult.OK) { - UserManager.UserManager_UserLoginDirect(this.ID, this.textBoxPassword.Text, ref this.UserInfo); + UserManager.UserManager_UserLockRelease(this.textBoxID.Text, false, true); + UserManager.UserManager_UserLoginDirect(this.textBoxID.Text, this.ParentForm.CurrentSystemStatus.CurrentUser.Password, ref this.UserInfo); + //this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut; this.SuccessLogin(this.UserInfo); } } @@ -189,34 +192,27 @@ namespace ITC81DB_0H.DialogForms catch (Exception ex) { FormMain.Exception(ex); + + this.DialogResult = DialogResult.Cancel; + this.Close(); } - #endregion this.DialogResult = DialogResult.OK; this.Close(); + #endregion } else { - if (this.UserInfo.status == 15) + if (this.UserInfo.status == 15) // USER_MGR_STATUS_PW_PASSWORD_LOCK { this.Close(); - string sValue = ""; - sValue = this.ParentForm.ChildFormMainDisplay.DisplayExpireOfPassword(this.ParentForm.CurrentSystemStatus.CurrentUser.Group); - - if (sValue != "-") + DialogFormLogOn changePW = new DialogFormLogOn(this.ParentForm, this.ParentForm.SystemConfig1.Language, this.textBoxID.Text); + if (changePW.ShowDialog() == DialogResult.OK) { - int intExpireDate = int.Parse(sValue); - if (intExpireDate > 0) - { - DialogFormLogOn changePW = new DialogFormLogOn(this.ParentForm, this.ParentForm.SystemConfig1.Language, this.textBoxID.Text); - if (changePW.ShowDialog() == DialogResult.OK) - { - UserManager.UserManager_UserLoginDirect(this.ID, this.textBoxPassword.Text, ref this.UserInfo); + UserManager.UserManager_UserLoginDirect(this.textBoxID.Text, this.ParentForm.CurrentSystemStatus.CurrentUser.Password, ref this.UserInfo); - this.SuccessLogin(this.UserInfo); - } - } + this.SuccessLogin(this.UserInfo); } } else @@ -360,17 +356,26 @@ namespace ITC81DB_0H.DialogForms return; } - if (this.textBoxID.Text != this.textBoxPassword.Text) + try { - // 비밀번호가 동일하지 않습니다 - DialogFormMessage myMsg = new DialogFormMessage(null, 17, this.ParentForm.SystemConfig1.Language); - myMsg.ShowDialog(); - } - else - { - UserManager.UserManager_UserModifyPW(this.ID, this.textBoxPassword.Text); + if (this.textBoxID.Text != this.textBoxPassword.Text) + { + // 비밀번호가 동일하지 않습니다 + DialogFormMessage myMsg = new DialogFormMessage(null, 17, this.ParentForm.SystemConfig1.Language); + myMsg.ShowDialog(); + } + else + { + UserManager.UserManager_UserModifyPW(this.ID, this.textBoxPassword.Text); + this.ParentForm.CurrentSystemStatus.CurrentUser.Password = this.textBoxPassword.Text; - this.DialogResult = DialogResult.OK; + this.DialogResult = DialogResult.OK; + this.Close(); + } + } + catch + { + this.DialogResult = DialogResult.Cancel; this.Close(); } } @@ -429,6 +434,49 @@ namespace ITC81DB_0H.DialogForms if (this.IsPart11 == true) this.ParentForm.ChildFormMainDisplay.Part11AutomaticLogoutReset(); } - #endregion + #endregion + + private void smartButton1_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.IsPart11 == true) + this.ParentForm.ChildFormMainDisplay.Part11AutomaticLogoutReset(); + + this.textBoxID.Text = "admin00"; + this.textBoxPassword.Text = "admin12!"; + + if (this.IsLogin == true) + this.Login(); + else + this.SaveChangePassword(); + } + private void smartButton2_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.IsPart11 == true) + this.ParentForm.ChildFormMainDisplay.Part11AutomaticLogoutReset(); + + this.textBoxID.Text = "honggd"; + this.textBoxPassword.Text = "hong1278@"; + + if (this.IsLogin == true) + this.Login(); + else + this.SaveChangePassword(); + } + private void smartButton3_Click(object sender, EventArgs e) + { + // Automatic Logout Reset + if (this.IsPart11 == true) + this.ParentForm.ChildFormMainDisplay.Part11AutomaticLogoutReset(); + + this.textBoxID.Text = "chocjy"; + this.textBoxPassword.Text = "cho1266@"; + + if (this.IsLogin == true) + this.Login(); + else + this.SaveChangePassword(); + } } } \ No newline at end of file diff --git a/ITC81DB_0H/Forms/FormMain.cs b/ITC81DB_0H/Forms/FormMain.cs index 6dd9692..56c190b 100644 --- a/ITC81DB_0H/Forms/FormMain.cs +++ b/ITC81DB_0H/Forms/FormMain.cs @@ -612,12 +612,12 @@ namespace ITC81DB_0H.Forms this.EthernetClientDisconnect(); } - if (this.SystemConfig2.EthernetCommMode != (int)Define.E_EthernetMode.f0_None) + if (this.SystemConfig2.EthernetCommMode != (int)Define.E_CommMode.f0_None) { switch (this.SystemConfig2.EthernetCommMode) { - case (int)Define.E_EthernetMode.f16_OPC: - case (int)Define.E_EthernetMode.f22_Modbus_TCP: + case (int)Define.E_CommMode.f16_OPC: + case (int)Define.E_CommMode.f22_Modbus: this.ChildFormMainDisplay.MainBottomModbusIconAdd(true); break; default: @@ -1143,7 +1143,7 @@ namespace ITC81DB_0H.Forms public void PrintingHeadLine() { - if (this.SystemConfig1.SerialCOM1Mode == (int)Define.E_SerialMode.f3_Printer) + if (this.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f3_Printer) { this.TransferSerialCOM1("\n--------------------------------"); this.TransferSerialCOM1(" NO GRADE WEIGHT"); @@ -1151,7 +1151,7 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM1(" COUNT"); this.TransferSerialCOM1("\n--------------------------------"); } - if (this.SystemConfig1.SerialCOM3Mode == (int)Define.E_SerialMode.f3_Printer) + if (this.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f3_Printer) { this.TransferSerialCOM3("\n--------------------------------"); this.TransferSerialCOM3(" NO GRADE WEIGHT"); @@ -1159,7 +1159,7 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM3(" COUNT"); this.TransferSerialCOM3("\n--------------------------------"); } - if (this.SystemConfig1.SerialCOM4Mode == (int)Define.E_SerialMode.f3_Printer) + if (this.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f3_Printer) { this.TransferSerialCOM4("\n--------------------------------"); this.TransferSerialCOM4(" NO GRADE WEIGHT"); @@ -1443,6 +1443,7 @@ namespace ITC81DB_0H.Forms private void InitializeAES() { Encryption.DllAesEncryption_Event += Aes_Encryption_Event; + Encryption.DllAesEncryption_GetVersionDataEvent += AesEncryption_GetVersionDataEvent; Encryption.InitializeEncryption(); } @@ -1573,7 +1574,7 @@ namespace ITC81DB_0H.Forms } #region Test 용 통신 로그 - fullPath = this.PathDataBackupFolder + "Communicationlog.txt"; + fullPath = this.PathDataOthersFolder + "Communicationlog.txt"; this.smartFileCommunicationLog.FilePathName = fullPath; //this.smartFileCommunicationLog.Open(); //this.IsCommunicationLogOpen = true; @@ -1723,6 +1724,18 @@ namespace ITC81DB_0H.Forms for (int i = 0; i < byteData.Length; i++) collection.Add(byteData[i]); } + public byte Checksumcalculator1digit(byte[] byteArray) + { + byte step1 = 0, step2 = 0, step3 = 0; + + for (int i = 0; i < byteArray.Length; i++) + step1 += byteArray[i]; + + step2 = (byte)(step1 & 0x00ff); + step3 = (byte)(0x0100 - step2); + + return step3; + } private void ChecklogPrint(string receiveData, WeightData weight) { @@ -2276,7 +2289,8 @@ namespace ITC81DB_0H.Forms return ret; break; case "SR0": - if ((ret = this.ReceiveCommandSR0(lane, dataID, transferCount, receiveData)) != 0) + case "SM0": + if ((ret = this.ReceiveCommand(cmd, lane, dataID, transferCount, receiveData)) != 0) return ret; break; case "SC0": @@ -2309,10 +2323,6 @@ namespace ITC81DB_0H.Forms if ((ret = this.ReceiveCommandSD0(lane, dataID, transferCount, receiveData)) != 0) return ret; break; - case "SM0": - if ((ret = this.ReceiveCommandSM0(lane, dataID, transferCount, receiveData)) != 0) - return ret; - break; case "SB0": if ((ret = this.ReceiveCommandSB0(lane, dataID, transferCount, receiveData)) != 0) return ret; @@ -2428,7 +2438,7 @@ namespace ITC81DB_0H.Forms { this.IsBootingComplete = true; this.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterCount, ""); - this.SetTrackingHistoryData(Define.E_TrackingOperation.BootingComplete, ""); + this.SetTrackingHistoryData(Define.E_TrackingOperation.Booting, ""); if (this.CurrentSystemStatus.CurrentDisplay != Define.E_DisplayStore.MainDisplay) { @@ -2927,8 +2937,8 @@ namespace ITC81DB_0H.Forms return ret; } - // 운전시 중량(여기서 변경되는 부분은 SM0에도 적용해야 함) - private int ReceiveCommandSR0(string lane, string dataID, string transferCount, string receiveData) + // 운전시 중량 + private int ReceiveCommand(string cmd, string lane, string dataID, string transferCount, string receiveData) { int ret = 0; int temp = 0; @@ -2938,19 +2948,44 @@ namespace ITC81DB_0H.Forms switch (lane) { case "A": - #region Value Assign - this.CurrentWeightData.JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(0, 2)); - this.ConverterAlarm(this.CurrentWeightData, receiveData.Substring(2, 3)); - this.CurrentWeightData.Weight = Helper.StringToWeight(receiveData.Substring(5, 5), this.SystemConfig1.DecimalPlaces); - this.CurrentWeightData.WeightString = receiveData.Substring(5, 5); - this.CurrentWeightData.ADCValue = receiveData.Substring(10, 5); - //this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(15, 4).Trim()); + switch (cmd) + { + case "SR0": // 운전 시 중량 + #region Value Assign + this.CurrentWeightData.JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(0, 2)); + this.ConverterAlarm(this.CurrentWeightData, receiveData.Substring(2, 3)); + this.CurrentWeightData.Weight = Helper.StringToWeight(receiveData.Substring(5, 5), this.SystemConfig1.DecimalPlaces); + this.CurrentWeightData.WeightString = receiveData.Substring(5, 5); + this.CurrentWeightData.ADCValue = receiveData.Substring(10, 5); + //this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(15, 4).Trim()); - this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); - this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); + this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); + this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); + + this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; + #endregion + break; + case "SM0": // 랜덤모드 사용 + 운전 시 중량 + #region Value Assign + this.SystemConfig1.ProductNumber = int.Parse(receiveData.Substring(0, 4)); + + this.CurrentWeightData.JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(4, 2)); + this.ConverterAlarm(this.CurrentWeightData, receiveData.Substring(6, 3)); + this.CurrentWeightData.Weight = Helper.StringToWeight(receiveData.Substring(9, 5), this.SystemConfig1.DecimalPlaces); + this.CurrentWeightData.WeightString = receiveData.Substring(9, 5); + this.CurrentWeightData.ADCValue = receiveData.Substring(14, 5); + this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(19, 4).Trim()); + + this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); + this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); + + this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; + #endregion + break; + default: + break; + } - this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; - #endregion // 통신 제대로 받으면 ACK this.TransferData(string.Format("{0}{1}{2}{3}", CommunicationCommand.RunWeightData, (int)Define.E_ResponseData.ACK, dataID, transferCount), CommunicationID.MainBoard); @@ -3030,7 +3065,7 @@ namespace ITC81DB_0H.Forms case 13: this.TransferSerialCOM1(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); break; - case 17 : + case 17: this.TransferSerialCOM1(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); break; case 18: @@ -3057,17 +3092,29 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register) + case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { - byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusRTUSlaveIDCOM1, this.SystemConfig2.ModbusRTUStartAddressCOM1); + byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM1, this.SystemConfig2.ModbusRTUStartAddressCOM1); this.TransferSerialCOM1(sendData); } break; - case (int)Define.E_SerialMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.TransferSerialCOM1(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.TransferSerialCOM1(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.TransferSerialCOM1(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.TransferSerialCOM1(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.TransferSerialCOM1(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; default: break; } @@ -3160,17 +3207,29 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register) + case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { - byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusRTUSlaveIDCOM3, this.SystemConfig2.ModbusRTUStartAddressCOM3); + byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM3, this.SystemConfig2.ModbusRTUStartAddressCOM3); this.TransferSerialCOM3(sendData); } break; - case (int)Define.E_SerialMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.TransferSerialCOM3(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.TransferSerialCOM3(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.TransferSerialCOM3(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.TransferSerialCOM3(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.TransferSerialCOM3(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; default: break; } @@ -3263,17 +3322,29 @@ namespace ITC81DB_0H.Forms this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: // Modbus RTU(Master 사용 시 - Write multiple register) + case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { - byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusRTUSlaveIDCOM4, this.SystemConfig2.ModbusRTUStartAddressCOM4); + byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM4, this.SystemConfig2.ModbusRTUStartAddressCOM4); this.TransferSerialCOM4(sendData); } break; - case (int)Define.E_SerialMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.TransferSerialCOM4(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.TransferSerialCOM4(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.TransferSerialCOM4(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.TransferSerialCOM4(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.TransferSerialCOM4(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; default: break; } @@ -3375,7 +3446,7 @@ namespace ITC81DB_0H.Forms this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_EthernetMode.f22_Modbus_TCP: // 22, Modbus TCP + case (int)Define.E_CommMode.f22_Modbus: // 22, Modbus TCP if (this.SystemConfig2.ModbusTCPSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { byte[] sendData = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusTCPStartAddress); @@ -3383,10 +3454,23 @@ namespace ITC81DB_0H.Forms this.EthernetServerSendMessage(client, sendData); } break; - case (int)Define.E_EthernetMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.EthernetServerSendMessage(client, this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.EthernetServerSendMessage(client, this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.EthernetServerSendMessage(client, this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + this.EthernetServerSendMessage(client, this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.EthernetServerSendMessage(client, this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; default: break; } @@ -3500,7 +3584,7 @@ namespace ITC81DB_0H.Forms this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK } break; - case (int)Define.E_EthernetMode.f22_Modbus_TCP: // 22, Modbus TCP + case (int)Define.E_CommMode.f22_Modbus: // 22, Modbus TCP if (this.SystemConfig2.ModbusTCPSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) { this.ClientSendDatabyteArray = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusTCPStartAddress); @@ -3508,870 +3592,21 @@ namespace ITC81DB_0H.Forms this.EthernetWeightDataForModbus(this.ClientSendDatabyteArray); } break; - case (int)Define.E_EthernetMode.f23_STD2: + case (int)Define.E_CommMode.f23_STD2: this.ClientSendDataString = this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem); this.EthernetWeightData(this.ClientSendDataString); break; - default: + case (int)Define.E_CommMode.f24_MULTi_JET: + this.EthernetWeightData(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); break; - } - #endregion - } - break; - default: - break; - } - #endregion - - #region 카운터출력 - - #region Counting Output 1 - temp = this.SystemConfig2.CountingOutput1Number; - - if (this.SystemConfig2.CountingOutput1Mode != 0 && temp != 0) - { - switch (this.SystemConfig2.CountingOutput1Mode) - { - case 1: // Pass - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - case 2: // NG - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over - || this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - case 3: // Over - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - case 4: // Under - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23. 알람 조건이 충족하여 장비가 정지되었습니다 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - default: - break; - } - } - #endregion - - #region Counting Output 2 - temp = this.SystemConfig2.CountingOutput2Number; - - if (this.SystemConfig2.CountingOutput2Mode != 0 && temp != 0) - { - switch (this.SystemConfig2.CountingOutput2Mode) - { - case 1: // Pass - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - case 2: // NG - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over - || this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - case 3: // Over - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - case 4: // Under - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - default: - break; - } - } - #endregion - - this.ChildFormMainDisplay.MainDisplayWeightBigScreen.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count); - this.ChildFormMainDisplay.MainDisplayWeightSmall.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count); - #endregion - - // CurrentDisplay - switch (this.CurrentSystemStatus.CurrentDisplay) - { - case Define.E_DisplayStore.MainDisplay: - #region MainDisplay - if (this.SystemConfig1.IsBarcodeEnable == true) - { - this.CurrentBarcode.BarcodeDequeue(); - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateBarcodeDisplay(this.CurrentBarcode); - - if (this.CurrentBarcode.GetQueueCount > 0) - this.BarcodeProductChange(this.CurrentBarcode); - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData); - } - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData); - - if (this.SystemConfig1.DatabackupFormat == 1) - { - #region OPT1 - 종근당 옵션 - if (this.timeOut.Enabled == true) - this.timeOut.Enabled = false; - - //if (this.CollectionBufferWeightData.Count != 0) - //{ - // if (this.CurrentJudgmentResult.PreviousRejectData != Define.E_JudgmentResult.None) - // this.CollectionBufferWeightData[0].Status = this.CurrentJudgmentResult.PreviousRejectData.ToString(); - // else - // this.CollectionBufferWeightData[0].Status = Define.E_JudgmentResult.OM.ToString(); - // this.DataBackup1(this.CollectionBufferWeightData[0]); - // this.CollectionBufferWeightData.Clear(); - //} - - this.CollectionBufferWeightData.Add(new DataBackupOPT1()); - this.CollectionBufferWeightData[this.CollectionBufferWeightData.Count - 1].SetData( - this.CurrentProductItem, this.CurrentWeightData, this.SystemConfig1, DateTime.Now); - - if (this.CurrentJudgmentSetItem.Sorter2Mode == 3) - this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter2DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter2RunTime * 5) + 1000; - else - this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter1DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter1RunTime * 5) + 1000; - this.timeOut.Enabled = true; - #endregion - } - else - { - #region STD1 - if (this.CurrentWeightData.JudgmentStatus != Define.E_JudgmentStatus.Empty) - this.TrackingInspectionData0(this.CurrentWeightData); - #endregion - } - - // 표준분포 - this.CurrentWeightData.SetNormalDistribution(this.CurrentProductItem.CollectionNormalDistributionRange, this.CurrentWeightData.WeightString); - #endregion - break; - default: - break; - } - break; - default: - break; - } - } - catch - { - ret = -1; - } - - return ret; - } - // 랜덤모드 사용 시 운전시 중량 - private int ReceiveCommandSM0(string lane, string dataID, string transferCount, string receiveData) - { - int ret = 0; - int temp = 0; - - try - { - switch (lane) - { - case "A": - #region Value Assign - this.SystemConfig1.ProductNumber = int.Parse(receiveData.Substring(0, 4)); - - this.CurrentWeightData.JudgmentStatus = Helper.StringToJudgmentStatus(receiveData.Substring(4, 2)); - this.ConverterAlarm(this.CurrentWeightData, receiveData.Substring(6, 3)); - this.CurrentWeightData.Weight = Helper.StringToWeight(receiveData.Substring(9, 5), this.SystemConfig1.DecimalPlaces); - this.CurrentWeightData.WeightString = receiveData.Substring(9, 5); - this.CurrentWeightData.ADCValue = receiveData.Substring(14, 5); - this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(19, 4).Trim()); - - this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); - this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); - - this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; - #endregion - // 통신 제대로 받으면 ACK - this.TransferData(string.Format("{0}{1}{2}{3}", CommunicationCommand.RunWeightData, (int)Define.E_ResponseData.ACK, dataID, transferCount), CommunicationID.MainBoard); - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, - this.CurrentProductItem, this.CurrentWeightData); - - // V6.2.0 - if (this.OverloadWeight <= this.CurrentWeightData.Weight) - { - this.CurrentWeightData.WeightString = this.CurrentCalibrationItem.OverloadWeightString; - this.CurrentWeightData.Weight = this.OverloadWeight; - } - - #region 통신 - // 통신 COM1 - if (this.SystemConfig1.SerialCOM1Mode != 0) - { - #region COM1 - switch (this.SystemConfig1.SerialCOM1Mode) - { - case 1: - this.TransferSerialCOM1(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.TransferSerialCOM1(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.TransferSerialCOM1(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM1(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM1_Step = 1; - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.TransferSerialCOM1(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.TransferSerialCOM1(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.TransferSerialCOM1(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.TransferSerialCOM1(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); - break; - case 10: - this.TransferSerialCOM1(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.TransferSerialCOM1(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.TransferSerialCOM1(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.TransferSerialCOM1(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.TransferSerialCOM1(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.TransferSerialCOM1(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.TransferSerialCOM1(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.TransferSerialCOM1(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM1(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_SerialMode.f23_STD2: - this.TransferSerialCOM1(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - default: - break; - } - #endregion - } - // 통신 COM3 - if (this.SystemConfig1.SerialCOM3Mode != 0) - { - #region COM3 - switch (this.SystemConfig1.SerialCOM3Mode) - { - case 1: - this.TransferSerialCOM3(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.TransferSerialCOM3(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.TransferSerialCOM3(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM3(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM3_Step = 1; - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.TransferSerialCOM3(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.TransferSerialCOM3(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.TransferSerialCOM3(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.TransferSerialCOM3(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM3)); - break; - case 10: - this.TransferSerialCOM3(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.TransferSerialCOM3(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.TransferSerialCOM3(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.TransferSerialCOM3(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.TransferSerialCOM3(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.TransferSerialCOM3(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.TransferSerialCOM3(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.TransferSerialCOM3(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM3(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_SerialMode.f23_STD2: - this.TransferSerialCOM3(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - default: - break; - } - #endregion - } - // 통신 COM4 - if (this.SystemConfig1.SerialCOM4Mode != 0) - { - #region COM4 - switch (this.SystemConfig1.SerialCOM4Mode) - { - case 1: - this.TransferSerialCOM4(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.TransferSerialCOM4(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.TransferSerialCOM4(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM4(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM4_Step = 1; - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.TransferSerialCOM4(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.TransferSerialCOM4(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.TransferSerialCOM4(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.TransferSerialCOM4(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM4)); - break; - case 10: - this.TransferSerialCOM4(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.TransferSerialCOM4(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.TransferSerialCOM4(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.TransferSerialCOM4(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.TransferSerialCOM4(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.TransferSerialCOM4(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.TransferSerialCOM4(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.TransferSerialCOM4(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM4(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_SerialMode.f23_STD2: - this.TransferSerialCOM4(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - default: - break; - } - #endregion - } - - // 이더넷 - switch (this.SystemConfig2.EthernetOperationMode) - { - case 1: - if (this.smartTCPMultiServer.ClientInfoList != null) - { - if (this.SystemConfig2.EthernetCommMode != 0) - { - foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList) - { - #region Server - switch (this.SystemConfig2.EthernetCommMode) - { - case 1: - this.EthernetServerSendMessage(client, - this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.EthernetServerSendMessage(client, this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.EthernetServerSendMessage(client, this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM1_Step = 1; - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.EthernetServerSendMessage(client, this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.EthernetServerSendMessage(client, this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.EthernetServerSendMessage(client, this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.EthernetServerSendMessage(client, this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); - break; - case 10: - this.EthernetServerSendMessage(client, this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.EthernetServerSendMessage(client, this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.EthernetServerSendMessage(client, this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.EthernetServerSendMessage(client, this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.EthernetServerSendMessage(client, this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.EthernetServerSendMessage(client, this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_EthernetMode.f23_STD2: - this.EthernetServerSendMessage(client, - this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - default: - break; - } - #endregion - } - } - } - break; - case 2: - if (this.SystemConfig2.EthernetCommMode != 0) - { - #region Client - switch (this.SystemConfig2.EthernetCommMode) - { - case 1: - this.EthernetWeightData(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + case (int)Define.E_CommMode.f26_LINX8830: + this.EthernetWeightData(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); break; - case 2: - this.EthernetWeightData(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); + case (int)Define.E_CommMode.f27_MYJET: + this.EthernetWeightData(this.Transfer_27_MYJET(false, this.CurrentWeightData)); break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.EthernetWeightData(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetWeightData(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM1_Step = 1; - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.EthernetWeightData(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.EthernetWeightData(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.EthernetWeightData(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.EthernetWeightData(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); - break; - case 10: - this.EthernetWeightData(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.EthernetWeightData(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.EthernetWeightData(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.EthernetWeightData(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.EthernetWeightData(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.EthernetWeightData(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.EthernetWeightData(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.EthernetWeightData(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetWeightData(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_EthernetMode.f23_STD2: - this.EthernetWeightData(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.EthernetWeightData(this.Transfer_28_OPT4(false, this.CurrentWeightData)); break; default: break; @@ -4642,6 +3877,7 @@ namespace ITC81DB_0H.Forms if (this.SystemConfig1.IsBarcodeEnable == true) { this.CurrentBarcode.BarcodeDequeue(); + if (this.ChildFormMainDisplay != null) this.ChildFormMainDisplay.UpdateBarcodeDisplay(this.CurrentBarcode); @@ -4882,6 +4118,15 @@ namespace ITC81DB_0H.Forms #endregion #region Communication protocol + public string PadLeft(int length, string sValue) + { + string temp; + + temp = sValue.PadLeft(length, ' '); + + return temp; + } + private string Transfer_1_STD1(SystemConfigurationItem1 system, WeightData weight, ProductItem product) { StringBuilder sb = new StringBuilder(); @@ -6465,6 +5710,193 @@ namespace ITC81DB_0H.Forms return sb.ToString(); } + private byte[] Transfer_24_MULTi_JET(bool isFillZero, WeightData weight) + { + byte slaveAddress = 1; + string tempString = ""; + byte[] byteArray = new byte[29]; + byte[] date = new UTF8Encoding().GetBytes(string.Format("{0:yyyy.MM.dd}", DateTime.Now)); + byte[] bytes = new byte[7]; + + byteArray[0] = 0x1B; + byteArray[1] = 0x02; + if (this.SystemConfig2.EthernetOperationMode != 0) + { + if (this.smartTCPMultiServer.IsStart == true && this.smartTCPMultiServer.ClientInfoList.Length != 0) + { + string temp = this.smartTCPMultiServer.ClientInfoList[0].strIPAddress.Trim(); + string[] splitTemp = temp.Split('.'); + slaveAddress = Convert.ToByte(splitTemp[3]); + } + } + else + { + if (this.SystemConfig1.SerialCOM1Mode == (int)Define.E_CommMode.f24_MULTi_JET) + slaveAddress = Convert.ToByte(this.SystemConfig3.MULTiJETSlaveAddressCOM1); + else if (this.SystemConfig1.SerialCOM3Mode == (int)Define.E_CommMode.f24_MULTi_JET) + slaveAddress = Convert.ToByte(this.SystemConfig3.MULTiJETSlaveAddressCOM3); + else if (this.SystemConfig1.SerialCOM4Mode == (int)Define.E_CommMode.f24_MULTi_JET) + slaveAddress = Convert.ToByte(this.SystemConfig3.MULTiJETSlaveAddressCOM4); + } + byteArray[2] = slaveAddress; + byteArray[3] = 0x1D; // 고정값, 원격 필드 데이터 다운로드(1D) + byteArray[4] = 0x02; // 데이터 개수 + byteArray[5] = 0x01; // 필드ID(마킹기 화면에서 설정 가능) + byteArray[6] = 0x0A; // 현재 필드ID 자리수 + for (int i = 0; i < date.Length; i++) + byteArray[7 + i] = date[i]; + byteArray[17] = 0x02; // 필드ID(마킹기 화면에서 설정 가능) + byteArray[18] = 0x07; // 현재 필드ID 자리수 + + if (isFillZero == true) + tempString = Helper.StringZeroFillDigits6(Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces)) + 'g'; + else + tempString = this.PadLeft(6, Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces)) + 'g'; + + for (int i = 0; i < tempString.Length; i++) + { + bytes[i] = Convert.ToByte(tempString[i]); + byteArray[19 + i] = bytes[i]; + } + byteArray[26] = 0x1B; + byteArray[27] = 0x03; + byteArray[28] = this.Checksumcalculator1digit(byteArray); + + return byteArray; + } + private byte[] Transfer_26_LINX8830(bool isFillZero, WeightData weight) + { + byte[] byteArray = new byte[13]; + byte[] bytes = new byte[6]; + + // 0~4 고정값 + byteArray[0] = 0x1b; + byteArray[1] = 0x02; + byteArray[2] = 0x1D; + byteArray[3] = 0x06; + byteArray[4] = 0x00; + + if (weight.Weight >= 0.0) + { + if (isFillZero == true) + bytes = new UTF8Encoding().GetBytes(Helper.StringZeroFillDigits6(Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + else + bytes = new UTF8Encoding().GetBytes(this.PadLeft(6, Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + } + else + { + if (isFillZero == true) + bytes = new UTF8Encoding().GetBytes(Helper.StringZeroFillDigits6(Helper.DoubleToString(0.0, this.SystemConfig1.DecimalPlaces))); + else + bytes = new UTF8Encoding().GetBytes(this.PadLeft(6, Helper.DoubleToString(0.0, this.SystemConfig1.DecimalPlaces))); + } + + for (int i = 0; i < bytes.Length; i++) + { + byteArray[i + 5] = bytes[i]; + } + + // 11~12 고정값 + byteArray[11] = 0x1b; + byteArray[12] = 0x03; + + return byteArray; + } + private byte[] Transfer_27_MYJET(bool isFillZero, WeightData weight) + { + byte[] byteArray = new byte[16]; + byte[] bytes = new byte[6]; + + // 0~6 고정값 + byteArray[0] = 0x1b; + byteArray[1] = 0x02; + string[] ethernetAddr = this.SystemConfig2.EthernetAddress.Split('.'); + byteArray[2] = Helper.StringToHex(ethernetAddr[ethernetAddr.Length - 1]); // Server IP 맨 마지막자리 + byteArray[3] = 0x1D; + byteArray[4] = 0x01; + byteArray[5] = 0x01; + byteArray[6] = 0x06; + + if (weight.Weight >= 0.0) + { + if (isFillZero == true) + bytes = new UTF8Encoding().GetBytes(Helper.StringZeroFillDigits6(Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + else + bytes = new UTF8Encoding().GetBytes(this.PadLeft(6, Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + } + else + { + if (isFillZero == true) + bytes = new UTF8Encoding().GetBytes(Helper.StringZeroFillDigits6(Helper.DoubleToString(0.0, this.SystemConfig1.DecimalPlaces))); + else + bytes = new UTF8Encoding().GetBytes(this.PadLeft(6, Helper.DoubleToString(0.0, this.SystemConfig1.DecimalPlaces))); + } + + for (int i = 0; i < bytes.Length; i++) + { + byteArray[i + 7] = bytes[i]; + } + + // 13~14 고정값 + byteArray[13] = 0x1b; + byteArray[14] = 0x03; + + byteArray[15] = 0x00; + byteArray[15] = this.Checksumcalculator1digit(byteArray); + + return byteArray; + } + private string Transfer_28_OPT4(bool isFillZero, WeightData weight) + { + if (this.SystemConfig2.Barcode == 0) + return ""; + + StringBuilder sb = new StringBuilder(); + DateTime nowTime = DateTime.Now; + + sb.Append((char)0x02); + sb.Append(string.Format("{0:yyyy-MM-dd HH:mm:ss}", nowTime)); + sb.Append(";"); + switch (weight.JudgmentStatus) + { + case Define.E_JudgmentStatus.Empty: + break; + case Define.E_JudgmentStatus.Under: + sb.Append("U"); + break; + case Define.E_JudgmentStatus.Pass: + sb.Append("P"); + break; + case Define.E_JudgmentStatus.Over: + sb.Append("O"); + break; + case Define.E_JudgmentStatus.Double: + sb.Append("D"); + break; + case Define.E_JudgmentStatus.Metal: + sb.Append("M"); + break; + case Define.E_JudgmentStatus.ExNg: + sb.Append("E"); + break; + case Define.E_JudgmentStatus.LengthError: + sb.Append("L"); + break; + default: + sb.Append("E"); + break; + } + sb.Append(";"); + if (isFillZero == true) + sb.Append(Helper.StringZeroFillDigits6(Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + else + sb.Append(this.PadLeft(6, Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces))); + sb.Append(";"); + sb.Append(this.CurrentBarcode.BarcodePeek()); + sb.Append((char)0x03); + + return sb.ToString(); + } #endregion #region SerialCommunication @@ -8982,9 +8414,9 @@ namespace ITC81DB_0H.Forms structItem.ModbusTCPSelectFunction = this.SystemConfig2.ModbusTCPSelectFunction; structItem.BLDCTotalMotorNum = this.SystemConfig2.BLDCTotalMotorNum; structItem.ModbusRTUSelectFunction = this.SystemConfig2.ModbusRTUSelectFunction; - structItem.ModbusRTUSlaveIDCOM1 = this.SystemConfig2.ModbusRTUSlaveIDCOM1; - structItem.ModbusRTUSlaveIDCOM3 = this.SystemConfig2.ModbusRTUSlaveIDCOM3; - structItem.ModbusRTUSlaveIDCOM4 = this.SystemConfig2.ModbusRTUSlaveIDCOM4; + structItem.ModbusRTUSlaveIDCOM1 = this.SystemConfig2.ModbusSlaveIDCOM1; + structItem.ModbusRTUSlaveIDCOM3 = this.SystemConfig2.ModbusSlaveIDCOM3; + structItem.ModbusRTUSlaveIDCOM4 = this.SystemConfig2.ModbusSlaveIDCOM4; structItem.Barcode = this.SystemConfig2.Barcode; structItem.EthernetLocalPort = this.SystemConfig2.EthernetLocalPort; structItem.SortingPointLength = this.SystemConfig2.SortingPointLength; @@ -9088,9 +8520,9 @@ namespace ITC81DB_0H.Forms structItem.ModbusTCPSelectFunction = item.ModbusTCPSelectFunction; structItem.BLDCTotalMotorNum = item.BLDCTotalMotorNum; structItem.ModbusRTUSelectFunction = item.ModbusRTUSelectFunction; - structItem.ModbusRTUSlaveIDCOM1 = item.ModbusRTUSlaveIDCOM1; - structItem.ModbusRTUSlaveIDCOM3 = item.ModbusRTUSlaveIDCOM3; - structItem.ModbusRTUSlaveIDCOM4 = item.ModbusRTUSlaveIDCOM4; + structItem.ModbusRTUSlaveIDCOM1 = item.ModbusSlaveIDCOM1; + structItem.ModbusRTUSlaveIDCOM3 = item.ModbusSlaveIDCOM3; + structItem.ModbusRTUSlaveIDCOM4 = item.ModbusSlaveIDCOM4; structItem.Barcode = item.Barcode; structItem.EthernetLocalPort = item.EthernetLocalPort; structItem.SortingPointLength = item.SortingPointLength; @@ -9212,9 +8644,9 @@ namespace ITC81DB_0H.Forms this.SystemConfig2.ModbusTCPSelectFunction = structItem.ModbusTCPSelectFunction; this.SystemConfig2.ModbusRTUSelectFunction = structItem.ModbusRTUSelectFunction; - this.SystemConfig2.ModbusRTUSlaveIDCOM1 = structItem.ModbusRTUSlaveIDCOM1; - this.SystemConfig2.ModbusRTUSlaveIDCOM3 = structItem.ModbusRTUSlaveIDCOM3; - this.SystemConfig2.ModbusRTUSlaveIDCOM4 = structItem.ModbusRTUSlaveIDCOM4; + this.SystemConfig2.ModbusSlaveIDCOM1 = structItem.ModbusRTUSlaveIDCOM1; + this.SystemConfig2.ModbusSlaveIDCOM3 = structItem.ModbusRTUSlaveIDCOM3; + this.SystemConfig2.ModbusSlaveIDCOM4 = structItem.ModbusRTUSlaveIDCOM4; this.SystemConfig2.ModbusRTUStartAddressCOM1 = structItem.ModbusRTUStartAddressCOM1; this.SystemConfig2.ModbusRTUStartAddressCOM3 = structItem.ModbusRTUStartAddressCOM3; @@ -9310,10 +8742,10 @@ namespace ITC81DB_0H.Forms structItem.DummyInt23 = 0; structItem.DummyInt24 = 0; structItem.DummyInt25 = 0; - structItem.DummyInt26 = 0; - structItem.DummyInt27 = 0; - structItem.DummyInt28 = 0; - structItem.DummyInt29 = 0; + structItem.MULTiJETSlaveAddressCOM1 = this.SystemConfig3.MULTiJETSlaveAddressCOM1; + structItem.MULTiJETSlaveAddressCOM3 = this.SystemConfig3.MULTiJETSlaveAddressCOM3; + structItem.MULTiJETSlaveAddressCOM4 = this.SystemConfig3.MULTiJETSlaveAddressCOM4; + structItem.MULTiJETSlaveAddressEthernet = this.SystemConfig3.MULTiJETSlaveAddressEthernet; structItem.StoragePeriod = this.SystemConfig3.StoragePeriod; structItem.DummyString1 = "0"; @@ -9412,10 +8844,10 @@ namespace ITC81DB_0H.Forms structItem.DummyInt23 = 0; structItem.DummyInt24 = 0; structItem.DummyInt25 = 0; - structItem.DummyInt26 = 0; - structItem.DummyInt27 = 0; - structItem.DummyInt28 = 0; - structItem.DummyInt29 = 0; + structItem.MULTiJETSlaveAddressCOM1 = item.MULTiJETSlaveAddressCOM1; + structItem.MULTiJETSlaveAddressCOM3 = item.MULTiJETSlaveAddressCOM3; + structItem.MULTiJETSlaveAddressCOM4 = item.MULTiJETSlaveAddressCOM4; + structItem.MULTiJETSlaveAddressEthernet = item.MULTiJETSlaveAddressEthernet; structItem.StoragePeriod = item.StoragePeriod; structItem.DummyString1 = "0"; @@ -9466,6 +8898,11 @@ namespace ITC81DB_0H.Forms this.SystemConfig3.IsPart11 = structItem.IsPart11; + this.SystemConfig3.MULTiJETSlaveAddressCOM1 = structItem.MULTiJETSlaveAddressCOM1; + this.SystemConfig3.MULTiJETSlaveAddressCOM3 = structItem.MULTiJETSlaveAddressCOM3; + this.SystemConfig3.MULTiJETSlaveAddressCOM4 = structItem.MULTiJETSlaveAddressCOM4; + this.SystemConfig3.MULTiJETSlaveAddressEthernet = structItem.MULTiJETSlaveAddressEthernet; + this.SystemConfig3.StoragePeriod = structItem.StoragePeriod; } catch @@ -10423,8 +9860,8 @@ namespace ITC81DB_0H.Forms structItem.Dummy3 = "0"; structItem.Dummy4 = "0"; structItem.Dummy5 = "0"; - structItem.Dummy6 = "0"; - structItem.Dummy7 = "0"; + structItem.OPT2ZeroZoneCycle = "0"; + structItem.OPT2ZeroZoneCount = "0"; this.smartFileIO.WriteStructure(structItem, 0); } @@ -10466,8 +9903,8 @@ namespace ITC81DB_0H.Forms structItem.Dummy3 = "0"; structItem.Dummy4 = "0"; structItem.Dummy5 = "0"; - structItem.Dummy6 = "0"; - structItem.Dummy7 = "0"; + structItem.OPT2ZeroZoneCycle = "0"; + structItem.OPT2ZeroZoneCount = "0"; this.smartFileIO.WriteStructure(structItem, 0); this.smartFileIO.Close(); @@ -10790,8 +10227,8 @@ namespace ITC81DB_0H.Forms structItem.OverRange = this.CurrentProductItem.OverRange; structItem.UnderRange = this.CurrentProductItem.UnderRange; structItem.TareRange = this.CurrentProductItem.TareRange; - structItem.DummyString1 = "0"; - structItem.DummyString2 = "0"; + structItem.DispenserDelayTime1 = this.CurrentProductItem.DispenserDelayTime1; + structItem.DispenserDelayTime2 = this.CurrentProductItem.DispenserDelayTime2; structItem.DummyString3 = "0"; structItem.DummyString4 = "0"; @@ -10842,8 +10279,8 @@ namespace ITC81DB_0H.Forms structItem.PassRange = item.PassRange; structItem.UnderRange = item.UnderRange; structItem.TareRange = item.TareRange; - structItem.DummyString1 = "0"; - structItem.DummyString2 = "0"; + structItem.DispenserDelayTime1 = item.DispenserDelayTime1; + structItem.DispenserDelayTime2 = item.DispenserDelayTime2; structItem.DummyString3 = "0"; structItem.DummyString4 = "0"; @@ -10880,8 +10317,8 @@ namespace ITC81DB_0H.Forms structItem.PassRange = items[i].PassRange; structItem.UnderRange = items[i].UnderRange; structItem.TareRange = items[i].TareRange; - structItem.DummyString1 = "0"; - structItem.DummyString2 = "0"; + structItem.DispenserDelayTime1 = items[i].DispenserDelayTime1; + structItem.DispenserDelayTime2 = items[i].DispenserDelayTime2; structItem.DummyString3 = "0"; structItem.DummyString4 = "0"; @@ -10922,6 +10359,8 @@ namespace ITC81DB_0H.Forms item.OverRange = structItem.OverRange; item.UnderRange = structItem.UnderRange; item.TareRange = structItem.TareRange; + item.DispenserDelayTime1 = structItem.DispenserDelayTime1; + item.DispenserDelayTime2 = structItem.DispenserDelayTime2; } catch { @@ -10992,6 +10431,8 @@ namespace ITC81DB_0H.Forms items[i].PassRange = structProduct.PassRange; items[i].UnderRange = structProduct.UnderRange; items[i].TareRange = structProduct.TareRange; + items[i].DispenserDelayTime1 = structProduct.DispenserDelayTime1; + items[i].DispenserDelayTime2 = structProduct.DispenserDelayTime2; } } } @@ -11597,6 +11038,7 @@ namespace ITC81DB_0H.Forms UserManager.UserListLoginDataEvent += this.UserManager_UserListLoginDataEvent; UserManager.UserListLogoutDataEvent += this.UserManager_UserListLogoutDataEvent; UserManager.UserListGetListNameDataEvent += this.UserManager_UserListGetListNameDataEvent; + UserManager.UserListGetVersionDataEvent += this.UserManager_UserListGetVersionDataEvent; UserManager.IntializeUserManager(this.PathSDCardSystemFile1Folder); @@ -12860,12 +12302,12 @@ namespace ITC81DB_0H.Forms this.OpenSmartUartLink(); #region Communication - if (this.SystemConfig1.SerialCOM1Mode != (int)Define.E_SerialMode.f0_None) + if (this.SystemConfig1.SerialCOM1Mode != (int)Define.E_CommMode.f0_None) { switch (this.SystemConfig1.SerialCOM1Mode) { - case (int)Define.E_SerialMode.f16_OPC: - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f16_OPC: + case (int)Define.E_CommMode.f22_Modbus: this.ChildFormMainDisplay.MainBottomModbusIconAdd(true); break; default: @@ -12876,12 +12318,12 @@ namespace ITC81DB_0H.Forms this.OpenSerialCOM1(); } - if (this.SystemConfig1.SerialCOM3Mode != (int)Define.E_SerialMode.f0_None) + if (this.SystemConfig1.SerialCOM3Mode != (int)Define.E_CommMode.f0_None) { switch (this.SystemConfig1.SerialCOM3Mode) { - case (int)Define.E_SerialMode.f16_OPC: - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f16_OPC: + case (int)Define.E_CommMode.f22_Modbus: this.ChildFormMainDisplay.MainBottomModbusIconAdd(true); break; default: @@ -12892,12 +12334,12 @@ namespace ITC81DB_0H.Forms this.OpenSerialCOM3(); } - if (this.SystemConfig1.SerialCOM4Mode != (int)Define.E_SerialMode.f0_None) + if (this.SystemConfig1.SerialCOM4Mode != (int)Define.E_CommMode.f0_None) { switch (this.SystemConfig1.SerialCOM4Mode) { - case (int)Define.E_SerialMode.f16_OPC: - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f16_OPC: + case (int)Define.E_CommMode.f22_Modbus: this.ChildFormMainDisplay.MainBottomModbusIconAdd(true); break; default: @@ -13088,7 +12530,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f16_OPC: + case (int)Define.E_CommMode.f16_OPC: #region OPC try { @@ -13096,9 +12538,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM1); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM1); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM1); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM1); this.TransferSerialCOM1(responseData); @@ -13111,11 +12553,11 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f22_Modbus: #region Modbus RTU this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount(); - if (this.SystemConfig2.ModbusRTUSlaveIDCOM1 != Convert.ToInt32(readByte[0])) + if (this.SystemConfig2.ModbusSlaveIDCOM1 != Convert.ToInt32(readByte[0])) return; if (readByte[1] == 0x03) // Read Holding Register @@ -13127,9 +12569,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_03); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03); else - responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03); this.TransferSerialCOM1(responseData); @@ -13204,9 +12646,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM1); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM1); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM1); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM1); this.TransferSerialCOM1(responseData); @@ -13399,7 +12841,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f16_OPC: + case (int)Define.E_CommMode.f16_OPC: #region OPC try { @@ -13407,9 +12849,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM3); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM3); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM3); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM3); this.TransferSerialCOM3(responseData); @@ -13422,11 +12864,11 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f22_Modbus: #region Modbus RTU this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount(); - if (this.SystemConfig2.ModbusRTUSlaveIDCOM3 != Convert.ToInt32(readByte[0])) + if (this.SystemConfig2.ModbusSlaveIDCOM3 != Convert.ToInt32(readByte[0])) return; if (readByte[1] == 0x03) // Read Holding Register @@ -13438,9 +12880,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_03); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03); else - responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03); this.TransferSerialCOM3(responseData); @@ -13515,9 +12957,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM3); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM3); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM3); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM3); this.TransferSerialCOM3(responseData); @@ -13741,7 +13183,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f16_OPC: + case (int)Define.E_CommMode.f16_OPC: #region OPC try { @@ -13749,9 +13191,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM4); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM4); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM4); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM4); this.TransferSerialCOM4(responseData); @@ -13764,11 +13206,11 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_SerialMode.f22_Modbus_RTU: + case (int)Define.E_CommMode.f22_Modbus: #region Modbus RTU this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount(); - if (this.SystemConfig2.ModbusRTUSlaveIDCOM4 != Convert.ToInt32(readByte[0])) + if (this.SystemConfig2.ModbusSlaveIDCOM4 != Convert.ToInt32(readByte[0])) return; if (readByte[1] == 0x03) // Read Holding Register @@ -13780,9 +13222,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_03); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03); else - responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03); + responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03); this.TransferSerialCOM4(responseData); @@ -13857,9 +13299,9 @@ namespace ITC81DB_0H.Forms byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04); if (errorCheck == 0x00) - responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM4); + responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusSlaveIDCOM4); else - responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM4); + responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusSlaveIDCOM4); this.TransferSerialCOM4(responseData); @@ -14026,7 +13468,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_EthernetMode.f16_OPC: + case (int)Define.E_CommMode.f16_OPC: #region OPC if (this.smartTCPMultiServer.ClientInfoList != null) { @@ -14045,7 +13487,7 @@ namespace ITC81DB_0H.Forms } #endregion break; - case (int)Define.E_EthernetMode.f22_Modbus_TCP: + case (int)Define.E_CommMode.f22_Modbus: #region Modbus TCP if (this.smartTCPMultiServer.ClientInfoList != null) { @@ -14664,6 +14106,17 @@ namespace ITC81DB_0H.Forms { } } + private void UserManager_UserListGetVersionDataEvent(object data) + { + try + { + if (this.ChildFormMenu.CenterInforSystem != null) + this.ChildFormMenu.CenterInforSystem.UpdatePart11UserManagerVersionDisplay(data.ToString()); + } + catch + { + } + } #endregion #region EncryptionEvent @@ -14683,6 +14136,11 @@ namespace ITC81DB_0H.Forms } } + private void AesEncryption_GetVersionDataEvent(object data) + { + if (this.ChildFormMenu.CenterInforSystem != null) + this.ChildFormMenu.CenterInforSystem.UpdatePart11AesEncryptionVersionDisplay(data.ToString()); + } #endregion #endregion } diff --git a/ITC81DB_0H/Forms/FormMainDisplay.cs b/ITC81DB_0H/Forms/FormMainDisplay.cs index 775ddd2..a1dd9dd 100644 --- a/ITC81DB_0H/Forms/FormMainDisplay.cs +++ b/ITC81DB_0H/Forms/FormMainDisplay.cs @@ -46,6 +46,7 @@ namespace ITC81DB_0H.Forms this.ParentForm = parent; this.InitializeDesign(); + this.InitializeControl(); this.DefaultSetting(); } #endregion @@ -193,19 +194,6 @@ namespace ITC81DB_0H.Forms this.Controls.Add(this.MainAlarm); this.Controls.Add(this.MainDisplayFeedback); this.Controls.Add(this.MainDisplayModbus); - - if (this.ParentForm.SystemConfig1.IsLogin == true) - { - this.labelUserID.Visible = true; - this.labelUserLevel.Visible = true; - this.buttonUser.Visible = true; - } - else - { - this.labelUserID.Visible = false; - this.labelUserLevel.Visible = false; - this.buttonUser.Visible = false; - } } private void DefaultSetting() { @@ -216,9 +204,7 @@ namespace ITC81DB_0H.Forms this.pictureBoxStop.Visible = true; this.pictureBoxStart.Visible = false; - - this.InitializeControl(); - + // 알람 표시 this.pictureBoxIconAlarm.Visible = false; this.MainAlarm.Visible = false; @@ -235,14 +221,26 @@ namespace ITC81DB_0H.Forms else this.buttonConveyorUpDown.Visible = false; - if (this.ParentForm.SystemConfig1.IsLogin == true) - this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); + if (this.ParentForm.SystemConfig1.IsLogin == false) + this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.NotLogin; else - this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.Admin; + { + this.ParentForm.CurrentSystemStatus.CurrentUser.Group = Define.E_UserGroup.LogOut; + + this.LoginVisible(true); + } + + this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); this.CurrentDisplay = Define.E_MainDisplayStore.BarGraph; this.DisplayBottomMain(this.CurrentDisplay); } + public void LoginVisible(bool bValue) + { + this.buttonUser.Visible = bValue; + this.labelUserID.Visible = bValue; + this.labelUserLevel.Visible = bValue; + } public void DisplayHiddenMenu(bool visible) { @@ -407,8 +405,6 @@ namespace ITC81DB_0H.Forms { string id = "", group = "", expireDate = ""; - this.labelExpireOfPassword.Visible = true; - switch (status.CurrentUser.Group) { case Define.E_UserGroup.LogOut: @@ -440,6 +436,9 @@ namespace ITC81DB_0H.Forms case Define.E_UserGroup.Level1: id = status.CurrentUser.ID; group = this.ParentForm.SystemConfig2.UserGroupLevel1Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -459,6 +458,9 @@ namespace ITC81DB_0H.Forms id = status.CurrentUser.ID; group = this.ParentForm.SystemConfig2.UserGroupLevel2Name; + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -476,6 +478,9 @@ namespace ITC81DB_0H.Forms case Define.E_UserGroup.Level3: id = status.CurrentUser.ID; group = this.ParentForm.SystemConfig2.UserGroupLevel3Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -504,6 +509,9 @@ namespace ITC81DB_0H.Forms else group = "Administrator"; + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -531,6 +539,9 @@ namespace ITC81DB_0H.Forms else group = "Developer"; + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; @@ -551,8 +562,6 @@ namespace ITC81DB_0H.Forms this.buttonClear.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsMainDisplayClear; this.buttonSubMenu.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsMainDisplaySubMenu; - this.labelExpireOfPassword.Visible = false; - if (status.Equipment == Define.E_EquipmentStatus.Stop) this.buttonMenu.Enabled = true; else @@ -571,6 +580,8 @@ namespace ITC81DB_0H.Forms else group = "Log out"; + this.labelExpireOfPassword.Visible = false; + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; @@ -748,7 +759,7 @@ namespace ITC81DB_0H.Forms } public void ChangeProductNumber(int productNumber) { - this.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ProductNumber, "", + this.ParentForm.SetTrackingHistoryData(Define.E_TrackingParameter.ProductNo, "", this.ParentForm.SystemConfig1.ProductNumber.ToString(), productNumber.ToString()); this.ParentForm.ClearAlarm(0); @@ -866,6 +877,10 @@ namespace ITC81DB_0H.Forms else { this.buttonUser.ButtonUp(); + + this.DisplayRefresh(this.ParentForm.CurrentSystemStatus); + this.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); + this.ParentForm.ChildFormMenu.UpdateDisplayUser(this.ParentForm.CurrentSystemStatus); } } public void Logout() diff --git a/ITC81DB_0H/Forms/FormMenu.cs b/ITC81DB_0H/Forms/FormMenu.cs index 2d65679..9c8134d 100644 --- a/ITC81DB_0H/Forms/FormMenu.cs +++ b/ITC81DB_0H/Forms/FormMenu.cs @@ -229,6 +229,14 @@ namespace ITC81DB_0H.Forms this.CollectionButtonMenu.Add(this.buttonMain); this.InitializeControl(); + + if (this.ParentForm.SystemConfig1.IsLogin == true) + this.LoginVisible(true); + } + public void LoginVisible(bool bValue) + { + this.labelUserID.Visible = bValue; + this.labelUserLevel.Visible = bValue; } private void InitializeControl() { @@ -399,271 +407,6 @@ namespace ITC81DB_0H.Forms this.Controls.Add(this.CenterInforSystem3); } - 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 CurrentControlEnable(bool enable) - { - foreach (SmartButton button in this.CollectionButtonMenu) - button.Enabled = enable; - - switch (this.SelectedSideMenu) - { - case Define.E_MenuSide.Basic: - this.BottomBasic.CurrentControlEnable(enable); - break; - case Define.E_MenuSide.Configuration: - this.BottomConfiguration.CurrentControlEnable(enable); - break; - case Define.E_MenuSide.System: - this.BottomSystem.CurrentControlEnable(enable); - break; - case Define.E_MenuSide.Equipment: - this.BottomEquipment.CurrentControlEnable(enable); - break; - case Define.E_MenuSide.Information: - this.BottomInformation.CurrentControlEnable(enable); - break; - default: - break; - } - } - public void UpdateDisplayUser(SystemStatus status) - { - string id = "", group = "", expireDate = ""; - - this.labelExpireOfPassword.Visible = true; - - switch (status.CurrentUser.Group) - { - case Define.E_UserGroup.LogOut: - id = ""; - if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) - group = "Ausloggen"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) - group = "登出"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) - group = "Выйти."; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) - group = "Cerrar sesión"; - else - group = "Log out"; - - this.labelExpireOfPassword.Visible = false; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; - - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsSystemEnable; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsInforEnable; - break; - case Define.E_UserGroup.Level1: - id = status.CurrentUser.ID; - group = this.ParentForm.SystemConfig2.UserGroupLevel1Name; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsSystemEnable; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsInforEnable; - break; - case Define.E_UserGroup.Level2: - id = status.CurrentUser.ID; - group = this.ParentForm.SystemConfig2.UserGroupLevel2Name; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsSystemEnable; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsInforEnable; - break; - case Define.E_UserGroup.Level3: - id = status.CurrentUser.ID; - group = this.ParentForm.SystemConfig2.UserGroupLevel3Name; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsSystemEnable; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsInforEnable; - break; - case Define.E_UserGroup.Admin: - id = status.CurrentUser.ID; - if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) - group = "Administrator"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) - group = "行政"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) - group = "Администратор"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) - group = "Administrator"; - else - group = "Administrator"; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = true; - this.buttonConfiguration.Enabled = true; - this.buttonSystem.Enabled = true; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = true; - this.buttonInformation.Enabled = true; - break; - case Define.E_UserGroup.Developer: - id = status.CurrentUser.ID; - if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) - group = "Entwickler"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) - group = "开发商"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) - group = "Разработчик"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) - group = "Desarrollador"; - else - group = "Developer"; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; - - this.buttonBasic.Enabled = true; - this.buttonConfiguration.Enabled = true; - this.buttonSystem.Enabled = true; - this.buttonEquipment.Enabled = true; - this.buttonLog.Enabled = true; - this.buttonInformation.Enabled = true; - break; - case Define.E_UserGroup.NotLogin: - this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsBasicEnable; - this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsConfiEnable; - this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsSystemEnable; - this.buttonEquipment.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsEquipEnable; - this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsLogEnable; - this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsInforEnable; - break; - default: - id = ""; - if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) - group = "Ausloggen"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) - group = "登出"; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) - group = "Выйти."; - else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) - group = "Cerrar sesión"; - else - group = "Log out"; - - if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) - this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; - - this.buttonBasic.Enabled = false; - this.buttonConfiguration.Enabled = false; - this.buttonSystem.Enabled = false; - this.buttonEquipment.Enabled = false; - this.buttonLog.Enabled = true; - this.buttonInformation.Enabled = true; - break; - } - - if (this.ParentForm.SystemConfig1.IsLogin == true) - { - if (this.ParentForm.SystemConfig3.IsPart11 == true) - { - expireDate = this.ParentForm.ChildFormMainDisplay.DisplayExpireOfPassword(status.CurrentUser.Group); - if (expireDate != "-") - { - int intExpireDate = int.Parse(expireDate); - - if (intExpireDate == 0) - { - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOff; - this.labelExpireOfPassword.Text = "D-0"; - } - else if (intExpireDate < 0) - { - if (intExpireDate * -1 > this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword) - expireDate = "-" + (this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword - 1).ToString(); - - if (intExpireDate >= -10) - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOff; - else - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; - this.labelExpireOfPassword.Text = "D" + expireDate; - } - else - { - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; - this.labelExpireOfPassword.Text = "D+" + expireDate; - } - } - else - { - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; - this.labelExpireOfPassword.Text = "-"; - } - } - else - { - this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; - this.labelExpireOfPassword.Text = "-"; - } - } - - if (this.labelUserLevel.Text != group) - this.labelUserLevel.Text = group; - if (this.labelUserID.Text != id) - this.labelUserID.Text = id; - } - private bool EquipmentRun(Define.E_DisplayStore currentDisplay) - { - if (currentDisplay == Define.E_DisplayStore.SystemJudgment - || currentDisplay == Define.E_DisplayStore.SystemSorterSetting - || currentDisplay == Define.E_DisplayStore.SystemBLDCMotorSetting) - return true; - else - return false; - } - #region Log private void CreateHeaderFile(string headerFilePath, string sourceFilePath, FileHeaderItem header) { @@ -1149,11 +892,286 @@ namespace ITC81DB_0H.Forms } #endregion - // Menu User - public void UpdateLevelNameDisplay(SystemConfigurationItem2 data) + private bool UI_Invoke(ThreadStart invoker) { - this.CenterEquipUser.UpdateLevelNameDisplay(data); + try + { + if (this.InvokeRequired) + { + if (this.IsDisposed) + return true; + + this.Invoke(invoker); + } + else + { + invoker(); + } + + return true; + + } + catch (Exception e) + { + return false; + } + } + + public void CurrentControlEnable(bool enable) + { + foreach (SmartButton button in this.CollectionButtonMenu) + button.Enabled = enable; + + switch (this.SelectedSideMenu) + { + case Define.E_MenuSide.Basic: + this.BottomBasic.CurrentControlEnable(enable); + break; + case Define.E_MenuSide.Configuration: + this.BottomConfiguration.CurrentControlEnable(enable); + break; + case Define.E_MenuSide.System: + this.BottomSystem.CurrentControlEnable(enable); + break; + case Define.E_MenuSide.Equipment: + this.BottomEquipment.CurrentControlEnable(enable); + break; + case Define.E_MenuSide.Information: + this.BottomInformation.CurrentControlEnable(enable); + break; + default: + break; + } + } + public void UpdateDisplayUser(SystemStatus status) + { + string id = "", group = "", expireDate = ""; + + switch (status.CurrentUser.Group) + { + case Define.E_UserGroup.LogOut: + id = ""; + if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + group = "Ausloggen"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + group = "登出"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + group = "Выйти."; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + group = "Cerrar sesión"; + else + group = "Log out"; + + this.labelExpireOfPassword.Visible = false; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; + + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsSystemEnable; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsInforEnable; + break; + case Define.E_UserGroup.Level1: + id = status.CurrentUser.ID; + group = this.ParentForm.SystemConfig2.UserGroupLevel1Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsSystemEnable; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level1.IsInforEnable; + break; + case Define.E_UserGroup.Level2: + id = status.CurrentUser.ID; + group = this.ParentForm.SystemConfig2.UserGroupLevel2Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsSystemEnable; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level2.IsInforEnable; + break; + case Define.E_UserGroup.Level3: + id = status.CurrentUser.ID; + group = this.ParentForm.SystemConfig2.UserGroupLevel3Name; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsSystemEnable; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.Level3.IsInforEnable; + break; + case Define.E_UserGroup.Admin: + id = status.CurrentUser.ID; + if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + group = "Administrator"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + group = "行政"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + group = "Администратор"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + group = "Administrator"; + else + group = "Administrator"; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = true; + this.buttonConfiguration.Enabled = true; + this.buttonSystem.Enabled = true; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = true; + this.buttonInformation.Enabled = true; + break; + case Define.E_UserGroup.Developer: + id = status.CurrentUser.ID; + if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + group = "Entwickler"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + group = "开发商"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + group = "Разработчик"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + group = "Desarrollador"; + else + group = "Developer"; + + if (this.ParentForm.SystemConfig3.IsPart11 == true) + this.labelExpireOfPassword.Visible = true; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOn) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOn; + + this.buttonBasic.Enabled = true; + this.buttonConfiguration.Enabled = true; + this.buttonSystem.Enabled = true; + this.buttonEquipment.Enabled = true; + this.buttonLog.Enabled = true; + this.buttonInformation.Enabled = true; + break; + case Define.E_UserGroup.NotLogin: + this.buttonBasic.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsBasicEnable; + this.buttonConfiguration.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsConfiEnable; + this.buttonSystem.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsSystemEnable; + this.buttonEquipment.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsEquipEnable; + this.buttonLog.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsLogEnable; + this.buttonInformation.Enabled = this.ParentForm.CurrentUserGroup.NotLogin.IsInforEnable; + break; + default: + id = ""; + if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.German) + group = "Ausloggen"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Chinese) + group = "登出"; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Russian) + group = "Выйти."; + else if (this.ParentForm.SystemConfig1.Language == Define.E_LanguageID.Spanish) + group = "Cerrar sesión"; + else + group = "Log out"; + + this.labelExpireOfPassword.Visible = false; + + if (this.labelUserLevel.ForeColor != this.ParentForm.ColorLogOff) + this.labelUserLevel.ForeColor = this.labelUserID.ForeColor = this.ParentForm.ColorLogOff; + + this.buttonBasic.Enabled = false; + this.buttonConfiguration.Enabled = false; + this.buttonSystem.Enabled = false; + this.buttonEquipment.Enabled = false; + this.buttonLog.Enabled = true; + this.buttonInformation.Enabled = true; + break; + } + + if (this.ParentForm.SystemConfig1.IsLogin == true) + { + if (this.ParentForm.SystemConfig3.IsPart11 == true) + { + expireDate = this.ParentForm.ChildFormMainDisplay.DisplayExpireOfPassword(status.CurrentUser.Group); + if (expireDate != "-") + { + int intExpireDate = int.Parse(expireDate); + + if (intExpireDate == 0) + { + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOff; + this.labelExpireOfPassword.Text = "D-0"; + } + else if (intExpireDate < 0) + { + if (intExpireDate * -1 > this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword) + expireDate = "-" + (this.ParentForm.CurrentSystemStatus.CurrentUser.ExpirePassword - 1).ToString(); + + if (intExpireDate >= -10) + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOff; + else + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; + this.labelExpireOfPassword.Text = "D" + expireDate; + } + else + { + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; + this.labelExpireOfPassword.Text = "D+" + expireDate; + } + } + else + { + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; + this.labelExpireOfPassword.Text = "-"; + } + } + else + { + this.labelExpireOfPassword.ForeColor = this.ParentForm.ColorLogOn; + this.labelExpireOfPassword.Text = "-"; + } + } + + if (this.labelUserLevel.Text != group) + this.labelUserLevel.Text = group; + if (this.labelUserID.Text != id) + this.labelUserID.Text = id; + } + private bool EquipmentRun(Define.E_DisplayStore currentDisplay) + { + if (currentDisplay == Define.E_DisplayStore.SystemJudgment + || currentDisplay == Define.E_DisplayStore.SystemSorterSetting + || currentDisplay == Define.E_DisplayStore.SystemBLDCMotorSetting) + return true; + else + return false; + } + public void CallBackGetUserData(UserManager.UserMgr_user_list_t userList) { this.CenterEquipUser.CallBackGetUserData(userList); @@ -2266,19 +2284,6 @@ namespace ITC81DB_0H.Forms this.EncFileName = ""; this.SelectedDataType = Define.E_DataType.None; - if (this.ParentForm.SystemConfig1.IsLogin == false) - { - this.labelUserID.Visible = false; - this.labelUserLevel.Visible = false; - this.labelExpireOfPassword.Visible = false; - } - else - { - this.labelUserID.Visible = true; - this.labelUserLevel.Visible = true; - this.labelExpireOfPassword.Visible = true; - } - if (this.buttonBasic.Enabled == true) { this.buttonBasic.ButtonDown(); diff --git a/ITC81DB_0H/ITC81DB_2H.csproj b/ITC81DB_0H/ITC81DB_2H.csproj index 461a433..a5efc11 100644 --- a/ITC81DB_0H/ITC81DB_2H.csproj +++ b/ITC81DB_0H/ITC81DB_2H.csproj @@ -119,6 +119,12 @@ ControlCenterLogOthers.cs + + UserControl + + + ControlConfiMULTiJET.cs + UserControl @@ -655,6 +661,10 @@ ControlConfiModbus.cs Designer + + ControlConfiMULTiJET.cs + Designer + ControlConfiSerialBarcode.cs Designer diff --git a/ITC81DB_0H/Part11_Encryption/Encryption.Define.cs b/ITC81DB_0H/Part11_Encryption/Encryption.Define.cs index 5d5acb4..e29040f 100644 --- a/ITC81DB_0H/Part11_Encryption/Encryption.Define.cs +++ b/ITC81DB_0H/Part11_Encryption/Encryption.Define.cs @@ -10,12 +10,21 @@ namespace ITC81DB_0H.Part11_Encryption { private const string PathDll = "SD Card\\Run\\DllAes128.dll"; + private delegate void fnAesVersionCB(StringBuilder version); + private static fnAesVersionCB fnAesVersionCallBack; + public delegate void fnAesEncryptionCB(ref auth_encryption_status_t encryption_status); public static fnAesEncryptionCB fnAesEncryptionCallBack; + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + private static extern void DLL_AES_Register_VersionCB(fnAesVersionCB func); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] public static extern void DLL_AES_Register_EncryptionCB(fnAesEncryptionCB func); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + private static extern void DLL_SAES_Getversion(); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] public static extern void DLL_AES_Activation(); diff --git a/ITC81DB_0H/Part11_Encryption/Encryption.cs b/ITC81DB_0H/Part11_Encryption/Encryption.cs index a631eac..533d8fb 100644 --- a/ITC81DB_0H/Part11_Encryption/Encryption.cs +++ b/ITC81DB_0H/Part11_Encryption/Encryption.cs @@ -10,10 +10,14 @@ namespace ITC81DB_0H.Part11_Encryption { public delegate void ObjectEventHandler(object data); public static event ObjectEventHandler DllAesEncryption_Event; + public static event ObjectEventHandler DllAesEncryption_GetVersionDataEvent; public static void InitializeEncryption() { // register callback + fnAesVersionCallBack = AesEncryption_VersionCallback; + DLL_AES_Register_VersionCB(fnAesVersionCallBack); + fnAesEncryptionCallBack = cbAesEncryption; DLL_AES_Register_EncryptionCB(fnAesEncryptionCallBack); @@ -29,6 +33,10 @@ namespace ITC81DB_0H.Part11_Encryption DLL_AES_Encryption(pInFileName, pOutFileName, encrypt, compress); } + public static void AesEncryption_GetVersion() + { + DLL_SAES_Getversion(); + } #endregion #region Aes_Callback @@ -37,6 +45,18 @@ namespace ITC81DB_0H.Part11_Encryption if (DllAesEncryption_Event != null) DllAesEncryption_Event(encryption_status); } + private static void AesEncryption_VersionCallback(StringBuilder version) + { + try + { + if (DllAesEncryption_GetVersionDataEvent != null) + DllAesEncryption_GetVersionDataEvent(version); + } + catch + { + + } + } #endregion } } diff --git a/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs b/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs index a16cc08..05f487d 100644 --- a/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs +++ b/ITC81DB_0H/Part11_UserManager/UserManager.Define.cs @@ -12,6 +12,9 @@ namespace ITC81DB_0H.Part11_UserManager { private const string PathDll = "SD Card\\Run\\DllUserMgr.dll"; + private delegate void fnUserMgrVersionCB(StringBuilder version); + private static fnUserMgrVersionCB fnUserMgrVersionCallBack; + private delegate void fnUserMgrDebugCB(int level, StringBuilder pMessage); private static fnUserMgrDebugCB fnUserMgrDebugCallBack; @@ -51,6 +54,8 @@ namespace ITC81DB_0H.Part11_UserManager private delegate void fnUserMgrGetListNameCB(ref UserMgr_user_list_name_t user_name); private static fnUserMgrGetListNameCB fnUsermgrGetListNameCallBack; + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + private static extern void DLL_UserMgr_Register_VersionCB(fnUserMgrVersionCB func); [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] private static extern void DLL_UserMgr_Register_DebugCB(fnUserMgrDebugCB func); @@ -94,6 +99,9 @@ namespace ITC81DB_0H.Part11_UserManager [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] private static extern void DLL_UserMgr_HelloWorld(); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + private static extern void DLL_UserMgr_Getversion(); + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] private static extern void DLL_UserMgr_Activation(); diff --git a/ITC81DB_0H/Part11_UserManager/UserManager.cs b/ITC81DB_0H/Part11_UserManager/UserManager.cs index b5c95a2..f0bfb79 100644 --- a/ITC81DB_0H/Part11_UserManager/UserManager.cs +++ b/ITC81DB_0H/Part11_UserManager/UserManager.cs @@ -19,6 +19,7 @@ namespace ITC81DB_0H.Part11_UserManager public static event ObjectEventHandler UserListLoginTimeoutDataEvent; public static event ObjectEventHandler UserListGetListDataEvent; public static event ObjectEventHandler UserListGetListNameDataEvent; + public static event ObjectEventHandler UserListGetVersionDataEvent; public delegate void IntObjectEventHandler(int status, object data); public static event IntObjectEventHandler UserListLoginDataEvent; @@ -31,6 +32,9 @@ namespace ITC81DB_0H.Part11_UserManager //Console.Write("Initialize User Manger \n"); // regisetr callback + fnUserMgrVersionCallBack = UserManager_VersionCallback; + DLL_UserMgr_Register_VersionCB(fnUserMgrVersionCallBack); + fnUserMgrDebugCallBack = UserManager_DebugCallback; DLL_UserMgr_Register_DebugCB(fnUserMgrDebugCallBack); @@ -79,7 +83,7 @@ namespace ITC81DB_0H.Part11_UserManager DLL_UserMgr_SetFolder(pFolder); // Test Only - //TestUserListData(); + //TestUserListData(); } public static void TestUserListData() { @@ -289,6 +293,10 @@ namespace ITC81DB_0H.Part11_UserManager { DLL_UserMgr_GetUserListName(); } + public static void UserManager_GetVersion() + { + DLL_UserMgr_Getversion(); + } #endregion #region UM_CALLBACK @@ -301,7 +309,7 @@ namespace ITC81DB_0H.Part11_UserManager } catch { - } + } } private static void UserManager_GetListCallBack(ref UserMgr_user_list_t user_list) { @@ -333,7 +341,7 @@ namespace ITC81DB_0H.Part11_UserManager UserListLogoutDataEvent(status); } - catch + catch { } } @@ -355,7 +363,7 @@ namespace ITC81DB_0H.Part11_UserManager if (UserListLockDataEvent != null) UserListLockDataEvent(user_lock); } - catch + catch { } } @@ -366,7 +374,7 @@ namespace ITC81DB_0H.Part11_UserManager if (UserListDefautSettingDataEvent != null) UserListDefautSettingDataEvent(status); } - catch + catch { } } @@ -410,7 +418,7 @@ namespace ITC81DB_0H.Part11_UserManager if (UserListAddDataEvent != null) UserListAddDataEvent(user_add); } - catch + catch { } } @@ -435,10 +443,22 @@ namespace ITC81DB_0H.Part11_UserManager try { } - catch + catch { } } + private static void UserManager_VersionCallback(StringBuilder version) + { + try + { + if (UserListGetVersionDataEvent != null) + UserListGetVersionDataEvent(version); + } + catch + { + + } + } #endregion } } diff --git a/ITC81DB_0H/Version.txt b/ITC81DB_0H/Version.txt index 3cfafc7..9a662da 100644 --- a/ITC81DB_0H/Version.txt +++ b/ITC81DB_0H/Version.txt @@ -12,6 +12,13 @@ ⺻ м 跮 */ +@ Ver 3.1.0 by CJY + - 2023.7.21 + - Ver 3.0.1 Modify + - SerialMode ߰ + - Part11 (, 丮α ׸ ߰ ) + - ȭ ٱ׷ ӵǥ 500 ̸̻ x + @ Ver 3.0.1 by CJY - 2023.6.21 - Ver 3.0.0 Modify diff --git a/ITC81DB_0H/bin/Release/DllAes128.dll b/ITC81DB_0H/bin/Release/DllAes128.dll index c6de404d717cea18a3f8a885a8f7ca327208b5a9..cb6633131e9dfc855ea6bd420766e28c9e47c85a 100644 GIT binary patch delta 6351 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 K!za`~YyTfm!ub#Y delta 6171 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 S*YKt{b?f;Kj<2Jr_WuE8DVZGr diff --git a/ITC81DB_0H/bin/Release/DllUserMgr.dll b/ITC81DB_0H/bin/Release/DllUserMgr.dll index ee3a758706fbcc19468b5bc8bb458f9ffd83fa9e..4deab23a2a8f05ff9e34c8017cbcb454195da8e7 100644 GIT binary patch delta 16134 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 u9wKoCx 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 z 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