diff --git a/.gitignore b/.gitignore index a19bcf2..a9d450c 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ ITC81DB/obj/Release/build.force ITC81DB_ImageDll/ITC81DB_ImageDll/obj/ ITC81DB_0H/bin/Release/UpdateFiles.zip ITC81DB_0H/bin/Release/UpdateFiles_V105.zip +ITC81DB_0H/bin/Release/UpdateFiles_V110.zip diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs index 6197428..2d8f564 100644 --- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs +++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs @@ -19,6 +19,7 @@ namespace ITC81DB_0H.Controls public partial class ControlCenterConfiEthernet : UserControl { #region Field + private int m_ModeSTD2; private FormMenu m_ParentForm; public ControlConfiEthernetLocalIP ControlEthernetLocalIP; @@ -44,6 +45,11 @@ namespace ITC81DB_0H.Controls get { return this.m_ParentForm; } private set { this.m_ParentForm = value; } } + public int ModeSTD2 + { + get { return this.m_ModeSTD2; } + set { this.m_ModeSTD2 = value; } + } #endregion #region Method @@ -184,6 +190,8 @@ namespace ITC81DB_0H.Controls this.Controls.Add(this.ControlMarkoprint); this.ControlMarkoprint.Location = new Point(0, 217); + this.ModeSTD2 = 4; + if (this.ParentForm.ParentForm.SystemConfig2.IsEthernetEnable == true) { this.buttonStart.Enabled = true; @@ -239,6 +247,10 @@ namespace ITC81DB_0H.Controls this.comboBoxEthernetMode.Items.Add("OPT3"); // 17 this.comboBoxEthernetMode.Items.Add("HP-200"); // 18 this.comboBoxEthernetMode.Items.Add("Smart Jet"); // 19 + this.comboBoxEthernetMode.Items.Add("imaje 9410 OPT3"); // 한맥 20 + this.comboBoxEthernetMode.Items.Add("-"); // Impinj Speedway-R420(RFID) 21 + this.comboBoxEthernetMode.Items.Add("-"); // 모드버스 TCP 22 + this.comboBoxEthernetMode.Items.Add("STD2"); // STD2 23 } else { @@ -246,6 +258,7 @@ namespace ITC81DB_0H.Controls this.comboBoxEthernetMode.Items.Add("STD1"); this.comboBoxEthernetMode.Items.Add("Remote"); this.comboBoxEthernetMode.Items.Add("Printer"); + this.comboBoxEthernetMode.Items.Add("STD2"); // STD2 23 } this.comboBoxEthernetMode.SelectedIndexChanged += new EventHandler(this.comboBoxEthernetMode_SelectedIndexChanged); } @@ -259,72 +272,105 @@ namespace ITC81DB_0H.Controls { this.buttonTestSend.Enabled = true; - switch (this.comboBoxEthernetMode.SelectedIndex) + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - case 0: // None - this.labelFormat.Text = ""; - break; - case 1: // STD1 - this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],R[6],O[6],G[1],W[6],ETX[1]"; - break; - case 2: // Remote - this.labelFormat.Text = "STX[1],No[2],Grd[1],Weight[6],ETX[1]"; - break; - case 3: // Printer - this.labelFormat.Text = "No[4],Grd[8],Weight[10],CNT[10]"; - break; - case 4: // markem-imaje 9410 OPT1 - this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; - break; - case 5: // markem-imaje 9028 OPT1 - this.labelFormat.Text = "0x99,0x00,0x07,0x12,W[5],0x12,Chksum[1]"; - break; - case 6: // 노바렉스 대주 - this.labelFormat.Text = "0x1B,EW----;1.00I,0x0D,0x1B,P1-0-000000000;A9mm;,W[6],0x0D,0x1B,EX----;,0x0D,0x02,TZ1.00I;13,0x0D,0x03"; - break; - case 7: // markem-imaje 9410 OPT2 - this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; - break; - case 8: // markem-imaje 9028 OPT2 - this.labelFormat.Text = "0x05/0x99,0x00,0x07,0x12,W[5],0x12,Chksum[1]"; - break; - case 9: // Hitachi - this.labelFormat.Text = "STX[1],Length[1],Room Number[1],W[5],ETX[1]"; - break; - case 10: // MACSA Laser - this.labelFormat.Text = "STX[1],0xFE,0x41,0x30,0x06,W[6],Chk[1],(Chk[1]&0xff)[1],ETX[1]"; - break; - case 11: // Markoprint - this.labelFormat.Text = "STX[1],TZcosmax.;00I;13,0x0D,W[6],Unit[1],0x0D,ETX[1]"; - break; - case 12: // alphaJET - this.labelFormat.Text = "label\\1234.txt,W[6],Unit[1],"; - break; - case 13: // Marking(VJ1510) - this.labelFormat.Text = "STX[1],0x55,0x4B,0x0A,W[4],ETX[1]"; - break; - case 14: // OPT1 - this.labelFormat.Text = "Start:STX[1],12,ETX[1], Stop:STX[1],13,ETX[1], Number change:STX[1],200,No[2],ETX[1]"; - break; - case 15: - break; - case 16: // OPC - this.buttonTestSend.Enabled = false; - this.labelFormat.Text = "OPC : opc.tcp://192.168.4.10"; - break; - case 17: // OPT3 - this.labelFormat.Text = "STX[1],Date[9],Time[9],Count[9],grd[9],W[9],Lot[9],O[9],U[9],P[9],ETX[1]"; - break; - case 18: // HP-200 - this.labelFormat.Text = "Pass : 02 4a 30 2c W[6] 0d 04 / NG : 02 4a 30 2c 20 20 20 20 20 20 0d 04 -> Screen Update : 02 5a 04"; - break; - case 19: // Smart Jet - this.labelFormat.Text = "STX[1], A01, WeightData[6], EOT[1]"; - break; - default: - this.buttonTestSend.Enabled = false; - this.labelFormat.Text = "Private use"; - break; + switch (this.comboBoxEthernetMode.SelectedIndex) + { + case 0: // None + this.labelFormat.Text = ""; + break; + case 1: // STD1 + this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],P[6],O[6],Grd[1],Sign[1],Weight[6],ETX[1]"; + break; + case 2: // Remote + this.labelFormat.Text = "STX[1],No[2],Grd[1],Weight[6],ETX[1]"; + break; + case 3: // Printer + this.labelFormat.Text = "No[4],Grd[8],Weight[10],CNT[10]"; + break; + case 4: // 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; + default: + this.labelFormat.Text = ""; + break; + } + } + else + { + switch (this.comboBoxEthernetMode.SelectedIndex) + { + case 0: // None + this.labelFormat.Text = ""; + break; + case 1: // STD1 + this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],P[6],O[6],Grd[1],Sign[1],Weight[6],ETX[1]"; + break; + case 2: // Remote + this.labelFormat.Text = "STX[1],No[2],Grd[1],Weight[6],ETX[1]"; + break; + case 3: // Printer + this.labelFormat.Text = "No[4],Grd[8],Weight[10],CNT[10]"; + break; + case 4: // markem-imaje 9410 OPT1 + this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; + break; + case 5: // markem-imaje 9028 OPT1 + this.labelFormat.Text = "0x99,0x00,0x07,0x12,W[5],0x12,Chksum[1]"; + break; + case 6: // 노바렉스 대주 + this.labelFormat.Text = "0x1B,EW----;1.00I,0x0D,0x1B,P1-0-000000000;A9mm;,W[6],0x0D,0x1B,EX----;,0x0D,0x02,TZ1.00I;13,0x0D,0x03"; + break; + case 7: // markem-imaje 9410 OPT2 + this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; + break; + case 8: // markem-imaje 9028 OPT2 + this.labelFormat.Text = "0x05/0x99,0x00,0x07,0x12,W[5],0x12,Chksum[1]"; + break; + case 9: // Hitachi + this.labelFormat.Text = "STX[1],Length[1],Room Number[1],W[5],ETX[1]"; + break; + case 10: // MACSA Laser + this.labelFormat.Text = "STX[1],0xFE,0x41,0x30,0x06,W[6],Chk[1],(Chk[1]&0xff)[1],ETX[1]"; + break; + case 11: // Markoprint + this.labelFormat.Text = "STX[1],TZcosmax.;00I;13,0x0D,W[6],Unit[1],0x0D,ETX[1]"; + break; + case 12: // alphaJET + this.labelFormat.Text = "label\\1234.txt,W[6],Unit[1],"; + break; + case 13: // Marking(VJ1510) + this.labelFormat.Text = "STX[1],0x55,0x4B,0x0A,W[4],ETX[1]"; + break; + case 14: // OPT1 + this.labelFormat.Text = "Start:STX[1],12,ETX[1], Stop:STX[1],13,ETX[1], Number change:STX[1],200,No[2],ETX[1]"; + break; + case 15: + break; + case 16: // OPC + this.buttonTestSend.Enabled = false; + this.labelFormat.Text = "OPC : opc.tcp://192.168.4.10"; + break; + case 17: // OPT3 + this.labelFormat.Text = "STX[1],Date[9],Time[9],Count[9],grd[9],W[9],Lot[9],O[9],U[9],P[9],ETX[1]"; + break; + case 18: // HP-200 + this.labelFormat.Text = "Pass : 02 4a 30 2c W[6] 0d 04 / NG : 02 4a 30 2c 20 20 20 20 20 20 0d 04 -> Screen Update : 02 5a 04"; + break; + case 19: // Smart Jet + this.labelFormat.Text = "STX[1], A01, WeightData[6], EOT[1]"; + break; + case 20: // markem-imaje 9410 OPT3 + this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; + break; + case (int)DataStore.EthernetMode.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; + default: + this.buttonTestSend.Enabled = false; + this.labelFormat.Text = "Private use"; + break; + } } //else if (this.comboBoxSerialMode.SelectedIndex == 15) // OPT2 @@ -387,12 +433,18 @@ namespace ITC81DB_0H.Controls this.comboBoxEthernetOpMode.SelectedIndexChanged -= new EventHandler(this.comboBoxEthernetOpMode_SelectedIndexChanged); this.comboBoxEthernetOpMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.EthernetOperationMode; - if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false - && this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode > this.comboBoxEthernetMode.Items.Count - 1) + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - this.comboBoxEthernetMode.SelectedIndex = 0; - this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode = this.comboBoxEthernetMode.SelectedIndex; - this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)DataStore.EthernetMode.f23_STD2) + this.comboBoxEthernetMode.SelectedIndex = this.ModeSTD2; + else if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode > this.comboBoxEthernetMode.Items.Count - 1) + { + this.comboBoxEthernetMode.SelectedIndex = 0; + this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode = this.comboBoxEthernetMode.SelectedIndex; + this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); + } + else + this.comboBoxEthernetMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode; } else this.comboBoxEthernetMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode; @@ -1075,6 +1127,8 @@ namespace ITC81DB_0H.Controls private void buttonSave_Click(object sender, EventArgs e) { + int mode = 0; + if (this.comboBoxEthernetMode.SelectedIndex == 16) // OPC { DialogFormMessage msg = new DialogFormMessage(26, this.ParentForm.ParentForm.SystemConfig1.Language); @@ -1121,7 +1175,14 @@ namespace ITC81DB_0H.Controls this.labelConnectedIP.Text = "-"; } - this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode = this.comboBoxEthernetMode.SelectedIndex; + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) + { + if (this.comboBoxEthernetMode.SelectedIndex == this.ModeSTD2) + mode = (int)DataStore.SerialMode.f23_STD2; + } + else + mode = this.comboBoxEthernetMode.SelectedIndex; + this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode = mode; this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2); this.buttonSave.Enabled = false; diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs index fc4cb10..892696a 100644 --- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs +++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs @@ -21,6 +21,7 @@ namespace ITC81DB_0H.Controls public partial class ControlCenterConfiSerial : UserControl { #region Field + private int m_ModeSTD2; private FormMenu m_ParentForm; public ControlConfiSerialUserDefine ControlUserDefine; public ControlConfiSerialHitachi ControlHitachi; @@ -46,6 +47,11 @@ namespace ITC81DB_0H.Controls get { return this.m_ParentForm; } private set { this.m_ParentForm = value; } } + public int ModeSTD2 + { + get { return this.m_ModeSTD2; } + set { this.m_ModeSTD2 = value; } + } #endregion #region Method @@ -141,6 +147,8 @@ namespace ITC81DB_0H.Controls this.Controls.Add(this.ControlBarcode); this.ControlBarcode.Location = new Point(0, 217); + this.ModeSTD2 = 4; + this.ControlVisible(false); this.comboBoxSerialBaudRate.Items.Clear(); @@ -183,6 +191,10 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.Items.Add("OPT3"); // 셀로닉스 요청 17 this.comboBoxSerialMode.Items.Add("HP-200"); // HP-200 18 this.comboBoxSerialMode.Items.Add("Smart Jet"); // Smart Jet 19 + this.comboBoxSerialMode.Items.Add("imaje 9410 OPT3"); // 한맥 20 + this.comboBoxSerialMode.Items.Add("-"); // RFID 21 + this.comboBoxSerialMode.Items.Add("-"); // 모드버스 RTU 22 + this.comboBoxSerialMode.Items.Add("STD2"); // STD2 23 //this.comboBoxSerialMode.Items.Add("Barcode"); //this.comboBoxSerialMode.Items.Add("User Define"); } @@ -191,77 +203,111 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialMode.Items.Add("None"); this.comboBoxSerialMode.Items.Add("STD1"); this.comboBoxSerialMode.Items.Add("Remote"); - this.comboBoxSerialMode.Items.Add("Printer"); + this.comboBoxSerialMode.Items.Add("Printer"); + this.comboBoxSerialMode.Items.Add("STD2"); // STD2 23 } this.comboBoxSerialMode.SelectedIndexChanged += new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); } private void UpdateLabelFormatDisplay() { - switch (this.comboBoxSerialMode.SelectedIndex) + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - case 0: // None - this.labelFormat.Text = ""; - break; - case 1: // STD1 - this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],R[6],O[6],G[1],W[6],ETX[1]"; - break; - case 2: // Remote - this.labelFormat.Text = "STX[1],No[2],Grd[1],Weight[6],ETX[1]"; - break; - case 3: // Printer - this.labelFormat.Text = "No[4],Grd[8],Weight[10],CNT[10]"; - break; - case 4: // markem-imaje 9410 OPT1 - this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; - break; - case 5: // markem-imaje 9028 OPT1 - this.labelFormat.Text = "0x99,0x00,0x07,0x12,W[5],0x12,Chksum[1]"; - break; - case 6: // 노바렉스 대주 - this.labelFormat.Text = "0x1B,EW----;1.00I,0x0D,0x1B,P1-0-000000000;A9mm;,W[6],0x0D,0x1B,EX----;,0x0D,0x02,TZ1.00I;13,0x0D,0x03"; - break; - case 7: // markem-imaje 9410 OPT2 - this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; - break; - case 8: // markem-imaje 9028 OPT2 - this.labelFormat.Text = "0x05/0x99,0x00,0x07,0x12,W[5],0x12,Chksum[1]"; - break; - case 9: // Hitachi - this.labelFormat.Text = "STX[1],Length[1],Room Number[1],W[5],ETX[1]"; - break; - case 10: // MACSA Laser - this.labelFormat.Text = "STX[1],0xFE,0x41,0x30,0x06,W[6],Chk[1],(Chk[1]&0xff)[1],ETX[1]"; - break; - case 11: // Markoprint - this.labelFormat.Text = "STX[1],TZcosmax.;00I;13,0x0D,W[6],Unit[1],0x0D,ETX[1]"; - break; - case 12: // alphaJET - this.labelFormat.Text = "label\\1234.txt,W[6],Unit[1],"; - break; - case 13: // Marking(VJ1510) - this.labelFormat.Text = "STX[1],0x55,0x4B,0x0A,W[4],ETX[1]"; - break; - case 14: // OPT1 - this.labelFormat.Text = "Start:STX[1],12,ETX[1], Stop:STX[1],13,ETX[1], Number change:STX[1],200,No[2],ETX[1]"; - break; - case 16: // OPC - this.buttonTestSend.Enabled = false; - this.labelFormat.Text = "OPC : opc.tcp://192.168.4.10"; - break; - case 17: // OPT3 - this.labelFormat.Text = "STX[1],Date[9],Time[9],Count[9],grd[9],W[9],Lot[9],O[9],U[9],P[9],ETX[1]"; - break; - case 18: // HP-200 - this.labelFormat.Text = "Pass : 02 4a 30 2c W[6] 0d 04 / NG : 02 4a 30 2c 20 20 20 20 20 20 0d 04 -> Screen Update : 02 5a 04"; - break; - case 19: // Smart Jet - this.labelFormat.Text = "STX[1], A01, WeightData[6], EOT[1]"; - break; - default: - this.buttonTestSend.Enabled = false; - this.labelFormat.Text = "Private use"; - break; + switch (this.comboBoxSerialMode.SelectedIndex) + { + case 0: // None + this.labelFormat.Text = ""; + break; + case 1: // STD1 + this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],P[6],O[6],Grd[1],Sign[1],Weight[6],ETX[1]"; + break; + case 2: // Remote + this.labelFormat.Text = "STX[1],No[2],Grd[1],Weight[6],ETX[1]"; + break; + case 3: // Printer + this.labelFormat.Text = "No[4],Grd[8],Weight[10],CNT[10]"; + break; + case 4: // 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; + default: + this.labelFormat.Text = ""; + break; + } + } + else + { + switch (this.comboBoxSerialMode.SelectedIndex) + { + case 0: // None + this.labelFormat.Text = ""; + break; + case 1: // STD1 + this.labelFormat.Text = "STX[1],ID[5],No[4],U[6],P[6],O[6],Grd[1],Sign[1],Weight[6],ETX[1]"; + break; + case 2: // Remote + this.labelFormat.Text = "STX[1],No[2],Grd[1],Weight[6],ETX[1]"; + break; + case 3: // Printer + this.labelFormat.Text = "No[4],Grd[8],Weight[10],CNT[10]"; + break; + case 4: // markem-imaje 9410 OPT1 + this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; + break; + case 5: // markem-imaje 9028 OPT1 + this.labelFormat.Text = "0x99,0x00,0x07,0x12,W[5],0x12,Chksum[1]"; + break; + case 6: // 노바렉스 대주 + this.labelFormat.Text = "0x1B,EW----;1.00I,0x0D,0x1B,P1-0-000000000;A9mm;,W[6],0x0D,0x1B,EX----;,0x0D,0x02,TZ1.00I;13,0x0D,0x03"; + break; + case 7: // markem-imaje 9410 OPT2 + this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; + break; + case 8: // markem-imaje 9028 OPT2 + this.labelFormat.Text = "0x05/0x99,0x00,0x07,0x12,W[5],0x12,Chksum[1]"; + break; + case 9: // Hitachi + this.labelFormat.Text = "STX[1],Length[1],Room Number[1],W[5],ETX[1]"; + break; + case 10: // MACSA Laser + this.labelFormat.Text = "STX[1],0xFE,0x41,0x30,0x06,W[6],Chk[1],(Chk[1]&0xff)[1],ETX[1]"; + break; + case 11: // Markoprint + this.labelFormat.Text = "STX[1],TZcosmax.;00I;13,0x0D,W[6],Unit[1],0x0D,ETX[1]"; + break; + case 12: // alphaJET + this.labelFormat.Text = "label\\1234.txt,W[6],Unit[1],"; + break; + case 13: // Marking(VJ1510) + this.labelFormat.Text = "STX[1],0x55,0x4B,0x0A,W[4],ETX[1]"; + break; + case 14: // OPT1 + this.labelFormat.Text = "Start:STX[1],12,ETX[1], Stop:STX[1],13,ETX[1], Number change:STX[1],200,No[2],ETX[1]"; + break; + case 16: // OPC + this.buttonTestSend.Enabled = false; + this.labelFormat.Text = "OPC : opc.tcp://192.168.4.10"; + break; + case 17: // OPT3 + this.labelFormat.Text = "STX[1],Date[9],Time[9],Count[9],grd[9],W[9],Lot[9],O[9],U[9],P[9],ETX[1]"; + break; + case 18: // HP-200 + this.labelFormat.Text = "Pass : 02 4a 30 2c W[6] 0d 04 / NG : 02 4a 30 2c 20 20 20 20 20 20 0d 04 -> Screen Update : 02 5a 04"; + break; + case 19: // Smart Jet + this.labelFormat.Text = "STX[1], A01, WeightData[6], EOT[1]"; + break; + case 20: // markem-imaje 9410 OPT3 + this.labelFormat.Text = "0xE8,0x00,0x08,0x01,0x00,0x05,W[5],Chksum[1]"; + break; + case (int)DataStore.SerialMode.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; + default: + this.buttonTestSend.Enabled = false; + this.labelFormat.Text = "Private use"; + break; + } } } private void ControlVisible(bool visible) @@ -303,11 +349,16 @@ namespace ITC81DB_0H.Controls // Mode this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); - if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false - && item.SerialCOM1Mode > this.comboBoxSerialMode.Items.Count - 1) + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - this.comboBoxSerialMode.SelectedIndex = 0; - this.SaveComboBox(this.comboBoxSerialBaudRate.SelectedIndex, 0); + if (item.SerialCOM1Mode == (int)DataStore.SerialMode.f23_STD2) + this.comboBoxSerialMode.SelectedIndex = this.ModeSTD2; + else if (item.SerialCOM1Mode > this.comboBoxSerialMode.Items.Count - 1) + this.comboBoxSerialMode.SelectedIndex = 0; + else + this.comboBoxSerialMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode; + + this.SaveComboBox(this.comboBoxSerialBaudRate.SelectedIndex, this.comboBoxSerialMode.SelectedIndex); } else this.comboBoxSerialMode.SelectedIndex = item.SerialCOM1Mode; @@ -318,16 +369,28 @@ namespace ITC81DB_0H.Controls break; case DataStore.MenuBottomConfiguration.SerialCOM3: #region COM3 Load - if (this.ParentForm.ParentForm.SystemConfig1.IsBarcodeEnable == true) + if (this.ParentForm.ParentForm.SystemConfig2.Barcode != 0) { - // BaudRate this.comboBoxSerialBaudRate.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); - this.comboBoxSerialBaudRate.SelectedIndex = 0; - this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); - - // Mode this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); - this.comboBoxSerialMode.SelectedIndex = 0; + switch (this.ParentForm.ParentForm.SystemConfig2.Barcode) + { + case 1: + this.comboBoxSerialBaudRate.SelectedIndex = 0; + this.comboBoxSerialMode.SelectedIndex = 0; + + this.ControlBarcode.Visible = true; + this.ControlBarcode.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); + this.ControlBarcode.BringToFront(); + break; + case 2: + this.comboBoxSerialBaudRate.SelectedIndex = 4; + this.comboBoxSerialMode.SelectedIndex = 0; + break; + default: + break; + } + this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.comboBoxSerialMode.SelectedIndexChanged += new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); this.labelTransmissionDelayTime.Text = "0"; @@ -336,10 +399,6 @@ namespace ITC81DB_0H.Controls this.comboBoxSerialBaudRate.Enabled = false; this.comboBoxSerialMode.Enabled = false; - - this.ControlBarcode.Visible = true; - this.ControlBarcode.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu()); - this.ControlBarcode.BringToFront(); } else { @@ -350,11 +409,16 @@ namespace ITC81DB_0H.Controls // Mode this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); - if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false - && item.SerialCOM3Mode > this.comboBoxSerialMode.Items.Count - 1) + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - this.comboBoxSerialMode.SelectedIndex = 0; - this.SaveComboBox(this.comboBoxSerialBaudRate.SelectedIndex, 0); + if (item.SerialCOM3Mode == (int)DataStore.SerialMode.f23_STD2) + this.comboBoxSerialMode.SelectedIndex = this.ModeSTD2; + else if (item.SerialCOM3Mode > this.comboBoxSerialMode.Items.Count - 1) + this.comboBoxSerialMode.SelectedIndex = 0; + else + this.comboBoxSerialMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode; + + this.SaveComboBox(this.comboBoxSerialBaudRate.SelectedIndex, this.comboBoxSerialMode.SelectedIndex); } else this.comboBoxSerialMode.SelectedIndex = item.SerialCOM3Mode; @@ -373,11 +437,16 @@ namespace ITC81DB_0H.Controls // Mode this.comboBoxSerialMode.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged); - if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false - && item.SerialCOM4Mode > this.comboBoxSerialMode.Items.Count - 1) + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false) { - this.comboBoxSerialMode.SelectedIndex = 0; - this.SaveComboBox(this.comboBoxSerialBaudRate.SelectedIndex, 0); + if (item.SerialCOM4Mode == (int)DataStore.SerialMode.f23_STD2) + this.comboBoxSerialMode.SelectedIndex = this.ModeSTD2; + else if (item.SerialCOM4Mode > this.comboBoxSerialMode.Items.Count - 1) + this.comboBoxSerialMode.SelectedIndex = 0; + else + this.comboBoxSerialMode.SelectedIndex = this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode; + + this.SaveComboBox(this.comboBoxSerialBaudRate.SelectedIndex, this.comboBoxSerialMode.SelectedIndex); } else this.comboBoxSerialMode.SelectedIndex = item.SerialCOM4Mode; @@ -403,61 +472,177 @@ namespace ITC81DB_0H.Controls { DataStore.MenuBottomConfiguration temp = this.ParentForm.CurrentConfigurationMenu(); - if (this.comboBoxSerialMode.SelectedIndex == 16) // OPC + if (this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f16_OPC) { + #region OPC switch (temp) { case DataStore.MenuBottomConfiguration.SerialCOM1: - this.ParentForm.ParentForm.CloseModbusCOM1(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM1(); this.ParentForm.ParentForm.CloseSerialCOM1(); - this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = 16; - this.ParentForm.ParentForm.OpenModbusCOM1(); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate = 0; + this.comboBoxSerialBaudRate.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.comboBoxSerialBaudRate.SelectedIndex = 0; + this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)DataStore.SerialMode.f16_OPC; + this.ParentForm.ParentForm.OpenModbusSlaveCOM1(); break; case DataStore.MenuBottomConfiguration.SerialCOM3: - this.ParentForm.ParentForm.CloseModbusCOM3(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM3(); this.ParentForm.ParentForm.CloseSerialCOM3(); - this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = 16; - this.ParentForm.ParentForm.OpenModbusCOM3(); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate = 0; + this.comboBoxSerialBaudRate.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.comboBoxSerialBaudRate.SelectedIndex = 0; + this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)DataStore.SerialMode.f16_OPC; + this.ParentForm.ParentForm.OpenModbusSlaveCOM3(); break; case DataStore.MenuBottomConfiguration.SerialCOM4: - this.ParentForm.ParentForm.CloseModbusCOM4(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM4(); this.ParentForm.ParentForm.CloseSerialCOM4(); - this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = 16; - this.ParentForm.ParentForm.OpenModbusCOM4(); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate = 0; + this.comboBoxSerialBaudRate.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.comboBoxSerialBaudRate.SelectedIndex = 0; + this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)DataStore.SerialMode.f16_OPC; + this.ParentForm.ParentForm.OpenModbusSlaveCOM4(); break; default: break; } + #endregion + } + else if (this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f21_Impinj_Speedway_R420) + { + #region RFID Speedway R420 + switch (temp) + { + case DataStore.MenuBottomConfiguration.SerialCOM1: + this.ParentForm.ParentForm.CloseModbusCOM1(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM1(); + this.ParentForm.ParentForm.CloseSerialCOM1(); + this.comboBoxSerialBaudRate.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.comboBoxSerialBaudRate.SelectedIndex = 4; + this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate = 4; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)DataStore.SerialMode.f21_Impinj_Speedway_R420; + this.ParentForm.ParentForm.ChangeSerialCOM1FrameSeparateType(DataStore.SeparateType.ETXONLY); + this.ParentForm.ParentForm.OpenSerialCOM1(); + break; + case DataStore.MenuBottomConfiguration.SerialCOM3: + this.ParentForm.ParentForm.CloseModbusCOM3(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM3(); + this.ParentForm.ParentForm.CloseSerialCOM3(); + this.comboBoxSerialBaudRate.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.comboBoxSerialBaudRate.SelectedIndex = 4; + this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate = 4; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)DataStore.SerialMode.f21_Impinj_Speedway_R420; + this.ParentForm.ParentForm.ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType.ETXONLY); + this.ParentForm.ParentForm.OpenSerialCOM3(); + break; + case DataStore.MenuBottomConfiguration.SerialCOM4: + this.ParentForm.ParentForm.CloseModbusCOM4(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM4(); + this.ParentForm.ParentForm.CloseSerialCOM4(); + this.comboBoxSerialBaudRate.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.comboBoxSerialBaudRate.SelectedIndex = 4; + this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate = 4; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)DataStore.SerialMode.f21_Impinj_Speedway_R420; + this.ParentForm.ParentForm.ChangeSerialCOM4FrameSeparateType(DataStore.SeparateType.ETXONLY); + this.ParentForm.ParentForm.OpenSerialCOM4(); + break; + default: + break; + } + #endregion + } + else if (this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f22_Modbus_RTU) + { + #region Modbus RTU + switch (temp) + { + case DataStore.MenuBottomConfiguration.SerialCOM1: + this.ParentForm.ParentForm.CloseModbusCOM1(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM1(); + this.ParentForm.ParentForm.CloseSerialCOM1(); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate = baudrate; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)DataStore.SerialMode.f22_Modbus_RTU; + if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == 0) + this.ParentForm.ParentForm.OpenModbusSlaveCOM1(); + else if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == 1) + this.ParentForm.ParentForm.OpenModbusCOM1(); + break; + case DataStore.MenuBottomConfiguration.SerialCOM3: + this.ParentForm.ParentForm.CloseModbusCOM3(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM3(); + this.ParentForm.ParentForm.CloseSerialCOM3(); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate = baudrate; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)DataStore.SerialMode.f22_Modbus_RTU; + if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == 0) + this.ParentForm.ParentForm.OpenModbusSlaveCOM3(); + else if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == 1) + this.ParentForm.ParentForm.OpenModbusCOM3(); + break; + case DataStore.MenuBottomConfiguration.SerialCOM4: + this.ParentForm.ParentForm.CloseModbusCOM4(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM4(); + this.ParentForm.ParentForm.CloseSerialCOM4(); + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate = baudrate; + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)DataStore.SerialMode.f22_Modbus_RTU; + if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == 0) + this.ParentForm.ParentForm.OpenModbusSlaveCOM4(); + else if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == 1) + this.ParentForm.ParentForm.OpenModbusCOM4(); + break; + default: + break; + } + #endregion } else { switch (temp) { case DataStore.MenuBottomConfiguration.SerialCOM1: - this.ParentForm.ParentForm.CloseModbusCOM1(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM1(); this.ParentForm.ParentForm.CloseSerialCOM1(); this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate = baudrate; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = mode; + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == this.ModeSTD2) + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)DataStore.SerialMode.f23_STD2; + else + this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = mode; + this.ParentForm.ParentForm.ChangeSerialCOM1FrameSeparateType(DataStore.SeparateType.STXANDETX); this.ParentForm.ParentForm.OpenSerialCOM1(); break; case DataStore.MenuBottomConfiguration.SerialCOM3: - this.ParentForm.ParentForm.CloseModbusCOM3(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM3(); this.ParentForm.ParentForm.CloseSerialCOM3(); this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate = baudrate; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = mode; + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == this.ModeSTD2) + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)DataStore.SerialMode.f23_STD2; + else + this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = mode; + this.ParentForm.ParentForm.ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType.STXANDETX); this.ParentForm.ParentForm.OpenSerialCOM3(); break; case DataStore.MenuBottomConfiguration.SerialCOM4: - this.ParentForm.ParentForm.CloseModbusCOM4(); + this.ParentForm.ParentForm.CloseModbusSlaveCOM4(); this.ParentForm.ParentForm.CloseSerialCOM4(); this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate = baudrate; - this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = mode; + if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == this.ModeSTD2) + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)DataStore.SerialMode.f23_STD2; + else + this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = mode; + this.ParentForm.ParentForm.ChangeSerialCOM4FrameSeparateType(DataStore.SeparateType.STXANDETX); this.ParentForm.ParentForm.OpenSerialCOM4(); break; default: break; } } + this.ParentForm.ParentForm.SaveSystemConfigurationFile1(this.ParentForm.ParentForm.SystemConfig1); } diff --git a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs index 87dfe47..0e8c3c1 100644 --- a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs +++ b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs @@ -66,7 +66,7 @@ namespace ITC81DB_0H.Controls private void DefaultSetting() { this.labelSerialNo.Text = this.ParentForm.ParentForm.SystemConfig1.SerialNumber; - this.labelDisplayVer.Text = "1.0.8"; + this.labelDisplayVer.Text = "1.2.0"; } public void UpdateMainBoardVersionDisplay(string version) diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs index e8dbf52..5ef7455 100644 --- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs +++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemExternalOutput.cs @@ -437,10 +437,10 @@ namespace ITC81DB_0H.Controls this.comboBoxSorter1Mode.Items.Add("정량"); this.comboBoxSorter1Mode.Items.Add("운전"); this.comboBoxSorter1Mode.Items.Add("개수"); + this.comboBoxSorter1Mode.Items.Add("시건장치 제어"); // 7 //this.comboBoxSorter1Mode.Items.Add("카운터출력1"); //this.comboBoxSorter1Mode.Items.Add("카운터출력2"); //this.comboBoxSorter1Mode.Items.Add("ExNG"); - //this.comboBoxSorter1Mode.Items.Add("시건장치 제어"); // 10 this.comboBoxSorter1Mode.SelectedIndexChanged += new EventHandler(this.comboBoxSorter1Mode_SelectedIndexChanged); this.comboBoxSorter2Mode.SelectedIndexChanged -= new EventHandler(this.comboBoxSorter2Mode_SelectedIndexChanged); @@ -452,10 +452,10 @@ namespace ITC81DB_0H.Controls this.comboBoxSorter2Mode.Items.Add("정량"); this.comboBoxSorter2Mode.Items.Add("운전"); this.comboBoxSorter2Mode.Items.Add("개수"); + this.comboBoxSorter2Mode.Items.Add("시건장치 제어"); // 7 //this.comboBoxSorter2Mode.Items.Add("카운터출력1"); //this.comboBoxSorter2Mode.Items.Add("카운터출력2"); //this.comboBoxSorter2Mode.Items.Add("ExNG"); - //this.comboBoxSorter2Mode.Items.Add("시건장치 제어"); // 10 this.comboBoxSorter2Mode.SelectedIndexChanged += new EventHandler(this.comboBoxSorter2Mode_SelectedIndexChanged); this.comboBoxSorter3Mode.SelectedIndexChanged -= new EventHandler(this.comboBoxSorter3Mode_SelectedIndexChanged); @@ -467,10 +467,10 @@ namespace ITC81DB_0H.Controls this.comboBoxSorter3Mode.Items.Add("정량"); this.comboBoxSorter3Mode.Items.Add("운전"); this.comboBoxSorter3Mode.Items.Add("개수"); + this.comboBoxSorter3Mode.Items.Add("시건장치 제어"); // 7 //this.comboBoxSorter3Mode.Items.Add("카운터출력1"); //this.comboBoxSorter3Mode.Items.Add("카운터출력2"); //this.comboBoxSorter3Mode.Items.Add("ExNG"); - //this.comboBoxSorter3Mode.Items.Add("시건장치 제어"); // 10 this.comboBoxSorter3Mode.SelectedIndexChanged += new EventHandler(this.comboBoxSorter3Mode_SelectedIndexChanged); this.comboBoxSorter4Mode.SelectedIndexChanged -= new EventHandler(this.comboBoxSorter4Mode_SelectedIndexChanged); @@ -482,10 +482,10 @@ namespace ITC81DB_0H.Controls this.comboBoxSorter4Mode.Items.Add("정량"); this.comboBoxSorter4Mode.Items.Add("운전"); this.comboBoxSorter4Mode.Items.Add("개수"); + this.comboBoxSorter4Mode.Items.Add("시건장치 제어"); // 7 //this.comboBoxSorter4Mode.Items.Add("카운터출력1"); //this.comboBoxSorter4Mode.Items.Add("카운터출력2"); //this.comboBoxSorter4Mode.Items.Add("ExNG"); - //this.comboBoxSorter4Mode.Items.Add("시건장치 제어"); // 10 this.comboBoxSorter4Mode.SelectedIndexChanged += new EventHandler(this.comboBoxSorter4Mode_SelectedIndexChanged); this.comboBoxSorter5Mode.SelectedIndexChanged -= new EventHandler(this.comboBoxSorter5Mode_SelectedIndexChanged); @@ -497,6 +497,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSorter5Mode.Items.Add("정량"); this.comboBoxSorter5Mode.Items.Add("운전"); this.comboBoxSorter5Mode.Items.Add("개수"); + this.comboBoxSorter5Mode.Items.Add("시건장치 제어"); // 7 //this.comboBoxSorter5Mode.Items.Add("카운터출력1"); //this.comboBoxSorter5Mode.Items.Add("카운터출력2"); //this.comboBoxSorter5Mode.Items.Add("ExNG"); @@ -511,6 +512,7 @@ namespace ITC81DB_0H.Controls this.comboBoxSorter6Mode.Items.Add("정량"); this.comboBoxSorter6Mode.Items.Add("운전"); this.comboBoxSorter6Mode.Items.Add("개수"); + this.comboBoxSorter6Mode.Items.Add("시건장치 제어"); // 7 //this.comboBoxSorter6Mode.Items.Add("카운터출력1"); //this.comboBoxSorter6Mode.Items.Add("카운터출력2"); //this.comboBoxSorter6Mode.Items.Add("ExNG"); diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiSerialBarcode.cs b/ITC81DB_0H/Controls/Etc/ControlConfiSerialBarcode.cs index c84131f..6f89192 100644 --- a/ITC81DB_0H/Controls/Etc/ControlConfiSerialBarcode.cs +++ b/ITC81DB_0H/Controls/Etc/ControlConfiSerialBarcode.cs @@ -490,7 +490,7 @@ namespace ITC81DB_0H this.buttonUsingTimeout.Click -= new EventHandler(this.buttonUsingTimeout_Click); // ETXOnly - this.ParentForm.ParentForm.ChangeBarcodeFrameSeparateType(DataStore.SeparateType.ETXONLY); + this.ParentForm.ParentForm.ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType.ETXONLY); this.ParentForm.ParentForm.TransferSerialCOM3RawData(Barcode.ExitProgrammingMode); this.ParentForm.UpdateMenuExceptBarcodeDisplay(true); @@ -519,7 +519,7 @@ namespace ITC81DB_0H #region Event Handler private void buttonConnect_Click(object sender, EventArgs e) { - this.ParentForm.ParentForm.ChangeBarcodeFrameSeparateType(DataStore.SeparateType.ETXONLY); + this.ParentForm.ParentForm.ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType.ETXONLY); this.buttonConnect.Enabled = false; this.ParentForm.UpdateMenuExceptBarcodeDisplay(false); @@ -667,7 +667,7 @@ namespace ITC81DB_0H private void buttonSave_Click(object sender, EventArgs e) { - this.ParentForm.ParentForm.ChangeBarcodeFrameSeparateType(DataStore.SeparateType.NONEFRAME_READTIMEOUT); + this.ParentForm.ParentForm.ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType.NONEFRAME_READTIMEOUT); this.ParentForm.ParentForm.TransferSerialCOM3(Barcode.SavePermanently); this.buttonSave.Visible = false; this.labelWarning.Visible = false; diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.Designer.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.Designer.cs index 221221f..fe1aa64 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.Designer.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.Designer.cs @@ -48,13 +48,17 @@ this.buttonBypassDirection = new SmartX.SmartButton(); this.buttonBypassOnce = new SmartX.SmartButton(); this.labelTitleBypass = new SmartX.SmartLabel(); + this.labelTitleDryContact = new SmartX.SmartLabel(); + this.smartSeparatorLine3 = new SmartX.SmartSeparatorLine(); + this.smartSeparatorLine2 = new SmartX.SmartSeparatorLine(); + this.labelTitleDryContact4 = new SmartX.SmartLabel(); + this.labelTitleDryContact3 = new SmartX.SmartLabel(); + this.labelTitleDryContact2 = new SmartX.SmartLabel(); + this.labelTitleDryContact1 = new SmartX.SmartLabel(); this.buttonDry1 = new SmartX.SmartButton(); this.buttonDry2 = new SmartX.SmartButton(); this.buttonDry3 = new SmartX.SmartButton(); this.buttonDry4 = new SmartX.SmartButton(); - this.labelTitleDryContact = new SmartX.SmartLabel(); - this.smartSeparatorLine3 = new SmartX.SmartSeparatorLine(); - this.smartSeparatorLine2 = new SmartX.SmartSeparatorLine(); this.groupBoxSorter.SuspendLayout(); this.SuspendLayout(); // @@ -334,7 +338,7 @@ this.smartSeparatorLine1.Line2Visible = true; this.smartSeparatorLine1.Line2Width = 1F; this.smartSeparatorLine1.LineDirection = SmartX.SmartSeparatorLine.DIR.Vertical; - this.smartSeparatorLine1.Location = new System.Drawing.Point(346, 13); + this.smartSeparatorLine1.Location = new System.Drawing.Point(342, 13); this.smartSeparatorLine1.Name = "smartSeparatorLine1"; this.smartSeparatorLine1.Size = new System.Drawing.Size(2, 190); this.smartSeparatorLine1.TabIndex = 144; @@ -352,7 +356,7 @@ this.buttonBypassRun.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonBypassRun.DownImage"))); this.buttonBypassRun.GroupID = 0; this.buttonBypassRun.InitVisible = true; - this.buttonBypassRun.Location = new System.Drawing.Point(395, 132); + this.buttonBypassRun.Location = new System.Drawing.Point(384, 132); this.buttonBypassRun.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; this.buttonBypassRun.Name = "buttonBypassRun"; this.buttonBypassRun.NestedClickEventPrevent = false; @@ -383,7 +387,7 @@ this.buttonBypassDirection.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonBypassDirection.DownImage"))); this.buttonBypassDirection.GroupID = 0; this.buttonBypassDirection.InitVisible = true; - this.buttonBypassDirection.Location = new System.Drawing.Point(368, 58); + this.buttonBypassDirection.Location = new System.Drawing.Point(357, 58); this.buttonBypassDirection.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; this.buttonBypassDirection.Name = "buttonBypassDirection"; this.buttonBypassDirection.NestedClickEventPrevent = false; @@ -414,7 +418,7 @@ this.buttonBypassOnce.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonBypassOnce.DownImage"))); this.buttonBypassOnce.GroupID = 0; this.buttonBypassOnce.InitVisible = true; - this.buttonBypassOnce.Location = new System.Drawing.Point(368, 89); + this.buttonBypassOnce.Location = new System.Drawing.Point(357, 89); this.buttonBypassOnce.Mode = SmartX.SmartButton.BUTTONMODE.PUSH; this.buttonBypassOnce.Name = "buttonBypassOnce"; this.buttonBypassOnce.NestedClickEventPrevent = false; @@ -444,7 +448,7 @@ this.labelTitleBypass.ForeColor = System.Drawing.Color.White; this.labelTitleBypass.InitVisible = true; this.labelTitleBypass.LineSpacing = 0F; - this.labelTitleBypass.Location = new System.Drawing.Point(368, 16); + this.labelTitleBypass.Location = new System.Drawing.Point(357, 16); this.labelTitleBypass.Name = "labelTitleBypass"; this.labelTitleBypass.Size = new System.Drawing.Size(100, 20); this.labelTitleBypass.TabIndex = 687; @@ -453,142 +457,6 @@ this.labelTitleBypass.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelTitleBypass.Wordwrap = false; // - // buttonDry1 - // - this.buttonDry1.BackPictureBox = null; - this.buttonDry1.BackPictureBox1 = null; - this.buttonDry1.BackPictureBox2 = null; - this.buttonDry1.ButtonColor = System.Drawing.Color.Gray; - this.buttonDry1.ButtonImageAutoSize = true; - this.buttonDry1.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonDry1.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonDry1.DisableImage"))); - this.buttonDry1.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDry1.DownImage"))); - this.buttonDry1.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); - this.buttonDry1.GroupID = 0; - this.buttonDry1.InitVisible = true; - this.buttonDry1.Location = new System.Drawing.Point(543, 68); - this.buttonDry1.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; - this.buttonDry1.Name = "buttonDry1"; - this.buttonDry1.NestedClickEventPrevent = false; - this.buttonDry1.OutlinePixel = 1; - this.buttonDry1.RepeatInterval = 200; - this.buttonDry1.RepeatIntervalAccelerate = null; - this.buttonDry1.SafeInterval = 200; - this.buttonDry1.Size = new System.Drawing.Size(50, 50); - this.buttonDry1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonDry1.TabIndex = 692; - this.buttonDry1.Text = "1"; - this.buttonDry1.TextColor = System.Drawing.Color.White; - this.buttonDry1.TextDownColor = System.Drawing.Color.White; - this.buttonDry1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonDry1.TextLocation = new System.Drawing.Point(0, 0); - this.buttonDry1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonDry1.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonDry1.UpImage"))); - this.buttonDry1.Visible = false; - this.buttonDry1.Click += new System.EventHandler(this.buttonDryContact_Click); - // - // buttonDry2 - // - this.buttonDry2.BackPictureBox = null; - this.buttonDry2.BackPictureBox1 = null; - this.buttonDry2.BackPictureBox2 = null; - this.buttonDry2.ButtonColor = System.Drawing.Color.Gray; - this.buttonDry2.ButtonImageAutoSize = true; - this.buttonDry2.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonDry2.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonDry2.DisableImage"))); - this.buttonDry2.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDry2.DownImage"))); - this.buttonDry2.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); - this.buttonDry2.GroupID = 0; - this.buttonDry2.InitVisible = true; - this.buttonDry2.Location = new System.Drawing.Point(599, 68); - this.buttonDry2.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; - this.buttonDry2.Name = "buttonDry2"; - this.buttonDry2.NestedClickEventPrevent = false; - this.buttonDry2.OutlinePixel = 1; - this.buttonDry2.RepeatInterval = 200; - this.buttonDry2.RepeatIntervalAccelerate = null; - this.buttonDry2.SafeInterval = 200; - this.buttonDry2.Size = new System.Drawing.Size(50, 50); - this.buttonDry2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonDry2.TabIndex = 691; - this.buttonDry2.Text = "2"; - this.buttonDry2.TextColor = System.Drawing.Color.White; - this.buttonDry2.TextDownColor = System.Drawing.Color.White; - this.buttonDry2.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonDry2.TextLocation = new System.Drawing.Point(0, 0); - this.buttonDry2.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonDry2.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonDry2.UpImage"))); - this.buttonDry2.Visible = false; - this.buttonDry2.Click += new System.EventHandler(this.buttonDryContact_Click); - // - // buttonDry3 - // - this.buttonDry3.BackPictureBox = null; - this.buttonDry3.BackPictureBox1 = null; - this.buttonDry3.BackPictureBox2 = null; - this.buttonDry3.ButtonColor = System.Drawing.Color.Gray; - this.buttonDry3.ButtonImageAutoSize = true; - this.buttonDry3.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonDry3.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonDry3.DisableImage"))); - this.buttonDry3.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDry3.DownImage"))); - this.buttonDry3.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); - this.buttonDry3.GroupID = 0; - this.buttonDry3.InitVisible = true; - this.buttonDry3.Location = new System.Drawing.Point(543, 124); - this.buttonDry3.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; - this.buttonDry3.Name = "buttonDry3"; - this.buttonDry3.NestedClickEventPrevent = false; - this.buttonDry3.OutlinePixel = 1; - this.buttonDry3.RepeatInterval = 200; - this.buttonDry3.RepeatIntervalAccelerate = null; - this.buttonDry3.SafeInterval = 200; - this.buttonDry3.Size = new System.Drawing.Size(50, 50); - this.buttonDry3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonDry3.TabIndex = 690; - this.buttonDry3.Text = "3"; - this.buttonDry3.TextColor = System.Drawing.Color.White; - this.buttonDry3.TextDownColor = System.Drawing.Color.White; - this.buttonDry3.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonDry3.TextLocation = new System.Drawing.Point(0, 0); - this.buttonDry3.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonDry3.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonDry3.UpImage"))); - this.buttonDry3.Visible = false; - this.buttonDry3.Click += new System.EventHandler(this.buttonDryContact_Click); - // - // buttonDry4 - // - this.buttonDry4.BackPictureBox = null; - this.buttonDry4.BackPictureBox1 = null; - this.buttonDry4.BackPictureBox2 = null; - this.buttonDry4.ButtonColor = System.Drawing.Color.Gray; - this.buttonDry4.ButtonImageAutoSize = true; - this.buttonDry4.ColorKeySamplePosition = new System.Drawing.Point(0, 0); - this.buttonDry4.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonDry4.DisableImage"))); - this.buttonDry4.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDry4.DownImage"))); - this.buttonDry4.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); - this.buttonDry4.GroupID = 0; - this.buttonDry4.InitVisible = true; - this.buttonDry4.Location = new System.Drawing.Point(599, 124); - this.buttonDry4.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; - this.buttonDry4.Name = "buttonDry4"; - this.buttonDry4.NestedClickEventPrevent = false; - this.buttonDry4.OutlinePixel = 1; - this.buttonDry4.RepeatInterval = 200; - this.buttonDry4.RepeatIntervalAccelerate = null; - this.buttonDry4.SafeInterval = 200; - this.buttonDry4.Size = new System.Drawing.Size(50, 50); - this.buttonDry4.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; - this.buttonDry4.TabIndex = 689; - this.buttonDry4.Text = "4"; - this.buttonDry4.TextColor = System.Drawing.Color.White; - this.buttonDry4.TextDownColor = System.Drawing.Color.White; - this.buttonDry4.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; - this.buttonDry4.TextLocation = new System.Drawing.Point(0, 0); - this.buttonDry4.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; - this.buttonDry4.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonDry4.UpImage"))); - this.buttonDry4.Visible = false; - this.buttonDry4.Click += new System.EventHandler(this.buttonDryContact_Click); - // // labelTitleDryContact // this.labelTitleDryContact.BackPictureBox = this.pictureBox1; @@ -600,7 +468,7 @@ this.labelTitleDryContact.ForeColor = System.Drawing.Color.White; this.labelTitleDryContact.InitVisible = true; this.labelTitleDryContact.LineSpacing = 0F; - this.labelTitleDryContact.Location = new System.Drawing.Point(499, 16); + this.labelTitleDryContact.Location = new System.Drawing.Point(494, 16); this.labelTitleDryContact.Name = "labelTitleDryContact"; this.labelTitleDryContact.Size = new System.Drawing.Size(196, 20); this.labelTitleDryContact.TabIndex = 694; @@ -634,24 +502,244 @@ this.smartSeparatorLine2.Line2Visible = true; this.smartSeparatorLine2.Line2Width = 1F; this.smartSeparatorLine2.LineDirection = SmartX.SmartSeparatorLine.DIR.Vertical; - this.smartSeparatorLine2.Location = new System.Drawing.Point(491, 13); + this.smartSeparatorLine2.Location = new System.Drawing.Point(472, 13); this.smartSeparatorLine2.Name = "smartSeparatorLine2"; this.smartSeparatorLine2.Size = new System.Drawing.Size(2, 190); this.smartSeparatorLine2.TabIndex = 696; this.smartSeparatorLine2.Text = "smartSeparatorLine2"; // + // labelTitleDryContact4 + // + this.labelTitleDryContact4.BackPictureBox = this.pictureBox1; + this.labelTitleDryContact4.BackPictureBox1 = null; + this.labelTitleDryContact4.BackPictureBox2 = null; + this.labelTitleDryContact4.BorderColor = System.Drawing.Color.Black; + this.labelTitleDryContact4.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDryContact4.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Bold); + this.labelTitleDryContact4.ForeColor = System.Drawing.Color.White; + this.labelTitleDryContact4.InitVisible = true; + this.labelTitleDryContact4.LineSpacing = 0F; + this.labelTitleDryContact4.Location = new System.Drawing.Point(480, 161); + this.labelTitleDryContact4.Name = "labelTitleDryContact4"; + this.labelTitleDryContact4.Size = new System.Drawing.Size(154, 30); + this.labelTitleDryContact4.TabIndex = 707; + this.labelTitleDryContact4.Text = "시건장치 제어4"; + this.labelTitleDryContact4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleDryContact4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDryContact4.Visible = false; + this.labelTitleDryContact4.Wordwrap = false; + // + // labelTitleDryContact3 + // + this.labelTitleDryContact3.BackPictureBox = this.pictureBox1; + this.labelTitleDryContact3.BackPictureBox1 = null; + this.labelTitleDryContact3.BackPictureBox2 = null; + this.labelTitleDryContact3.BorderColor = System.Drawing.Color.Black; + this.labelTitleDryContact3.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDryContact3.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Bold); + this.labelTitleDryContact3.ForeColor = System.Drawing.Color.White; + this.labelTitleDryContact3.InitVisible = true; + this.labelTitleDryContact3.LineSpacing = 0F; + this.labelTitleDryContact3.Location = new System.Drawing.Point(480, 125); + this.labelTitleDryContact3.Name = "labelTitleDryContact3"; + this.labelTitleDryContact3.Size = new System.Drawing.Size(154, 30); + this.labelTitleDryContact3.TabIndex = 706; + this.labelTitleDryContact3.Text = "시건장치 제어3"; + this.labelTitleDryContact3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleDryContact3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDryContact3.Visible = false; + this.labelTitleDryContact3.Wordwrap = false; + // + // labelTitleDryContact2 + // + this.labelTitleDryContact2.BackPictureBox = this.pictureBox1; + this.labelTitleDryContact2.BackPictureBox1 = null; + this.labelTitleDryContact2.BackPictureBox2 = null; + this.labelTitleDryContact2.BorderColor = System.Drawing.Color.Black; + this.labelTitleDryContact2.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDryContact2.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Bold); + this.labelTitleDryContact2.ForeColor = System.Drawing.Color.White; + this.labelTitleDryContact2.InitVisible = true; + this.labelTitleDryContact2.LineSpacing = 0F; + this.labelTitleDryContact2.Location = new System.Drawing.Point(480, 89); + this.labelTitleDryContact2.Name = "labelTitleDryContact2"; + this.labelTitleDryContact2.Size = new System.Drawing.Size(154, 30); + this.labelTitleDryContact2.TabIndex = 705; + this.labelTitleDryContact2.Text = "시건장치 제어2"; + this.labelTitleDryContact2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleDryContact2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDryContact2.Visible = false; + this.labelTitleDryContact2.Wordwrap = false; + // + // labelTitleDryContact1 + // + this.labelTitleDryContact1.BackPictureBox = this.pictureBox1; + this.labelTitleDryContact1.BackPictureBox1 = null; + this.labelTitleDryContact1.BackPictureBox2 = null; + this.labelTitleDryContact1.BorderColor = System.Drawing.Color.Black; + this.labelTitleDryContact1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelTitleDryContact1.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Bold); + this.labelTitleDryContact1.ForeColor = System.Drawing.Color.White; + this.labelTitleDryContact1.InitVisible = true; + this.labelTitleDryContact1.LineSpacing = 0F; + this.labelTitleDryContact1.Location = new System.Drawing.Point(480, 53); + this.labelTitleDryContact1.Name = "labelTitleDryContact1"; + this.labelTitleDryContact1.Size = new System.Drawing.Size(154, 30); + this.labelTitleDryContact1.TabIndex = 704; + this.labelTitleDryContact1.Text = "시건장치 제어1"; + this.labelTitleDryContact1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelTitleDryContact1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelTitleDryContact1.Visible = false; + this.labelTitleDryContact1.Wordwrap = false; + // + // buttonDry1 + // + this.buttonDry1.BackPictureBox = null; + this.buttonDry1.BackPictureBox1 = null; + this.buttonDry1.BackPictureBox2 = null; + this.buttonDry1.ButtonColor = System.Drawing.Color.Gray; + this.buttonDry1.ButtonImageAutoSize = true; + this.buttonDry1.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonDry1.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonDry1.DisableImage"))); + this.buttonDry1.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDry1.DownImage"))); + this.buttonDry1.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.buttonDry1.GroupID = 0; + this.buttonDry1.InitVisible = true; + this.buttonDry1.Location = new System.Drawing.Point(640, 53); + this.buttonDry1.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonDry1.Name = "buttonDry1"; + this.buttonDry1.NestedClickEventPrevent = false; + this.buttonDry1.OutlinePixel = 1; + this.buttonDry1.RepeatInterval = 200; + this.buttonDry1.RepeatIntervalAccelerate = null; + this.buttonDry1.SafeInterval = 200; + this.buttonDry1.Size = new System.Drawing.Size(50, 30); + this.buttonDry1.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonDry1.TabIndex = 703; + this.buttonDry1.TextColor = System.Drawing.Color.White; + this.buttonDry1.TextDownColor = System.Drawing.Color.White; + this.buttonDry1.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonDry1.TextLocation = new System.Drawing.Point(0, 0); + this.buttonDry1.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonDry1.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonDry1.UpImage"))); + this.buttonDry1.Visible = false; + this.buttonDry1.Click += new System.EventHandler(this.buttonDryContact_Click); + // + // buttonDry2 + // + this.buttonDry2.BackPictureBox = null; + this.buttonDry2.BackPictureBox1 = null; + this.buttonDry2.BackPictureBox2 = null; + this.buttonDry2.ButtonColor = System.Drawing.Color.Gray; + this.buttonDry2.ButtonImageAutoSize = true; + this.buttonDry2.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonDry2.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonDry2.DisableImage"))); + this.buttonDry2.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDry2.DownImage"))); + this.buttonDry2.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.buttonDry2.GroupID = 0; + this.buttonDry2.InitVisible = true; + this.buttonDry2.Location = new System.Drawing.Point(640, 89); + this.buttonDry2.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonDry2.Name = "buttonDry2"; + this.buttonDry2.NestedClickEventPrevent = false; + this.buttonDry2.OutlinePixel = 1; + this.buttonDry2.RepeatInterval = 200; + this.buttonDry2.RepeatIntervalAccelerate = null; + this.buttonDry2.SafeInterval = 200; + this.buttonDry2.Size = new System.Drawing.Size(50, 30); + this.buttonDry2.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonDry2.TabIndex = 702; + this.buttonDry2.TextColor = System.Drawing.Color.White; + this.buttonDry2.TextDownColor = System.Drawing.Color.White; + this.buttonDry2.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonDry2.TextLocation = new System.Drawing.Point(0, 0); + this.buttonDry2.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonDry2.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonDry2.UpImage"))); + this.buttonDry2.Visible = false; + this.buttonDry2.Click += new System.EventHandler(this.buttonDryContact_Click); + // + // buttonDry3 + // + this.buttonDry3.BackPictureBox = null; + this.buttonDry3.BackPictureBox1 = null; + this.buttonDry3.BackPictureBox2 = null; + this.buttonDry3.ButtonColor = System.Drawing.Color.Gray; + this.buttonDry3.ButtonImageAutoSize = true; + this.buttonDry3.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonDry3.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonDry3.DisableImage"))); + this.buttonDry3.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDry3.DownImage"))); + this.buttonDry3.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.buttonDry3.GroupID = 0; + this.buttonDry3.InitVisible = true; + this.buttonDry3.Location = new System.Drawing.Point(640, 125); + this.buttonDry3.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonDry3.Name = "buttonDry3"; + this.buttonDry3.NestedClickEventPrevent = false; + this.buttonDry3.OutlinePixel = 1; + this.buttonDry3.RepeatInterval = 200; + this.buttonDry3.RepeatIntervalAccelerate = null; + this.buttonDry3.SafeInterval = 200; + this.buttonDry3.Size = new System.Drawing.Size(50, 30); + this.buttonDry3.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonDry3.TabIndex = 701; + this.buttonDry3.TextColor = System.Drawing.Color.White; + this.buttonDry3.TextDownColor = System.Drawing.Color.White; + this.buttonDry3.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonDry3.TextLocation = new System.Drawing.Point(0, 0); + this.buttonDry3.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonDry3.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonDry3.UpImage"))); + this.buttonDry3.Visible = false; + this.buttonDry3.Click += new System.EventHandler(this.buttonDryContact_Click); + // + // buttonDry4 + // + this.buttonDry4.BackPictureBox = null; + this.buttonDry4.BackPictureBox1 = null; + this.buttonDry4.BackPictureBox2 = null; + this.buttonDry4.ButtonColor = System.Drawing.Color.Gray; + this.buttonDry4.ButtonImageAutoSize = true; + this.buttonDry4.ColorKeySamplePosition = new System.Drawing.Point(0, 0); + this.buttonDry4.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonDry4.DisableImage"))); + this.buttonDry4.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonDry4.DownImage"))); + this.buttonDry4.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold); + this.buttonDry4.GroupID = 0; + this.buttonDry4.InitVisible = true; + this.buttonDry4.Location = new System.Drawing.Point(640, 161); + this.buttonDry4.Mode = SmartX.SmartButton.BUTTONMODE.NORMAL; + this.buttonDry4.Name = "buttonDry4"; + this.buttonDry4.NestedClickEventPrevent = false; + this.buttonDry4.OutlinePixel = 1; + this.buttonDry4.RepeatInterval = 200; + this.buttonDry4.RepeatIntervalAccelerate = null; + this.buttonDry4.SafeInterval = 200; + this.buttonDry4.Size = new System.Drawing.Size(50, 30); + this.buttonDry4.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE; + this.buttonDry4.TabIndex = 700; + this.buttonDry4.TextColor = System.Drawing.Color.White; + this.buttonDry4.TextDownColor = System.Drawing.Color.White; + this.buttonDry4.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle; + this.buttonDry4.TextLocation = new System.Drawing.Point(0, 0); + this.buttonDry4.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle; + this.buttonDry4.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonDry4.UpImage"))); + this.buttonDry4.Visible = false; + this.buttonDry4.Click += new System.EventHandler(this.buttonDryContact_Click); + // // ControlMainDisplayMenu // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.Controls.Add(this.smartSeparatorLine2); - this.Controls.Add(this.labelTitleDryContact); - this.Controls.Add(this.smartSeparatorLine1); - this.Controls.Add(this.smartSeparatorLine3); + this.Controls.Add(this.labelTitleDryContact4); + this.Controls.Add(this.labelTitleDryContact3); + this.Controls.Add(this.labelTitleDryContact2); + this.Controls.Add(this.labelTitleDryContact1); this.Controls.Add(this.buttonDry1); this.Controls.Add(this.buttonDry2); this.Controls.Add(this.buttonDry3); this.Controls.Add(this.buttonDry4); + this.Controls.Add(this.smartSeparatorLine2); + this.Controls.Add(this.labelTitleDryContact); + this.Controls.Add(this.smartSeparatorLine1); + this.Controls.Add(this.smartSeparatorLine3); this.Controls.Add(this.labelTitleBypass); this.Controls.Add(this.buttonBypassRun); this.Controls.Add(this.buttonBypassDirection); @@ -686,13 +774,17 @@ private SmartX.SmartButton buttonBypassDirection; private SmartX.SmartButton buttonBypassOnce; private SmartX.SmartLabel labelTitleBypass; + private SmartX.SmartLabel labelTitleDryContact; + private SmartX.SmartSeparatorLine smartSeparatorLine3; + private SmartX.SmartSeparatorLine smartSeparatorLine2; + private SmartX.SmartLabel labelTitleDryContact4; + private SmartX.SmartLabel labelTitleDryContact3; + private SmartX.SmartLabel labelTitleDryContact2; + private SmartX.SmartLabel labelTitleDryContact1; private SmartX.SmartButton buttonDry1; private SmartX.SmartButton buttonDry2; private SmartX.SmartButton buttonDry3; private SmartX.SmartButton buttonDry4; - private SmartX.SmartLabel labelTitleDryContact; - private SmartX.SmartSeparatorLine smartSeparatorLine3; - private SmartX.SmartSeparatorLine smartSeparatorLine2; } } diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs index 4e3f0bf..b1fc2ab 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs @@ -62,6 +62,10 @@ namespace ITC81DB_0H.Controls this.labelTitleSorterDelayTime.Text = "Delay time"; this.labelTitleSorterRunTime.Text = "Run time"; this.labelTitleDryContact.Text = "Latch control"; + this.labelTitleDryContact1.Text = "Latch control1"; + this.labelTitleDryContact2.Text = "Latch control2"; + this.labelTitleDryContact3.Text = "Latch control3"; + this.labelTitleDryContact4.Text = "Latch control4"; this.comboBoxSorterA.SelectedIndexChanged -= new EventHandler(this.comboBoxSorterA_SelectedIndexChanged); this.comboBoxSorterA.Items.Clear(); @@ -98,6 +102,10 @@ namespace ITC81DB_0H.Controls this.labelTitleSorterDelayTime.Text = "延迟时间"; this.labelTitleSorterRunTime.Text = "运行时间"; this.labelTitleDryContact.Text = "闩锁控制"; + this.labelTitleDryContact1.Text = "闩锁控制1"; + this.labelTitleDryContact2.Text = "闩锁控制2"; + this.labelTitleDryContact3.Text = "闩锁控制3"; + this.labelTitleDryContact4.Text = "闩锁控制4"; this.comboBoxSorterA.SelectedIndexChanged -= new EventHandler(this.comboBoxSorterA_SelectedIndexChanged); this.comboBoxSorterA.Items.Clear(); @@ -138,6 +146,10 @@ namespace ITC81DB_0H.Controls this.labelTitleSorterDelayTime.Text = "задержки"; this.labelTitleSorterRunTime.Text = "выполнения"; this.labelTitleDryContact.Text = "Сухой контакт"; + this.labelTitleDryContact1.Text = "контроль защелки1"; + this.labelTitleDryContact2.Text = "контроль защелки2"; + this.labelTitleDryContact3.Text = "контроль защелки3"; + this.labelTitleDryContact4.Text = "контроль защелки4"; this.comboBoxSorterA.SelectedIndexChanged -= new EventHandler(this.comboBoxSorterA_SelectedIndexChanged); this.comboBoxSorterA.Items.Clear(); @@ -173,9 +185,11 @@ namespace ITC81DB_0H.Controls this.labelTitleSorterMode.Text = "Modus"; this.labelTitleSorterDelayTime.Text = "Vezögerung"; this.labelTitleSorterRunTime.Text = "Laufzeit"; - this.labelTitleDryContact.Text = "Trockener Kontakt"; - this.labelTitleDryContact.Text = "Verriegelungssteuerung"; + this.labelTitleDryContact1.Text = "Verriegelungssteuerung1"; + this.labelTitleDryContact2.Text = "Verriegelungssteuerung2"; + this.labelTitleDryContact3.Text = "Verriegelungssteuerung3"; + this.labelTitleDryContact4.Text = "Verriegelungssteuerung4"; this.comboBoxSorterA.SelectedIndexChanged -= new EventHandler(this.comboBoxSorterA_SelectedIndexChanged); this.comboBoxSorterA.Items.Clear(); @@ -211,9 +225,11 @@ namespace ITC81DB_0H.Controls this.labelTitleSorterMode.Text = "모드"; this.labelTitleSorterDelayTime.Text = "지연시간"; this.labelTitleSorterRunTime.Text = "동작시간"; - this.labelTitleDryContact.Text = "Dry Contact"; - this.labelTitleDryContact.Text = "시건장치 제어"; + this.labelTitleDryContact1.Text = "시건장치 제어1"; + this.labelTitleDryContact2.Text = "시건장치 제어2"; + this.labelTitleDryContact3.Text = "시건장치 제어3"; + this.labelTitleDryContact4.Text = "시건장치 제어4"; this.comboBoxSorterA.SelectedIndexChanged -= new EventHandler(this.comboBoxSorterA_SelectedIndexChanged); this.comboBoxSorterA.Items.Clear(); @@ -265,7 +281,12 @@ namespace ITC81DB_0H.Controls } public void UpdateDryContactControl(SystemParameter3 item) { - if (item.ExternalOut1Mode == "10" || item.ExternalOut2Mode == "10" || item.ExternalOut3Mode == "10" || item.ExternalOut4Mode == "10") + int count = 0; + + if (item.ExternalOut1Mode == ((int)DataStore.ExternalOutputMode.LatchCountrol).ToString() + || item.ExternalOut2Mode == ((int)DataStore.ExternalOutputMode.LatchCountrol).ToString() + || item.ExternalOut3Mode == ((int)DataStore.ExternalOutputMode.LatchCountrol).ToString() + || item.ExternalOut4Mode == ((int)DataStore.ExternalOutputMode.LatchCountrol).ToString()) { this.labelTitleDryContact.Visible = true; this.buttonDry1.Visible = true; @@ -282,25 +303,97 @@ namespace ITC81DB_0H.Controls this.buttonDry4.Visible = false; } - if (item.ExternalOut1Mode == "10") - this.buttonDry1.Enabled = true; + if (item.ExternalOut1Mode == ((int)DataStore.ExternalOutputMode.LatchCountrol).ToString()) + { + this.labelTitleDryContact1.Visible = true; + this.buttonDry1.Visible = true; + count++; + } else - this.buttonDry1.Enabled = false; + { + this.labelTitleDryContact1.Visible = false; + this.buttonDry1.Visible = false; + } - if (item.ExternalOut2Mode == "10") - this.buttonDry2.Enabled = true; + if (item.ExternalOut2Mode == ((int)DataStore.ExternalOutputMode.LatchCountrol).ToString()) + { + if (count == 1) + { + this.labelTitleDryContact2.Location = new Point(480, 89); + this.buttonDry2.Location = new Point(640, 89); + } + else if (count == 0) + { + this.labelTitleDryContact2.Location = new Point(480, 53); + this.buttonDry2.Location = new Point(640, 53); + } + this.labelTitleDryContact2.Visible = true; + this.buttonDry2.Visible = true; + count++; + } else - this.buttonDry2.Enabled = false; + { + this.labelTitleDryContact2.Visible = false; + this.buttonDry2.Visible = false; + } - if (item.ExternalOut3Mode == "10") - this.buttonDry3.Enabled = true; + if (item.ExternalOut3Mode == ((int)DataStore.ExternalOutputMode.LatchCountrol).ToString()) + { + if (count == 2) + { + this.labelTitleDryContact3.Location = new Point(480, 125); + this.buttonDry3.Location = new Point(640, 125); + } + else if (count == 1) + { + this.labelTitleDryContact3.Location = new Point(480, 89); + this.buttonDry3.Location = new Point(640, 89); + } + else if (count == 0) + { + this.labelTitleDryContact3.Location = new Point(480, 53); + this.buttonDry3.Location = new Point(640, 53); + } + this.labelTitleDryContact3.Visible = true; + this.buttonDry3.Visible = true; + count++; + } else - this.buttonDry3.Enabled = false; + { + this.labelTitleDryContact3.Visible = false; + this.buttonDry3.Visible = false; + } - if (item.ExternalOut4Mode == "10") - this.buttonDry4.Enabled = true; + if (item.ExternalOut4Mode == ((int)DataStore.ExternalOutputMode.LatchCountrol).ToString()) + { + if (count == 3) + { + this.labelTitleDryContact4.Location = new Point(480, 161); + this.buttonDry4.Location = new Point(640, 161); + } + else if (count == 2) + { + this.labelTitleDryContact4.Location = new Point(480, 125); + this.buttonDry4.Location = new Point(640, 125); + } + else if (count == 1) + { + this.labelTitleDryContact4.Location = new Point(480, 89); + this.buttonDry4.Location = new Point(640, 89); + } + else if (count == 0) + { + this.labelTitleDryContact4.Location = new Point(480, 53); + this.buttonDry4.Location = new Point(640, 53); + } + this.labelTitleDryContact4.Visible = true; + this.buttonDry4.Visible = true; + } else - this.buttonDry4.Enabled = false; + { + this.labelTitleDryContact4.Visible = false; + this.buttonDry4.Visible = false; + } } public void UpdateControl(JudgmentSetItem item, SystemParameter4 parameter) { diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.resx b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.resx index 2e51539..9feb21d 100644 --- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.resx +++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.resx @@ -726,838 +726,790 @@ - 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 + RU5ErkJggg== - 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 - A9C+Zf/SOPX/AAAAAElFTkSuQmCC + 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 + RU5ErkJggg== - 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 - A9C+Zf/SOPX/AAAAAElFTkSuQmCC + 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 + RU5ErkJggg== - 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 - A9C+Zf/SOPX/AAAAAElFTkSuQmCC + bGUAAEjHnZZ3VFTXFofPvXd6oc0w0hl6ky4wgPQuIB0EURhmBhjKAMMMTWyIqEBEEREBRZCggAGjoUis + iGIhKKhgD0gQUGIwiqioZEbWSnx5ee/l5ffHvd/aZ+9z99l7n7UuACRPHy4vBZYCIJkn4Ad6ONNXhUfQ + sf0ABniAAaYAMFnpqb5B7sFAJC83F3q6yAn8i94MAUj8vmXo6U+ng/9P0qxUvgAAyF/E5mxOOkvE+SJO + yhSkiu0zIqbGJIoZRomZL0pQxHJijlvkpZ99FtlRzOxkHlvE4pxT2clsMfeIeHuGkCNixEfEBRlcTqaI + b4tYM0mYzBXxW3FsMoeZDgCKJLYLOKx4EZuImMQPDnQR8XIAcKS4LzjmCxZwsgTiQ7mkpGbzuXHxArou + S49uam3NoHtyMpM4AoGhP5OVyOSz6S4pyalMXjYAi2f+LBlxbemiIluaWltaGpoZmX5RqP+6+Dcl7u0i + vQr43DOI1veH7a/8UuoAYMyKarPrD1vMfgA6tgIgd/8Pm+YhACRFfWu/8cV5aOJ5iRcIUm2MjTMzM424 + HJaRuKC/6386/A198T0j8Xa/l4fuyollCpMEdHHdWClJKUI+PT2VyeLQDf88xP848K/zWBrIieXwOTxR + RKhoyri8OFG7eWyugJvCo3N5/6mJ/zDsT1qca5Eo9Z8ANcoISN2gAuTnPoCiEAESeVDc9d/75oMPBeKb + F6Y6sTj3nwX9+65wifiRzo37HOcSGExnCfkZi2viawnQgAAkARXIAxWgAXSBITADVsAWOAI3sAL4gWAQ + DtYCFogHyYAPMkEu2AwKQBHYBfaCSlAD6kEjaAEnQAc4DS6Ay+A6uAnugAdgBIyD52AGvAHzEARhITJE + geQhVUgLMoDMIAZkD7lBPlAgFA5FQ3EQDxJCudAWqAgqhSqhWqgR+hY6BV2ArkID0D1oFJqCfoXewwhM + gqmwMqwNG8MM2An2hoPhNXAcnAbnwPnwTrgCroOPwe3wBfg6fAcegZ/DswhAiAgNUUMMEQbigvghEUgs + wkc2IIVIOVKHtCBdSC9yCxlBppF3KAyKgqKjDFG2KE9UCIqFSkNtQBWjKlFHUe2oHtQt1ChqBvUJTUYr + oQ3QNmgv9Cp0HDoTXYAuRzeg29CX0HfQ4+g3GAyGhtHBWGE8MeGYBMw6TDHmAKYVcx4zgBnDzGKxWHms + AdYO64dlYgXYAux+7DHsOewgdhz7FkfEqeLMcO64CBwPl4crxzXhzuIGcRO4ebwUXgtvg/fDs/HZ+BJ8 + Pb4LfwM/jp8nSBN0CHaEYEICYTOhgtBCuER4SHhFJBLVidbEACKXuIlYQTxOvEIcJb4jyZD0SS6kSJKQ + tJN0hHSedI/0ikwma5MdyRFkAXknuZF8kfyY/FaCImEk4SXBltgoUSXRLjEo8UISL6kl6SS5VjJHslzy + pOQNyWkpvJS2lIsUU2qDVJXUKalhqVlpirSptJ90snSxdJP0VelJGayMtoybDFsmX+awzEWZMQpC0aC4 + UFiULZR6yiXKOBVD1aF6UROoRdRvqP3UGVkZ2WWyobJZslWyZ2RHaAhNm+ZFS6KV0E7QhmjvlygvcVrC + WbJjScuSwSVzcopyjnIcuUK5Vrk7cu/l6fJu8onyu+U75B8poBT0FQIUMhUOKlxSmFakKtoqshQLFU8o + 3leClfSVApXWKR1W6lOaVVZR9lBOVd6vfFF5WoWm4qiSoFKmclZlSpWiaq/KVS1TPaf6jC5Ld6In0Svo + PfQZNSU1TzWhWq1av9q8uo56iHqeeqv6Iw2CBkMjVqNMo1tjRlNV01czV7NZ874WXouhFa+1T6tXa05b + RztMe5t2h/akjpyOl06OTrPOQ12yroNumm6d7m09jB5DL1HvgN5NfVjfQj9ev0r/hgFsYGnANThgMLAU + vdR6KW9p3dJhQ5Khk2GGYbPhqBHNyMcoz6jD6IWxpnGE8W7jXuNPJhYmSSb1Jg9MZUxXmOaZdpn+aqZv + xjKrMrttTjZ3N99o3mn+cpnBMs6yg8vuWlAsfC22WXRbfLS0suRbtlhOWWlaRVtVWw0zqAx/RjHjijXa + 2tl6o/Vp63c2ljYCmxM2v9ga2ibaNtlOLtdZzllev3zMTt2OaVdrN2JPt4+2P2Q/4qDmwHSoc3jiqOHI + dmxwnHDSc0pwOub0wtnEme/c5jznYuOy3uW8K+Lq4Vro2u8m4xbiVun22F3dPc692X3Gw8Jjncd5T7Sn + t+duz2EvZS+WV6PXzAqrFetX9HiTvIO8K72f+Oj78H26fGHfFb57fB+u1FrJW9nhB/y8/Pb4PfLX8U/z + /z4AE+AfUBXwNNA0MDewN4gSFBXUFPQm2Dm4JPhBiG6IMKQ7VDI0MrQxdC7MNaw0bGSV8ar1q66HK4Rz + wzsjsBGhEQ0Rs6vdVu9dPR5pEVkQObRGZ03WmqtrFdYmrT0TJRnFjDoZjY4Oi26K/sD0Y9YxZ2O8Yqpj + ZlgurH2s52xHdhl7imPHKeVMxNrFlsZOxtnF7YmbineIL4+f5rpwK7kvEzwTahLmEv0SjyQuJIUltSbj + kqOTT/FkeIm8nhSVlKyUgVSD1ILUkTSbtL1pM3xvfkM6lL4mvVNAFf1M9Ql1hVuFoxn2GVUZbzNDM09m + SWfxsvqy9bN3ZE/kuOd8vQ61jrWuO1ctd3Pu6Hqn9bUboA0xG7o3amzM3zi+yWPT0c2EzYmbf8gzySvN + e70lbEtXvnL+pvyxrR5bmwskCvgFw9tst9VsR23nbu/fYb5j/45PhezCa0UmReVFH4pZxde+Mv2q4quF + nbE7+0ssSw7uwuzi7Rra7bD7aKl0aU7p2B7fPe1l9LLCstd7o/ZeLV9WXrOPsE+4b6TCp6Jzv+b+Xfs/ + VMZX3qlyrmqtVqreUT13gH1g8KDjwZYa5ZqimveHuIfu1nrUttdp15UfxhzOOPy0PrS+92vG140NCg1F + DR+P8I6MHA082tNo1djYpNRU0gw3C5unjkUeu/mN6zedLYYtta201qLj4Ljw+LNvo78dOuF9ovsk42TL + d1rfVbdR2grbofbs9pmO+I6RzvDOgVMrTnV32Xa1fW/0/ZHTaqerzsieKTlLOJt/duFczrnZ86nnpy/E + XRjrjup+cHHVxds9AT39l7wvXbnsfvlir1PvuSt2V05ftbl66hrjWsd1y+vtfRZ9bT9Y/NDWb9nffsPq + RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP + lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l + f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAABGJJREFUWEe9l+1PU2cY + xp8h+x+MiR8JW0ZcNpe5jMnYYkRhMFjjAAWGg5TxJlJKcG7OSedkGVFYJp1AhdoVM4XCeBGxAhbqAdoK + tpTSank5pLzsy/xgSOaq267mnJwcnsP8sJ1y5/pQ2t7X79fSl6eEmm2RL0bH7fug6htla7eqh6nst4cp + ZSZLXuN1gKL37gOUx286UW/H5zd3nGdmLztZw+yqwbem9/3W6l2TPag1eNeueFYuu1jgAI2KfY+XEM8L + ERFxR0tqrTPNrqVGz+p5Z+Dc5JLmHnvGwZ6xyx0HW+1gUQ7EBWcAOEBrrR4IQIMX4mZvbnHdmFfnWf5+ + aukr28KJ8Xk1M6e660fKwxDUVjB+IAACDlCgIQANXggTFft+zYhb6wpo7GwVM6+y+o+Pbl2AAxRoCEAD + MiEnvNzydJ319rlq26IaQiMPy0T51sFalh+tB5/+Ld+sB5+hE80CBVCgIQCNPF1X6B0QHbdfM+Q852Ar + rP5jlgelomhsi8FnfzWPL2S32dJaGLmSbbShE82nJ+YFFtAQgIZm2PnSuwnkgLq6hvGdZObKcPOdDRkO + PNJNLFClcuWKgzUv/S7GQQAakDlYqSE5Db+cHfOrLA+Kh7xU1v98yj1Ph/RjvZ6Vx38E+X/Df53HT4Lo + QRs60Yx+iggNyECJKH++9TUzVzrkKxr0UkER98h6Zla4XlnG5ApwtbhMEaEBmQKjmRRcHfzS6i+6PVto + poM1bv//P0/iQZugRRGhARkoEaXRfMLy8LMBT4EkWBP25R2hliJCAzJQIvmGgaphn7LfLY14X94Raiki + AhkokU/1/ZVDvvwbbmnE+/KOUEsREchAieS29Klvz+b1uqQR78s7Qi1FRCADJZKj61Hd8hztdkoj3pd3 + hFqKiEAGSiS7qbt8YOaTrvvSiPflHaGWIiKQgRI5cqmrrN+dbZqSRrwv7wi1FBGBDJRIptZ0rG86q31S + GvG+vCPUUkQEMlAi6RfbS3tdh685pBHvyztCLUVESnpcUCJptfrizqnMq/YMSYT953/Kn7wxzd1NHFzJ + 3ywZ8ac8RYRGUdd9RV0bSfjiQmG7PaPNlm6kgzVu//nfiZtqfd73r1qm6WXuPrhMEaFR2O5IPP0j2ZN7 + XNk2mmmcOGQYp4Iv/A0niCcynyDwJ0XMME5AZk9uOdn5emxOU98Ro02hH6PS61kN43nLvtjpXqaI0IDM + zt3vkIhtkftP1WfpLYrW0IMQp8Q0xZ9OjWE5nRZcvye+HgLQSDj1Q0RkZOg4v2PXm5kNv6a3Mqm6ux9u + THH7JF5Ysh9s0IlmMQhoCEADMiEnbl5OTP+4oVvRwqQ0WZO3PIACDQFo8ELc4HfjKylZH9V3pGnNyY2j + SZdGtizAAaqo74hJyaJ/vnKzPWZ3fEVNal1H6sWbydrBpJ/uJGktiWEIalEOBEDAAbo95g1eYtPBO2DH + q2+9drgoXv3dgerGg2d1YQrKgQAIOEB5PDeE/AN10VkiB8HKvAAAAABJRU5ErkJggg== - iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + iVBORw0KGgoAAAANSUhEUgAAADIAAAAeCAIAAADhM9qrAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp - bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE - sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs - AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4 - JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR - 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd - li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF - ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX - wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF - hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55 - 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ - VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB - 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC - qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE - j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I - 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9 - rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG - fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp - B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ - yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC - YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln - yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v - vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp - vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L - Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA - bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z - llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW - ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s - xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 - eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw - YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR - XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm - WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl - xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 - dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 - V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za - Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v - Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb - PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ - 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h - /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr - XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS - fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ - tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAABDBJREFUaEPdmsdKJlsU - hY8BH0VBh87FgQqCYnoLUcw555xzzjnnnHPAMBB0ICjoc+y+325tr22P2/+0sEDqr6qzVq1z1t4VzH9/ - 8jvc3NwkLCxM2tvb5eLiQp6fn+X19VVeXl7+Khjz6elJzs7OpLGxUYKCgsTV1fUL3zd83sDOx8fH8vj4 - KHd3d3J9fS2Xl5dyfn7+LWBsOMAFTnt7e+Ln5/eJ8xt+/uPi4iLZ2dm6883NjYrZ2dmRzc1NWVtbk9XV - 1W8BY8Nhd3dXTk5O5Pb2VjkmJCSIk5PTVyFZWVlyf3+vNm5tbcnKyoosLCzI3NyczM7OyszMzLeAseEA - Fzhtb28rx4eHB4mJifksJDg4WEXgAldhfn5eTzI9Pe1QgBPccAmucPb19f0phIV9eHiotiGCKzA1NeWw - QBAc4Xp6eiobGxvi7OwsJjw8XK6urnQDFv7pYEcDYuDK2mE9+/v7i2loaJCDgwOdg+w0OTlpBeC6uLgo - R0dHUlJSIgaLUMb8m5iYsApMMYIJUYZFQxqgcnx83CrAGSNYFoYFg0X8MDY2ZhXgvLS0pK6oI0Ta6Oio - dUAMa1sdIXpJgJGREeuAGExYX18XQ2Kx0IeGhqzD8PCwLngK5L8jZH9/X+NrYGDAOgwODqoJJJehLSbG - +vv7rQNiqPIqhPaY4tLX12cdEMNsog6qEPK4t7fXOiCG2aRC6O/J4+7ubuvQ09PzqyiqEPK4q6vLOiAG - E1QIDSMx1tHRYR06OzvVBKq7CiGTeWJiGxBDhVch9CnkcVtbm3VADLOJNsXQpxBjLS0t1qG1tVVNoFfU - GytirKmpyTo0NzerCVR3FUIm8yTPNiAGE1TI8vKyxlh9fb114HkDJuitLkLI5Lq6OuuAGIqiCuE2lxir - qamxDrW1tWoCbYoKIcaqq6utA2IoijS9hgwmkysrK61DVVWVmkC/pULI44qKCuuAGITQbxluFcnjsrIy - 61BeXq4m0G8ZMphM5rGjbSgtLVUT6LcMt4rEWFFRkXUoLi5WE+i3DBmMkMLCQuuAGIoi3bshg8nj/Px8 - 61BQUKAm0DgaootMzs3NtQ55eXlqAk9TfgnJycmxDoihKKoQmi7ymDe6vBC1CYjBBCLY0HxRIfkhIyPD - KsAZIcSw4X019rAxPT3dKjCLMCIyMlKMj4+PZjE2paamWoO0tDTlTEH09vYWwxcPlHqijB2Sk5OtAFyp - I/B++wLCqCLWCfOOnZKSkhwacMzMzNT14enp+fHlAwgJCdGSj9LExET91sMRATc40msFBAS8i/gQgj18 - 2vQ+xTgoPj5e4uLiHAJwgdP7lAoMDPy/iA8h7/Dy8pLY2FhNhJSUFD2YE7HtO8DYuAAXOEVFRYm7u/sn - zm/4skHdYe5FRERIdHS0XgXAyf4m3seEQ2hoqHh4ePz+adMbjPwA0vp3z2sN8DMAAAAASUVORK5CYII= + bGUAAEjHnZZ3VFTXFofPvXd6oc0w0hl6ky4wgPQuIB0EURhmBhjKAMMMTWyIqEBEEREBRZCggAGjoUis + iGIhKKhgD0gQUGIwiqioZEbWSnx5ee/l5ffHvd/aZ+9z99l7n7UuACRPHy4vBZYCIJkn4Ad6ONNXhUfQ + sf0ABniAAaYAMFnpqb5B7sFAJC83F3q6yAn8i94MAUj8vmXo6U+ng/9P0qxUvgAAyF/E5mxOOkvE+SJO + yhSkiu0zIqbGJIoZRomZL0pQxHJijlvkpZ99FtlRzOxkHlvE4pxT2clsMfeIeHuGkCNixEfEBRlcTqaI + b4tYM0mYzBXxW3FsMoeZDgCKJLYLOKx4EZuImMQPDnQR8XIAcKS4LzjmCxZwsgTiQ7mkpGbzuXHxArou + S49uam3NoHtyMpM4AoGhP5OVyOSz6S4pyalMXjYAi2f+LBlxbemiIluaWltaGpoZmX5RqP+6+Dcl7u0i + vQr43DOI1veH7a/8UuoAYMyKarPrD1vMfgA6tgIgd/8Pm+YhACRFfWu/8cV5aOJ5iRcIUm2MjTMzM424 + HJaRuKC/6386/A198T0j8Xa/l4fuyollCpMEdHHdWClJKUI+PT2VyeLQDf88xP848K/zWBrIieXwOTxR + RKhoyri8OFG7eWyugJvCo3N5/6mJ/zDsT1qca5Eo9Z8ANcoISN2gAuTnPoCiEAESeVDc9d/75oMPBeKb + F6Y6sTj3nwX9+65wifiRzo37HOcSGExnCfkZi2viawnQgAAkARXIAxWgAXSBITADVsAWOAI3sAL4gWAQ + DtYCFogHyYAPMkEu2AwKQBHYBfaCSlAD6kEjaAEnQAc4DS6Ay+A6uAnugAdgBIyD52AGvAHzEARhITJE + geQhVUgLMoDMIAZkD7lBPlAgFA5FQ3EQDxJCudAWqAgqhSqhWqgR+hY6BV2ArkID0D1oFJqCfoXewwhM + gqmwMqwNG8MM2An2hoPhNXAcnAbnwPnwTrgCroOPwe3wBfg6fAcegZ/DswhAiAgNUUMMEQbigvghEUgs + wkc2IIVIOVKHtCBdSC9yCxlBppF3KAyKgqKjDFG2KE9UCIqFSkNtQBWjKlFHUe2oHtQt1ChqBvUJTUYr + oQ3QNmgv9Cp0HDoTXYAuRzeg29CX0HfQ4+g3GAyGhtHBWGE8MeGYBMw6TDHmAKYVcx4zgBnDzGKxWHms + AdYO64dlYgXYAux+7DHsOewgdhz7FkfEqeLMcO64CBwPl4crxzXhzuIGcRO4ebwUXgtvg/fDs/HZ+BJ8 + Pb4LfwM/jp8nSBN0CHaEYEICYTOhgtBCuER4SHhFJBLVidbEACKXuIlYQTxOvEIcJb4jyZD0SS6kSJKQ + tJN0hHSedI/0ikwma5MdyRFkAXknuZF8kfyY/FaCImEk4SXBltgoUSXRLjEo8UISL6kl6SS5VjJHslzy + pOQNyWkpvJS2lIsUU2qDVJXUKalhqVlpirSptJ90snSxdJP0VelJGayMtoybDFsmX+awzEWZMQpC0aC4 + UFiULZR6yiXKOBVD1aF6UROoRdRvqP3UGVkZ2WWyobJZslWyZ2RHaAhNm+ZFS6KV0E7QhmjvlygvcVrC + WbJjScuSwSVzcopyjnIcuUK5Vrk7cu/l6fJu8onyu+U75B8poBT0FQIUMhUOKlxSmFakKtoqshQLFU8o + 3leClfSVApXWKR1W6lOaVVZR9lBOVd6vfFF5WoWm4qiSoFKmclZlSpWiaq/KVS1TPaf6jC5Ld6In0Svo + PfQZNSU1TzWhWq1av9q8uo56iHqeeqv6Iw2CBkMjVqNMo1tjRlNV01czV7NZ874WXouhFa+1T6tXa05b + RztMe5t2h/akjpyOl06OTrPOQ12yroNumm6d7m09jB5DL1HvgN5NfVjfQj9ev0r/hgFsYGnANThgMLAU + vdR6KW9p3dJhQ5Khk2GGYbPhqBHNyMcoz6jD6IWxpnGE8W7jXuNPJhYmSSb1Jg9MZUxXmOaZdpn+aqZv + xjKrMrttTjZ3N99o3mn+cpnBMs6yg8vuWlAsfC22WXRbfLS0suRbtlhOWWlaRVtVWw0zqAx/RjHjijXa + 2tl6o/Vp63c2ljYCmxM2v9ga2ibaNtlOLtdZzllev3zMTt2OaVdrN2JPt4+2P2Q/4qDmwHSoc3jiqOHI + dmxwnHDSc0pwOub0wtnEme/c5jznYuOy3uW8K+Lq4Vro2u8m4xbiVun22F3dPc692X3Gw8Jjncd5T7Sn + t+duz2EvZS+WV6PXzAqrFetX9HiTvIO8K72f+Oj78H26fGHfFb57fB+u1FrJW9nhB/y8/Pb4PfLX8U/z + /z4AE+AfUBXwNNA0MDewN4gSFBXUFPQm2Dm4JPhBiG6IMKQ7VDI0MrQxdC7MNaw0bGSV8ar1q66HK4Rz + wzsjsBGhEQ0Rs6vdVu9dPR5pEVkQObRGZ03WmqtrFdYmrT0TJRnFjDoZjY4Oi26K/sD0Y9YxZ2O8Yqpj + ZlgurH2s52xHdhl7imPHKeVMxNrFlsZOxtnF7YmbineIL4+f5rpwK7kvEzwTahLmEv0SjyQuJIUltSbj + kqOTT/FkeIm8nhSVlKyUgVSD1ILUkTSbtL1pM3xvfkM6lL4mvVNAFf1M9Ql1hVuFoxn2GVUZbzNDM09m + SWfxsvqy9bN3ZE/kuOd8vQ61jrWuO1ctd3Pu6Hqn9bUboA0xG7o3amzM3zi+yWPT0c2EzYmbf8gzySvN + e70lbEtXvnL+pvyxrR5bmwskCvgFw9tst9VsR23nbu/fYb5j/45PhezCa0UmReVFH4pZxde+Mv2q4quF + nbE7+0ssSw7uwuzi7Rra7bD7aKl0aU7p2B7fPe1l9LLCstd7o/ZeLV9WXrOPsE+4b6TCp6Jzv+b+Xfs/ + VMZX3qlyrmqtVqreUT13gH1g8KDjwZYa5ZqimveHuIfu1nrUttdp15UfxhzOOPy0PrS+92vG140NCg1F + DR+P8I6MHA082tNo1djYpNRU0gw3C5unjkUeu/mN6zedLYYtta201qLj4Ljw+LNvo78dOuF9ovsk42TL + d1rfVbdR2grbofbs9pmO+I6RzvDOgVMrTnV32Xa1fW/0/ZHTaqerzsieKTlLOJt/duFczrnZ86nnpy/E + XRjrjup+cHHVxds9AT39l7wvXbnsfvlir1PvuSt2V05ftbl66hrjWsd1y+vtfRZ9bT9Y/NDWb9nffsPq + RudN65tdA8sHzg46DF645Xrr8m2v29fvrLwzMBQydHc4cnjkLvvu5L2key/vZ9yff7DpIfph4SOpR+WP + lR7X/aj3Y+uI5ciZUdfRvidBTx6Mscae/5T+04fx/Kfkp+UTqhONk2aTp6fcp24+W/1s/Hnq8/npgp+l + f65+ofviu18cf+mbWTUz/pL/cuHX4lfyr468Xva6e9Z/9vGb5Dfzc4Vv5d8efcd41/s+7P3EfOYH7IeK + j3ofuz55f3q4kLyw8Bv3hPP74uYdwgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAtBJREFUWEftl0trGlEY + hocY/UkG4k5XimYTcBEwy/oLxI2t90Csd4MKKoiiVuJGIyVeCIEu3GQj1P/TR8+xNY7RthltF76rYc74 + vs+cOec7n8qaDAbDxcVFJpN5enqaTqff96PZbPby8vL4+JjNZh0OB6EyfqOsVutgMJhMJsPhsNvt3t/f + t9vtL3sQtp1Op9frjUYj4gi12WwSYlU6nc7r9fLEw8NDvV4vFotMWDKZjMfjn7UWnghzIggijlCiAQBD + Agl5PJ7n5+dWq3V3d3d7exsOhwOBwKeFPu5B2Pr9fiIikQhxhBINABgSCPHtuAU1bwAQP5C/PoiII5Ro + AMAAZs6k1+tZRs1mk4FQKLQ2PTc3N5VKhUXwVTvhhifOMmMxeUQDAAajICl2u50rphFkNVO/3+fm1dXV + pXbCDU+c+YIyaUEGABjAsDeVaDRaq9X4wOpvxzvxtDTTWsFgsFQqyaSFAAADGKZDEfsOUjm4IsDFPDmd + zlwux2b+9j6Nx2N8cMMTZ/xl0lJgFAoFkBSKExuVTSFHVsQ6WLzYJUVPGmuhVColbPGXSUuBAQwlbY6V + SCTWVpXQT6z3z9OqcBO2aiwwgAFJoeBS3LZjST/tJGw3YgEDksJRwJW8/VqHx0IcAyDNsbiS917riPVL + RyyVhO0R6/ckbHdg/Y8Folqt7iyn26u8z+f7oBI35bBK26s8MI1GQ+G8o9HZjrX9TPxTrC1nIhgcPvl8 + XqGDfuuoXusgOP+l8d9qZwchjmqQFLPZ/FZjs+9+q1wuy6SlRGNjsVjmTXM6nd7YBh6yO0WiDWS25k0z + MplMG5tmdJheHhENABjAzJmEeAPWmvovxmFEKNEAgCGBhE5OTlwu17/9Q3Z9fQ2GBFqV0WgUH5jn2BS8 + xJ4mTzgTQZBY1mdnZxJio05PT8/Pz91uN4/GYjGKG2VXc2GLOREEEUeojBdSlB9JGK19oUsVswAAAABJ + RU5ErkJggg== - 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 - A9C+Zf/SOPX/AAAAAElFTkSuQmCC + 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 diff --git a/ITC81DB_0H/DataStore.cs b/ITC81DB_0H/DataStore.cs index 3eebadb..687d081 100644 --- a/ITC81DB_0H/DataStore.cs +++ b/ITC81DB_0H/DataStore.cs @@ -294,6 +294,95 @@ namespace ITC81DB_0H COM3 = 1, COM4 = 2, } + + public enum SerialMode + { + 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_RTU, + f23_STD2, + } + + public enum 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, + f23_STD2, + } + + public enum ExternalOutputMode + { + None, + Over, + Under, + NG, + Pass, + Run, + Count, + LatchCountrol, + } + + public enum ExternalInputMode + { + IN0_None, + IN1_Metal, + IN2_START, + IN3_STOP, + IN4_DischargeSorterA, + IN5_Air = 5, + IN6_Door, + IN7_Stopper, + IN8_Windproof, + IN9_ExternalOperation, + IN10_DispensorEntry1 = 10, + IN11_DispensorEntry2, + IN12_StackUp, + IN13_ExNG1, + IN14_ExNG2, + IN15_ExInputCheck, + IN16_DischargeSorterB, + } #endregion } @@ -1160,6 +1249,12 @@ namespace ITC81DB_0H private int m_ConveyorLength; private int m_SortingPointLength; private int m_EthernetLocalPort; + private int m_Barcode; + + private int m_ModbusRTUSelectFunction; + private int m_ModbusRTUSlaveIDCOM1; + private int m_ModbusRTUSlaveIDCOM3; + private int m_ModbusRTUSlaveIDCOM4; private bool m_IsBypassDirectionPass; private bool m_IsBypassOnce; @@ -1443,6 +1538,32 @@ namespace ITC81DB_0H get { return this.m_EthernetLocalPort; } set { this.m_EthernetLocalPort = value; } } + public int Barcode + { + get { return this.m_Barcode; } + set { this.m_Barcode = value; } + } + + public int ModbusRTUSelectFunction + { + get { return this.m_ModbusRTUSelectFunction; } + set { this.m_ModbusRTUSelectFunction = value; } + } + public int ModbusRTUSlaveIDCOM1 + { + get { return this.m_ModbusRTUSlaveIDCOM1; } + set { this.m_ModbusRTUSlaveIDCOM1 = value; } + } + public int ModbusRTUSlaveIDCOM3 + { + get { return this.m_ModbusRTUSlaveIDCOM3; } + set { this.m_ModbusRTUSlaveIDCOM3 = value; } + } + public int ModbusRTUSlaveIDCOM4 + { + get { return this.m_ModbusRTUSlaveIDCOM4; } + set { this.m_ModbusRTUSlaveIDCOM4 = value; } + } public bool IsBypassDirectionPass { @@ -1519,6 +1640,12 @@ namespace ITC81DB_0H this.ConveyorLength = 450; this.SortingPointLength = 250; this.EthernetLocalPort = 0; + this.Barcode = 0; + + this.ModbusRTUSelectFunction = 0; + this.ModbusRTUSlaveIDCOM1 = 1; + this.ModbusRTUSlaveIDCOM3 = 1; + this.ModbusRTUSlaveIDCOM4 = 1; this.IsBypassDirectionPass = true; this.IsBypassOnce = true; @@ -1576,11 +1703,11 @@ namespace ITC81DB_0H public int DummyInt8; public int DummyInt9; public int DummyInt10; - public int DummyInt11; - public int DummyInt12; - public int DummyInt13; - public int DummyInt14; - public int DummyInt15; + public int ModbusRTUSelectFunction; + public int ModbusRTUSlaveIDCOM1; + public int ModbusRTUSlaveIDCOM3; + public int ModbusRTUSlaveIDCOM4; + public int Barcode; public int EthernetLocalPort; public int SortingPointLength; public int ConveyorLength; diff --git a/ITC81DB_0H/Forms/FormMain.cs b/ITC81DB_0H/Forms/FormMain.cs index 0b6f32b..8dec528 100644 --- a/ITC81DB_0H/Forms/FormMain.cs +++ b/ITC81DB_0H/Forms/FormMain.cs @@ -424,7 +424,7 @@ namespace ITC81DB_0H.Forms this.smartSerialPort3.Close(); // STXANDETX - this.ChangeBarcodeFrameSeparateType(DataStore.SeparateType.STXANDETX); + this.ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType.STXANDETX); this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps; this.smartSerialPort3.Open(); @@ -1641,7 +1641,7 @@ namespace ITC81DB_0H.Forms if (this.SystemConfig1.IsBarcodeEnable == true) { // STXANDETX - this.ChangeBarcodeFrameSeparateType(DataStore.SeparateType.STXANDETX); + this.ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType.STXANDETX); #region 바코드 사용 for (int i = 0; i < 1000; i++) @@ -2547,7 +2547,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.TransferSerialCOM1(this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.TransferSerialCOM1(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -2595,6 +2595,25 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.TransferSerialCOM1(this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM1(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.SerialMode.f23_STD2: + this.TransferSerialCOM1(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -2623,7 +2642,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.TransferSerialCOM3(this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.TransferSerialCOM3(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -2671,6 +2690,25 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.TransferSerialCOM3(this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM3(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.SerialMode.f23_STD2: + this.TransferSerialCOM3(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -2699,7 +2737,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.TransferSerialCOM4(this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.TransferSerialCOM4(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -2747,6 +2785,25 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.TransferSerialCOM4(this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM4(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.SerialMode.f23_STD2: + this.TransferSerialCOM4(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -2784,7 +2841,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.EthernetServerSendMessage(client, this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -2832,6 +2889,26 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.EthernetServerSendMessage(client, this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.EthernetMode.f23_STD2: + this.EthernetServerSendMessage(client, + this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -2863,7 +2940,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.EthernetWeightData(this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.EthernetWeightData(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -2911,6 +2988,25 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.EthernetWeightData(this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.EthernetWeightData(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.EthernetMode.f23_STD2: + this.EthernetWeightData(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -3315,7 +3411,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.TransferSerialCOM1(this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.TransferSerialCOM1(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -3363,6 +3459,25 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.TransferSerialCOM1(this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM1(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM1(this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.SerialMode.f23_STD2: + this.TransferSerialCOM1(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -3391,7 +3506,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.TransferSerialCOM3(this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.TransferSerialCOM3(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -3439,6 +3554,25 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.TransferSerialCOM3(this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM3(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM3(this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.SerialMode.f23_STD2: + this.TransferSerialCOM3(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -3467,7 +3601,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.TransferSerialCOM4(this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.TransferSerialCOM4(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -3515,6 +3649,25 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.TransferSerialCOM4(this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM4(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM4(this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.SerialMode.f23_STD2: + this.TransferSerialCOM4(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -3552,7 +3705,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.EthernetServerSendMessage(client, this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -3600,6 +3753,26 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.EthernetServerSendMessage(client, this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.EthernetMode.f23_STD2: + this.EthernetServerSendMessage(client, + this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -3631,7 +3804,7 @@ namespace ITC81DB_0H.Forms Thread.Sleep(200); this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK Thread.Sleep(200); - this.EthernetWeightData(this.WeightData9410(this.CurrentWeightData)); // 중량값 전송 + this.EthernetWeightData(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 } else { @@ -3679,6 +3852,25 @@ namespace ITC81DB_0H.Forms if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) this.EthernetWeightData(this.Transfer_19_SmartJet(this.CurrentWeightData)); break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == DataStore.JudgmentStatus.Pass) + { + this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK + Thread.Sleep(200); + this.EthernetWeightData(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.EthernetWeightData(this.SendChar(DataStore.CharValue.ACK)); // ACK + } + break; + case (int)DataStore.EthernetMode.f23_STD2: + this.EthernetWeightData(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; default: break; } @@ -4875,6 +5067,164 @@ namespace ITC81DB_0H.Forms return sb.ToString(); } + private byte[] Transfer_22_Modbus() + { + byte[] madeData = new byte[TotalBytes]; + byte[] Length2Value = new byte[2]; + byte[] Length4Value = new byte[4]; + + double underValue = Helper.StringToWeight(this.CurrentProductItem.UnderRange, this.SystemConfig1.DecimalPlaces); + double passValue = Helper.StringToWeight(this.CurrentProductItem.PassRange, this.SystemConfig1.DecimalPlaces); + double overValue = Helper.StringToWeight(this.CurrentProductItem.OverRange, this.SystemConfig1.DecimalPlaces); + + int equipmentStatus; + if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Start) + equipmentStatus = 1; + else + equipmentStatus = 0; + + int judgmentStatus; + switch (this.CurrentWeightData.JudgmentStatus) + { + case DataStore.JudgmentStatus.Over: + judgmentStatus = 0; + break; + case DataStore.JudgmentStatus.Pass: + judgmentStatus = 1; + break; + case DataStore.JudgmentStatus.Under: + judgmentStatus = 2; + break; + case DataStore.JudgmentStatus.Metal: + judgmentStatus = 3; + break; + case DataStore.JudgmentStatus.Double: + judgmentStatus = 4; + break; + default: + judgmentStatus = 5; + break; + } + + Length2Value = GetBytes(this.SystemConfig1.EquipmentID); + for (int i = 0; i < 2; i++) + madeData[i] = Length2Value[1 - i]; + + Length2Value = GetBytes(this.SystemConfig1.ProductNumber); + for (int i = 0; i < 2; i++) + madeData[2 + i] = Length2Value[1 - i]; + + Length4Value = GetBytes((Single)underValue); + for (int i = 0; i < 4; i++) + madeData[4 + i] = Length4Value[3 - i]; + + Length4Value = GetBytes((Single)passValue); + for (int i = 0; i < 4; i++) + madeData[8 + i] = Length4Value[3 - i]; + + Length4Value = GetBytes((Single)overValue); + for (int i = 0; i < 4; i++) + madeData[12 + i] = Length4Value[3 - i]; + + Length4Value = GetBytes(this.CurrentWeightData.UnderCount); + for (int i = 0; i < 4; i++) + madeData[16 + i] = Length4Value[3 - i]; + + Length4Value = GetBytes(this.CurrentWeightData.PassCount); + for (int i = 0; i < 4; i++) + madeData[20 + i] = Length4Value[3 - i]; + + Length4Value = GetBytes(this.CurrentWeightData.OverCount); + for (int i = 0; i < 4; i++) + madeData[24 + i] = Length4Value[3 - i]; + + Length4Value = GetBytes(this.CurrentWeightData.OverCount + this.CurrentWeightData.UnderCount); + for (int i = 0; i < 4; i++) + madeData[28 + i] = Length4Value[3 - i]; + + Length4Value = GetBytes(this.CurrentWeightData.ExNGCount); + for (int i = 0; i < 4; i++) + madeData[32 + i] = Length4Value[3 - i]; + + Length4Value = GetBytes(this.CurrentWeightData.TotalCount); + for (int i = 0; i < 4; i++) + madeData[36 + i] = Length4Value[3 - i]; + + Length2Value = GetBytes(judgmentStatus); + for (int i = 0; i < 2; i++) + madeData[40 + i] = Length2Value[1 - i]; + + Length4Value = GetBytes((Single)this.CurrentWeightData.Weight); + for (int i = 0; i < 4; i++) + madeData[42 + i] = Length4Value[3 - i]; + + Length2Value = GetBytes(equipmentStatus); + for (int i = 0; i < 2; i++) + madeData[46 + i] = Length2Value[1 - i]; + + return madeData; + } + private string Transfer_23_STD2(SystemConfigurationItem1 system, WeightData weight, ProductItem product) + { + StringBuilder sb = new StringBuilder(); + + if (weight.JudgmentStatus == DataStore.JudgmentStatus.Empty) + return ""; + + sb.Append((char)0x02); + sb.Append(string.Format("IN{0:000}", system.EquipmentID)); + sb.Append(string.Format("{0:0000}", product.Number)); + + sb.Append(Helper.StringZeroFillDigits6(Helper.StringToDecimalPlaces(product.UnderRange, this.SystemConfig1.DecimalPlaces))); + sb.Append(Helper.StringZeroFillDigits6(Helper.StringToDecimalPlaces(product.PassRange, this.SystemConfig1.DecimalPlaces))); + sb.Append(Helper.StringZeroFillDigits6(Helper.StringToDecimalPlaces(product.OverRange, this.SystemConfig1.DecimalPlaces))); + + sb.Append(string.Format("{0:0000000}", weight.UnderCount)); + sb.Append(string.Format("{0:0000000}", weight.PassCount)); + sb.Append(string.Format("{0:0000000}", weight.OverCount)); + sb.Append(string.Format("{0:0000000}", weight.ExNGCount)); + sb.Append(string.Format("{0:000000000}", weight.TotalCount)); + + switch (weight.JudgmentStatus) + { + case DataStore.JudgmentStatus.Empty: + break; + case DataStore.JudgmentStatus.Under: + sb.Append("U"); + break; + case DataStore.JudgmentStatus.Pass: + sb.Append("P"); + break; + case DataStore.JudgmentStatus.Over: + sb.Append("O"); + break; + case DataStore.JudgmentStatus.Double: + sb.Append("D"); + break; + case DataStore.JudgmentStatus.Metal: + sb.Append("M"); + break; + case DataStore.JudgmentStatus.ExNg: + sb.Append("E"); + break; + default: + sb.Append("E"); + break; + } + + if (weight.Weight <= 0.0) + sb.Append("-"); + else + sb.Append(" "); + + string temp = Helper.DoubleToString(weight.Weight, this.SystemConfig1.DecimalPlaces); + if (temp.StartsWith("-")) + temp = temp.Substring(1, temp.Length - 1); + sb.Append(temp.PadLeft(6, ' ')); + sb.Append((char)0x03); + + return sb.ToString(); + } #endregion #region SerialCommunication @@ -4933,7 +5283,7 @@ namespace ITC81DB_0H.Forms return byteArray; } // Markem-imaje 9410 중량 - public byte[] WeightData9410(WeightData weight) + public byte[] WeightData9410_OPT1(WeightData weight) { int tempStringLength = 0; string tempString = ""; @@ -4967,6 +5317,53 @@ namespace ITC81DB_0H.Forms return byteArray; } + // Markem-imaje 9410 중량(OPT3) + public byte[] WeightData9410_OPT3(WeightData weight) + { + int tempStringLength = 0; + string tempString = ""; + + byte[] byteArray = new byte[12]; + byte[] weightBytes = new byte[5]; + // 외부변수사용 : 0xE8 + byteArray[0] = 0xE8; + // Length : 0x00, 0x08 고정값 + byteArray[1] = 0x00; + byteArray[2] = 0x08; + + byteArray[3] = 0x01; // 1번 외부변수 번호 + byteArray[4] = 0x00; + byteArray[5] = 0x05; // 1번 외부변수 길이 + + string result = weight.Weight.ToString().Trim(); + string[] splitResult = result.Split('.'); + + weightBytes = new UTF8Encoding().GetBytes(string.Format("{0, 5}", int.Parse(splitResult[0]))); + for (int i = 0; i < weightBytes.Length; i++) + { + byteArray[i + 6] = weightBytes[i]; + } + + byteArray[11] = 0x00; + byteArray[11] = Helper.ChecksumCalculator(byteArray); + + //tempStringLength = weight.Weight.ToString().Trim().Length; + //if (tempStringLength > 5) + // tempString = weight.Weight.ToString().Trim().Substring(tempStringLength - 5, 5); + //else + // tempString = string.Format("{0,5}", weight.Weight); + + //weightBytes = new UTF8Encoding().GetBytes(tempString); + //for (int i = 0; i < weightBytes.Length; i++) + //{ + // byteArray[i + 6] = weightBytes[i]; + //} + + //byteArray[11] = 0x00; + //byteArray[11] = Helper.ChecksumCalculator(byteArray); + + return byteArray; + } // Markem-imaje 9028 방 변경 public byte[] RoomChange9028(int num) @@ -5249,6 +5646,41 @@ namespace ITC81DB_0H.Forms } } } + public void ChangeSerialCOM1FrameSeparateType(DataStore.SeparateType type) + { + // 통신 포트 설정 + if (this.smartSerialPort1.IsOpen == true) + this.smartSerialPort1.Close(); + + if (type == DataStore.SeparateType.ETXONLY) + { + this.smartSerialPort1.FrameSeparationType = SmartSerialPort.FRAMESEPARATIONTYPES.ETXONLY; + + byte[] etxCodes = new byte[2]; + etxCodes[0] = 13; + etxCodes[1] = 10; + this.smartSerialPort1.ETXCodes = etxCodes; + } + else if (type == DataStore.SeparateType.STXANDETX) + { + this.smartSerialPort1.FrameSeparationType = SmartSerialPort.FRAMESEPARATIONTYPES.STXANDETX; + + this.smartSerialPort1.STXCode = 2; + this.smartSerialPort1.ETXCode = 3; + } + else if (type == DataStore.SeparateType.NONEFRAME_READTIMEOUT) + { + this.smartSerialPort1.FrameSeparationType = SmartSerialPort.FRAMESEPARATIONTYPES.NONEFRAME_READTIMEOUT; + this.smartSerialPort1.ReadTimeout = 300; + } + else + { + this.smartSerialPort1.FrameSeparationType = SmartSerialPort.FRAMESEPARATIONTYPES.STXONLY; + this.smartSerialPort1.STXCode = 2; + } + + this.smartSerialPort1.Open(); + } #endregion #region Serial COM3 public void OpenSerialCOM3() @@ -5391,8 +5823,7 @@ namespace ITC81DB_0H.Forms } } - // 바코드 전용 - public void ChangeBarcodeFrameSeparateType(DataStore.SeparateType type) + public void ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType type) { // 통신 포트 설정 if (this.smartSerialPort3.IsOpen == true) @@ -5407,7 +5838,7 @@ namespace ITC81DB_0H.Forms etxCodes[1] = 10; this.smartSerialPort3.ETXCodes = etxCodes; } - else if(type == DataStore.SeparateType.STXANDETX) + else if (type == DataStore.SeparateType.STXANDETX) { this.smartSerialPort3.FrameSeparationType = SmartSerialPort.FRAMESEPARATIONTYPES.STXANDETX; @@ -5425,7 +5856,6 @@ namespace ITC81DB_0H.Forms this.smartSerialPort3.STXCode = 2; } - this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps; this.smartSerialPort3.Open(); } #endregion @@ -5518,9 +5948,44 @@ namespace ITC81DB_0H.Forms } } } + public void ChangeSerialCOM4FrameSeparateType(DataStore.SeparateType type) + { + // 통신 포트 설정 + if (this.smartSerialPort4.IsOpen == true) + this.smartSerialPort4.Close(); + + if (type == DataStore.SeparateType.ETXONLY) + { + this.smartSerialPort4.FrameSeparationType = SmartSerialPort.FRAMESEPARATIONTYPES.ETXONLY; + + byte[] etxCodes = new byte[2]; + etxCodes[0] = 13; + etxCodes[1] = 10; + this.smartSerialPort4.ETXCodes = etxCodes; + } + else if (type == DataStore.SeparateType.STXANDETX) + { + this.smartSerialPort4.FrameSeparationType = SmartSerialPort.FRAMESEPARATIONTYPES.STXANDETX; + + this.smartSerialPort4.STXCode = 2; + this.smartSerialPort4.ETXCode = 3; + } + else if (type == DataStore.SeparateType.NONEFRAME_READTIMEOUT) + { + this.smartSerialPort4.FrameSeparationType = SmartSerialPort.FRAMESEPARATIONTYPES.NONEFRAME_READTIMEOUT; + this.smartSerialPort4.ReadTimeout = 300; + } + else + { + this.smartSerialPort4.FrameSeparationType = SmartSerialPort.FRAMESEPARATIONTYPES.STXONLY; + this.smartSerialPort4.STXCode = 2; + } + + this.smartSerialPort4.Open(); + } #endregion - #region OPC + #region OPC, Modbus public static byte[] GetBytes(int argument) { byte[] byteArray = BitConverter.GetBytes(argument); @@ -5536,102 +6001,150 @@ namespace ITC81DB_0H.Forms byte[] byteArray = BitConverter.GetBytes(argument); return byteArray; } - public byte[] MakeData() + #endregion + #region Modbus Slave COM1 + public void OpenModbusSlaveCOM1() { - byte[] madeData = new byte[TotalBytes]; - byte[] Length2Value = new byte[2]; - byte[] Length4Value = new byte[4]; + if (this.SystemConfig1.SerialCOM1Mode == 0) + return; - double underValue = Helper.StringToWeight(this.CurrentProductItem.UnderRange, this.SystemConfig1.DecimalPlaces); - double passValue = Helper.StringToWeight(this.CurrentProductItem.PassRange, this.SystemConfig1.DecimalPlaces); - double overValue = Helper.StringToWeight(this.CurrentProductItem.OverRange, this.SystemConfig1.DecimalPlaces); + this.CloseModbusCOM1(); + this.CloseModbusSlaveCOM1(); - int equipmentStatus; - if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Start) - equipmentStatus = 1; - else - equipmentStatus = 0; - - int judgmentStatus; - switch (this.CurrentWeightData.JudgmentStatus) + if (this.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f16_OPC) { - case DataStore.JudgmentStatus.Over: - judgmentStatus = 0; - break; - case DataStore.JudgmentStatus.Pass: - judgmentStatus = 1; - break; - case DataStore.JudgmentStatus.Under: - judgmentStatus = 2; - break; - case DataStore.JudgmentStatus.Metal: - judgmentStatus = 3; - break; - case DataStore.JudgmentStatus.Double: - judgmentStatus = 4; - break; - default: - judgmentStatus = 5; - break; + this.smartModbusSlave1.SlaveAddress = 1; + this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600; + this.smartModbusSlave1.Start(); } + else if (this.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f22_Modbus_RTU) + { + this.smartModbusSlave1.SlaveAddress = this.SystemConfig2.ModbusRTUSlaveIDCOM1; + switch (this.SystemConfig1.SerialCOM1BaudRate) + { + case 0: + this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600; + break; + case 1: + this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_19200; + break; + case 2: + this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_38400; + break; + case 3: + this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_57600; + break; + case 4: + this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_115200; + break; + default: + this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600; + break; + } - Length2Value = GetBytes(this.SystemConfig1.EquipmentID); - for (int i = 0; i < 2; i++) - madeData[i] = Length2Value[1 - i]; + this.smartModbusSlave1.Start(); + } + } + public void CloseModbusSlaveCOM1() + { + if (this.smartModbusSlave1.IsOpen == true) + this.smartModbusSlave1.End(); + } + #endregion + #region Modbus Slave COM3 + public void OpenModbusSlaveCOM3() + { + if (this.SystemConfig1.SerialCOM3Mode == 0) + return; - Length2Value = GetBytes(this.SystemConfig1.ProductNumber); - for (int i = 0; i < 2; i++) - madeData[2 + i] = Length2Value[1 - i]; + this.CloseModbusCOM3(); + this.CloseModbusSlaveCOM3(); - Length4Value = GetBytes((Single)underValue); - for (int i = 0; i < 4; i++) - madeData[4 + i] = Length4Value[3 - i]; + if (this.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f16_OPC) + { + this.smartModbusSlave3.SlaveAddress = 1; + this.smartModbusSlave3.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600; + this.smartModbusSlave3.Start(); + } + else if (this.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f22_Modbus_RTU) + { + this.smartModbusSlave3.SlaveAddress = this.SystemConfig2.ModbusRTUSlaveIDCOM3; + switch (this.SystemConfig1.SerialCOM3BaudRate) + { + case 0: + this.smartModbusSlave3.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600; + break; + case 1: + this.smartModbusSlave3.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_19200; + break; + case 2: + this.smartModbusSlave3.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_38400; + break; + case 3: + this.smartModbusSlave3.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_57600; + break; + case 4: + this.smartModbusSlave3.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_115200; + break; + default: + this.smartModbusSlave3.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600; + break; + } + this.smartModbusSlave3.Start(); + } + } + public void CloseModbusSlaveCOM3() + { + if (this.smartModbusSlave3.IsOpen == true) + this.smartModbusSlave3.End(); + } + #endregion + #region Modbus Slave COM4 + public void OpenModbusSlaveCOM4() + { + if (this.SystemConfig1.SerialCOM4Mode == 0) + return; - Length4Value = GetBytes((Single)passValue); - for (int i = 0; i < 4; i++) - madeData[8 + i] = Length4Value[3 - i]; + this.CloseModbusCOM4(); + this.CloseModbusSlaveCOM4(); - Length4Value = GetBytes((Single)overValue); - for (int i = 0; i < 4; i++) - madeData[12 + i] = Length4Value[3 - i]; - - Length4Value = GetBytes(this.CurrentWeightData.UnderCount); - for (int i = 0; i < 4; i++) - madeData[16 + i] = Length4Value[3 - i]; - - Length4Value = GetBytes(this.CurrentWeightData.PassCount); - for (int i = 0; i < 4; i++) - madeData[20 + i] = Length4Value[3 - i]; - - Length4Value = GetBytes(this.CurrentWeightData.OverCount); - for (int i = 0; i < 4; i++) - madeData[24 + i] = Length4Value[3 - i]; - - Length4Value = GetBytes(this.CurrentWeightData.OverCount + this.CurrentWeightData.UnderCount); - for (int i = 0; i < 4; i++) - madeData[28 + i] = Length4Value[3 - i]; - - Length4Value = GetBytes(this.CurrentWeightData.ExNGCount); - for (int i = 0; i < 4; i++) - madeData[32 + i] = Length4Value[3 - i]; - - Length4Value = GetBytes(this.CurrentWeightData.TotalCount); - for (int i = 0; i < 4; i++) - madeData[36 + i] = Length4Value[3 - i]; - - Length2Value = GetBytes(judgmentStatus); - for (int i = 0; i < 2; i++) - madeData[40 + i] = Length2Value[1 - i]; - - Length4Value = GetBytes((Single)this.CurrentWeightData.Weight); - for (int i = 0; i < 4; i++) - madeData[42 + i] = Length4Value[3 - i]; - - Length2Value = GetBytes(equipmentStatus); - for (int i = 0; i < 2; i++) - madeData[46 + i] = Length2Value[1 - i]; - - return madeData; + if (this.SystemConfig1.SerialCOM4Mode == (int)DataStore.SerialMode.f16_OPC) + { + this.smartModbusSlave4.SlaveAddress = 1; + this.smartModbusSlave4.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600; + this.smartModbusSlave4.Start(); + } + else if (this.SystemConfig1.SerialCOM4Mode == (int)DataStore.SerialMode.f22_Modbus_RTU) + { + this.smartModbusSlave4.SlaveAddress = this.SystemConfig2.ModbusRTUSlaveIDCOM4; + switch (this.SystemConfig1.SerialCOM4BaudRate) + { + case 0: + this.smartModbusSlave4.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600; + break; + case 1: + this.smartModbusSlave4.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_19200; + break; + case 2: + this.smartModbusSlave4.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_38400; + break; + case 3: + this.smartModbusSlave4.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_57600; + break; + case 4: + this.smartModbusSlave4.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_115200; + break; + default: + this.smartModbusSlave4.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600; + break; + } + this.smartModbusSlave4.Start(); + } + } + public void CloseModbusSlaveCOM4() + { + if (this.smartModbusSlave4.IsOpen == true) + this.smartModbusSlave4.End(); } #endregion #region Modbus COM1 @@ -6506,11 +7019,11 @@ namespace ITC81DB_0H.Forms structItem.DummyInt8 = 0; structItem.DummyInt9 = 0; structItem.DummyInt10 = 0; - structItem.DummyInt11 = 0; - structItem.DummyInt12 = 0; - structItem.DummyInt13 = 0; - structItem.DummyInt14 = 0; - structItem.DummyInt15 = 0; + structItem.ModbusRTUSelectFunction = this.SystemConfig2.ModbusRTUSelectFunction; + structItem.ModbusRTUSlaveIDCOM1 = this.SystemConfig2.ModbusRTUSlaveIDCOM1; + structItem.ModbusRTUSlaveIDCOM3 = this.SystemConfig2.ModbusRTUSlaveIDCOM3; + structItem.ModbusRTUSlaveIDCOM4 = this.SystemConfig2.ModbusRTUSlaveIDCOM4; + structItem.Barcode = this.SystemConfig2.Barcode; structItem.EthernetLocalPort = this.SystemConfig2.EthernetLocalPort; structItem.SortingPointLength = this.SystemConfig2.SortingPointLength; structItem.ConveyorLength = this.SystemConfig2.ConveyorLength; @@ -6611,11 +7124,11 @@ namespace ITC81DB_0H.Forms structItem.DummyInt8 = 0; structItem.DummyInt9 = 0; structItem.DummyInt10 = 0; - structItem.DummyInt11 = 0; - structItem.DummyInt12 = 0; - structItem.DummyInt13 = 0; - structItem.DummyInt14 = 0; - structItem.DummyInt15 = 0; + structItem.ModbusRTUSelectFunction = item.ModbusRTUSelectFunction; + structItem.ModbusRTUSlaveIDCOM1 = item.ModbusRTUSlaveIDCOM1; + structItem.ModbusRTUSlaveIDCOM3 = item.ModbusRTUSlaveIDCOM3; + structItem.ModbusRTUSlaveIDCOM4 = item.ModbusRTUSlaveIDCOM4; + structItem.Barcode = item.Barcode; structItem.EthernetLocalPort = item.EthernetLocalPort; structItem.SortingPointLength = item.SortingPointLength; structItem.ConveyorLength = item.ConveyorLength; @@ -6719,6 +7232,7 @@ namespace ITC81DB_0H.Forms this.SystemConfig2.IsGroup4UsingRandomMode = structItem.IsGroup4UsingRandomMode; this.SystemConfig2.IsGroup5UsingRandomMode = structItem.IsGroup5UsingRandomMode; + this.SystemConfig2.Barcode = structItem.Barcode; this.SystemConfig2.FileNameExtension = structItem.FileNameExtension; this.SystemConfig2.EthernetPort = structItem.EthernetPort; @@ -6730,6 +7244,11 @@ namespace ITC81DB_0H.Forms this.SystemConfig2.IsBypassDirectionPass = structItem.IsBypassDirectionPass; this.SystemConfig2.IsCommunicationOption = structItem.IsCommunicationOption; + this.SystemConfig2.ModbusRTUSelectFunction = structItem.ModbusRTUSelectFunction; + this.SystemConfig2.ModbusRTUSlaveIDCOM1 = structItem.ModbusRTUSlaveIDCOM1; + this.SystemConfig2.ModbusRTUSlaveIDCOM3 = structItem.ModbusRTUSlaveIDCOM3; + this.SystemConfig2.ModbusRTUSlaveIDCOM4 = structItem.ModbusRTUSlaveIDCOM4; + this.SystemConfig2.ConveyorLength = structItem.ConveyorLength; this.SystemConfig2.SortingPointLength = structItem.SortingPointLength; @@ -9991,7 +10510,7 @@ namespace ITC81DB_0H.Forms // 수신 Slave Address 와 설정된 Slave Address가 같은 경우 if (datas.RequestDatas.iSlave == this.smartModbusSlave1.SlaveAddress) { - madeDatas = this.MakeData(); + madeDatas = this.Transfer_22_Modbus(); datas.ResponDatas.chDatas = madeDatas; datas.ResponDatas.iNumberOfByte = TotalBytes; @@ -10004,7 +10523,7 @@ namespace ITC81DB_0H.Forms // 수신 Slave Address 와 설정된 Slave Address가 같은 경우 if (datas.RequestDatas.iSlave == this.smartModbusSlave1.SlaveAddress) { - madeDatas = this.MakeData(); + madeDatas = this.Transfer_22_Modbus(); datas.ResponDatas.chDatas = madeDatas; datas.ResponDatas.iNumberOfByte = TotalBytes; @@ -10017,7 +10536,7 @@ namespace ITC81DB_0H.Forms // 수신 Slave Address 와 설정된 Slave Address가 같은 경우 if (datas.RequestDatas.iSlave == this.smartModbusSlave1.SlaveAddress) { - madeDatas = this.MakeData(); + madeDatas = this.Transfer_22_Modbus(); datas.ResponDatas.chDatas = madeDatas; datas.ResponDatas.iNumberOfByte = TotalBytes; @@ -10187,7 +10706,7 @@ namespace ITC81DB_0H.Forms // Byte Count(Data의 개수) sendDatas[8] = 0x30; - madeDatas = this.MakeData(); + madeDatas = this.Transfer_22_Modbus(); for (int i = 0; i < TotalBytes; i++) sendDatas[9 + i] = madeDatas[i]; diff --git a/ITC81DB_0H/Forms/FormMenu.cs b/ITC81DB_0H/Forms/FormMenu.cs index 5fb80bc..d778003 100644 --- a/ITC81DB_0H/Forms/FormMenu.cs +++ b/ITC81DB_0H/Forms/FormMenu.cs @@ -1462,7 +1462,7 @@ namespace ITC81DB_0H.Forms if (this.ParentForm.SystemConfig1.IsBarcodeEnable == true) { - this.ParentForm.ChangeBarcodeFrameSeparateType(DataStore.SeparateType.ETXONLY); + this.ParentForm.ChangeSerialCOM3FrameSeparateType(DataStore.SeparateType.ETXONLY); this.ParentForm.TransferSerialCOM3RawData(Barcode.ExitProgrammingMode); } diff --git a/ITC81DB_0H/Version.txt b/ITC81DB_0H/Version.txt index 7ecf362..9faa39a 100644 --- a/ITC81DB_0H/Version.txt +++ b/ITC81DB_0H/Version.txt @@ -12,6 +12,17 @@ ⺻ м 跮 */ +@ Ver 1.2.0 by CJY + - 2021.05.18 + - Ver 1.1.0 Modify + - ܺ - ðġ ߰ + +@ Ver 1.1.0 by CJY + - 2021.03.29 + - Ver 1.0.8 Modify + - ø/̴ + 1. f23_STD2 ߰ <- STD1 Count ߰ + @ Ver 1.0.8 by CJY - 2021.03.19 - Ver 1.0.7 Modify diff --git a/ITC81DB_0H/bin/Release/ITC81DB_0H.exe b/ITC81DB_0H/bin/Release/ITC81DB_0H.exe index 0150c6d..3d53e0a 100644 Binary files a/ITC81DB_0H/bin/Release/ITC81DB_0H.exe and b/ITC81DB_0H/bin/Release/ITC81DB_0H.exe differ diff --git a/ITC81DB_0H/obj/Release/ITC81DB_0H.exe b/ITC81DB_0H/obj/Release/ITC81DB_0H.exe index 0150c6d..3d53e0a 100644 Binary files a/ITC81DB_0H/obj/Release/ITC81DB_0H.exe and b/ITC81DB_0H/obj/Release/ITC81DB_0H.exe differ