diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.Designer.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.Designer.cs
index 8e3e5e6..c36abaa 100644
--- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.Designer.cs
+++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.Designer.cs
@@ -57,6 +57,7 @@
this.buttonStop = new SmartX.SmartButton();
this.buttonStart = new SmartX.SmartButton();
this.timerServer = new System.Windows.Forms.Timer();
+ this.buttonPingTimer = new SmartX.SmartButton();
this.smartGroupBox1.SuspendLayout();
this.SuspendLayout();
//
@@ -64,6 +65,7 @@
//
this.smartGroupBox1.BackPictureBox = null;
this.smartGroupBox1.BackPictureBox1 = null;
+ this.smartGroupBox1.Controls.Add(this.buttonPingTimer);
this.smartGroupBox1.Controls.Add(this.buttonAddon);
this.smartGroupBox1.Controls.Add(this.buttonLocalIP);
this.smartGroupBox1.Controls.Add(this.labelReceive);
@@ -552,7 +554,7 @@
this.labelClientCount.Font = new System.Drawing.Font("Arial", 12F, System.Drawing.FontStyle.Bold);
this.labelClientCount.InitVisible = true;
this.labelClientCount.LineSpacing = 0F;
- this.labelClientCount.Location = new System.Drawing.Point(497, 230);
+ this.labelClientCount.Location = new System.Drawing.Point(20, 240);
this.labelClientCount.Name = "labelClientCount";
this.labelClientCount.Size = new System.Drawing.Size(94, 28);
this.labelClientCount.TabIndex = 1;
@@ -618,7 +620,7 @@
this.smartListBoxClientList.ItemOffsetGap = 0;
this.smartListBoxClientList.ItemOffsetX = 0;
this.smartListBoxClientList.ItemOffsetY = 0;
- this.smartListBoxClientList.Location = new System.Drawing.Point(497, 264);
+ this.smartListBoxClientList.Location = new System.Drawing.Point(20, 274);
this.smartListBoxClientList.MouseMoveEventSpace = 3;
this.smartListBoxClientList.MouseMoveSpace = 10;
this.smartListBoxClientList.Name = "smartListBoxClientList";
@@ -708,6 +710,39 @@
this.timerServer.Interval = 1000;
this.timerServer.Tick += new System.EventHandler(this.timerServer_Tick);
//
+ // buttonPingTimer
+ //
+ this.buttonPingTimer.BackPictureBox = null;
+ this.buttonPingTimer.BackPictureBox1 = null;
+ this.buttonPingTimer.BackPictureBox2 = null;
+ this.buttonPingTimer.ButtonColor = System.Drawing.Color.Gray;
+ this.buttonPingTimer.ButtonImageAutoSize = true;
+ this.buttonPingTimer.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonPingTimer.DisableImage = null;
+ this.buttonPingTimer.DownImage = null;
+ this.buttonPingTimer.GroupID = 0;
+ this.buttonPingTimer.InitVisible = true;
+ this.buttonPingTimer.Location = new System.Drawing.Point(499, 284);
+ this.buttonPingTimer.Mode = SmartX.SmartButton.BUTTONMODE.PUSH;
+ this.buttonPingTimer.Name = "buttonPingTimer";
+ this.buttonPingTimer.NestedClickEventPrevent = false;
+ this.buttonPingTimer.OutlinePixel = 1;
+ this.buttonPingTimer.RepeatInterval = 200;
+ this.buttonPingTimer.RepeatIntervalAccelerate = null;
+ this.buttonPingTimer.SafeInterval = 200;
+ this.buttonPingTimer.Size = new System.Drawing.Size(91, 43);
+ this.buttonPingTimer.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonPingTimer.TabIndex = 185;
+ this.buttonPingTimer.Text = "Ping Open";
+ this.buttonPingTimer.TextColor = System.Drawing.Color.Black;
+ this.buttonPingTimer.TextDownColor = System.Drawing.Color.White;
+ this.buttonPingTimer.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonPingTimer.TextLocation = new System.Drawing.Point(0, 0);
+ this.buttonPingTimer.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonPingTimer.UpImage = null;
+ this.buttonPingTimer.Visible = false;
+ this.buttonPingTimer.Click += new System.EventHandler(this.buttonPingTimer_Click);
+ //
// ControlCenterConfiEthernet
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -750,5 +785,6 @@
private SmartX.SmartLabel labelFormat;
private SmartX.SmartButton buttonLocalIP;
private SmartX.SmartButton buttonAddon;
+ private SmartX.SmartButton buttonPingTimer;
}
}
diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs
index cdfc484..873e0d2 100644
--- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs
+++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiEthernet.cs
@@ -25,6 +25,9 @@ namespace ITC81DB_0H.Controls
public ControlConfiEthernetLocalIP ControlEthernetLocalIP;
public ControlConfiSerialHitachi ControlHitachi;
public ControlConfiSerialMarkoPrint ControlMarkoprint;
+ public ControlConfiModbus ControlModbusTCP;
+
+ private delegate void ConnetedIPStatusCallback(string value);
#endregion
#region Constructor
@@ -185,6 +188,10 @@ namespace ITC81DB_0H.Controls
this.Controls.Add(this.ControlMarkoprint);
this.ControlMarkoprint.Location = new Point(0, 217);
+ this.ControlModbusTCP = new ControlConfiModbus(this.ParentForm);
+ this.Controls.Add(this.ControlModbusTCP);
+ this.ControlModbusTCP.Location = new Point(0, 217);
+
if (this.ParentForm.ParentForm.SystemConfig2.IsEthernetEnable == true)
{
this.buttonStart.Enabled = true;
@@ -242,7 +249,7 @@ namespace ITC81DB_0H.Controls
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("Modbus TCP"); // 모드버스 TCP 22
this.comboBoxEthernetMode.Items.Add("STD2"); // STD2 23
}
else
@@ -386,11 +393,35 @@ namespace ITC81DB_0H.Controls
this.labelLocalPort.BackColor = Color.White;
}
}
+ public void DisplayHiddenMenu(bool bValue)
+ {
+ if (bValue == true)
+ {
+ this.buttonPingTimer.Visible = true;
+ }
+ else
+ {
+ this.buttonPingTimer.Visible = false;
+ }
+ }
+ private void ButtonAddOnDisplay()
+ {
+ this.DisplayBottomSettingMenu();
+
+ if (this.comboBoxEthernetMode.SelectedIndex == (int)DataStore.EthernetMode.f9_Hitachi
+ || this.comboBoxEthernetMode.SelectedIndex == (int)DataStore.EthernetMode.f11_Markoprint
+ || this.comboBoxEthernetMode.SelectedIndex == (int)DataStore.EthernetMode.f16_OPC
+ || this.comboBoxEthernetMode.SelectedIndex == (int)DataStore.EthernetMode.f22_Modbus_TCP)
+ this.buttonAddon.Visible = true;
+ else
+ this.buttonAddon.Visible = false;
+ }
private void ControlVisible(bool visible)
{
this.ControlHitachi.Visible = visible;
this.ControlMarkoprint.Visible = visible;
+ this.ControlModbusTCP.Visible = visible;
}
private void DisplayBottomSettingMenu()
{
@@ -398,24 +429,40 @@ namespace ITC81DB_0H.Controls
this.buttonTestSend.Enabled = true;
- if (this.comboBoxEthernetMode.SelectedIndex == 9)
+ if (this.comboBoxEthernetMode.SelectedIndex == (int)DataStore.EthernetMode.f9_Hitachi)
{
this.ControlHitachi.Visible = true;
this.ControlHitachi.BringToFront();
this.ControlHitachi.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu());
}
- else if (this.comboBoxEthernetMode.SelectedIndex == 11)
+ else if (this.comboBoxEthernetMode.SelectedIndex == (int)DataStore.EthernetMode.f11_Markoprint)
{
this.ControlMarkoprint.Visible = true;
this.ControlMarkoprint.BringToFront();
this.ControlMarkoprint.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu());
}
+ else if (this.comboBoxEthernetMode.SelectedIndex == (int)DataStore.EthernetMode.f22_Modbus_TCP
+ || this.comboBoxEthernetMode.SelectedIndex == (int)DataStore.EthernetMode.f16_OPC)
+ {
+ this.ControlModbusTCP.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu());
+ this.ControlModbusTCP.Visible = true;
+ this.ControlModbusTCP.BringToFront();
+ }
else
{
}
}
+ private void ConnectedIPStatusOut(string value)
+ {
+ this.labelConnectedIP.Text = value;
+ }
+ public void DelegateConnectedIPStatusOut(string value)
+ {
+ this.Invoke(new ConnetedIPStatusCallback(this.ConnectedIPStatusOut), value);
+ }
+
public void DisplayRefresh(SystemStatus status)
{
this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplay = DataStore.DisplayStore.ConfiEthernet;
@@ -449,6 +496,7 @@ namespace ITC81DB_0H.Controls
this.UpdateLabelFormatDisplay();
+ this.DisplayHiddenMenu(false);
if (this.comboBoxEthernetOpMode.SelectedIndex == 1)
{
this.buttonStart.Enabled = true;
@@ -487,6 +535,7 @@ namespace ITC81DB_0H.Controls
}
this.labelLocalPort.Text = this.ParentForm.ParentForm.SystemConfig2.EthernetLocalPort.ToString();
+ this.ButtonAddOnDisplay();
this.buttonSave.Enabled = false;
}
#endregion
@@ -1209,6 +1258,22 @@ namespace ITC81DB_0H.Controls
this.ControlEthernetLocalIP.DisplayRefresh();
}
+ private void buttonPingTimer_Click(object sender, EventArgs e)
+ {
+ if (this.buttonPingTimer.ButtonStatus == SmartButton.BUTSTATUS.DOWN)
+ {
+ this.ParentForm.ParentForm.SystemConfig2.IsEthernetPingTimer = true;
+ this.buttonPingTimer.Text = "Ping Close";
+ this.ParentForm.ParentForm.IsUsingTimerEthernetPing(true);
+ }
+ else
+ {
+ this.ParentForm.ParentForm.SystemConfig2.IsEthernetPingTimer = false;
+ this.buttonPingTimer.Text = "Ping Open";
+ this.ParentForm.ParentForm.IsUsingTimerEthernetPing(false);
+ }
+ }
+
private void comboBoxEthernetMode_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.comboBoxEthernetMode.SelectedIndex == 16) // OPC
@@ -1279,14 +1344,28 @@ namespace ITC81DB_0H.Controls
else
mode = this.comboBoxEthernetMode.SelectedIndex;
this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode = mode;
+
+ if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)DataStore.EthernetMode.f22_Modbus_TCP
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f16_OPC
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f16_OPC
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)DataStore.SerialMode.f16_OPC
+ || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)DataStore.EthernetMode.f16_OPC)
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(true);
+ else
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(false);
+
this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2);
+ this.ButtonAddOnDisplay();
this.buttonSave.Enabled = false;
}
private void buttonAddon_Click(object sender, EventArgs e)
{
- if (this.ControlHitachi.Visible == false && this.ControlMarkoprint.Visible == false)
+ if (this.ControlHitachi.Visible == false && this.ControlMarkoprint.Visible == false && this.ControlModbusTCP.Visible == false)
this.DisplayBottomSettingMenu();
else
{
diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiOptionBoard.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiOptionBoard.cs
index 536ff36..e87d01d 100644
--- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiOptionBoard.cs
+++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiOptionBoard.cs
@@ -52,7 +52,7 @@ namespace ITC81DB_0H.Controls
else if (value == 2)
this.ControlOPT2.InitializeDesign();
- this.ParentForm.ParentForm.ChildFormMainDisplay.CurrentBottomMenuControlEnable(DataStore.EquipmentStatus.Stop);
+ this.ParentForm.ParentForm.ChildFormMainDisplay.CurrentBottomMenuControlEnable();
}
private void DefaultSetting()
{
diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs
index cbc609e..5974977 100644
--- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs
+++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs
@@ -21,12 +21,14 @@ namespace ITC81DB_0H.Controls
public partial class ControlCenterConfiSerial : UserControl
{
#region Field
- private int m_ModeSTD2;
+ private static int ModeSTD2 = 4;
+
private FormMenu m_ParentForm;
public ControlConfiSerialUserDefine ControlUserDefine;
public ControlConfiSerialHitachi ControlHitachi;
public ControlConfiSerialMarkoPrint ControlMarkoprint;
public ControlConfiSerialBarcode ControlBarcode;
+ public ControlConfiModbus ControlModbusRTU;
#endregion
#region Constructor
@@ -47,11 +49,6 @@ 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
@@ -147,7 +144,9 @@ namespace ITC81DB_0H.Controls
this.Controls.Add(this.ControlBarcode);
this.ControlBarcode.Location = new Point(0, 217);
- this.ModeSTD2 = 4;
+ this.ControlModbusRTU = new ControlConfiModbus(this.ParentForm);
+ this.Controls.Add(this.ControlModbusRTU);
+ this.ControlModbusRTU.Location = new Point(0, 217);
this.ControlVisible(false);
@@ -193,7 +192,7 @@ namespace ITC81DB_0H.Controls
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("Modbus RTU"); // 모드버스 RTU 22
this.comboBoxSerialMode.Items.Add("STD2"); // STD2 23
//this.comboBoxSerialMode.Items.Add("Barcode");
//this.comboBoxSerialMode.Items.Add("User Define");
@@ -315,13 +314,18 @@ namespace ITC81DB_0H.Controls
this.ControlUserDefine.Visible = visible;
this.ControlHitachi.Visible = visible;
this.ControlMarkoprint.Visible = visible;
+ this.ControlModbusRTU.Visible = visible;
//this.ControlBarcode.Visible = visible;
}
private void ButtonAddOnDisplay()
{
this.ControlVisible(false);
+ this.DisplayBottomSettingMenu();
- if (this.comboBoxSerialMode.SelectedIndex == 9 || this.comboBoxSerialMode.SelectedIndex == 11)
+ if (this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f9_Hitachi
+ || this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f11_Markoprint
+ || this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f16_OPC
+ || this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f22_Modbus_RTU)
this.buttonAddon.Visible = true;
else
this.buttonAddon.Visible = false;
@@ -353,7 +357,7 @@ namespace ITC81DB_0H.Controls
if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false)
{
if (item.SerialCOM1Mode == (int)DataStore.SerialMode.f23_STD2)
- this.comboBoxSerialMode.SelectedIndex = this.ModeSTD2;
+ this.comboBoxSerialMode.SelectedIndex = ModeSTD2;
else if (item.SerialCOM1Mode > this.comboBoxSerialMode.Items.Count - 1)
this.comboBoxSerialMode.SelectedIndex = 0;
else
@@ -366,6 +370,16 @@ namespace ITC81DB_0H.Controls
this.comboBoxSerialMode.SelectedIndexChanged += new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged);
this.labelTransmissionDelayTime.Text = item.TransmissionDelayTimeCOM1.ToString();
+
+ if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f16_OPC)
+ {
+ this.comboBoxSerialBaudRate.Enabled = false;
+ this.ControlModbusRTU.OPCSettings();
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f22_Modbus_RTU)
+ this.ControlModbusRTU.ModbusRTUDefaultSettings();
+ else
+ this.ControlModbusRTU.SerialDefaultSettings();
#endregion
break;
case DataStore.MenuBottomConfiguration.SerialCOM3:
@@ -413,7 +427,7 @@ namespace ITC81DB_0H.Controls
if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false)
{
if (item.SerialCOM3Mode == (int)DataStore.SerialMode.f23_STD2)
- this.comboBoxSerialMode.SelectedIndex = this.ModeSTD2;
+ this.comboBoxSerialMode.SelectedIndex = ModeSTD2;
else if (item.SerialCOM3Mode > this.comboBoxSerialMode.Items.Count - 1)
this.comboBoxSerialMode.SelectedIndex = 0;
else
@@ -426,6 +440,16 @@ namespace ITC81DB_0H.Controls
this.comboBoxSerialMode.SelectedIndexChanged += new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged);
this.labelTransmissionDelayTime.Text = this.ParentForm.ParentForm.SystemConfig1.TransmissionDelayTimeCOM3.ToString();
+
+ if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f16_OPC) // OPC
+ {
+ this.comboBoxSerialBaudRate.Enabled = false;
+ this.ControlModbusRTU.OPCSettings();
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f22_Modbus_RTU)
+ this.ControlModbusRTU.ModbusRTUDefaultSettings();
+ else
+ this.ControlModbusRTU.SerialDefaultSettings();
}
#endregion
break;
@@ -441,7 +465,7 @@ namespace ITC81DB_0H.Controls
if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false)
{
if (item.SerialCOM4Mode == (int)DataStore.SerialMode.f23_STD2)
- this.comboBoxSerialMode.SelectedIndex = this.ModeSTD2;
+ this.comboBoxSerialMode.SelectedIndex = ModeSTD2;
else if (item.SerialCOM4Mode > this.comboBoxSerialMode.Items.Count - 1)
this.comboBoxSerialMode.SelectedIndex = 0;
else
@@ -454,6 +478,16 @@ namespace ITC81DB_0H.Controls
this.comboBoxSerialMode.SelectedIndexChanged += new EventHandler(this.comboBoxSerialMode_SelectedIndexChanged);
this.labelTransmissionDelayTime.Text = item.TransmissionDelayTimeCOM4.ToString();
+
+ if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)DataStore.SerialMode.f16_OPC) // OPC
+ {
+ this.comboBoxSerialBaudRate.Enabled = false;
+ this.ControlModbusRTU.OPCSettings();
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)DataStore.SerialMode.f22_Modbus_RTU)
+ this.ControlModbusRTU.ModbusRTUDefaultSettings();
+ else
+ this.ControlModbusRTU.SerialDefaultSettings();
#endregion
break;
default:
@@ -473,40 +507,45 @@ namespace ITC81DB_0H.Controls
{
DataStore.MenuBottomConfiguration temp = this.ParentForm.CurrentConfigurationMenu();
+ this.ParentForm.ParentForm.ChangeSerialCOM3FrameBufferSize(1024);
+ this.ParentForm.ParentForm.ChangeSerialCOM3ReceiveDetect(SmartX.SmartSerialPort.RECEIVEDETECTTYPE.EVENT_QUEUE);
+
if (this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f16_OPC)
{
+ this.ControlModbusRTU.OPCSettings();
+
#region OPC
switch (temp)
{
case DataStore.MenuBottomConfiguration.SerialCOM1:
- this.ParentForm.ParentForm.CloseModbusSlaveCOM1();
this.ParentForm.ParentForm.CloseSerialCOM1();
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.comboBoxSerialBaudRate.Enabled = false;
this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)DataStore.SerialMode.f16_OPC;
- this.ParentForm.ParentForm.OpenModbusSlaveCOM1();
+ this.ParentForm.ParentForm.OpenSerialCOM1();
break;
case DataStore.MenuBottomConfiguration.SerialCOM3:
- this.ParentForm.ParentForm.CloseModbusSlaveCOM3();
this.ParentForm.ParentForm.CloseSerialCOM3();
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.comboBoxSerialBaudRate.Enabled = false;
this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)DataStore.SerialMode.f16_OPC;
- this.ParentForm.ParentForm.OpenModbusSlaveCOM3();
+ this.ParentForm.ParentForm.OpenSerialCOM3();
break;
case DataStore.MenuBottomConfiguration.SerialCOM4:
- this.ParentForm.ParentForm.CloseModbusSlaveCOM4();
this.ParentForm.ParentForm.CloseSerialCOM4();
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.comboBoxSerialBaudRate.Enabled = false;
this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)DataStore.SerialMode.f16_OPC;
- this.ParentForm.ParentForm.OpenModbusSlaveCOM4();
+ this.ParentForm.ParentForm.OpenSerialCOM4();
break;
default:
break;
@@ -519,8 +558,6 @@ namespace ITC81DB_0H.Controls
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;
@@ -531,8 +568,6 @@ namespace ITC81DB_0H.Controls
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;
@@ -543,8 +578,6 @@ namespace ITC81DB_0H.Controls
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;
@@ -559,58 +592,16 @@ namespace ITC81DB_0H.Controls
}
#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
{
+ this.ControlModbusRTU.SerialDefaultSettings();
+
switch (temp)
{
case DataStore.MenuBottomConfiguration.SerialCOM1:
- this.ParentForm.ParentForm.CloseModbusSlaveCOM1();
this.ParentForm.ParentForm.CloseSerialCOM1();
this.ParentForm.ParentForm.SystemConfig1.SerialCOM1BaudRate = baudrate;
- if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == this.ModeSTD2)
+ if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2)
this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = (int)DataStore.SerialMode.f23_STD2;
else
this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode = mode;
@@ -618,10 +609,9 @@ namespace ITC81DB_0H.Controls
this.ParentForm.ParentForm.OpenSerialCOM1();
break;
case DataStore.MenuBottomConfiguration.SerialCOM3:
- this.ParentForm.ParentForm.CloseModbusSlaveCOM3();
this.ParentForm.ParentForm.CloseSerialCOM3();
this.ParentForm.ParentForm.SystemConfig1.SerialCOM3BaudRate = baudrate;
- if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == this.ModeSTD2)
+ if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2)
this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = (int)DataStore.SerialMode.f23_STD2;
else
this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode = mode;
@@ -629,10 +619,9 @@ namespace ITC81DB_0H.Controls
this.ParentForm.ParentForm.OpenSerialCOM3();
break;
case DataStore.MenuBottomConfiguration.SerialCOM4:
- this.ParentForm.ParentForm.CloseModbusSlaveCOM4();
this.ParentForm.ParentForm.CloseSerialCOM4();
this.ParentForm.ParentForm.SystemConfig1.SerialCOM4BaudRate = baudrate;
- if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == this.ModeSTD2)
+ if (this.ParentForm.ParentForm.SystemConfig2.IsCommunicationOption == false && mode == ModeSTD2)
this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = (int)DataStore.SerialMode.f23_STD2;
else
this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode = mode;
@@ -642,6 +631,14 @@ namespace ITC81DB_0H.Controls
default:
break;
}
+
+ if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)DataStore.EthernetMode.f22_Modbus_TCP)
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(true);
+ else
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(false);
}
this.ParentForm.ParentForm.SaveSystemConfigurationFile1(this.ParentForm.ParentForm.SystemConfig1);
@@ -668,18 +665,25 @@ namespace ITC81DB_0H.Controls
this.buttonTestSend.Enabled = true;
- if (this.comboBoxSerialMode.SelectedIndex == 9)
+ if (this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f9_Hitachi)
{
this.ControlHitachi.Visible = true;
this.ControlHitachi.BringToFront();
this.ControlHitachi.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu());
}
- else if (this.comboBoxSerialMode.SelectedIndex == 11)
+ else if (this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f11_Markoprint)
{
this.ControlMarkoprint.Visible = true;
this.ControlMarkoprint.BringToFront();
this.ControlMarkoprint.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu());
}
+ else if (this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.comboBoxSerialMode.SelectedIndex == (int)DataStore.SerialMode.f16_OPC)
+ {
+ this.ControlModbusRTU.Visible = true;
+ this.ControlModbusRTU.BringToFront();
+ this.ControlModbusRTU.DisplayRefresh(this.ParentForm.CurrentConfigurationMenu());
+ }
else
{
@@ -691,7 +695,7 @@ namespace ITC81DB_0H.Controls
private void buttonAddon_Click(object sender, EventArgs e)
{
if (this.ControlUserDefine.Visible == false && this.ControlHitachi.Visible == false && this.ControlMarkoprint.Visible == false
- && this.ControlBarcode.Visible == false)
+ && this.ControlBarcode.Visible == false && this.ControlModbusRTU.Visible == false)
this.DisplayBottomSettingMenu();
else
{
@@ -1219,7 +1223,6 @@ namespace ITC81DB_0H.Controls
{
this.buttonSave.Enabled = true;
}
-
private void comboBoxSerialMode_SelectedIndexChanged(object sender, EventArgs e)
{
if(this.comboBoxSerialMode.SelectedIndex == 16) // OPC
diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.Designer.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.Designer.cs
index 4de0e4b..982c949 100644
--- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.Designer.cs
+++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.Designer.cs
@@ -203,10 +203,10 @@
this.smartGroupBox2.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.Rectangle;
this.smartGroupBox2.Image = null;
this.smartGroupBox2.InitVisible = true;
- this.smartGroupBox2.Location = new System.Drawing.Point(405, 43);
+ this.smartGroupBox2.Location = new System.Drawing.Point(436, 43);
this.smartGroupBox2.Name = "smartGroupBox2";
this.smartGroupBox2.RoundRadius = 5;
- this.smartGroupBox2.Size = new System.Drawing.Size(296, 184);
+ this.smartGroupBox2.Size = new System.Drawing.Size(265, 184);
this.smartGroupBox2.TabIndex = 151;
this.smartGroupBox2.TextColor = System.Drawing.Color.Black;
this.smartGroupBox2.Visible = false;
@@ -222,9 +222,9 @@
this.labelExternalInputMessage2.ForeColor = System.Drawing.Color.Gold;
this.labelExternalInputMessage2.InitVisible = true;
this.labelExternalInputMessage2.LineSpacing = 0F;
- this.labelExternalInputMessage2.Location = new System.Drawing.Point(26, 63);
+ this.labelExternalInputMessage2.Location = new System.Drawing.Point(14, 62);
this.labelExternalInputMessage2.Name = "labelExternalInputMessage2";
- this.labelExternalInputMessage2.Size = new System.Drawing.Size(253, 20);
+ this.labelExternalInputMessage2.Size = new System.Drawing.Size(235, 20);
this.labelExternalInputMessage2.TabIndex = 194;
this.labelExternalInputMessage2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelExternalInputMessage2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
@@ -241,14 +241,14 @@
this.labelExternalInputMessage1.ForeColor = System.Drawing.Color.Gold;
this.labelExternalInputMessage1.InitVisible = true;
this.labelExternalInputMessage1.LineSpacing = 0F;
- this.labelExternalInputMessage1.Location = new System.Drawing.Point(26, 43);
+ this.labelExternalInputMessage1.Location = new System.Drawing.Point(14, 19);
this.labelExternalInputMessage1.Name = "labelExternalInputMessage1";
- this.labelExternalInputMessage1.Size = new System.Drawing.Size(253, 20);
+ this.labelExternalInputMessage1.Size = new System.Drawing.Size(235, 53);
this.labelExternalInputMessage1.TabIndex = 193;
- this.labelExternalInputMessage1.Text = "배출, 공압, 비상정지, 적체";
+ this.labelExternalInputMessage1.Text = "배출, 공압, 비상정지, 적체, 금속검출";
this.labelExternalInputMessage1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
this.labelExternalInputMessage1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
- this.labelExternalInputMessage1.Wordwrap = false;
+ this.labelExternalInputMessage1.Wordwrap = true;
//
// buttonExternalInputBuzzer
//
@@ -262,7 +262,7 @@
this.buttonExternalInputBuzzer.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonExternalInputBuzzer.DownImage")));
this.buttonExternalInputBuzzer.GroupID = 0;
this.buttonExternalInputBuzzer.InitVisible = true;
- this.buttonExternalInputBuzzer.Location = new System.Drawing.Point(191, 88);
+ this.buttonExternalInputBuzzer.Location = new System.Drawing.Point(171, 88);
this.buttonExternalInputBuzzer.Mode = SmartX.SmartButton.BUTTONMODE.PUSH;
this.buttonExternalInputBuzzer.Name = "buttonExternalInputBuzzer";
this.buttonExternalInputBuzzer.NestedClickEventPrevent = false;
@@ -293,7 +293,7 @@
this.buttonExternalInputLamp.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonExternalInputLamp.DownImage")));
this.buttonExternalInputLamp.GroupID = 0;
this.buttonExternalInputLamp.InitVisible = true;
- this.buttonExternalInputLamp.Location = new System.Drawing.Point(191, 122);
+ this.buttonExternalInputLamp.Location = new System.Drawing.Point(171, 122);
this.buttonExternalInputLamp.Mode = SmartX.SmartButton.BUTTONMODE.PUSH;
this.buttonExternalInputLamp.Name = "buttonExternalInputLamp";
this.buttonExternalInputLamp.NestedClickEventPrevent = false;
@@ -325,7 +325,7 @@
this.labelTitleExternalInputLamp.LineSpacing = 0F;
this.labelTitleExternalInputLamp.Location = new System.Drawing.Point(26, 122);
this.labelTitleExternalInputLamp.Name = "labelTitleExternalInputLamp";
- this.labelTitleExternalInputLamp.Size = new System.Drawing.Size(149, 28);
+ this.labelTitleExternalInputLamp.Size = new System.Drawing.Size(139, 28);
this.labelTitleExternalInputLamp.TabIndex = 190;
this.labelTitleExternalInputLamp.Text = "램프";
this.labelTitleExternalInputLamp.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -345,7 +345,7 @@
this.labelTitleExternalInputBuzzer.LineSpacing = 0F;
this.labelTitleExternalInputBuzzer.Location = new System.Drawing.Point(26, 88);
this.labelTitleExternalInputBuzzer.Name = "labelTitleExternalInputBuzzer";
- this.labelTitleExternalInputBuzzer.Size = new System.Drawing.Size(149, 28);
+ this.labelTitleExternalInputBuzzer.Size = new System.Drawing.Size(139, 28);
this.labelTitleExternalInputBuzzer.TabIndex = 189;
this.labelTitleExternalInputBuzzer.Text = "부저";
this.labelTitleExternalInputBuzzer.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -355,45 +355,45 @@
// comboBoxPIN2
//
this.comboBoxPIN2.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
- this.comboBoxPIN2.Location = new System.Drawing.Point(131, 53);
+ this.comboBoxPIN2.Location = new System.Drawing.Point(116, 53);
this.comboBoxPIN2.Name = "comboBoxPIN2";
- this.comboBoxPIN2.Size = new System.Drawing.Size(268, 28);
+ this.comboBoxPIN2.Size = new System.Drawing.Size(314, 28);
this.comboBoxPIN2.TabIndex = 186;
this.comboBoxPIN2.SelectedIndexChanged += new System.EventHandler(this.comboBoxPIN2_SelectedIndexChanged);
//
// comboBoxPIN3
//
this.comboBoxPIN3.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
- this.comboBoxPIN3.Location = new System.Drawing.Point(131, 87);
+ this.comboBoxPIN3.Location = new System.Drawing.Point(116, 87);
this.comboBoxPIN3.Name = "comboBoxPIN3";
- this.comboBoxPIN3.Size = new System.Drawing.Size(268, 28);
+ this.comboBoxPIN3.Size = new System.Drawing.Size(314, 28);
this.comboBoxPIN3.TabIndex = 185;
this.comboBoxPIN3.SelectedIndexChanged += new System.EventHandler(this.comboBoxPIN3_SelectedIndexChanged);
//
// comboBoxPIN4
//
this.comboBoxPIN4.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
- this.comboBoxPIN4.Location = new System.Drawing.Point(131, 121);
+ this.comboBoxPIN4.Location = new System.Drawing.Point(116, 121);
this.comboBoxPIN4.Name = "comboBoxPIN4";
- this.comboBoxPIN4.Size = new System.Drawing.Size(268, 28);
+ this.comboBoxPIN4.Size = new System.Drawing.Size(314, 28);
this.comboBoxPIN4.TabIndex = 184;
this.comboBoxPIN4.SelectedIndexChanged += new System.EventHandler(this.comboBoxPIN4_SelectedIndexChanged);
//
// comboBoxPIN5
//
this.comboBoxPIN5.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
- this.comboBoxPIN5.Location = new System.Drawing.Point(131, 155);
+ this.comboBoxPIN5.Location = new System.Drawing.Point(116, 155);
this.comboBoxPIN5.Name = "comboBoxPIN5";
- this.comboBoxPIN5.Size = new System.Drawing.Size(268, 28);
+ this.comboBoxPIN5.Size = new System.Drawing.Size(314, 28);
this.comboBoxPIN5.TabIndex = 183;
this.comboBoxPIN5.SelectedIndexChanged += new System.EventHandler(this.comboBoxPIN5_SelectedIndexChanged);
//
// comboBoxPIN6
//
this.comboBoxPIN6.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
- this.comboBoxPIN6.Location = new System.Drawing.Point(131, 189);
+ this.comboBoxPIN6.Location = new System.Drawing.Point(116, 189);
this.comboBoxPIN6.Name = "comboBoxPIN6";
- this.comboBoxPIN6.Size = new System.Drawing.Size(268, 28);
+ this.comboBoxPIN6.Size = new System.Drawing.Size(314, 28);
this.comboBoxPIN6.TabIndex = 182;
this.comboBoxPIN6.SelectedIndexChanged += new System.EventHandler(this.comboBoxPIN6_SelectedIndexChanged);
//
@@ -409,7 +409,7 @@
this.labelPIn2.LineSpacing = 0F;
this.labelPIn2.Location = new System.Drawing.Point(15, 53);
this.labelPIn2.Name = "labelPIn2";
- this.labelPIn2.Size = new System.Drawing.Size(110, 28);
+ this.labelPIn2.Size = new System.Drawing.Size(95, 28);
this.labelPIn2.TabIndex = 179;
this.labelPIn2.Text = "[NG]";
this.labelPIn2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -428,7 +428,7 @@
this.labelPIn3.LineSpacing = 0F;
this.labelPIn3.Location = new System.Drawing.Point(15, 87);
this.labelPIn3.Name = "labelPIn3";
- this.labelPIn3.Size = new System.Drawing.Size(110, 28);
+ this.labelPIn3.Size = new System.Drawing.Size(95, 28);
this.labelPIn3.TabIndex = 178;
this.labelPIn3.Text = "[STOP]";
this.labelPIn3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -447,7 +447,7 @@
this.labelPIn4.LineSpacing = 0F;
this.labelPIn4.Location = new System.Drawing.Point(15, 121);
this.labelPIn4.Name = "labelPIn4";
- this.labelPIn4.Size = new System.Drawing.Size(110, 28);
+ this.labelPIn4.Size = new System.Drawing.Size(95, 28);
this.labelPIn4.TabIndex = 177;
this.labelPIn4.Text = "[START]";
this.labelPIn4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -466,7 +466,7 @@
this.labelPIn5.LineSpacing = 0F;
this.labelPIn5.Location = new System.Drawing.Point(15, 155);
this.labelPIn5.Name = "labelPIn5";
- this.labelPIn5.Size = new System.Drawing.Size(110, 28);
+ this.labelPIn5.Size = new System.Drawing.Size(95, 28);
this.labelPIn5.TabIndex = 173;
this.labelPIn5.Text = "[IN_OPT1]";
this.labelPIn5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
@@ -485,7 +485,7 @@
this.labelPIn6.LineSpacing = 0F;
this.labelPIn6.Location = new System.Drawing.Point(15, 189);
this.labelPIn6.Name = "labelPIn6";
- this.labelPIn6.Size = new System.Drawing.Size(110, 28);
+ this.labelPIn6.Size = new System.Drawing.Size(95, 28);
this.labelPIn6.TabIndex = 176;
this.labelPIn6.Text = "[IN_OPT2]";
this.labelPIn6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
diff --git a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs
index cd8aabd..8cc2973 100644
--- a/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs
+++ b/ITC81DB_0H/Controls/CenterEquipment/ControlCenterEquipFunctionSetting.cs
@@ -79,6 +79,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN6.Items.Add("START");
this.comboBoxPIN6.Items.Add("STOP");
this.comboBoxPIN6.Items.Add("Air Check");
+ this.comboBoxPIN6.Items.Add("Metal Detector Entry Sensor");
+ this.comboBoxPIN6.Items.Add("Metal Detector");
this.comboBoxPIN6.SelectedIndexChanged += new EventHandler(this.comboBoxPIN6_SelectedIndexChanged);
this.comboBoxPIN5.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN5_SelectedIndexChanged);
@@ -88,6 +90,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN5.Items.Add("START");
this.comboBoxPIN5.Items.Add("STOP");
this.comboBoxPIN5.Items.Add("Air Check");
+ this.comboBoxPIN5.Items.Add("Metal Detector Entry Sensor");
+ this.comboBoxPIN5.Items.Add("Metal Detector");
this.comboBoxPIN5.SelectedIndexChanged += new EventHandler(this.comboBoxPIN5_SelectedIndexChanged);
this.comboBoxPIN4.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN4_SelectedIndexChanged);
@@ -97,6 +101,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN4.Items.Add("START");
this.comboBoxPIN4.Items.Add("STOP");
this.comboBoxPIN4.Items.Add("Air Check");
+ this.comboBoxPIN4.Items.Add("Metal Detector Entry Sensor");
+ this.comboBoxPIN4.Items.Add("Metal Detector");
this.comboBoxPIN4.SelectedIndexChanged += new EventHandler(this.comboBoxPIN4_SelectedIndexChanged);
this.comboBoxPIN3.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN3_SelectedIndexChanged);
@@ -106,6 +112,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN3.Items.Add("START");
this.comboBoxPIN3.Items.Add("STOP");
this.comboBoxPIN3.Items.Add("Air Check");
+ this.comboBoxPIN3.Items.Add("Metal Detector Entry Sensor");
+ this.comboBoxPIN3.Items.Add("Metal Detector");
this.comboBoxPIN3.SelectedIndexChanged += new EventHandler(this.comboBoxPIN3_SelectedIndexChanged);
this.comboBoxPIN2.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN2_SelectedIndexChanged);
@@ -115,6 +123,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN2.Items.Add("START");
this.comboBoxPIN2.Items.Add("STOP");
this.comboBoxPIN2.Items.Add("Air Check");
+ this.comboBoxPIN2.Items.Add("Metal Detector Entry Sensor");
+ this.comboBoxPIN2.Items.Add("Metal Detector");
this.comboBoxPIN2.SelectedIndexChanged += new EventHandler(this.comboBoxPIN2_SelectedIndexChanged);
this.buttonLogin.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engON));
@@ -151,6 +161,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN6.Items.Add("开启");
this.comboBoxPIN6.Items.Add("停止");
this.comboBoxPIN6.Items.Add("气压确认");
+ this.comboBoxPIN6.Items.Add("金属检出进入传感器");
+ this.comboBoxPIN6.Items.Add("金属检出");
this.comboBoxPIN6.SelectedIndexChanged += new EventHandler(this.comboBoxPIN6_SelectedIndexChanged);
this.comboBoxPIN5.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN5_SelectedIndexChanged);
@@ -160,6 +172,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN5.Items.Add("开启");
this.comboBoxPIN5.Items.Add("停止");
this.comboBoxPIN5.Items.Add("气压确认");
+ this.comboBoxPIN5.Items.Add("金属检出进入传感器");
+ this.comboBoxPIN5.Items.Add("金属检出");
this.comboBoxPIN5.SelectedIndexChanged += new EventHandler(this.comboBoxPIN5_SelectedIndexChanged);
this.comboBoxPIN4.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN4_SelectedIndexChanged);
@@ -169,6 +183,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN4.Items.Add("开启");
this.comboBoxPIN4.Items.Add("停止");
this.comboBoxPIN4.Items.Add("气压确认");
+ this.comboBoxPIN4.Items.Add("金属检出进入传感器");
+ this.comboBoxPIN4.Items.Add("金属检出");
this.comboBoxPIN4.SelectedIndexChanged += new EventHandler(this.comboBoxPIN4_SelectedIndexChanged);
this.comboBoxPIN3.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN3_SelectedIndexChanged);
@@ -178,6 +194,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN3.Items.Add("开启");
this.comboBoxPIN3.Items.Add("停止");
this.comboBoxPIN3.Items.Add("气压确认");
+ this.comboBoxPIN3.Items.Add("金属检出进入传感器");
+ this.comboBoxPIN3.Items.Add("金属检出");
this.comboBoxPIN3.SelectedIndexChanged += new EventHandler(this.comboBoxPIN3_SelectedIndexChanged);
this.comboBoxPIN2.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN2_SelectedIndexChanged);
@@ -187,6 +205,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN2.Items.Add("开启");
this.comboBoxPIN2.Items.Add("停止");
this.comboBoxPIN2.Items.Add("气压确认");
+ this.comboBoxPIN2.Items.Add("金属检出进入传感器");
+ this.comboBoxPIN2.Items.Add("金属检出");
this.comboBoxPIN2.SelectedIndexChanged += new EventHandler(this.comboBoxPIN2_SelectedIndexChanged);
this.buttonLogin.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.chnON));
@@ -301,6 +321,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN6.Items.Add("START");
this.comboBoxPIN6.Items.Add("STOPP");
this.comboBoxPIN6.Items.Add("Luft Prüfen");
+ this.comboBoxPIN6.Items.Add("Metallerkennungs-Eingangssensor");
+ this.comboBoxPIN6.Items.Add("Metalldetektion");
this.comboBoxPIN6.SelectedIndexChanged += new EventHandler(this.comboBoxPIN6_SelectedIndexChanged);
this.comboBoxPIN5.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN5_SelectedIndexChanged);
@@ -310,6 +332,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN5.Items.Add("START");
this.comboBoxPIN5.Items.Add("STOPP");
this.comboBoxPIN5.Items.Add("Luft Prüfen");
+ this.comboBoxPIN5.Items.Add("Metallerkennungs-Eingangssensor");
+ this.comboBoxPIN5.Items.Add("Metalldetektion");
this.comboBoxPIN5.SelectedIndexChanged += new EventHandler(this.comboBoxPIN5_SelectedIndexChanged);
this.comboBoxPIN4.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN4_SelectedIndexChanged);
@@ -319,6 +343,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN4.Items.Add("START");
this.comboBoxPIN4.Items.Add("STOPP");
this.comboBoxPIN4.Items.Add("Luft Prüfen");
+ this.comboBoxPIN4.Items.Add("Metallerkennungs-Eingangssensor");
+ this.comboBoxPIN4.Items.Add("Metalldetektion");
this.comboBoxPIN4.SelectedIndexChanged += new EventHandler(this.comboBoxPIN4_SelectedIndexChanged);
this.comboBoxPIN3.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN3_SelectedIndexChanged);
@@ -328,6 +354,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN3.Items.Add("START");
this.comboBoxPIN3.Items.Add("STOPP");
this.comboBoxPIN3.Items.Add("Luft Prüfen");
+ this.comboBoxPIN3.Items.Add("Metallerkennungs-Eingangssensor");
+ this.comboBoxPIN3.Items.Add("Metalldetektion");
this.comboBoxPIN3.SelectedIndexChanged += new EventHandler(this.comboBoxPIN3_SelectedIndexChanged);
this.comboBoxPIN2.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN2_SelectedIndexChanged);
@@ -337,6 +365,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN2.Items.Add("START");
this.comboBoxPIN2.Items.Add("STOPP");
this.comboBoxPIN2.Items.Add("Luft Prüfen");
+ this.comboBoxPIN2.Items.Add("Metallerkennungs-Eingangssensor");
+ this.comboBoxPIN2.Items.Add("Metalldetektion");
this.comboBoxPIN2.SelectedIndexChanged += new EventHandler(this.comboBoxPIN2_SelectedIndexChanged);
this.buttonLogin.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.gerON));
@@ -373,6 +403,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN6.Items.Add("START");
this.comboBoxPIN6.Items.Add("STOP");
this.comboBoxPIN6.Items.Add("공압확인");
+ this.comboBoxPIN6.Items.Add("금속검출 진입센서");
+ this.comboBoxPIN6.Items.Add("금속검출");
this.comboBoxPIN6.SelectedIndexChanged += new EventHandler(this.comboBoxPIN6_SelectedIndexChanged);
this.comboBoxPIN5.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN5_SelectedIndexChanged);
@@ -382,6 +414,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN5.Items.Add("START");
this.comboBoxPIN5.Items.Add("STOP");
this.comboBoxPIN5.Items.Add("공압확인");
+ this.comboBoxPIN5.Items.Add("금속검출 진입센서");
+ this.comboBoxPIN5.Items.Add("금속검출");
this.comboBoxPIN5.SelectedIndexChanged += new EventHandler(this.comboBoxPIN5_SelectedIndexChanged);
this.comboBoxPIN4.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN4_SelectedIndexChanged);
@@ -391,6 +425,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN4.Items.Add("START");
this.comboBoxPIN4.Items.Add("STOP");
this.comboBoxPIN4.Items.Add("공압확인");
+ this.comboBoxPIN4.Items.Add("금속검출 진입센서");
+ this.comboBoxPIN4.Items.Add("금속검출");
this.comboBoxPIN4.SelectedIndexChanged += new EventHandler(this.comboBoxPIN4_SelectedIndexChanged);
this.comboBoxPIN3.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN3_SelectedIndexChanged);
@@ -400,6 +436,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN3.Items.Add("START");
this.comboBoxPIN3.Items.Add("STOP");
this.comboBoxPIN3.Items.Add("공압확인");
+ this.comboBoxPIN3.Items.Add("금속검출 진입센서");
+ this.comboBoxPIN3.Items.Add("금속검출");
this.comboBoxPIN3.SelectedIndexChanged += new EventHandler(this.comboBoxPIN3_SelectedIndexChanged);
this.comboBoxPIN2.SelectedIndexChanged -= new EventHandler(this.comboBoxPIN2_SelectedIndexChanged);
@@ -409,6 +447,8 @@ namespace ITC81DB_0H.Controls
this.comboBoxPIN2.Items.Add("START");
this.comboBoxPIN2.Items.Add("STOP");
this.comboBoxPIN2.Items.Add("공압확인");
+ this.comboBoxPIN2.Items.Add("금속검출 진입센서");
+ this.comboBoxPIN2.Items.Add("금속검출");
this.comboBoxPIN2.SelectedIndexChanged += new EventHandler(this.comboBoxPIN2_SelectedIndexChanged);
this.buttonLogin.DownImage = new Bitmap(images.GetImage(Class1.ButtonImages.engON));
@@ -690,6 +730,7 @@ namespace ITC81DB_0H.Controls
this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayWeightBigScreen.InitializeDesign();
this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayWeightSmall.InitializeDesign();
this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayFeedback.InitializeDesign();
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainDisplayModbus.InitializeDesign();
Thread.Sleep(50);
this.ParentForm.ParentForm.ChildFormMenu.CenterBasicDataBackup.InitializeDesign();
@@ -706,10 +747,12 @@ namespace ITC81DB_0H.Controls
this.ParentForm.ParentForm.ChildFormMenu.CenterConfiOptionBoard.InitializeDesign();
this.ParentForm.ParentForm.ChildFormMenu.CenterConfiSerial.InitializeDesign();
this.ParentForm.ParentForm.ChildFormMenu.CenterConfiEthernet.ControlEthernetLocalIP.InitializeDesign();
+ this.ParentForm.ParentForm.ChildFormMenu.CenterConfiEthernet.ControlModbusTCP.InitializeDesign();
this.ParentForm.ParentForm.ChildFormMenu.CenterConfiSerial.ControlBarcode.InitializeDesign();
this.ParentForm.ParentForm.ChildFormMenu.CenterConfiSerial.ControlHitachi.InitializeDesign();
this.ParentForm.ParentForm.ChildFormMenu.CenterConfiSerial.ControlMarkoprint.InitializeDesign();
this.ParentForm.ParentForm.ChildFormMenu.CenterConfiSerial.ControlUserDefine.InitializeDesign();
+ this.ParentForm.ParentForm.ChildFormMenu.CenterConfiSerial.ControlModbusRTU.InitializeDesign();
Thread.Sleep(50);
this.ParentForm.ParentForm.ChildFormMenu.CenterEquipFunctionSetting.InitializeDesign();
diff --git a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem.cs
index d0a2db9..1b31c83 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 = "2.0.0";
+ this.labelDisplayVer.Text = "2.1.0";
}
public void UpdateMainBoardVersionDisplay(string version)
diff --git a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem2.cs b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem2.cs
index e7c93cd..f0e7420 100644
--- a/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem2.cs
+++ b/ITC81DB_0H/Controls/CenterInformation/ControlCenterInforSystem2.cs
@@ -752,7 +752,7 @@ namespace ITC81DB_0H
this.ParentForm.ParentForm.CurrentSystemStatus.CurrentDisplay = DataStore.DisplayStore.InforSystem2;
this.ParentForm.ParentForm.SetDisplayMode(DataStore.DisplayMode.Menu);
- this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterRead3901, "");
+ //this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterRead3901, "");
this.InitialLabel();
}
#endregion
diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemAutoZero.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemAutoZero.cs
index d6d62fc..a9e0731 100644
--- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemAutoZero.cs
+++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemAutoZero.cs
@@ -81,69 +81,29 @@ namespace ITC81DB_0H.Controls
this.comboBoxVariate.SelectedIndexChanged += new EventHandler(this.comboBoxVariate_SelectedIndexChanged);
}
- private void ControlEnableMode1(bool time, bool range, bool variate)
- {
- if (time == true)
- {
- if (this.labelPlusRange.ForeColor != Color.White)
- this.labelPlusRange.ForeColor = Color.White;
- }
- else
- {
- if (this.labelPlusRange.ForeColor != Color.DarkGray)
- this.labelPlusRange.ForeColor = Color.DarkGray;
- }
-
- if (range == true)
- {
- if (this.labelMinusRange.ForeColor != Color.White)
- this.labelMinusRange.ForeColor = Color.White;
- }
- else
- {
- if (this.labelMinusRange.ForeColor != Color.DarkGray)
- this.labelMinusRange.ForeColor = Color.DarkGray;
- }
-
- if (this.labelPlusRange.Enabled != time)
- this.labelPlusRange.Enabled = time;
-
- if (this.labelMinusRange.Enabled != range)
- this.labelMinusRange.Enabled = range;
-
- if (this.comboBoxVariate.Enabled != variate)
- this.comboBoxVariate.Enabled = variate;
- }
-
- private void UpdateZeroParameterDisplay(SystemParameter4 item)
+ public void UpdateZeroParameterDisplay(SystemParameter4 item)
{
int iValue = 0;
string value = "";
- // Mode 1
- iValue = int.Parse(item.MainAutoZeroMinusRange.Trim());
- if (iValue == 4)
- {
- this.ControlEnableMode1(true, true, true);
- }
+ // On/Off
+ if (item.MainAutoZeroIsAutoZeroUsing == false)
+ this.buttonIsAutoZeroUsing.ButtonUp();
else
- {
- this.ControlEnableMode1(false, false, false);
- }
+ this.buttonIsAutoZeroUsing.ButtonDown();
- // Mode1 Time
- value = item.MainAutoZeroPlusRange.Trim();
+ // + Range
+ value =Helper.StringToDecimalPlaces(item.MainAutoZeroPlusRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces);
if (this.labelPlusRange.Text != value)
this.labelPlusRange.Text = value;
- // Mode1 Range
- if (item.MainAutoZeroIsAutoZeroUsing == true)
- this.buttonIsAutoZeroUsing.ButtonDown();
- else
- this.buttonIsAutoZeroUsing.ButtonUp();
+ // - Range
+ value = Helper.StringToDecimalPlaces(item.MainAutoZeroMinusRange, this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces);
+ if (this.labelMinusRange.Text != value)
+ this.labelMinusRange.Text = value;
- // Mode1 Variate
- iValue = int.Parse(item.MainAutoZeroVariate.Trim());
+ // Variate
+ iValue = int.Parse(item.MainAutoZeroVariate);
this.comboBoxVariate.SelectedIndexChanged -= new EventHandler(this.comboBoxVariate_SelectedIndexChanged);
this.comboBoxVariate.SelectedIndex = iValue;
this.comboBoxVariate.SelectedIndexChanged += new EventHandler(this.comboBoxVariate_SelectedIndexChanged);
@@ -156,8 +116,7 @@ namespace ITC81DB_0H.Controls
this.ParentForm.DisplayTitleRoot(this.ParentForm.ParentForm.CurrentSystemStatus);
//this.UpdateZeroParameterDisplay(this.ParentForm.ParentForm.CurrentSystemParameter4);
- this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterRead4901, "");
- this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterRead4902, "");
+ this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterRead4907, "");
}
#endregion
diff --git a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemCalibration.Designer.cs b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemCalibration.Designer.cs
index 5f6c2e0..2ad4846 100644
--- a/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemCalibration.Designer.cs
+++ b/ITC81DB_0H/Controls/CenterSystem/ControlCenterSystemCalibration.Designer.cs
@@ -30,6 +30,8 @@
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlCenterSystemCalibration));
this.smartGroupBox1 = new SmartX.SmartGroupBox();
+ this.smartLabel2 = new SmartX.SmartLabel();
+ this.labelBalanceWeight = new SmartX.SmartLabel();
this.buttonBalance = new SmartX.SmartButton();
this.panel1 = new System.Windows.Forms.Panel();
this.radioButtonDecimalPlaces2 = new SmartX.SmartRadioButton();
@@ -43,8 +45,6 @@
this.labelWeight = new SmartX.SmartLabel();
this.buttonStart = new SmartX.SmartButton();
this.pictureBoxStep1 = new System.Windows.Forms.PictureBox();
- this.labelBalanceWeight = new SmartX.SmartLabel();
- this.smartLabel2 = new SmartX.SmartLabel();
this.smartGroupBox1.SuspendLayout();
this.panel1.SuspendLayout();
this.SuspendLayout();
@@ -80,6 +80,47 @@
this.smartGroupBox1.TabIndex = 176;
this.smartGroupBox1.TextColor = System.Drawing.Color.Black;
//
+ // smartLabel2
+ //
+ this.smartLabel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(212)))), ((int)(((byte)(212)))), ((int)(((byte)(212)))));
+ this.smartLabel2.BackPictureBox1 = null;
+ this.smartLabel2.BackPictureBox2 = this.smartGroupBox1;
+ this.smartLabel2.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel2.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.smartLabel2.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold);
+ this.smartLabel2.ForeColor = System.Drawing.Color.White;
+ this.smartLabel2.InitVisible = true;
+ this.smartLabel2.LineSpacing = 0F;
+ this.smartLabel2.Location = new System.Drawing.Point(552, 290);
+ this.smartLabel2.Name = "smartLabel2";
+ this.smartLabel2.Size = new System.Drawing.Size(27, 40);
+ this.smartLabel2.TabIndex = 496;
+ this.smartLabel2.Text = "g";
+ this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.smartLabel2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel2.Wordwrap = false;
+ //
+ // labelBalanceWeight
+ //
+ this.labelBalanceWeight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(212)))), ((int)(((byte)(212)))), ((int)(((byte)(212)))));
+ this.labelBalanceWeight.BackPictureBox1 = null;
+ this.labelBalanceWeight.BackPictureBox2 = this.smartGroupBox1;
+ this.labelBalanceWeight.BorderColor = System.Drawing.Color.Black;
+ this.labelBalanceWeight.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelBalanceWeight.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold);
+ this.labelBalanceWeight.ForeColor = System.Drawing.Color.White;
+ this.labelBalanceWeight.InitVisible = true;
+ this.labelBalanceWeight.LineSpacing = 0F;
+ this.labelBalanceWeight.Location = new System.Drawing.Point(449, 288);
+ this.labelBalanceWeight.Name = "labelBalanceWeight";
+ this.labelBalanceWeight.Size = new System.Drawing.Size(101, 40);
+ this.labelBalanceWeight.TabIndex = 495;
+ this.labelBalanceWeight.Text = "123";
+ this.labelBalanceWeight.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelBalanceWeight.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelBalanceWeight.Wordwrap = false;
+ this.labelBalanceWeight.Click += new System.EventHandler(this.labelBalanceWeight_Click);
+ //
// buttonBalance
//
this.buttonBalance.BackPictureBox = null;
@@ -118,7 +159,7 @@
this.panel1.BackColor = System.Drawing.Color.Black;
this.panel1.Controls.Add(this.radioButtonDecimalPlaces2);
this.panel1.Controls.Add(this.radioButtonDecimalPlaces1);
- this.panel1.Location = new System.Drawing.Point(143, 288);
+ this.panel1.Location = new System.Drawing.Point(135, 288);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(196, 40);
//
@@ -366,47 +407,6 @@
this.pictureBoxStep1.Name = "pictureBoxStep1";
this.pictureBoxStep1.Size = new System.Drawing.Size(330, 194);
//
- // labelBalanceWeight
- //
- this.labelBalanceWeight.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(212)))), ((int)(((byte)(212)))), ((int)(((byte)(212)))));
- this.labelBalanceWeight.BackPictureBox1 = null;
- this.labelBalanceWeight.BackPictureBox2 = this.smartGroupBox1;
- this.labelBalanceWeight.BorderColor = System.Drawing.Color.Black;
- this.labelBalanceWeight.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.labelBalanceWeight.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold);
- this.labelBalanceWeight.ForeColor = System.Drawing.Color.White;
- this.labelBalanceWeight.InitVisible = true;
- this.labelBalanceWeight.LineSpacing = 0F;
- this.labelBalanceWeight.Location = new System.Drawing.Point(455, 288);
- this.labelBalanceWeight.Name = "labelBalanceWeight";
- this.labelBalanceWeight.Size = new System.Drawing.Size(101, 40);
- this.labelBalanceWeight.TabIndex = 495;
- this.labelBalanceWeight.Text = "123";
- this.labelBalanceWeight.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
- this.labelBalanceWeight.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
- this.labelBalanceWeight.Wordwrap = false;
- this.labelBalanceWeight.Click += new System.EventHandler(this.labelBalanceWeight_Click);
- //
- // smartLabel2
- //
- this.smartLabel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(212)))), ((int)(((byte)(212)))), ((int)(((byte)(212)))));
- this.smartLabel2.BackPictureBox1 = null;
- this.smartLabel2.BackPictureBox2 = this.smartGroupBox1;
- this.smartLabel2.BorderColor = System.Drawing.Color.Black;
- this.smartLabel2.BorderStyle = System.Windows.Forms.BorderStyle.None;
- this.smartLabel2.Font = new System.Drawing.Font("Arial", 20F, System.Drawing.FontStyle.Bold);
- this.smartLabel2.ForeColor = System.Drawing.Color.White;
- this.smartLabel2.InitVisible = true;
- this.smartLabel2.LineSpacing = 0F;
- this.smartLabel2.Location = new System.Drawing.Point(557, 290);
- this.smartLabel2.Name = "smartLabel2";
- this.smartLabel2.Size = new System.Drawing.Size(27, 40);
- this.smartLabel2.TabIndex = 496;
- this.smartLabel2.Text = "g";
- this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
- this.smartLabel2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
- this.smartLabel2.Wordwrap = false;
- //
// ControlCenterSystemCalibration
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs
new file mode 100644
index 0000000..203d6cf
--- /dev/null
+++ b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.cs
@@ -0,0 +1,353 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+using ITC81DB_0H.Forms;
+using ITC81DB_2H_ImageDll;
+using ITC81DB_0H.DialogForms;
+
+namespace ITC81DB_0H.Controls
+{
+ public partial class ControlConfiModbus : UserControl
+ {
+ #region Field
+ private FormMenu m_ParentForm;
+ #endregion
+
+ #region Constructor
+ public ControlConfiModbus(FormMenu parent)
+ {
+ InitializeComponent();
+
+ this.ParentForm = parent;
+
+ this.InitializeDesign();
+ this.DefaultSetting();
+ }
+ #endregion
+
+ #region Property
+ public FormMenu ParentForm
+ {
+ get { return this.m_ParentForm; }
+ private set { this.m_ParentForm = value; }
+ }
+ #endregion
+
+ #region Method
+ public void InitializeDesign()
+ {
+ Class1 images = new Class1();
+
+ if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.English)
+ {
+ this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engBackgroundBottomAddOn));
+ this.labelDiscription2.Text = "- Master(Client) : 16(Write on judgment), Slave(Server) : 04(Send on Master request)";
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
+ {
+ this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.chnBackgroundBottomAddOn));
+ this.labelDiscription2.Text = "- Master(Client) : 16(Write on judgment), Slave(Server) : 04(Send on Master request)";
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Czech)
+ {
+ this.labelDiscription2.Text = "- Master(Client) : 16(Write on judgment), Slave(Server) : 04(Send on Master request)";
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
+ {
+ this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.rusBackgroundBottomAddOn));
+ this.labelDiscription2.Text = "- Master(Client) : 16(Write on judgment), Slave(Server) : 04(Send on Master request)";
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
+ {
+ this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.gerBackgroundBottomAddOn));
+ this.labelDiscription2.Text = "- Master(Client) : 16(Write on judgment), Slave(Server) : 04(Send on Master request)";
+ }
+ else
+ {
+ this.smartGroupBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.korBackgroundBottomAddOn));
+ this.labelDiscription2.Text = "- Master(Client) : 16(중량판정 시), Slave(Server) : 04(Master 읽기 요청 시)";
+ }
+ }
+ private void DefaultSetting()
+ {
+ this.comboBoxRole.Items.Clear();
+ this.comboBoxRole.Items.Add("Slave");
+ this.comboBoxRole.Items.Add("Master");
+ }
+
+ public void SerialDefaultSettings()
+ {
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(false);
+ }
+ public void ModbusRTUDefaultSettings()
+ {
+ this.comboBoxRole.Enabled = true;
+ this.labelSlaveID.Enabled = true;
+
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(true);
+ }
+ public void OPCSettings()
+ {
+ this.comboBoxRole.SelectedIndexChanged -= new EventHandler(this.comboBoxRole_SelectedIndexChanged);
+ this.comboBoxRole.SelectedIndex = (int)DataStore.ModbusFunction._04_ReadInputRegister;
+ this.comboBoxRole.SelectedIndexChanged += new EventHandler(this.comboBoxRole_SelectedIndexChanged);
+ this.comboBoxRole.Enabled = false;
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction = 0;
+ if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM1)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM1 = 1;
+ else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM3)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM3 = 1;
+ else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM4)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM4 = 1;
+ this.labelSlaveID.Text = "1";
+ this.labelSlaveID.Enabled = false;
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2);
+
+ this.ParentForm.ParentForm.ChildFormMainDisplay.MainBottomModbusIconAdd(true);
+ }
+ public void ModbusRTU04Addon()
+ {
+ this.labelFunctions.Text = "04: Read input register";
+
+ this.SlaveIDControlVisible(true);
+ this.StartAddressControlVisible(false);
+ }
+ public void ModbusRTU16Addon(DataStore.MenuBottomConfiguration menu)
+ {
+ this.labelFunctions.Text = "16: Write multiple register";
+
+ this.labelTitleStartAddress.Location = new Point(134, 116);
+ this.labelStartAddress.Location = new Point(288, 116);
+ this.SlaveIDControlVisible(true);
+ this.StartAddressControlVisible(true);
+ if (menu == DataStore.MenuBottomConfiguration.SerialCOM1)
+ {
+ this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM1.ToString();
+ this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1.ToString();
+ }
+ else if (menu == DataStore.MenuBottomConfiguration.SerialCOM3)
+ {
+ this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM3.ToString();
+ this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3.ToString();
+ }
+ else if (menu == DataStore.MenuBottomConfiguration.SerialCOM4)
+ {
+ this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM4.ToString();
+ this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4.ToString();
+ }
+ }
+ public void ModbusTCP04Addon()
+ {
+ this.labelFunctions.Text = "04: Read input register";
+
+ this.SlaveIDControlVisible(false);
+ this.StartAddressControlVisible(false);
+ }
+ public void ModbusTCP16Addon()
+ {
+ this.labelFunctions.Text = "16: Write multiple register";
+
+ this.labelTitleStartAddress.Location = new Point(134, 80);
+ this.labelStartAddress.Location = new Point(288, 80);
+ this.SlaveIDControlVisible(false);
+ this.StartAddressControlVisible(true);
+ this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPStartAddress.ToString();
+ }
+
+ private void SlaveIDControlVisible(bool visible)
+ {
+ if (visible == true)
+ {
+ this.labelTitleSlaveID.Visible = true;
+ this.labelSlaveID.Visible = true;
+ }
+ else
+ {
+ this.labelTitleSlaveID.Visible = false;
+ this.labelSlaveID.Visible = false;
+ }
+ }
+ private void StartAddressControlVisible(bool visible)
+ {
+ if (visible == true)
+ {
+ this.labelTitleStartAddress.Visible = true;
+ this.labelStartAddress.Visible = true;
+ }
+ else
+ {
+ this.labelTitleStartAddress.Visible = false;
+ this.labelStartAddress.Visible = false;
+ }
+ }
+
+ public void DisplayRefresh(DataStore.MenuBottomConfiguration menu)
+ {
+ this.comboBoxRole.SelectedIndexChanged -= new EventHandler(this.comboBoxRole_SelectedIndexChanged);
+ if (menu == DataStore.MenuBottomConfiguration.Ethernet)
+ {
+ if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)DataStore.EthernetMode.f16_OPC)
+ {
+ this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction = (int)DataStore.ModbusFunction._04_ReadInputRegister;
+ this.comboBoxRole.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction;
+ this.ModbusTCP04Addon();
+ }
+ else
+ {
+ if (this.ParentForm.ParentForm.SystemConfig2.EthernetOperationMode == 1)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction = (int)DataStore.ModbusFunction._04_ReadInputRegister;
+ else if (this.ParentForm.ParentForm.SystemConfig2.EthernetOperationMode == 2)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction = (int)DataStore.ModbusFunction._16_WriteMultipleRegister;
+ this.comboBoxRole.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction;
+
+ if (this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ this.ModbusTCP04Addon();
+ else
+ this.ModbusTCP16Addon();
+ }
+
+ this.labelDiscription1.Visible = false;
+ this.comboBoxRole.Enabled = false;
+ }
+ else
+ {
+ if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)DataStore.EthernetMode.f16_OPC
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)DataStore.EthernetMode.f16_OPC
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)DataStore.EthernetMode.f16_OPC)
+ {
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction = (int)DataStore.ModbusFunction._04_ReadInputRegister;
+ this.comboBoxRole.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction;
+ this.comboBoxRole.Enabled = false;
+ this.ModbusRTU04Addon();
+ }
+ else
+ {
+ this.comboBoxRole.SelectedIndex = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction;
+ this.comboBoxRole.Enabled = true;
+
+ if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ this.ModbusRTU04Addon();
+ else
+ this.ModbusRTU16Addon(menu);
+ }
+ this.labelDiscription1.Visible = true;
+ }
+ this.comboBoxRole.SelectedIndexChanged += new EventHandler(this.comboBoxRole_SelectedIndexChanged);
+ }
+ #endregion
+
+ #region Event Handler
+ // Slave ID는 Modbus TCP에서는 0x01로 고정
+ private void labelSlaveID_Click(object sender, EventArgs e)
+ {
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelSlaveID.Text, 3, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 255)
+ {
+ // 입력범위를 확인하세요
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelSlaveID.Text = myKeyPad.StringValue;
+
+ if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM1)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM1 = myKeyPad.IntValue;
+ else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM3)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM3 = myKeyPad.IntValue;
+ else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM4)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSlaveIDCOM4 = myKeyPad.IntValue;
+
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2);
+ }
+ }
+ }
+
+ private void labelStartAddress_Click(object sender, EventArgs e)
+ {
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelStartAddress.Text, 5, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 99999)
+ {
+ // 입력범위를 확인하세요
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelStartAddress.Text = myKeyPad.StringValue;
+
+ if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM1)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1 = myKeyPad.IntValue;
+ else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM3)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3 = myKeyPad.IntValue;
+ else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM4)
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4 = myKeyPad.IntValue;
+ else
+ this.ParentForm.ParentForm.SystemConfig2.ModbusTCPStartAddress = myKeyPad.IntValue;
+
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2);
+ }
+ }
+ }
+
+ private void comboBoxRole_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ DataStore.MenuBottomConfiguration menu = this.ParentForm.CurrentConfigurationMenu();
+
+ if (menu == DataStore.MenuBottomConfiguration.Ethernet)
+ {
+ this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction = this.comboBoxRole.SelectedIndex;
+
+ if (this.comboBoxRole.SelectedIndex == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ this.ModbusTCP04Addon();
+ else
+ this.ModbusTCP16Addon();
+ }
+ else
+ {
+ this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction = this.comboBoxRole.SelectedIndex;
+
+ if (this.comboBoxRole.SelectedIndex == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ this.ModbusRTU04Addon();
+ else
+ this.ModbusRTU16Addon(menu);
+ }
+
+ this.ParentForm.ParentForm.SaveSystemConfigurationFile2(this.ParentForm.ParentForm.SystemConfig2);
+ }
+
+ private void labelReadTimeout_Click(object sender, EventArgs e)
+ {
+ DialogFormNumKeyPad myKeyPad = new DialogFormNumKeyPad(this.labelReadTimeout.Text, 4, 0, false, this.ParentForm.ParentForm.SystemConfig1.Language);
+
+ if (myKeyPad.ShowDialog() == DialogResult.OK)
+ {
+ if (myKeyPad.doubleValue < 0 || myKeyPad.doubleValue > 9999)
+ {
+ // 입력범위를 확인하세요
+ DialogFormMessage myMsg = new DialogFormMessage(1, this.ParentForm.ParentForm.SystemConfig1.Language);
+ myMsg.ShowDialog();
+ }
+ else
+ {
+ this.labelReadTimeout.Text = myKeyPad.StringValue;
+
+ // 코드 완성 안됨. 추후 사용하게 되면 추가 작업해야함
+ }
+ }
+ }
+ #endregion
+ }
+}
diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiModbus.designer.cs b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.designer.cs
new file mode 100644
index 0000000..44358ad
--- /dev/null
+++ b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.designer.cs
@@ -0,0 +1,339 @@
+namespace ITC81DB_0H.Controls
+{
+ partial class ControlConfiModbus
+ {
+ ///
+ /// 필수 디자이너 변수입니다.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 사용 중인 모든 리소스를 정리합니다.
+ ///
+ /// 관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region 구성 요소 디자이너에서 생성한 코드
+
+ ///
+ /// 디자이너 지원에 필요한 메서드입니다.
+ /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlConfiModbus));
+ this.smartGroupBox1 = new SmartX.SmartGroupBox();
+ this.smartLabel2 = new SmartX.SmartLabel();
+ this.labelFunctions = new SmartX.SmartLabel();
+ this.labelStartAddress = new SmartX.SmartLabel();
+ this.labelTitleStartAddress = new SmartX.SmartLabel();
+ this.labelDiscription2 = new SmartX.SmartLabel();
+ this.labelReadTimeout = new SmartX.SmartLabel();
+ this.smartLabel6 = new SmartX.SmartLabel();
+ this.comboBoxRole = new System.Windows.Forms.ComboBox();
+ this.labelTitleFunctions = new SmartX.SmartLabel();
+ this.labelDiscription1 = new SmartX.SmartLabel();
+ this.labelSlaveID = new SmartX.SmartLabel();
+ this.labelTitleSlaveID = new SmartX.SmartLabel();
+ this.smartGroupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // smartGroupBox1
+ //
+ this.smartGroupBox1.BackPictureBox = null;
+ this.smartGroupBox1.BackPictureBox1 = null;
+ this.smartGroupBox1.Controls.Add(this.smartLabel2);
+ this.smartGroupBox1.Controls.Add(this.labelFunctions);
+ this.smartGroupBox1.Controls.Add(this.labelStartAddress);
+ this.smartGroupBox1.Controls.Add(this.labelTitleStartAddress);
+ this.smartGroupBox1.Controls.Add(this.labelDiscription2);
+ this.smartGroupBox1.Controls.Add(this.labelReadTimeout);
+ this.smartGroupBox1.Controls.Add(this.smartLabel6);
+ this.smartGroupBox1.Controls.Add(this.comboBoxRole);
+ this.smartGroupBox1.Controls.Add(this.labelTitleFunctions);
+ this.smartGroupBox1.Controls.Add(this.labelDiscription1);
+ this.smartGroupBox1.Controls.Add(this.labelSlaveID);
+ this.smartGroupBox1.Controls.Add(this.labelTitleSlaveID);
+ this.smartGroupBox1.FrameLineColor1 = System.Drawing.Color.Black;
+ this.smartGroupBox1.FrameLineColor2 = System.Drawing.Color.Black;
+ this.smartGroupBox1.FrameLineThickness = 1;
+ this.smartGroupBox1.FrameStyle = SmartX.SmartGroupBox.FRAMESTYLES.None;
+ this.smartGroupBox1.Image = ((System.Drawing.Image)(resources.GetObject("smartGroupBox1.Image")));
+ this.smartGroupBox1.InitVisible = true;
+ this.smartGroupBox1.Location = new System.Drawing.Point(0, 0);
+ this.smartGroupBox1.Name = "smartGroupBox1";
+ this.smartGroupBox1.RoundRadius = 5;
+ this.smartGroupBox1.Size = new System.Drawing.Size(710, 253);
+ this.smartGroupBox1.TabIndex = 5;
+ this.smartGroupBox1.Text = "smartGroupBox1";
+ this.smartGroupBox1.TextColor = System.Drawing.Color.Black;
+ //
+ // smartLabel2
+ //
+ this.smartLabel2.BackPictureBox1 = null;
+ this.smartLabel2.BackPictureBox2 = this.smartGroupBox1;
+ this.smartLabel2.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel2.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.smartLabel2.Enabled = false;
+ this.smartLabel2.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
+ this.smartLabel2.ForeColor = System.Drawing.Color.White;
+ this.smartLabel2.InitVisible = true;
+ this.smartLabel2.LineSpacing = 0F;
+ this.smartLabel2.Location = new System.Drawing.Point(134, 10);
+ this.smartLabel2.Name = "smartLabel2";
+ this.smartLabel2.Size = new System.Drawing.Size(148, 28);
+ this.smartLabel2.TabIndex = 158;
+ this.smartLabel2.Text = "Role";
+ this.smartLabel2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel2.Wordwrap = false;
+ //
+ // labelFunctions
+ //
+ this.labelFunctions.BackColor = System.Drawing.Color.Black;
+ this.labelFunctions.BackPictureBox = null;
+ this.labelFunctions.BackPictureBox1 = null;
+ this.labelFunctions.BackPictureBox2 = null;
+ this.labelFunctions.BorderColor = System.Drawing.Color.Black;
+ this.labelFunctions.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.labelFunctions.Font = new System.Drawing.Font("Arial", 13F, System.Drawing.FontStyle.Bold);
+ this.labelFunctions.ForeColor = System.Drawing.Color.White;
+ this.labelFunctions.InitVisible = true;
+ this.labelFunctions.LineSpacing = 0F;
+ this.labelFunctions.Location = new System.Drawing.Point(288, 44);
+ this.labelFunctions.Name = "labelFunctions";
+ this.labelFunctions.Size = new System.Drawing.Size(358, 30);
+ this.labelFunctions.TabIndex = 157;
+ this.labelFunctions.Text = "04: Read input register";
+ this.labelFunctions.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelFunctions.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelFunctions.Wordwrap = false;
+ //
+ // labelStartAddress
+ //
+ this.labelStartAddress.BackColor = System.Drawing.SystemColors.Window;
+ this.labelStartAddress.BackPictureBox = null;
+ this.labelStartAddress.BackPictureBox1 = null;
+ this.labelStartAddress.BackPictureBox2 = null;
+ this.labelStartAddress.BorderColor = System.Drawing.Color.Black;
+ this.labelStartAddress.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.labelStartAddress.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Bold);
+ this.labelStartAddress.InitVisible = true;
+ this.labelStartAddress.LineSpacing = 0F;
+ this.labelStartAddress.Location = new System.Drawing.Point(288, 116);
+ this.labelStartAddress.Name = "labelStartAddress";
+ this.labelStartAddress.Size = new System.Drawing.Size(90, 30);
+ this.labelStartAddress.TabIndex = 156;
+ this.labelStartAddress.Text = "1";
+ this.labelStartAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelStartAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelStartAddress.Wordwrap = false;
+ this.labelStartAddress.Click += new System.EventHandler(this.labelStartAddress_Click);
+ //
+ // labelTitleStartAddress
+ //
+ this.labelTitleStartAddress.BackPictureBox1 = null;
+ this.labelTitleStartAddress.BackPictureBox2 = this.smartGroupBox1;
+ this.labelTitleStartAddress.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleStartAddress.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelTitleStartAddress.Enabled = false;
+ this.labelTitleStartAddress.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
+ this.labelTitleStartAddress.ForeColor = System.Drawing.Color.White;
+ this.labelTitleStartAddress.InitVisible = true;
+ this.labelTitleStartAddress.LineSpacing = 0F;
+ this.labelTitleStartAddress.Location = new System.Drawing.Point(134, 116);
+ this.labelTitleStartAddress.Name = "labelTitleStartAddress";
+ this.labelTitleStartAddress.Size = new System.Drawing.Size(148, 30);
+ this.labelTitleStartAddress.TabIndex = 155;
+ this.labelTitleStartAddress.Text = "Start Address";
+ this.labelTitleStartAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleStartAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleStartAddress.Wordwrap = false;
+ //
+ // labelDiscription2
+ //
+ this.labelDiscription2.BackPictureBox1 = null;
+ this.labelDiscription2.BackPictureBox2 = this.smartGroupBox1;
+ this.labelDiscription2.BorderColor = System.Drawing.Color.Black;
+ this.labelDiscription2.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelDiscription2.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Bold);
+ this.labelDiscription2.ForeColor = System.Drawing.Color.White;
+ this.labelDiscription2.InitVisible = true;
+ this.labelDiscription2.LineSpacing = 0F;
+ this.labelDiscription2.Location = new System.Drawing.Point(118, 211);
+ this.labelDiscription2.Name = "labelDiscription2";
+ this.labelDiscription2.Size = new System.Drawing.Size(561, 20);
+ this.labelDiscription2.TabIndex = 154;
+ this.labelDiscription2.Text = "- Master(Client) : 16(중량판정 시), Slave(Server) : 04(Master 읽기 요청 시)";
+ this.labelDiscription2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelDiscription2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelDiscription2.Wordwrap = false;
+ //
+ // labelReadTimeout
+ //
+ this.labelReadTimeout.BackColor = System.Drawing.SystemColors.Window;
+ this.labelReadTimeout.BackPictureBox = null;
+ this.labelReadTimeout.BackPictureBox1 = null;
+ this.labelReadTimeout.BackPictureBox2 = null;
+ this.labelReadTimeout.BorderColor = System.Drawing.Color.Black;
+ this.labelReadTimeout.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.labelReadTimeout.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Bold);
+ this.labelReadTimeout.InitVisible = true;
+ this.labelReadTimeout.LineSpacing = 0F;
+ this.labelReadTimeout.Location = new System.Drawing.Point(556, 80);
+ this.labelReadTimeout.Name = "labelReadTimeout";
+ this.labelReadTimeout.Size = new System.Drawing.Size(90, 30);
+ this.labelReadTimeout.TabIndex = 153;
+ this.labelReadTimeout.Text = "1";
+ this.labelReadTimeout.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelReadTimeout.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelReadTimeout.Visible = false;
+ this.labelReadTimeout.Wordwrap = false;
+ this.labelReadTimeout.Click += new System.EventHandler(this.labelReadTimeout_Click);
+ //
+ // smartLabel6
+ //
+ this.smartLabel6.BackPictureBox1 = null;
+ this.smartLabel6.BackPictureBox2 = this.smartGroupBox1;
+ this.smartLabel6.BorderColor = System.Drawing.Color.Black;
+ this.smartLabel6.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.smartLabel6.Enabled = false;
+ this.smartLabel6.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
+ this.smartLabel6.ForeColor = System.Drawing.Color.White;
+ this.smartLabel6.InitVisible = true;
+ this.smartLabel6.LineSpacing = 0F;
+ this.smartLabel6.Location = new System.Drawing.Point(402, 80);
+ this.smartLabel6.Name = "smartLabel6";
+ this.smartLabel6.Size = new System.Drawing.Size(148, 30);
+ this.smartLabel6.TabIndex = 152;
+ this.smartLabel6.Text = "Timeout";
+ this.smartLabel6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.smartLabel6.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.smartLabel6.Visible = false;
+ this.smartLabel6.Wordwrap = false;
+ //
+ // comboBoxRole
+ //
+ this.comboBoxRole.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.comboBoxRole.Location = new System.Drawing.Point(288, 10);
+ this.comboBoxRole.Name = "comboBoxRole";
+ this.comboBoxRole.Size = new System.Drawing.Size(190, 28);
+ this.comboBoxRole.TabIndex = 151;
+ this.comboBoxRole.SelectedIndexChanged += new System.EventHandler(this.comboBoxRole_SelectedIndexChanged);
+ //
+ // labelTitleFunctions
+ //
+ this.labelTitleFunctions.BackPictureBox1 = null;
+ this.labelTitleFunctions.BackPictureBox2 = this.smartGroupBox1;
+ this.labelTitleFunctions.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleFunctions.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelTitleFunctions.Enabled = false;
+ this.labelTitleFunctions.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
+ this.labelTitleFunctions.ForeColor = System.Drawing.Color.White;
+ this.labelTitleFunctions.InitVisible = true;
+ this.labelTitleFunctions.LineSpacing = 0F;
+ this.labelTitleFunctions.Location = new System.Drawing.Point(134, 44);
+ this.labelTitleFunctions.Name = "labelTitleFunctions";
+ this.labelTitleFunctions.Size = new System.Drawing.Size(148, 30);
+ this.labelTitleFunctions.TabIndex = 140;
+ this.labelTitleFunctions.Text = "Functions";
+ this.labelTitleFunctions.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleFunctions.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleFunctions.Wordwrap = false;
+ //
+ // labelDiscription1
+ //
+ this.labelDiscription1.BackPictureBox1 = null;
+ this.labelDiscription1.BackPictureBox2 = this.smartGroupBox1;
+ this.labelDiscription1.BorderColor = System.Drawing.Color.Black;
+ this.labelDiscription1.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelDiscription1.Font = new System.Drawing.Font("새굴림", 9F, System.Drawing.FontStyle.Bold);
+ this.labelDiscription1.ForeColor = System.Drawing.Color.White;
+ this.labelDiscription1.InitVisible = true;
+ this.labelDiscription1.LineSpacing = 0F;
+ this.labelDiscription1.Location = new System.Drawing.Point(118, 185);
+ this.labelDiscription1.Name = "labelDiscription1";
+ this.labelDiscription1.Size = new System.Drawing.Size(561, 20);
+ this.labelDiscription1.TabIndex = 138;
+ this.labelDiscription1.Text = "- Parity Bit : None, Data Bits : 8, Stop Bits : 1";
+ this.labelDiscription1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelDiscription1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelDiscription1.Wordwrap = false;
+ //
+ // labelSlaveID
+ //
+ this.labelSlaveID.BackColor = System.Drawing.SystemColors.Window;
+ this.labelSlaveID.BackPictureBox = null;
+ this.labelSlaveID.BackPictureBox1 = null;
+ this.labelSlaveID.BackPictureBox2 = null;
+ this.labelSlaveID.BorderColor = System.Drawing.Color.Black;
+ this.labelSlaveID.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.labelSlaveID.Font = new System.Drawing.Font("Arial", 15F, System.Drawing.FontStyle.Bold);
+ this.labelSlaveID.InitVisible = true;
+ this.labelSlaveID.LineSpacing = 0F;
+ this.labelSlaveID.Location = new System.Drawing.Point(288, 80);
+ this.labelSlaveID.Name = "labelSlaveID";
+ this.labelSlaveID.Size = new System.Drawing.Size(90, 30);
+ this.labelSlaveID.TabIndex = 136;
+ this.labelSlaveID.Text = "1";
+ this.labelSlaveID.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelSlaveID.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelSlaveID.Wordwrap = false;
+ this.labelSlaveID.Click += new System.EventHandler(this.labelSlaveID_Click);
+ //
+ // labelTitleSlaveID
+ //
+ this.labelTitleSlaveID.BackPictureBox1 = null;
+ this.labelTitleSlaveID.BackPictureBox2 = this.smartGroupBox1;
+ this.labelTitleSlaveID.BorderColor = System.Drawing.Color.Black;
+ this.labelTitleSlaveID.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelTitleSlaveID.Enabled = false;
+ this.labelTitleSlaveID.Font = new System.Drawing.Font("새굴림", 10F, System.Drawing.FontStyle.Bold);
+ this.labelTitleSlaveID.ForeColor = System.Drawing.Color.White;
+ this.labelTitleSlaveID.InitVisible = true;
+ this.labelTitleSlaveID.LineSpacing = 0F;
+ this.labelTitleSlaveID.Location = new System.Drawing.Point(134, 80);
+ this.labelTitleSlaveID.Name = "labelTitleSlaveID";
+ this.labelTitleSlaveID.Size = new System.Drawing.Size(148, 30);
+ this.labelTitleSlaveID.TabIndex = 107;
+ this.labelTitleSlaveID.Text = "Slave ID";
+ this.labelTitleSlaveID.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left;
+ this.labelTitleSlaveID.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTitleSlaveID.Wordwrap = false;
+ //
+ // ControlConfiModbus
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+ this.Controls.Add(this.smartGroupBox1);
+ this.Name = "ControlConfiModbus";
+ this.Size = new System.Drawing.Size(710, 253);
+ this.smartGroupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private SmartX.SmartGroupBox smartGroupBox1;
+ private SmartX.SmartLabel labelTitleSlaveID;
+ public SmartX.SmartLabel labelSlaveID;
+ private SmartX.SmartLabel labelDiscription1;
+ private SmartX.SmartLabel labelTitleFunctions;
+ private System.Windows.Forms.ComboBox comboBoxRole;
+ public SmartX.SmartLabel labelReadTimeout;
+ private SmartX.SmartLabel smartLabel6;
+ private SmartX.SmartLabel labelDiscription2;
+ public SmartX.SmartLabel labelStartAddress;
+ private SmartX.SmartLabel labelTitleStartAddress;
+ public SmartX.SmartLabel labelFunctions;
+ private SmartX.SmartLabel smartLabel2;
+ }
+}
diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiModbus.resx b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.resx
new file mode 100644
index 0000000..7e32bd5
--- /dev/null
+++ b/ITC81DB_0H/Controls/Etc/ControlConfiModbus.resx
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+
+
+
+ WEBPAD
+
+
\ No newline at end of file
diff --git a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs
index f44200a..73c75fa 100644
--- a/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs
+++ b/ITC81DB_0H/Controls/Etc/ControlConfiOptionBoard1.cs
@@ -299,7 +299,7 @@ namespace ITC81DB_0H.Controls
value = Helper.StringZeroFillDigits4(this.labelSampleCount.Text);
this.ParentForm.ParentForm.CurrentSystemParameter2.OPT1SamplingCount = myKeyPad.StringValue;
- this.ParentForm.ParentForm.ChildFormMainDisplay.CurrentBottomMenuControlEnable(DataStore.EquipmentStatus.Stop);
+ this.ParentForm.ParentForm.ChildFormMainDisplay.CurrentBottomMenuControlEnable();
this.ParentForm.ParentForm.SaveSystemParameter2File(this.ParentForm.ParentForm.CurrentSystemParameter2);
this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.OPT1SamplingCount, value);
diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs
index de2fba8..c0e1532 100644
--- a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs
+++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayMenu.cs
@@ -436,9 +436,8 @@ namespace ITC81DB_0H.Controls
#endregion
#region AutoZero
- // Mode 1
//this.UpdateZero1ParameterDisplay(parameter);
- this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterRead4901, "");
+ //this.ParentForm.ParentForm.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterRead4907, "");
#endregion
}
diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.Designer.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.Designer.cs
new file mode 100644
index 0000000..e2a3041
--- /dev/null
+++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.Designer.cs
@@ -0,0 +1,969 @@
+namespace ITC81DB_0H.Controls
+{
+ partial class ControlMainDisplayModbus
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ControlMainDisplayModbus));
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ this.labelUpdateFlag = new SmartX.SmartLabel();
+ this.labelEquipmentID = new SmartX.SmartLabel();
+ this.labelUnder = new SmartX.SmartLabel();
+ this.labelCurrentNo = new SmartX.SmartLabel();
+ this.labelOver = new SmartX.SmartLabel();
+ this.labelPass = new SmartX.SmartLabel();
+ this.labelTare = new SmartX.SmartLabel();
+ this.labelGrade = new SmartX.SmartLabel();
+ this.labelTotalCount = new SmartX.SmartLabel();
+ this.labelExNGCount = new SmartX.SmartLabel();
+ this.labelNGCount = new SmartX.SmartLabel();
+ this.labelOverCount = new SmartX.SmartLabel();
+ this.labelPassCount = new SmartX.SmartLabel();
+ this.labelUnderCount = new SmartX.SmartLabel();
+ this.labelAlarmStatus = new SmartX.SmartLabel();
+ this.labelOperationStatus = new SmartX.SmartLabel();
+ this.labelWeight = new SmartX.SmartLabel();
+ this.labelReceiveCount = new SmartX.SmartLabel();
+ this.buttonBypassDirection = new SmartX.SmartButton();
+ this.labelStartAddress = new SmartX.SmartLabel();
+ this.labelOffset1 = new SmartX.SmartLabel();
+ this.labelOffset2 = new SmartX.SmartLabel();
+ this.labelOffset3 = new SmartX.SmartLabel();
+ this.labelOffset4 = new SmartX.SmartLabel();
+ this.labelOffset5 = new SmartX.SmartLabel();
+ this.labelOffset6 = new SmartX.SmartLabel();
+ this.labelOffset7 = new SmartX.SmartLabel();
+ this.labelOffset8 = new SmartX.SmartLabel();
+ this.labelOffset9 = new SmartX.SmartLabel();
+ this.labelOffset10 = new SmartX.SmartLabel();
+ this.labelOffset14 = new SmartX.SmartLabel();
+ this.labelOffset13 = new SmartX.SmartLabel();
+ this.labelOffset12 = new SmartX.SmartLabel();
+ this.labelOffset11 = new SmartX.SmartLabel();
+ this.labelOffset17 = new SmartX.SmartLabel();
+ this.labelOffset16 = new SmartX.SmartLabel();
+ this.labelOffset15 = new SmartX.SmartLabel();
+ this.comboBoxPort = new System.Windows.Forms.ComboBox();
+ this.SuspendLayout();
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
+ this.pictureBox1.Location = new System.Drawing.Point(0, 0);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(710, 320);
+ //
+ // labelUpdateFlag
+ //
+ this.labelUpdateFlag.BackColor = System.Drawing.Color.Black;
+ this.labelUpdateFlag.BackPictureBox = null;
+ this.labelUpdateFlag.BackPictureBox1 = null;
+ this.labelUpdateFlag.BackPictureBox2 = null;
+ this.labelUpdateFlag.BorderColor = System.Drawing.Color.Black;
+ this.labelUpdateFlag.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelUpdateFlag.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelUpdateFlag.ForeColor = System.Drawing.Color.White;
+ this.labelUpdateFlag.InitVisible = true;
+ this.labelUpdateFlag.LineSpacing = 0F;
+ this.labelUpdateFlag.Location = new System.Drawing.Point(167, 108);
+ this.labelUpdateFlag.Name = "labelUpdateFlag";
+ this.labelUpdateFlag.Size = new System.Drawing.Size(73, 21);
+ this.labelUpdateFlag.TabIndex = 709;
+ this.labelUpdateFlag.Text = "999999999";
+ this.labelUpdateFlag.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelUpdateFlag.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelUpdateFlag.Wordwrap = false;
+ //
+ // labelEquipmentID
+ //
+ this.labelEquipmentID.BackColor = System.Drawing.Color.Black;
+ this.labelEquipmentID.BackPictureBox = null;
+ this.labelEquipmentID.BackPictureBox1 = null;
+ this.labelEquipmentID.BackPictureBox2 = null;
+ this.labelEquipmentID.BorderColor = System.Drawing.Color.Black;
+ this.labelEquipmentID.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelEquipmentID.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelEquipmentID.ForeColor = System.Drawing.Color.White;
+ this.labelEquipmentID.InitVisible = true;
+ this.labelEquipmentID.LineSpacing = 0F;
+ this.labelEquipmentID.Location = new System.Drawing.Point(167, 134);
+ this.labelEquipmentID.Name = "labelEquipmentID";
+ this.labelEquipmentID.Size = new System.Drawing.Size(73, 21);
+ this.labelEquipmentID.TabIndex = 710;
+ this.labelEquipmentID.Text = "999999999";
+ this.labelEquipmentID.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelEquipmentID.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelEquipmentID.Wordwrap = false;
+ //
+ // labelUnder
+ //
+ this.labelUnder.BackColor = System.Drawing.Color.Black;
+ this.labelUnder.BackPictureBox = null;
+ this.labelUnder.BackPictureBox1 = null;
+ this.labelUnder.BackPictureBox2 = null;
+ this.labelUnder.BorderColor = System.Drawing.Color.Black;
+ this.labelUnder.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelUnder.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelUnder.ForeColor = System.Drawing.Color.White;
+ this.labelUnder.InitVisible = true;
+ this.labelUnder.LineSpacing = 0F;
+ this.labelUnder.Location = new System.Drawing.Point(167, 186);
+ this.labelUnder.Name = "labelUnder";
+ this.labelUnder.Size = new System.Drawing.Size(73, 21);
+ this.labelUnder.TabIndex = 712;
+ this.labelUnder.Text = "999999999";
+ this.labelUnder.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelUnder.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelUnder.Wordwrap = false;
+ //
+ // labelCurrentNo
+ //
+ this.labelCurrentNo.BackColor = System.Drawing.Color.Black;
+ this.labelCurrentNo.BackPictureBox = null;
+ this.labelCurrentNo.BackPictureBox1 = null;
+ this.labelCurrentNo.BackPictureBox2 = null;
+ this.labelCurrentNo.BorderColor = System.Drawing.Color.Black;
+ this.labelCurrentNo.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelCurrentNo.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelCurrentNo.ForeColor = System.Drawing.Color.White;
+ this.labelCurrentNo.InitVisible = true;
+ this.labelCurrentNo.LineSpacing = 0F;
+ this.labelCurrentNo.Location = new System.Drawing.Point(167, 160);
+ this.labelCurrentNo.Name = "labelCurrentNo";
+ this.labelCurrentNo.Size = new System.Drawing.Size(73, 21);
+ this.labelCurrentNo.TabIndex = 711;
+ this.labelCurrentNo.Text = "999999999";
+ this.labelCurrentNo.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelCurrentNo.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelCurrentNo.Wordwrap = false;
+ //
+ // labelOver
+ //
+ this.labelOver.BackColor = System.Drawing.Color.Black;
+ this.labelOver.BackPictureBox = null;
+ this.labelOver.BackPictureBox1 = null;
+ this.labelOver.BackPictureBox2 = null;
+ this.labelOver.BorderColor = System.Drawing.Color.Black;
+ this.labelOver.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOver.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOver.ForeColor = System.Drawing.Color.White;
+ this.labelOver.InitVisible = true;
+ this.labelOver.LineSpacing = 0F;
+ this.labelOver.Location = new System.Drawing.Point(167, 238);
+ this.labelOver.Name = "labelOver";
+ this.labelOver.Size = new System.Drawing.Size(73, 21);
+ this.labelOver.TabIndex = 714;
+ this.labelOver.Text = "999999999";
+ this.labelOver.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOver.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOver.Wordwrap = false;
+ //
+ // labelPass
+ //
+ this.labelPass.BackColor = System.Drawing.Color.Black;
+ this.labelPass.BackPictureBox = null;
+ this.labelPass.BackPictureBox1 = null;
+ this.labelPass.BackPictureBox2 = null;
+ this.labelPass.BorderColor = System.Drawing.Color.Black;
+ this.labelPass.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelPass.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelPass.ForeColor = System.Drawing.Color.White;
+ this.labelPass.InitVisible = true;
+ this.labelPass.LineSpacing = 0F;
+ this.labelPass.Location = new System.Drawing.Point(167, 212);
+ this.labelPass.Name = "labelPass";
+ this.labelPass.Size = new System.Drawing.Size(73, 21);
+ this.labelPass.TabIndex = 713;
+ this.labelPass.Text = "999999999";
+ this.labelPass.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelPass.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelPass.Wordwrap = false;
+ //
+ // labelTare
+ //
+ this.labelTare.BackColor = System.Drawing.Color.Black;
+ this.labelTare.BackPictureBox = null;
+ this.labelTare.BackPictureBox1 = null;
+ this.labelTare.BackPictureBox2 = null;
+ this.labelTare.BorderColor = System.Drawing.Color.Black;
+ this.labelTare.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelTare.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelTare.ForeColor = System.Drawing.Color.White;
+ this.labelTare.InitVisible = true;
+ this.labelTare.LineSpacing = 0F;
+ this.labelTare.Location = new System.Drawing.Point(167, 264);
+ this.labelTare.Name = "labelTare";
+ this.labelTare.Size = new System.Drawing.Size(73, 21);
+ this.labelTare.TabIndex = 715;
+ this.labelTare.Text = "999999999";
+ this.labelTare.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelTare.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTare.Wordwrap = false;
+ //
+ // labelGrade
+ //
+ this.labelGrade.BackColor = System.Drawing.Color.Black;
+ this.labelGrade.BackPictureBox = null;
+ this.labelGrade.BackPictureBox1 = null;
+ this.labelGrade.BackPictureBox2 = null;
+ this.labelGrade.BorderColor = System.Drawing.Color.Black;
+ this.labelGrade.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelGrade.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelGrade.ForeColor = System.Drawing.Color.White;
+ this.labelGrade.InitVisible = true;
+ this.labelGrade.LineSpacing = 0F;
+ this.labelGrade.Location = new System.Drawing.Point(391, 264);
+ this.labelGrade.Name = "labelGrade";
+ this.labelGrade.Size = new System.Drawing.Size(73, 21);
+ this.labelGrade.TabIndex = 722;
+ this.labelGrade.Text = "999999999";
+ this.labelGrade.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelGrade.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelGrade.Wordwrap = false;
+ //
+ // labelTotalCount
+ //
+ this.labelTotalCount.BackColor = System.Drawing.Color.Black;
+ this.labelTotalCount.BackPictureBox = null;
+ this.labelTotalCount.BackPictureBox1 = null;
+ this.labelTotalCount.BackPictureBox2 = null;
+ this.labelTotalCount.BorderColor = System.Drawing.Color.Black;
+ this.labelTotalCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelTotalCount.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelTotalCount.ForeColor = System.Drawing.Color.White;
+ this.labelTotalCount.InitVisible = true;
+ this.labelTotalCount.LineSpacing = 0F;
+ this.labelTotalCount.Location = new System.Drawing.Point(391, 238);
+ this.labelTotalCount.Name = "labelTotalCount";
+ this.labelTotalCount.Size = new System.Drawing.Size(73, 21);
+ this.labelTotalCount.TabIndex = 721;
+ this.labelTotalCount.Text = "999999999";
+ this.labelTotalCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelTotalCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelTotalCount.Wordwrap = false;
+ //
+ // labelExNGCount
+ //
+ this.labelExNGCount.BackColor = System.Drawing.Color.Black;
+ this.labelExNGCount.BackPictureBox = null;
+ this.labelExNGCount.BackPictureBox1 = null;
+ this.labelExNGCount.BackPictureBox2 = null;
+ this.labelExNGCount.BorderColor = System.Drawing.Color.Black;
+ this.labelExNGCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelExNGCount.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelExNGCount.ForeColor = System.Drawing.Color.White;
+ this.labelExNGCount.InitVisible = true;
+ this.labelExNGCount.LineSpacing = 0F;
+ this.labelExNGCount.Location = new System.Drawing.Point(391, 212);
+ this.labelExNGCount.Name = "labelExNGCount";
+ this.labelExNGCount.Size = new System.Drawing.Size(73, 21);
+ this.labelExNGCount.TabIndex = 720;
+ this.labelExNGCount.Text = "999999999";
+ this.labelExNGCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelExNGCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelExNGCount.Wordwrap = false;
+ //
+ // labelNGCount
+ //
+ this.labelNGCount.BackColor = System.Drawing.Color.Black;
+ this.labelNGCount.BackPictureBox = null;
+ this.labelNGCount.BackPictureBox1 = null;
+ this.labelNGCount.BackPictureBox2 = null;
+ this.labelNGCount.BorderColor = System.Drawing.Color.Black;
+ this.labelNGCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelNGCount.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelNGCount.ForeColor = System.Drawing.Color.White;
+ this.labelNGCount.InitVisible = true;
+ this.labelNGCount.LineSpacing = 0F;
+ this.labelNGCount.Location = new System.Drawing.Point(391, 186);
+ this.labelNGCount.Name = "labelNGCount";
+ this.labelNGCount.Size = new System.Drawing.Size(73, 21);
+ this.labelNGCount.TabIndex = 719;
+ this.labelNGCount.Text = "999999999";
+ this.labelNGCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelNGCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelNGCount.Wordwrap = false;
+ //
+ // labelOverCount
+ //
+ this.labelOverCount.BackColor = System.Drawing.Color.Black;
+ this.labelOverCount.BackPictureBox = null;
+ this.labelOverCount.BackPictureBox1 = null;
+ this.labelOverCount.BackPictureBox2 = null;
+ this.labelOverCount.BorderColor = System.Drawing.Color.Black;
+ this.labelOverCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOverCount.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOverCount.ForeColor = System.Drawing.Color.White;
+ this.labelOverCount.InitVisible = true;
+ this.labelOverCount.LineSpacing = 0F;
+ this.labelOverCount.Location = new System.Drawing.Point(391, 160);
+ this.labelOverCount.Name = "labelOverCount";
+ this.labelOverCount.Size = new System.Drawing.Size(73, 21);
+ this.labelOverCount.TabIndex = 718;
+ this.labelOverCount.Text = "999999999";
+ this.labelOverCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOverCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOverCount.Wordwrap = false;
+ //
+ // labelPassCount
+ //
+ this.labelPassCount.BackColor = System.Drawing.Color.Black;
+ this.labelPassCount.BackPictureBox = null;
+ this.labelPassCount.BackPictureBox1 = null;
+ this.labelPassCount.BackPictureBox2 = null;
+ this.labelPassCount.BorderColor = System.Drawing.Color.Black;
+ this.labelPassCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelPassCount.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelPassCount.ForeColor = System.Drawing.Color.White;
+ this.labelPassCount.InitVisible = true;
+ this.labelPassCount.LineSpacing = 0F;
+ this.labelPassCount.Location = new System.Drawing.Point(391, 134);
+ this.labelPassCount.Name = "labelPassCount";
+ this.labelPassCount.Size = new System.Drawing.Size(73, 21);
+ this.labelPassCount.TabIndex = 717;
+ this.labelPassCount.Text = "999999999";
+ this.labelPassCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelPassCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelPassCount.Wordwrap = false;
+ //
+ // labelUnderCount
+ //
+ this.labelUnderCount.BackColor = System.Drawing.Color.Black;
+ this.labelUnderCount.BackPictureBox = null;
+ this.labelUnderCount.BackPictureBox1 = null;
+ this.labelUnderCount.BackPictureBox2 = null;
+ this.labelUnderCount.BorderColor = System.Drawing.Color.Black;
+ this.labelUnderCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelUnderCount.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelUnderCount.ForeColor = System.Drawing.Color.White;
+ this.labelUnderCount.InitVisible = true;
+ this.labelUnderCount.LineSpacing = 0F;
+ this.labelUnderCount.Location = new System.Drawing.Point(391, 108);
+ this.labelUnderCount.Name = "labelUnderCount";
+ this.labelUnderCount.Size = new System.Drawing.Size(73, 21);
+ this.labelUnderCount.TabIndex = 716;
+ this.labelUnderCount.Text = "999999999";
+ this.labelUnderCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelUnderCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelUnderCount.Wordwrap = false;
+ //
+ // labelAlarmStatus
+ //
+ this.labelAlarmStatus.BackColor = System.Drawing.Color.Black;
+ this.labelAlarmStatus.BackPictureBox = null;
+ this.labelAlarmStatus.BackPictureBox1 = null;
+ this.labelAlarmStatus.BackPictureBox2 = null;
+ this.labelAlarmStatus.BorderColor = System.Drawing.Color.Black;
+ this.labelAlarmStatus.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelAlarmStatus.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelAlarmStatus.ForeColor = System.Drawing.Color.White;
+ this.labelAlarmStatus.InitVisible = true;
+ this.labelAlarmStatus.LineSpacing = 0F;
+ this.labelAlarmStatus.Location = new System.Drawing.Point(613, 160);
+ this.labelAlarmStatus.Name = "labelAlarmStatus";
+ this.labelAlarmStatus.Size = new System.Drawing.Size(73, 21);
+ this.labelAlarmStatus.TabIndex = 725;
+ this.labelAlarmStatus.Text = "999999999";
+ this.labelAlarmStatus.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelAlarmStatus.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelAlarmStatus.Wordwrap = false;
+ //
+ // labelOperationStatus
+ //
+ this.labelOperationStatus.BackColor = System.Drawing.Color.Black;
+ this.labelOperationStatus.BackPictureBox = null;
+ this.labelOperationStatus.BackPictureBox1 = null;
+ this.labelOperationStatus.BackPictureBox2 = null;
+ this.labelOperationStatus.BorderColor = System.Drawing.Color.Black;
+ this.labelOperationStatus.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOperationStatus.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOperationStatus.ForeColor = System.Drawing.Color.White;
+ this.labelOperationStatus.InitVisible = true;
+ this.labelOperationStatus.LineSpacing = 0F;
+ this.labelOperationStatus.Location = new System.Drawing.Point(613, 134);
+ this.labelOperationStatus.Name = "labelOperationStatus";
+ this.labelOperationStatus.Size = new System.Drawing.Size(73, 21);
+ this.labelOperationStatus.TabIndex = 724;
+ this.labelOperationStatus.Text = "999999999";
+ this.labelOperationStatus.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOperationStatus.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOperationStatus.Wordwrap = false;
+ //
+ // labelWeight
+ //
+ this.labelWeight.BackColor = System.Drawing.Color.Black;
+ this.labelWeight.BackPictureBox = null;
+ this.labelWeight.BackPictureBox1 = null;
+ this.labelWeight.BackPictureBox2 = null;
+ this.labelWeight.BorderColor = System.Drawing.Color.Black;
+ this.labelWeight.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelWeight.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelWeight.ForeColor = System.Drawing.Color.White;
+ this.labelWeight.InitVisible = true;
+ this.labelWeight.LineSpacing = 0F;
+ this.labelWeight.Location = new System.Drawing.Point(613, 108);
+ this.labelWeight.Name = "labelWeight";
+ this.labelWeight.Size = new System.Drawing.Size(73, 21);
+ this.labelWeight.TabIndex = 723;
+ this.labelWeight.Text = "999999999";
+ this.labelWeight.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelWeight.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelWeight.Wordwrap = false;
+ //
+ // labelReceiveCount
+ //
+ this.labelReceiveCount.BackColor = System.Drawing.Color.Black;
+ this.labelReceiveCount.BackPictureBox = null;
+ this.labelReceiveCount.BackPictureBox1 = null;
+ this.labelReceiveCount.BackPictureBox2 = null;
+ this.labelReceiveCount.BorderColor = System.Drawing.Color.Black;
+ this.labelReceiveCount.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelReceiveCount.Font = new System.Drawing.Font("Arial", 17F, System.Drawing.FontStyle.Bold);
+ this.labelReceiveCount.ForeColor = System.Drawing.Color.White;
+ this.labelReceiveCount.InitVisible = true;
+ this.labelReceiveCount.LineSpacing = 0F;
+ this.labelReceiveCount.Location = new System.Drawing.Point(538, 35);
+ this.labelReceiveCount.Name = "labelReceiveCount";
+ this.labelReceiveCount.Size = new System.Drawing.Size(140, 28);
+ this.labelReceiveCount.TabIndex = 726;
+ this.labelReceiveCount.Text = "9999999999";
+ this.labelReceiveCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Right;
+ this.labelReceiveCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelReceiveCount.Wordwrap = false;
+ //
+ // buttonBypassDirection
+ //
+ this.buttonBypassDirection.BackPictureBox = null;
+ this.buttonBypassDirection.BackPictureBox1 = null;
+ this.buttonBypassDirection.BackPictureBox2 = null;
+ this.buttonBypassDirection.ButtonColor = System.Drawing.Color.Gray;
+ this.buttonBypassDirection.ButtonImageAutoSize = true;
+ this.buttonBypassDirection.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonBypassDirection.DisableImage = null;
+ 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(70, 35);
+ this.buttonBypassDirection.Mode = SmartX.SmartButton.BUTTONMODE.PUSH;
+ this.buttonBypassDirection.Name = "buttonBypassDirection";
+ this.buttonBypassDirection.NestedClickEventPrevent = false;
+ this.buttonBypassDirection.OutlinePixel = 1;
+ this.buttonBypassDirection.RepeatInterval = 200;
+ this.buttonBypassDirection.RepeatIntervalAccelerate = null;
+ this.buttonBypassDirection.SafeInterval = 200;
+ this.buttonBypassDirection.Size = new System.Drawing.Size(80, 28);
+ this.buttonBypassDirection.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonBypassDirection.TabIndex = 727;
+ this.buttonBypassDirection.TextColor = System.Drawing.Color.Black;
+ this.buttonBypassDirection.TextDownColor = System.Drawing.Color.White;
+ this.buttonBypassDirection.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonBypassDirection.TextLocation = new System.Drawing.Point(0, 0);
+ this.buttonBypassDirection.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonBypassDirection.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonBypassDirection.UpImage")));
+ this.buttonBypassDirection.Click += new System.EventHandler(this.buttonBypassDirection_Click);
+ //
+ // labelStartAddress
+ //
+ this.labelStartAddress.BackColor = System.Drawing.Color.Black;
+ this.labelStartAddress.BackPictureBox = null;
+ this.labelStartAddress.BackPictureBox1 = null;
+ this.labelStartAddress.BackPictureBox2 = null;
+ this.labelStartAddress.BorderColor = System.Drawing.Color.Black;
+ this.labelStartAddress.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelStartAddress.Font = new System.Drawing.Font("Arial", 17F, System.Drawing.FontStyle.Bold);
+ this.labelStartAddress.ForeColor = System.Drawing.Color.White;
+ this.labelStartAddress.InitVisible = true;
+ this.labelStartAddress.LineSpacing = 0F;
+ this.labelStartAddress.Location = new System.Drawing.Point(382, 35);
+ this.labelStartAddress.Name = "labelStartAddress";
+ this.labelStartAddress.Size = new System.Drawing.Size(79, 28);
+ this.labelStartAddress.TabIndex = 729;
+ this.labelStartAddress.Text = "99999";
+ this.labelStartAddress.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelStartAddress.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelStartAddress.Wordwrap = false;
+ //
+ // labelOffset1
+ //
+ this.labelOffset1.BackColor = System.Drawing.Color.Black;
+ this.labelOffset1.BackPictureBox = this.pictureBox1;
+ this.labelOffset1.BackPictureBox1 = null;
+ this.labelOffset1.BackPictureBox2 = null;
+ this.labelOffset1.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset1.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset1.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset1.ForeColor = System.Drawing.Color.White;
+ this.labelOffset1.InitVisible = true;
+ this.labelOffset1.LineSpacing = 0F;
+ this.labelOffset1.Location = new System.Drawing.Point(22, 108);
+ this.labelOffset1.Name = "labelOffset1";
+ this.labelOffset1.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset1.TabIndex = 730;
+ this.labelOffset1.Text = "0x000A";
+ this.labelOffset1.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset1.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset1.Wordwrap = false;
+ //
+ // labelOffset2
+ //
+ this.labelOffset2.BackColor = System.Drawing.Color.Black;
+ this.labelOffset2.BackPictureBox = this.pictureBox1;
+ this.labelOffset2.BackPictureBox1 = null;
+ this.labelOffset2.BackPictureBox2 = null;
+ this.labelOffset2.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset2.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset2.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset2.ForeColor = System.Drawing.Color.White;
+ this.labelOffset2.InitVisible = true;
+ this.labelOffset2.LineSpacing = 0F;
+ this.labelOffset2.Location = new System.Drawing.Point(22, 134);
+ this.labelOffset2.Name = "labelOffset2";
+ this.labelOffset2.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset2.TabIndex = 731;
+ this.labelOffset2.Text = "0x000A";
+ this.labelOffset2.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset2.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset2.Wordwrap = false;
+ //
+ // labelOffset3
+ //
+ this.labelOffset3.BackColor = System.Drawing.Color.Black;
+ this.labelOffset3.BackPictureBox = this.pictureBox1;
+ this.labelOffset3.BackPictureBox1 = null;
+ this.labelOffset3.BackPictureBox2 = null;
+ this.labelOffset3.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset3.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset3.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset3.ForeColor = System.Drawing.Color.White;
+ this.labelOffset3.InitVisible = true;
+ this.labelOffset3.LineSpacing = 0F;
+ this.labelOffset3.Location = new System.Drawing.Point(22, 160);
+ this.labelOffset3.Name = "labelOffset3";
+ this.labelOffset3.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset3.TabIndex = 732;
+ this.labelOffset3.Text = "0x000A";
+ this.labelOffset3.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset3.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset3.Wordwrap = false;
+ //
+ // labelOffset4
+ //
+ this.labelOffset4.BackColor = System.Drawing.Color.Black;
+ this.labelOffset4.BackPictureBox = this.pictureBox1;
+ this.labelOffset4.BackPictureBox1 = null;
+ this.labelOffset4.BackPictureBox2 = null;
+ this.labelOffset4.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset4.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset4.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset4.ForeColor = System.Drawing.Color.White;
+ this.labelOffset4.InitVisible = true;
+ this.labelOffset4.LineSpacing = 0F;
+ this.labelOffset4.Location = new System.Drawing.Point(22, 186);
+ this.labelOffset4.Name = "labelOffset4";
+ this.labelOffset4.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset4.TabIndex = 733;
+ this.labelOffset4.Text = "0x000A";
+ this.labelOffset4.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset4.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset4.Wordwrap = false;
+ //
+ // labelOffset5
+ //
+ this.labelOffset5.BackColor = System.Drawing.Color.Black;
+ this.labelOffset5.BackPictureBox = this.pictureBox1;
+ this.labelOffset5.BackPictureBox1 = null;
+ this.labelOffset5.BackPictureBox2 = null;
+ this.labelOffset5.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset5.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset5.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset5.ForeColor = System.Drawing.Color.White;
+ this.labelOffset5.InitVisible = true;
+ this.labelOffset5.LineSpacing = 0F;
+ this.labelOffset5.Location = new System.Drawing.Point(22, 212);
+ this.labelOffset5.Name = "labelOffset5";
+ this.labelOffset5.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset5.TabIndex = 734;
+ this.labelOffset5.Text = "0x000A";
+ this.labelOffset5.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset5.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset5.Wordwrap = false;
+ //
+ // labelOffset6
+ //
+ this.labelOffset6.BackColor = System.Drawing.Color.Black;
+ this.labelOffset6.BackPictureBox = this.pictureBox1;
+ this.labelOffset6.BackPictureBox1 = null;
+ this.labelOffset6.BackPictureBox2 = null;
+ this.labelOffset6.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset6.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset6.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset6.ForeColor = System.Drawing.Color.White;
+ this.labelOffset6.InitVisible = true;
+ this.labelOffset6.LineSpacing = 0F;
+ this.labelOffset6.Location = new System.Drawing.Point(22, 238);
+ this.labelOffset6.Name = "labelOffset6";
+ this.labelOffset6.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset6.TabIndex = 735;
+ this.labelOffset6.Text = "0x000A";
+ this.labelOffset6.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset6.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset6.Wordwrap = false;
+ //
+ // labelOffset7
+ //
+ this.labelOffset7.BackColor = System.Drawing.Color.Black;
+ this.labelOffset7.BackPictureBox = this.pictureBox1;
+ this.labelOffset7.BackPictureBox1 = null;
+ this.labelOffset7.BackPictureBox2 = null;
+ this.labelOffset7.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset7.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset7.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset7.ForeColor = System.Drawing.Color.White;
+ this.labelOffset7.InitVisible = true;
+ this.labelOffset7.LineSpacing = 0F;
+ this.labelOffset7.Location = new System.Drawing.Point(22, 264);
+ this.labelOffset7.Name = "labelOffset7";
+ this.labelOffset7.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset7.TabIndex = 736;
+ this.labelOffset7.Text = "0x000A";
+ this.labelOffset7.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset7.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset7.Wordwrap = false;
+ //
+ // labelOffset8
+ //
+ this.labelOffset8.BackColor = System.Drawing.Color.Black;
+ this.labelOffset8.BackPictureBox = this.pictureBox1;
+ this.labelOffset8.BackPictureBox1 = null;
+ this.labelOffset8.BackPictureBox2 = null;
+ this.labelOffset8.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset8.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset8.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset8.ForeColor = System.Drawing.Color.White;
+ this.labelOffset8.InitVisible = true;
+ this.labelOffset8.LineSpacing = 0F;
+ this.labelOffset8.Location = new System.Drawing.Point(246, 108);
+ this.labelOffset8.Name = "labelOffset8";
+ this.labelOffset8.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset8.TabIndex = 737;
+ this.labelOffset8.Text = "0x000A";
+ this.labelOffset8.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset8.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset8.Wordwrap = false;
+ //
+ // labelOffset9
+ //
+ this.labelOffset9.BackColor = System.Drawing.Color.Black;
+ this.labelOffset9.BackPictureBox = this.pictureBox1;
+ this.labelOffset9.BackPictureBox1 = null;
+ this.labelOffset9.BackPictureBox2 = null;
+ this.labelOffset9.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset9.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset9.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset9.ForeColor = System.Drawing.Color.White;
+ this.labelOffset9.InitVisible = true;
+ this.labelOffset9.LineSpacing = 0F;
+ this.labelOffset9.Location = new System.Drawing.Point(246, 134);
+ this.labelOffset9.Name = "labelOffset9";
+ this.labelOffset9.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset9.TabIndex = 738;
+ this.labelOffset9.Text = "0x000A";
+ this.labelOffset9.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset9.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset9.Wordwrap = false;
+ //
+ // labelOffset10
+ //
+ this.labelOffset10.BackColor = System.Drawing.Color.Black;
+ this.labelOffset10.BackPictureBox = this.pictureBox1;
+ this.labelOffset10.BackPictureBox1 = null;
+ this.labelOffset10.BackPictureBox2 = null;
+ this.labelOffset10.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset10.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset10.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset10.ForeColor = System.Drawing.Color.White;
+ this.labelOffset10.InitVisible = true;
+ this.labelOffset10.LineSpacing = 0F;
+ this.labelOffset10.Location = new System.Drawing.Point(246, 160);
+ this.labelOffset10.Name = "labelOffset10";
+ this.labelOffset10.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset10.TabIndex = 739;
+ this.labelOffset10.Text = "0x000A";
+ this.labelOffset10.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset10.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset10.Wordwrap = false;
+ //
+ // labelOffset14
+ //
+ this.labelOffset14.BackColor = System.Drawing.Color.Black;
+ this.labelOffset14.BackPictureBox = this.pictureBox1;
+ this.labelOffset14.BackPictureBox1 = null;
+ this.labelOffset14.BackPictureBox2 = null;
+ this.labelOffset14.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset14.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset14.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset14.ForeColor = System.Drawing.Color.White;
+ this.labelOffset14.InitVisible = true;
+ this.labelOffset14.LineSpacing = 0F;
+ this.labelOffset14.Location = new System.Drawing.Point(246, 264);
+ this.labelOffset14.Name = "labelOffset14";
+ this.labelOffset14.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset14.TabIndex = 743;
+ this.labelOffset14.Text = "0x000A";
+ this.labelOffset14.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset14.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset14.Wordwrap = false;
+ //
+ // labelOffset13
+ //
+ this.labelOffset13.BackColor = System.Drawing.Color.Black;
+ this.labelOffset13.BackPictureBox = this.pictureBox1;
+ this.labelOffset13.BackPictureBox1 = null;
+ this.labelOffset13.BackPictureBox2 = null;
+ this.labelOffset13.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset13.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset13.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset13.ForeColor = System.Drawing.Color.White;
+ this.labelOffset13.InitVisible = true;
+ this.labelOffset13.LineSpacing = 0F;
+ this.labelOffset13.Location = new System.Drawing.Point(246, 238);
+ this.labelOffset13.Name = "labelOffset13";
+ this.labelOffset13.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset13.TabIndex = 742;
+ this.labelOffset13.Text = "0x000A";
+ this.labelOffset13.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset13.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset13.Wordwrap = false;
+ //
+ // labelOffset12
+ //
+ this.labelOffset12.BackColor = System.Drawing.Color.Black;
+ this.labelOffset12.BackPictureBox = this.pictureBox1;
+ this.labelOffset12.BackPictureBox1 = null;
+ this.labelOffset12.BackPictureBox2 = null;
+ this.labelOffset12.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset12.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset12.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset12.ForeColor = System.Drawing.Color.White;
+ this.labelOffset12.InitVisible = true;
+ this.labelOffset12.LineSpacing = 0F;
+ this.labelOffset12.Location = new System.Drawing.Point(246, 212);
+ this.labelOffset12.Name = "labelOffset12";
+ this.labelOffset12.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset12.TabIndex = 741;
+ this.labelOffset12.Text = "0x000A";
+ this.labelOffset12.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset12.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset12.Wordwrap = false;
+ //
+ // labelOffset11
+ //
+ this.labelOffset11.BackColor = System.Drawing.Color.Black;
+ this.labelOffset11.BackPictureBox = this.pictureBox1;
+ this.labelOffset11.BackPictureBox1 = null;
+ this.labelOffset11.BackPictureBox2 = null;
+ this.labelOffset11.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset11.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset11.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset11.ForeColor = System.Drawing.Color.White;
+ this.labelOffset11.InitVisible = true;
+ this.labelOffset11.LineSpacing = 0F;
+ this.labelOffset11.Location = new System.Drawing.Point(246, 186);
+ this.labelOffset11.Name = "labelOffset11";
+ this.labelOffset11.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset11.TabIndex = 740;
+ this.labelOffset11.Text = "0x000A";
+ this.labelOffset11.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset11.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset11.Wordwrap = false;
+ //
+ // labelOffset17
+ //
+ this.labelOffset17.BackColor = System.Drawing.Color.Black;
+ this.labelOffset17.BackPictureBox = this.pictureBox1;
+ this.labelOffset17.BackPictureBox1 = null;
+ this.labelOffset17.BackPictureBox2 = null;
+ this.labelOffset17.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset17.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset17.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset17.ForeColor = System.Drawing.Color.White;
+ this.labelOffset17.InitVisible = true;
+ this.labelOffset17.LineSpacing = 0F;
+ this.labelOffset17.Location = new System.Drawing.Point(470, 160);
+ this.labelOffset17.Name = "labelOffset17";
+ this.labelOffset17.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset17.TabIndex = 746;
+ this.labelOffset17.Text = "0x000A";
+ this.labelOffset17.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset17.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset17.Wordwrap = false;
+ //
+ // labelOffset16
+ //
+ this.labelOffset16.BackColor = System.Drawing.Color.Black;
+ this.labelOffset16.BackPictureBox = this.pictureBox1;
+ this.labelOffset16.BackPictureBox1 = null;
+ this.labelOffset16.BackPictureBox2 = null;
+ this.labelOffset16.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset16.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset16.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset16.ForeColor = System.Drawing.Color.White;
+ this.labelOffset16.InitVisible = true;
+ this.labelOffset16.LineSpacing = 0F;
+ this.labelOffset16.Location = new System.Drawing.Point(470, 134);
+ this.labelOffset16.Name = "labelOffset16";
+ this.labelOffset16.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset16.TabIndex = 745;
+ this.labelOffset16.Text = "0x000A";
+ this.labelOffset16.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset16.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset16.Wordwrap = false;
+ //
+ // labelOffset15
+ //
+ this.labelOffset15.BackColor = System.Drawing.Color.Black;
+ this.labelOffset15.BackPictureBox = this.pictureBox1;
+ this.labelOffset15.BackPictureBox1 = null;
+ this.labelOffset15.BackPictureBox2 = null;
+ this.labelOffset15.BorderColor = System.Drawing.Color.Black;
+ this.labelOffset15.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.labelOffset15.Font = new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular);
+ this.labelOffset15.ForeColor = System.Drawing.Color.White;
+ this.labelOffset15.InitVisible = true;
+ this.labelOffset15.LineSpacing = 0F;
+ this.labelOffset15.Location = new System.Drawing.Point(470, 108);
+ this.labelOffset15.Name = "labelOffset15";
+ this.labelOffset15.Size = new System.Drawing.Size(51, 21);
+ this.labelOffset15.TabIndex = 744;
+ this.labelOffset15.Text = "0x000A";
+ this.labelOffset15.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle;
+ this.labelOffset15.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle;
+ this.labelOffset15.Wordwrap = false;
+ //
+ // comboBoxPort
+ //
+ this.comboBoxPort.Font = new System.Drawing.Font("새굴림", 14F, System.Drawing.FontStyle.Bold);
+ this.comboBoxPort.Location = new System.Drawing.Point(220, 35);
+ this.comboBoxPort.Name = "comboBoxPort";
+ this.comboBoxPort.Size = new System.Drawing.Size(87, 28);
+ this.comboBoxPort.TabIndex = 747;
+ this.comboBoxPort.SelectedIndexChanged += new System.EventHandler(this.comboBoxPort_SelectedIndexChanged);
+ //
+ // ControlMainDisplayModbus
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(62)))), ((int)(((byte)(62)))), ((int)(((byte)(62)))));
+ this.Controls.Add(this.comboBoxPort);
+ this.Controls.Add(this.labelOffset17);
+ this.Controls.Add(this.labelOffset16);
+ this.Controls.Add(this.labelOffset15);
+ this.Controls.Add(this.labelOffset14);
+ this.Controls.Add(this.labelOffset13);
+ this.Controls.Add(this.labelOffset12);
+ this.Controls.Add(this.labelOffset11);
+ this.Controls.Add(this.labelOffset10);
+ this.Controls.Add(this.labelOffset9);
+ this.Controls.Add(this.labelOffset8);
+ this.Controls.Add(this.labelOffset7);
+ this.Controls.Add(this.labelOffset6);
+ this.Controls.Add(this.labelOffset5);
+ this.Controls.Add(this.labelOffset4);
+ this.Controls.Add(this.labelOffset3);
+ this.Controls.Add(this.labelOffset2);
+ this.Controls.Add(this.labelOffset1);
+ this.Controls.Add(this.labelStartAddress);
+ this.Controls.Add(this.buttonBypassDirection);
+ this.Controls.Add(this.labelReceiveCount);
+ this.Controls.Add(this.labelAlarmStatus);
+ this.Controls.Add(this.labelOperationStatus);
+ this.Controls.Add(this.labelWeight);
+ this.Controls.Add(this.labelGrade);
+ this.Controls.Add(this.labelTotalCount);
+ this.Controls.Add(this.labelExNGCount);
+ this.Controls.Add(this.labelNGCount);
+ this.Controls.Add(this.labelOverCount);
+ this.Controls.Add(this.labelPassCount);
+ this.Controls.Add(this.labelUnderCount);
+ this.Controls.Add(this.labelTare);
+ this.Controls.Add(this.labelOver);
+ this.Controls.Add(this.labelPass);
+ this.Controls.Add(this.labelUnder);
+ this.Controls.Add(this.labelCurrentNo);
+ this.Controls.Add(this.labelEquipmentID);
+ this.Controls.Add(this.labelUpdateFlag);
+ this.Controls.Add(this.pictureBox1);
+ this.Name = "ControlMainDisplayModbus";
+ this.Size = new System.Drawing.Size(710, 320);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.PictureBox pictureBox1;
+ public SmartX.SmartLabel labelUpdateFlag;
+ public SmartX.SmartLabel labelEquipmentID;
+ public SmartX.SmartLabel labelUnder;
+ public SmartX.SmartLabel labelCurrentNo;
+ public SmartX.SmartLabel labelOver;
+ public SmartX.SmartLabel labelPass;
+ public SmartX.SmartLabel labelTare;
+ public SmartX.SmartLabel labelGrade;
+ public SmartX.SmartLabel labelTotalCount;
+ public SmartX.SmartLabel labelExNGCount;
+ public SmartX.SmartLabel labelNGCount;
+ public SmartX.SmartLabel labelOverCount;
+ public SmartX.SmartLabel labelPassCount;
+ public SmartX.SmartLabel labelUnderCount;
+ public SmartX.SmartLabel labelAlarmStatus;
+ public SmartX.SmartLabel labelOperationStatus;
+ public SmartX.SmartLabel labelWeight;
+ public SmartX.SmartLabel labelReceiveCount;
+ private SmartX.SmartButton buttonBypassDirection;
+ public SmartX.SmartLabel labelStartAddress;
+ public SmartX.SmartLabel labelOffset1;
+ public SmartX.SmartLabel labelOffset2;
+ public SmartX.SmartLabel labelOffset3;
+ public SmartX.SmartLabel labelOffset4;
+ public SmartX.SmartLabel labelOffset5;
+ public SmartX.SmartLabel labelOffset6;
+ public SmartX.SmartLabel labelOffset7;
+ public SmartX.SmartLabel labelOffset8;
+ public SmartX.SmartLabel labelOffset9;
+ public SmartX.SmartLabel labelOffset10;
+ public SmartX.SmartLabel labelOffset14;
+ public SmartX.SmartLabel labelOffset13;
+ public SmartX.SmartLabel labelOffset12;
+ public SmartX.SmartLabel labelOffset11;
+ public SmartX.SmartLabel labelOffset17;
+ public SmartX.SmartLabel labelOffset16;
+ public SmartX.SmartLabel labelOffset15;
+ private System.Windows.Forms.ComboBox comboBoxPort;
+
+ }
+}
diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs
new file mode 100644
index 0000000..9f54cf4
--- /dev/null
+++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.cs
@@ -0,0 +1,313 @@
+using System;
+using System.Linq;
+using System.Collections.ObjectModel;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+
+using ITC81DB_0H.Forms;
+using ITC81DB_2H_ImageDll;
+using SmartX;
+
+namespace ITC81DB_0H.Controls
+{
+ public partial class ControlMainDisplayModbus : UserControl
+ {
+ #region Field
+ private FormMainDisplay m_ParentForm;
+ private UInt32 ReceiveCount;
+ private static int ModbusCount = 17;
+
+ private Collection CollectionOffset;
+ #endregion
+
+ #region Constructor
+ public ControlMainDisplayModbus(FormMainDisplay parent)
+ {
+ InitializeComponent();
+
+ this.ParentForm = parent;
+
+ this.InitializeDesign();
+ this.DefaultSetting();
+ }
+ #endregion
+
+ #region Property
+ public FormMainDisplay ParentForm
+ {
+ get { return this.m_ParentForm; }
+ private set { this.m_ParentForm = value; }
+ }
+ #endregion
+
+ #region Method
+ public void InitializeDesign()
+ {
+ Class1 images = new Class1();
+
+ if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.English)
+ {
+ this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.engMainModbusScreen));
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Chinese)
+ {
+ this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.chnMainModbusScreen));
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Czech)
+ {
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Russian)
+ {
+ this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.rusMainModbusScreen));
+ }
+ else if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.German)
+ {
+ this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.gerMainModbusScreen));
+ }
+ else
+ {
+ this.pictureBox1.Image = new Bitmap(images.GetImage(Class1.ButtonImages.korMainModbusScreen));
+ }
+ }
+ private void DefaultSetting()
+ {
+ this.CollectionOffset = new Collection();
+ this.CollectionOffset.Clear();
+ this.CollectionOffset.Add(this.labelOffset1);
+ this.CollectionOffset.Add(this.labelOffset2);
+ this.CollectionOffset.Add(this.labelOffset3);
+ this.CollectionOffset.Add(this.labelOffset4);
+ this.CollectionOffset.Add(this.labelOffset5);
+ this.CollectionOffset.Add(this.labelOffset6);
+ this.CollectionOffset.Add(this.labelOffset7);
+ this.CollectionOffset.Add(this.labelOffset8);
+ this.CollectionOffset.Add(this.labelOffset9);
+ this.CollectionOffset.Add(this.labelOffset10);
+ this.CollectionOffset.Add(this.labelOffset11);
+ this.CollectionOffset.Add(this.labelOffset12);
+ this.CollectionOffset.Add(this.labelOffset13);
+ this.CollectionOffset.Add(this.labelOffset14);
+ this.CollectionOffset.Add(this.labelOffset15);
+ this.CollectionOffset.Add(this.labelOffset16);
+ this.CollectionOffset.Add(this.labelOffset17);
+
+ this.buttonBypassDirection.ButtonUp();
+
+ this.ReceiveCount = 0;
+ this.labelReceiveCount.Text = this.ReceiveCount.ToString();
+
+ this.labelUpdateFlag.Text = "";
+ this.labelEquipmentID.Text = "";
+ this.labelCurrentNo.Text = "";
+
+ this.labelUnder.Text = "";
+ this.labelPass.Text = "";
+ this.labelOver.Text = "";
+ this.labelTare.Text = "";
+
+ this.labelUnderCount.Text = "";
+ this.labelPassCount.Text = "";
+ this.labelOverCount.Text = "";
+ this.labelNGCount.Text = "";
+ this.labelExNGCount.Text = "";
+ this.labelTotalCount.Text = "";
+
+ this.labelGrade.Text = "";
+ this.labelWeight.Text = "";
+ this.labelOperationStatus.Text = "";
+ this.labelAlarmStatus.Text = "";
+ }
+
+ public void UpdateEquipmentStatusDisplay(DataStore.EquipmentStatus status)
+ {
+
+ }
+ public void UpdateReceiveCount()
+ {
+ if (this.ReceiveCount > 999999999)
+ this.ReceiveCount = 0;
+ else
+ {
+ this.ReceiveCount++;
+ this.labelReceiveCount.Text = this.ReceiveCount.ToString();
+ }
+ }
+ public void UpdateData(_30000_ModbusData mData)
+ {
+ if (this.buttonBypassDirection.ButtonStatus == SmartX.SmartButton.BUTSTATUS.UP)
+ {
+ this.labelUpdateFlag.Text = mData.IsUpdate.ToString();
+ this.labelEquipmentID.Text = mData.EquipmentID.ToString();
+ this.labelCurrentNo.Text = mData.ProductNo.ToString();
+
+ if(mData.UnderValue.ToString().Contains('.') == false)
+ this.labelUnder.Text = Helper.StringToDecimalPlacesPlusZero(mData.UnderValue.ToString(), this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces);
+ else
+ this.labelUnder.Text = mData.UnderValue.ToString();
+ if (mData.PassValue.ToString().Contains('.') == false)
+ this.labelPass.Text = Helper.StringToDecimalPlacesPlusZero(mData.PassValue.ToString(), this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces);
+ else
+ this.labelPass.Text = mData.PassValue.ToString();
+ if (mData.OverValue.ToString().Contains('.') == false)
+ this.labelOver.Text = Helper.StringToDecimalPlacesPlusZero(mData.OverValue.ToString(), this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces);
+ else
+ this.labelOver.Text = mData.OverValue.ToString();
+ if (mData.TareValue.ToString().Contains('.') == false)
+ this.labelTare.Text = Helper.StringToDecimalPlacesPlusZero(mData.TareValue.ToString(), this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces);
+ else
+ this.labelTare.Text = mData.TareValue.ToString();
+
+ this.labelUnderCount.Text = mData.UnderCount.ToString();
+ this.labelPassCount.Text = mData.PassCount.ToString();
+ this.labelOverCount.Text = mData.OverCount.ToString();
+ this.labelNGCount.Text = mData.NGCount.ToString();
+ this.labelExNGCount.Text = mData.ExNGCount.ToString();
+ this.labelTotalCount.Text = mData.TotalCount.ToString();
+
+ this.labelGrade.Text = mData.Grade.ToString();
+ if (mData.Weight.ToString().Contains('.') == false)
+ this.labelWeight.Text = Helper.StringToDecimalPlacesPlusZero(mData.Weight.ToString(), this.ParentForm.ParentForm.SystemConfig1.DecimalPlaces);
+ else
+ this.labelWeight.Text = mData.Weight.ToString();
+ this.labelOperationStatus.Text = mData.OperationStatus.ToString();
+ this.labelAlarmStatus.Text = mData.AlarmStatus.ToString();
+ }
+ else
+ {
+ this.labelUpdateFlag.Text = mData.HexStringIsUpdate;
+ this.labelEquipmentID.Text = mData.HexStringEquipmentID;
+ this.labelCurrentNo.Text = mData.HexStringProductNo;
+
+ this.labelUnder.Text = mData.HexStringUnderValue;
+ this.labelPass.Text = mData.HexStringPassValue;
+ this.labelOver.Text = mData.HexStringOverValue;
+ this.labelTare.Text = mData.HexStringTareValue;
+
+ this.labelUnderCount.Text = mData.HexStringUnderCount;
+ this.labelPassCount.Text = mData.HexStringPassCount;
+ this.labelOverCount.Text = mData.HexStringOverCount;
+ this.labelNGCount.Text = mData.HexStringNGCount;
+ this.labelExNGCount.Text = mData.HexStringExNGCount;
+ this.labelTotalCount.Text = mData.HexStringTotalCount;
+
+ this.labelGrade.Text = mData.HexStringGrade;
+ this.labelWeight.Text = mData.HexStringWeight;
+ this.labelOperationStatus.Text = mData.HexStringOperationStatus;
+ this.labelAlarmStatus.Text = mData.HexStringAlarmStatus;
+ }
+ }
+ public void UpdateOffset(bool master, int startAddress)
+ {
+ if (master == true)
+ {
+ for (int i = 0; i < ModbusCount; i++)
+ {
+ this.CollectionOffset[i].Text = startAddress.ToString();
+ startAddress += 2;
+ }
+ }
+ else
+ {
+ int address = 10;
+ for (int i = 0; i < ModbusCount; i++)
+ {
+ this.CollectionOffset[i].Text = "0x" + address.ToString("X4");
+ address += 2;
+ }
+ }
+ }
+ public void UpdateDisplay(string portName)
+ {
+ switch (portName)
+ {
+ case "COM1":
+ if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ {
+ this.labelStartAddress.Text = "-";
+ this.UpdateOffset(false, this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1);
+ }
+ else
+ {
+ this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1.ToString();
+ this.UpdateOffset(true, this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM1);
+ }
+ break;
+ case "COM3":
+ if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ {
+ this.labelStartAddress.Text = "-";
+ this.UpdateOffset(false, this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3);
+ }
+ else
+ {
+ this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3.ToString();
+ this.UpdateOffset(true, this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM3);
+ }
+ break;
+ case "COM4":
+ if (this.ParentForm.ParentForm.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ {
+ this.labelStartAddress.Text = "-";
+ this.UpdateOffset(false, this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4);
+ }
+ else
+ {
+ this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4.ToString();
+ this.UpdateOffset(true, this.ParentForm.ParentForm.SystemConfig2.ModbusRTUStartAddressCOM4);
+ }
+ break;
+ case "TCP":
+ if (this.ParentForm.ParentForm.SystemConfig2.ModbusTCPSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ {
+ this.labelStartAddress.Text = "-";
+ this.UpdateOffset(false, this.ParentForm.ParentForm.SystemConfig2.ModbusTCPStartAddress);
+ }
+ else
+ {
+ this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusTCPStartAddress.ToString();
+ this.UpdateOffset(true, this.ParentForm.ParentForm.SystemConfig2.ModbusTCPStartAddress);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+
+ public void DisplayRefresh(SystemStatus status)
+ {
+ this.comboBoxPort.Items.Clear();
+ if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f16_OPC)
+ this.comboBoxPort.Items.Add("COM1");
+ if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM3Mode == (int)DataStore.SerialMode.f16_OPC)
+ this.comboBoxPort.Items.Add("COM3");
+ if (this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)DataStore.SerialMode.f22_Modbus_RTU
+ || this.ParentForm.ParentForm.SystemConfig1.SerialCOM4Mode == (int)DataStore.SerialMode.f16_OPC)
+ this.comboBoxPort.Items.Add("COM4");
+ if (this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)DataStore.EthernetMode.f22_Modbus_TCP
+ || this.ParentForm.ParentForm.SystemConfig2.EthernetCommMode == (int)DataStore.EthernetMode.f16_OPC)
+ this.comboBoxPort.Items.Add("TCP");
+ this.comboBoxPort.SelectedIndex = 0;
+
+ this.UpdateDisplay(this.comboBoxPort.SelectedItem.ToString());
+ this.UpdateData(this.ParentForm.ParentForm.Current30000ModbusData);
+ }
+ #endregion
+
+ #region Event Handler
+ private void buttonBypassDirection_Click(object sender, EventArgs e)
+ {
+ this.UpdateData(this.ParentForm.ParentForm.Current30000ModbusData);
+ }
+ private void comboBoxPort_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ this.UpdateDisplay(this.comboBoxPort.SelectedItem.ToString());
+ }
+ #endregion
+ }
+}
diff --git a/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.resx b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.resx
new file mode 100644
index 0000000..c52102f
--- /dev/null
+++ b/ITC81DB_0H/Controls/MainDisplay/ControlMainDisplayModbus.resx
@@ -0,0 +1,787 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+ QmCC
+
+
+
+
+ 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
+
+
+
+ WEBPAD
+
+
\ No newline at end of file
diff --git a/ITC81DB_0H/DataStore.cs b/ITC81DB_0H/DataStore.cs
index 339bb65..a62bf4d 100644
--- a/ITC81DB_0H/DataStore.cs
+++ b/ITC81DB_0H/DataStore.cs
@@ -5,6 +5,8 @@ using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
+using InModbus;
+
namespace ITC81DB_0H
{
public class DataStore
@@ -83,12 +85,13 @@ namespace ITC81DB_0H
public enum MainDisplayStore
{
//DisplayStop,
- DisplayStartBarGraph,
- DisplayStartLineGraph,
- DisplayStartList,
- DisplayStopDataStat,
- DisplayStartMenu,
- DisplayFeedback,
+ BarGraph,
+ LineGraph,
+ List,
+ DataStat,
+ SubMenu,
+ Feedback,
+ Modbus,
}
public enum MenuSide
@@ -385,6 +388,13 @@ namespace ITC81DB_0H
IN15_ExInputCheck,
IN16_DischargeSorterB,
}
+
+ public enum ModbusFunction
+ {
+ _04_ReadInputRegister,
+ _16_WriteMultipleRegister,
+ _03_ReadHoldingRegister,
+ }
#endregion
}
@@ -629,10 +639,8 @@ namespace ITC81DB_0H
// 자동영점 - 변량
public static readonly string AutoZeroVariate = "4044";
- // 자동영점 - 모드1 파라미터 읽기
- public static readonly string ParameterRead4901 = "4901";
- // 자동영점 - 모드2 파라미터 읽기
- public static readonly string ParameterRead4902 = "4902";
+ // 자동영점 - 파라미터 읽기
+ public static readonly string ParameterRead4907 = "4907";
// 판정설정 - 필터
public static readonly string Filter = "5001";
@@ -940,6 +948,995 @@ namespace ITC81DB_0H
}
#endregion
+ #region Modbus
+ public class _30000_ModbusAddress
+ {
+ public const int _01_IsUpdate_High = 10;
+ public const int _02_IsUpdate_Low = 11;
+ public const int _03_EquipmentID_High = 12;
+ public const int _04_EquipmentID_Low = 13;
+ public const int _05_ProductNo_High = 14;
+ public const int _06_ProductNo_Low = 15;
+ public const int _07_UnderValue_High = 16;
+ public const int _08_UnderValue_Low = 17;
+ public const int _09_PassValue_High = 18;
+ public const int _10_PassValue_Low = 19;
+ public const int _11_OverValue_High = 20;
+ public const int _12_OverValue_Low = 21;
+ public const int _13_TareValue_High = 22;
+ public const int _14_TareValue_Low = 23;
+ public const int _15_UnderCount_High = 24;
+ public const int _16_UnderCount_Low = 25;
+ public const int _17_PassCount_High = 26;
+ public const int _18_PassCount_Low = 27;
+ public const int _19_OverCount_High = 28;
+ public const int _20_OverCount_Low = 29;
+ public const int _21_NGCount_High = 30;
+ public const int _22_NGCount_Low = 31;
+ public const int _23_ExNGCount_High = 32;
+ public const int _24_ExNGCount_Low = 33;
+ public const int _25_TotalCount_High = 34;
+ public const int _26_TotalCount_Low = 35;
+ public const int _27_Grade_High = 36;
+ public const int _28_Grade_Low = 37;
+ public const int _29_Weight_High = 38;
+ public const int _30_Weight_Low = 39;
+ public const int _31_OperationStatus_High = 40;
+ public const int _32_OperationStatus_Low = 41;
+ public const int _33_AlarmStatus_High = 42;
+ public const int _34_AlarmStatus_Low = 43;
+
+ #region V7
+ //public const int _01_EquipmentID = 10;
+ //public const int _02_ProductNo = 11;
+ //public const int _03_UnderValue_High = 12;
+ //public const int _04_UnderValue_Low = 13;
+ //public const int _05_PassValue_High = 14;
+ //public const int _06_PassValue_Low = 15;
+ //public const int _07_OverValue_High = 16;
+ //public const int _08_OverValue_Low = 17;
+ //public const int _09_UnderCount_High = 18;
+ //public const int _10_UnderCount_Low = 19;
+ //public const int _11_PassCount_High = 20;
+ //public const int _12_PassCount_Low = 21;
+ //public const int _13_OverCount_High = 22;
+ //public const int _14_OverCount_Low = 23;
+ //public const int _15_NGCount_High = 24;
+ //public const int _16_NGCount_Low = 25;
+ //public const int _17_ExNGCount_High = 26;
+ //public const int _18_ExNGCount_Low = 27;
+ //public const int _19_TotalCount_High = 28;
+ //public const int _20_TotalCount_Low = 29;
+ //public const int _21_Grade = 30;
+ //public const int _22_Weight_High = 31;
+ //public const int _23_Weight_Low = 32;
+ //public const int _24_OperationStatus = 33;
+ #endregion
+ }
+ public class _30000_ModbusData
+ {
+ #region Field
+ private int m_IsUpdate;
+ private int m_EquipmentID;
+ private int m_ProductNo;
+ private double m_UnderValue;
+ private double m_PassValue;
+ private double m_OverValue;
+ private double m_TareValue;
+ private UInt32 m_UnderCount;
+ private UInt32 m_PassCount;
+ private UInt32 m_OverCount;
+ private UInt32 m_NGCount;
+ private UInt32 m_ExNGCount;
+ private UInt32 m_TotalCount;
+ private int m_Grade;
+ private double m_Weight;
+ private int m_OperationStatus;
+ private int m_AlarmStatus;
+ #endregion
+
+ #region Constructor
+ public _30000_ModbusData()
+ {
+ this.Initialization();
+ }
+ #endregion
+
+ #region Property
+ public int IsUpdate
+ {
+ get { return this.m_IsUpdate; }
+ set { this.m_IsUpdate = value; }
+ }
+ public int EquipmentID
+ {
+ get { return this.m_EquipmentID; }
+ set { this.m_EquipmentID = value; }
+ }
+ public int ProductNo
+ {
+ get { return this.m_ProductNo; }
+ set { this.m_ProductNo = value; }
+ }
+
+ public double UnderValue
+ {
+ get { return this.m_UnderValue; }
+ set { this.m_UnderValue = value; }
+ }
+ public double PassValue
+ {
+ get { return this.m_PassValue; }
+ set { this.m_PassValue = value; }
+ }
+ public double OverValue
+ {
+ get { return this.m_OverValue; }
+ set { this.m_OverValue = value; }
+ }
+ public double TareValue
+ {
+ get { return this.m_TareValue; }
+ set { this.m_TareValue = value; }
+ }
+
+ public UInt32 UnderCount
+ {
+ get { return this.m_UnderCount; }
+ set { this.m_UnderCount = value; }
+ }
+ public UInt32 PassCount
+ {
+ get { return this.m_PassCount; }
+ set { this.m_PassCount = value; }
+ }
+ public UInt32 OverCount
+ {
+ get { return this.m_OverCount; }
+ set { this.m_OverCount = value; }
+ }
+ public UInt32 NGCount
+ {
+ get { return this.m_NGCount; }
+ set { this.m_NGCount = value; }
+ }
+ public UInt32 ExNGCount
+ {
+ get { return this.m_ExNGCount; }
+ set { this.m_ExNGCount = value; }
+ }
+ public UInt32 TotalCount
+ {
+ get { return this.m_TotalCount; }
+ set { this.m_TotalCount = value; }
+ }
+
+ public int Grade
+ {
+ get { return this.m_Grade; }
+ set { this.m_Grade = value; }
+ }
+ public double Weight
+ {
+ get { return this.m_Weight; }
+ set { this.m_Weight = value; }
+ }
+ public int OperationStatus
+ {
+ get { return this.m_OperationStatus; }
+ set { this.m_OperationStatus = value; }
+ }
+ public int AlarmStatus
+ {
+ get { return this.m_AlarmStatus; }
+ set { this.m_AlarmStatus = value; }
+ }
+
+ public string HexStringIsUpdate
+ {
+ get
+ {
+ string hexString = this.IsUpdate.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringEquipmentID
+ {
+ get
+ {
+ string hexString = this.EquipmentID.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringProductNo
+ {
+ get
+ {
+ string hexString = this.ProductNo.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringUnderValue
+ {
+ get
+ {
+ byte[] bytes = BitConverter.GetBytes((float)this.UnderValue);
+ Array.Reverse(bytes);
+ string hexString = BitConverter.ToString(bytes);
+ hexString = hexString.Replace("-", "");
+
+ return hexString;
+ }
+ }
+ public string HexStringPassValue
+ {
+ get
+ {
+ byte[] bytes = BitConverter.GetBytes((float)this.PassValue);
+ Array.Reverse(bytes);
+ string hexString = BitConverter.ToString(bytes);
+ hexString = hexString.Replace("-", "");
+
+ return hexString;
+ }
+ }
+ public string HexStringOverValue
+ {
+ get
+ {
+ byte[] bytes = BitConverter.GetBytes((float)this.OverValue);
+ Array.Reverse(bytes);
+ string hexString = BitConverter.ToString(bytes);
+ hexString = hexString.Replace("-", "");
+
+ return hexString;
+ }
+ }
+ public string HexStringTareValue
+ {
+ get
+ {
+ byte[] bytes = BitConverter.GetBytes((float)this.TareValue);
+ Array.Reverse(bytes);
+ string hexString = BitConverter.ToString(bytes);
+ hexString = hexString.Replace("-", "");
+
+ return hexString;
+ }
+ }
+ public string HexStringUnderCount
+ {
+ get
+ {
+ string hexString = this.UnderCount.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringPassCount
+ {
+ get
+ {
+ string hexString = this.PassCount.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringOverCount
+ {
+ get
+ {
+ string hexString = this.OverCount.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringNGCount
+ {
+ get
+ {
+ string hexString = this.NGCount.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringExNGCount
+ {
+ get
+ {
+ string hexString = this.ExNGCount.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringTotalCount
+ {
+ get
+ {
+ string hexString = this.TotalCount.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringGrade
+ {
+ get
+ {
+ string hexString = this.Grade.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringWeight
+ {
+ get
+ {
+ byte[] bytes = BitConverter.GetBytes((float)this.Weight);
+ byte[] reverseBytes = new byte[bytes.Length];
+ for (int i = 0; i < bytes.Length; i++)
+ reverseBytes[bytes.Length - 1 - i] = bytes[i];
+ string hexString = BitConverter.ToString(reverseBytes);
+
+ hexString = hexString.Replace("-", "");
+
+ return hexString;
+ }
+ }
+ public string HexStringOperationStatus
+ {
+ get
+ {
+ string hexString = this.OperationStatus.ToString("X8");
+ return hexString;
+ }
+ }
+ public string HexStringAlarmStatus
+ {
+ get
+ {
+ string hexString = this.AlarmStatus.ToString("X8");
+ return hexString;
+ }
+ }
+
+ public byte[] _01_IsUpdate_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.IsUpdate);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _02_IsUpdate_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.IsUpdate);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _03_EquipmentID_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.EquipmentID);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _04_EquipmentID_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.EquipmentID);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _05_ProductNo_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.ProductNo);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _06_ProductNo_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.ProductNo);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _07_UnderValue_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.UnderValue);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _08_UnderValue_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.UnderValue);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _09_PassValue_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.PassValue);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _10_PassValue_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.PassValue);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _11_OverValue_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.OverValue);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _12_OverValue_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.OverValue);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _13_TareValue_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.TareValue);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _14_TareValue_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.TareValue);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _15_UnderCount_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _16_UnderCount_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _17_PassCount_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.PassCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _18_PassCount_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.PassCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _19_OverCount_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.OverCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _20_OverCount_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.OverCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _21_NGCount_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.NGCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _22_NGCount_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.NGCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _23_ExNGCount_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.ExNGCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _24_ExNGCount_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.ExNGCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _25_TotalCount_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.TotalCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _26_TotalCount_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.TotalCount);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _27_Grade_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.Grade);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _28_Grade_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.Grade);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _29_Weight_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.Weight);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _30_Weight_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes((Single)this.Weight);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _31_OperationStatus_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.OperationStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _32_OperationStatus_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.OperationStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _33_AlarmStatus_High
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.AlarmStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ }
+ public byte[] _34_AlarmStatus_Low
+ {
+ get
+ {
+ byte[] madeData = new byte[2];
+ byte[] Length4Value = new byte[4];
+
+ Length4Value = Modbus.GetBytes(this.AlarmStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[i] = Length4Value[1 - i];
+
+ return madeData;
+ }
+ }
+ #endregion
+
+ #region Method
+ public void Initialization()
+ {
+ this.IsUpdate = 0;
+ this.EquipmentID = 1;
+ this.ProductNo = 1;
+ this.UnderValue = 100.0;
+ this.PassValue = 200.0;
+ this.OverValue = 300.0;
+ this.TareValue = 0.0;
+ this.UnderCount = 0;
+ this.PassCount = 0;
+ this.OverCount = 0;
+ this.NGCount = 0;
+ this.ExNGCount = 0;
+ this.TotalCount = 0;
+ this.Grade = 5;
+ this.Weight = 0.0;
+ this.OperationStatus = 0;
+ this.AlarmStatus = 0;
+ }
+ #endregion
+ }
+
+ public class _40000_ModbusAddress
+ {
+ public const int _01_Clear = 10;
+ public const int _02_ClearResult = 11;
+ public const int _03_Operation = 12;
+ public const int _04_OperationResult = 13;
+ public const int _05_ProductChange_High = 14;
+ public const int _06_ProductChange_Low = 15;
+ public const int _07_ProductChangeResult = 16;
+ public const int _08_UnderRange_High = 17;
+ public const int _09_UnderRange_Low = 18;
+ public const int _10_UnderRangeResult = 19;
+ public const int _11_PassRange_High = 20;
+ public const int _12_PassRange_Low = 21;
+ public const int _13_PassRangeResult = 22;
+ public const int _14_OverRange_High = 23;
+ public const int _15_OverRange_Low = 24;
+ public const int _16_OverRangeResult = 25;
+ public const int _17_TareWeight_High = 26;
+ public const int _18_TareWeight_Low = 27;
+ public const int _19_TareWeightResult = 28;
+ }
+ public class _40000_ModbusData
+ {
+ #region Field
+ private int m_40011_Clear;
+ private int m_40012_ClearResult;
+ private int m_40013_Operation;
+ private int m_40014_OperationResult;
+ private int m_40015_ProductChange;
+ private int m_40017_ProductChangeResult;
+ private int m_40018_UnderRange;
+ private int m_40020_UnderRangeResult;
+ private int m_40021_PassRange;
+ private int m_40023_PassRangeResult;
+ private int m_40024_OverRange;
+ private int m_40026_OverRangeResult;
+ private int m_40027_TareWeight;
+ private int m_40029_TareWeightResult;
+ #endregion
+
+ #region Constructor
+ public _40000_ModbusData()
+ {
+ this.Initialization();
+ }
+ #endregion
+
+ #region Property
+ public int _40011_Clear
+ {
+ get { return this.m_40011_Clear; }
+ set { this.m_40011_Clear = value; }
+ }
+ public int _40012_ClearResult
+ {
+ get { return this.m_40012_ClearResult; }
+ set { this.m_40012_ClearResult = value; }
+ }
+ public int _40013_Operation
+ {
+ get { return this.m_40013_Operation; }
+ set { this.m_40013_Operation = value; }
+ }
+ public int _40014_OperationResult
+ {
+ get { return this.m_40014_OperationResult; }
+ set { this.m_40014_OperationResult = value; }
+ }
+ public int _40015_ProductChange
+ {
+ get { return this.m_40015_ProductChange; }
+ set { this.m_40015_ProductChange = value; }
+ }
+ public int _40017_ProductChangeResult
+ {
+ get { return this.m_40017_ProductChangeResult; }
+ set { this.m_40017_ProductChangeResult = value; }
+ }
+ public int _40018_UnderRange
+ {
+ get { return this.m_40018_UnderRange; }
+ set { this.m_40018_UnderRange = value; }
+ }
+ public int _40020_UnderRangeResult
+ {
+ get { return this.m_40020_UnderRangeResult; }
+ set { this.m_40020_UnderRangeResult = value; }
+ }
+ public int _40021_PassRange
+ {
+ get { return this.m_40021_PassRange; }
+ set { this.m_40021_PassRange = value; }
+ }
+ public int _40023_PassRangeResult
+ {
+ get { return this.m_40023_PassRangeResult; }
+ set { this.m_40023_PassRangeResult = value; }
+ }
+ public int _40024_OverRange
+ {
+ get { return this.m_40024_OverRange; }
+ set { this.m_40024_OverRange = value; }
+ }
+ public int _40026_OverRangeResult
+ {
+ get { return this.m_40026_OverRangeResult; }
+ set { this.m_40026_OverRangeResult = value; }
+ }
+ public int _40027_TareWeight
+ {
+ get { return this.m_40027_TareWeight; }
+ set { this.m_40027_TareWeight = value; }
+ }
+ public int _40029_TareWeightResult
+ {
+ get { return this.m_40029_TareWeightResult; }
+ set { this.m_40029_TareWeightResult = value; }
+ }
+ #endregion
+
+ #region Method
+ public void Initialization()
+ {
+ this._40011_Clear = 0;
+ this._40012_ClearResult = 0;
+ this._40013_Operation = 0;
+ this._40014_OperationResult = 0;
+ this._40015_ProductChange = 0;
+ this._40017_ProductChangeResult = 0;
+ this._40018_UnderRange = 0;
+ this._40020_UnderRangeResult = 0;
+ this._40021_PassRange = 0;
+ this._40023_PassRangeResult = 0;
+ this._40024_OverRange = 0;
+ this._40026_OverRangeResult = 0;
+ this._40027_TareWeight = 0;
+ this._40029_TareWeightResult = 0;
+ }
+ #endregion
+ }
+ #endregion
+
#region SystemConfigurationItem1
public class SystemConfigurationItem1
{
@@ -1294,6 +2291,8 @@ namespace ITC81DB_0H
private int m_BLDCTotalMotorNum;
+ private bool m_IsEthernetPingTimer;
+
private int m_HitachiRoomNumberEthernet;
private int m_MarkoprintLineNumberEthernet;
private bool m_IsMarkoprintDatePrintEthernet;
@@ -1308,6 +2307,8 @@ namespace ITC81DB_0H
private int m_EthernetLocalPort;
private int m_Barcode;
+ private int m_ModbusTCPSelectFunction;
+
private int m_ModbusRTUSelectFunction;
private int m_ModbusRTUSlaveIDCOM1;
private int m_ModbusRTUSlaveIDCOM3;
@@ -1316,6 +2317,11 @@ namespace ITC81DB_0H
private bool m_IsBypassDirectionPass;
private bool m_IsBypassOnce;
private bool m_IsCommunicationOption;
+
+ private int m_ModbusTCPStartAddress;
+ private int m_ModbusRTUStartAddressCOM1;
+ private int m_ModbusRTUStartAddressCOM3;
+ private int m_ModbusRTUStartAddressCOM4;
#endregion
#region Constructor
@@ -1525,6 +2531,12 @@ namespace ITC81DB_0H
set { this.m_FileNameExtension = value; }
}
+ public bool IsEthernetPingTimer
+ {
+ get { return this.m_IsEthernetPingTimer; }
+ set { this.m_IsEthernetPingTimer = value; }
+ }
+
public int BLDCTotalMotorNum
{
get { return this.m_BLDCTotalMotorNum; }
@@ -1606,6 +2618,12 @@ namespace ITC81DB_0H
set { this.m_Barcode = value; }
}
+ public int ModbusTCPSelectFunction
+ {
+ get { return this.m_ModbusTCPSelectFunction; }
+ set { this.m_ModbusTCPSelectFunction = value; }
+ }
+
public int ModbusRTUSelectFunction
{
get { return this.m_ModbusRTUSelectFunction; }
@@ -1642,6 +2660,27 @@ namespace ITC81DB_0H
get { return this.m_IsCommunicationOption; }
set { this.m_IsCommunicationOption = value; }
}
+
+ public int ModbusTCPStartAddress
+ {
+ get { return this.m_ModbusTCPStartAddress; }
+ set { this.m_ModbusTCPStartAddress = value; }
+ }
+ public int ModbusRTUStartAddressCOM1
+ {
+ get { return this.m_ModbusRTUStartAddressCOM1; }
+ set { this.m_ModbusRTUStartAddressCOM1 = value; }
+ }
+ public int ModbusRTUStartAddressCOM3
+ {
+ get { return this.m_ModbusRTUStartAddressCOM3; }
+ set { this.m_ModbusRTUStartAddressCOM3 = value; }
+ }
+ public int ModbusRTUStartAddressCOM4
+ {
+ get { return this.m_ModbusRTUStartAddressCOM4; }
+ set { this.m_ModbusRTUStartAddressCOM4 = value; }
+ }
#endregion
#region Method
@@ -1705,6 +2744,8 @@ namespace ITC81DB_0H
this.EthernetLocalPort = 0;
this.Barcode = 0;
+ this.ModbusTCPSelectFunction = 0;
+
this.ModbusRTUSelectFunction = 0;
this.ModbusRTUSlaveIDCOM1 = 1;
this.ModbusRTUSlaveIDCOM3 = 1;
@@ -1713,6 +2754,12 @@ namespace ITC81DB_0H
this.IsBypassDirectionPass = true;
this.IsBypassOnce = true;
this.IsCommunicationOption = false;
+
+ this.IsEthernetPingTimer = false;
+ this.ModbusTCPStartAddress = 10;
+ this.ModbusRTUStartAddressCOM1 = 10;
+ this.ModbusRTUStartAddressCOM3 = 10;
+ this.ModbusRTUStartAddressCOM4 = 10;
}
#endregion
}
@@ -1760,11 +2807,11 @@ namespace ITC81DB_0H
public int DummyInt2;
public int DummyInt3;
public int DummyInt4;
- public int DummyInt5;
- public int DummyInt6;
- public int DummyInt7;
- public int DummyInt8;
- public int DummyInt9;
+ public int ModbusTCPStartAddress;
+ public int ModbusRTUStartAddressCOM1;
+ public int ModbusRTUStartAddressCOM3;
+ public int ModbusRTUStartAddressCOM4;
+ public int ModbusTCPSelectFunction;
public int BLDCTotalMotorNum;
public int ModbusRTUSelectFunction;
public int ModbusRTUSlaveIDCOM1;
diff --git a/ITC81DB_0H/Forms/FormMain.Designer.cs b/ITC81DB_0H/Forms/FormMain.Designer.cs
index 5d965e9..797cdd3 100644
--- a/ITC81DB_0H/Forms/FormMain.Designer.cs
+++ b/ITC81DB_0H/Forms/FormMain.Designer.cs
@@ -40,12 +40,10 @@
this.smartSerialPort3 = new SmartX.SmartSerialPort();
this.smartThread = new SmartX.SmartThread(this.components);
this.smartTCPMultiServer = new SmartX.SmartTCPMultiServer();
- this.smartModbusSlave1 = new SmartX.SmartModbusSlave();
- this.smartModbusSlave3 = new SmartX.SmartModbusSlave();
- this.smartModbusSlave4 = new SmartX.SmartModbusSlave();
this.smartFileCheckLog = new SmartX.SmartFile();
this.timeOut = new System.Windows.Forms.Timer();
this.smartTimerUpdate = new SmartX.SmartTimer(this.components);
+ this.timerEthernetPing = new System.Windows.Forms.Timer();
((System.ComponentModel.ISupportInitialize)(this.smartForm)).BeginInit();
this.SuspendLayout();
//
@@ -92,6 +90,7 @@
this.smartSerialPort2.ReceiveFrameDebugMode = false;
this.smartSerialPort2.RS485SoftwareDetection = false;
this.smartSerialPort2.STXCode = ((byte)(2));
+ this.smartSerialPort2.STXCodes = null;
this.smartSerialPort2.TailErrorCodeOffset = 0;
this.smartSerialPort2.OnReadQueueEvent += new SmartX.SmartSerialPort.ReceiveDataHandler(this.smartSerialPort2_OnReadQueueEvent);
//
@@ -112,6 +111,7 @@
this.smartSerialPort1.ReceiveFrameDebugMode = false;
this.smartSerialPort1.RS485SoftwareDetection = false;
this.smartSerialPort1.STXCode = ((byte)(2));
+ this.smartSerialPort1.STXCodes = null;
this.smartSerialPort1.TailErrorCodeOffset = 0;
this.smartSerialPort1.OnReadQueueEvent += new SmartX.SmartSerialPort.ReceiveDataHandler(this.smartSerialPort1_OnReadQueueEvent);
//
@@ -132,6 +132,7 @@
this.smartSerialPort4.ReceiveFrameDebugMode = false;
this.smartSerialPort4.RS485SoftwareDetection = false;
this.smartSerialPort4.STXCode = ((byte)(2));
+ this.smartSerialPort4.STXCodes = null;
this.smartSerialPort4.TailErrorCodeOffset = 0;
this.smartSerialPort4.OnReadQueueEvent += new SmartX.SmartSerialPort.ReceiveDataHandler(this.smartSerialPort4_OnReadQueueEvent);
//
@@ -152,6 +153,7 @@
this.smartSerialPort3.ReceiveFrameDebugMode = false;
this.smartSerialPort3.RS485SoftwareDetection = false;
this.smartSerialPort3.STXCode = ((byte)(2));
+ this.smartSerialPort3.STXCodes = null;
this.smartSerialPort3.TailErrorCodeOffset = 0;
this.smartSerialPort3.OnReadQueueEvent += new SmartX.SmartSerialPort.ReceiveDataHandler(this.smartSerialPort3_OnReadQueueEvent);
//
@@ -169,36 +171,6 @@
this.smartTCPMultiServer.OnClientAdd += new SmartX.SmartTCPMultiServer.ClientAddHandler(this.smartTCPMultiServer_OnClientAdd);
this.smartTCPMultiServer.OnReceiveHandler += new SmartX.SmartTCPMultiServer.ReceiveHandler(this.smartTCPMultiServer_OnReceiveHandler);
//
- // smartModbusSlave1
- //
- this.smartModbusSlave1.Buad_Rate = SmartX.SmartModbusSlave.BUADRATE.CBR_9600;
- this.smartModbusSlave1.Parity = System.IO.Ports.Parity.None;
- this.smartModbusSlave1.PortNo = SmartX.SmartModbusSlave.COMPORTNO.COM1;
- this.smartModbusSlave1.ProtocolType = SmartX.SmartModbusSlave.PROTOCOL.RTU;
- this.smartModbusSlave1.SlaveAddress = 1;
- this.smartModbusSlave1.StopBits = System.IO.Ports.StopBits.One;
- this.smartModbusSlave1.OnReadHoldingRegisters += new SmartX.SmartModbusSlave.ReadHoldingRegisterHandler(this.smartModbusSlave1_OnReadHoldingRegisters);
- //
- // smartModbusSlave3
- //
- this.smartModbusSlave3.Buad_Rate = SmartX.SmartModbusSlave.BUADRATE.CBR_9600;
- this.smartModbusSlave3.Parity = System.IO.Ports.Parity.None;
- this.smartModbusSlave3.PortNo = SmartX.SmartModbusSlave.COMPORTNO.COM3;
- this.smartModbusSlave3.ProtocolType = SmartX.SmartModbusSlave.PROTOCOL.RTU;
- this.smartModbusSlave3.SlaveAddress = 1;
- this.smartModbusSlave3.StopBits = System.IO.Ports.StopBits.One;
- this.smartModbusSlave3.OnReadHoldingRegisters += new SmartX.SmartModbusSlave.ReadHoldingRegisterHandler(this.smartModbusSlave3_OnReadHoldingRegisters);
- //
- // smartModbusSlave4
- //
- this.smartModbusSlave4.Buad_Rate = SmartX.SmartModbusSlave.BUADRATE.CBR_9600;
- this.smartModbusSlave4.Parity = System.IO.Ports.Parity.None;
- this.smartModbusSlave4.PortNo = SmartX.SmartModbusSlave.COMPORTNO.COM4;
- this.smartModbusSlave4.ProtocolType = SmartX.SmartModbusSlave.PROTOCOL.RTU;
- this.smartModbusSlave4.SlaveAddress = 1;
- this.smartModbusSlave4.StopBits = System.IO.Ports.StopBits.One;
- this.smartModbusSlave4.OnReadHoldingRegisters += new SmartX.SmartModbusSlave.ReadHoldingRegisterHandler(this.smartModbusSlave4_OnReadHoldingRegisters);
- //
// smartFileCheckLog
//
this.smartFileCheckLog.FilePathName = null;
@@ -216,6 +188,11 @@
this.smartTimerUpdate.StartTime = ((long)(0));
this.smartTimerUpdate.Tick += new System.EventHandler(this.smartTimerUpdate_Tick);
//
+ // timerEthernetPing
+ //
+ this.timerEthernetPing.Interval = 3000;
+ this.timerEthernetPing.Tick += new System.EventHandler(this.timerEthernetPing_Tick);
+ //
// FormMain
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -243,12 +220,10 @@
private SmartX.SmartSerialPort smartSerialPort3;
public SmartX.SmartThread smartThread;
public SmartX.SmartTCPMultiServer smartTCPMultiServer;
- private SmartX.SmartModbusSlave smartModbusSlave1;
- private SmartX.SmartModbusSlave smartModbusSlave3;
- private SmartX.SmartModbusSlave smartModbusSlave4;
public SmartX.SmartFile smartFileCheckLog;
private System.Windows.Forms.Timer timeOut;
private SmartX.SmartTimer smartTimerUpdate;
+ private System.Windows.Forms.Timer timerEthernetPing;
}
}
diff --git a/ITC81DB_0H/Forms/FormMain.cs b/ITC81DB_0H/Forms/FormMain.cs
index f61a17f..37f3c33 100644
--- a/ITC81DB_0H/Forms/FormMain.cs
+++ b/ITC81DB_0H/Forms/FormMain.cs
@@ -13,6 +13,8 @@ using System.Windows.Forms;
using SmartX;
using ITC81DB_0H.DialogForms;
+using ITC81DB_0H.Controls;
+using InModbus;
namespace ITC81DB_0H.Forms
{
@@ -37,6 +39,9 @@ namespace ITC81DB_0H.Forms
public double OverloadWeight;
private int BLDCMotorIndex;
private static int BLDCMotorMaxNum = 10;
+ public bool IsAlarmOccured;
+ public int UpdateValue; // Modbus - Update 될 때마다 +1
+ public bool IsOPCModbusUsing;
#region 통신관련
// OPT2
@@ -134,6 +139,10 @@ namespace ITC81DB_0H.Forms
public UserGroup CurrentUserGroup;
// Bacode
public Barcode CurrentBarcode;
+ public Modbus Modbus;
+ // Modbus Data
+ public _30000_ModbusData Current30000ModbusData;
+ public _40000_ModbusData Current40000ModbusData;
// 품목설정 데이터
public Collection CollectionProductItem;
// 판정설정 데이터
@@ -153,6 +162,9 @@ namespace ITC81DB_0H.Forms
private int HMCOM4_Step;
private int HMEthernet_Step;
+ // OPC
+ private static int ModbusTotalBytes = 68; // 전체 bytes
+
// Ethernet
private bool IsEthernetThreadStop;
private bool IsEthernetTransferData;
@@ -282,6 +294,13 @@ namespace ITC81DB_0H.Forms
this.IsCurrentKeyKorean = false;
this.OverloadWeight = 700.00;
this.BLDCMotorIndex = 0;
+ this.IsAlarmOccured = false;
+ this.UpdateValue = 0;
+ this.IsOPCModbusUsing = false;
+
+ this.Modbus = new Modbus();
+ this.Current30000ModbusData = new _30000_ModbusData();
+ this.Current40000ModbusData = new _40000_ModbusData();
#region 통신관련
this.CurrentOPT2COM1 = new SerialOPT2();
@@ -455,6 +474,19 @@ namespace ITC81DB_0H.Forms
{
this.EthernetClientDisconnect();
}
+
+ if (this.SystemConfig2.EthernetCommMode != (int)DataStore.EthernetMode.f0_None)
+ {
+ switch (this.SystemConfig2.EthernetCommMode)
+ {
+ case (int)DataStore.EthernetMode.f16_OPC:
+ case (int)DataStore.EthernetMode.f22_Modbus_TCP:
+ this.ChildFormMainDisplay.MainBottomModbusIconAdd(true);
+ break;
+ default:
+ break;
+ }
+ }
}
private void CreateForm()
{
@@ -1140,6 +1172,43 @@ namespace ITC81DB_0H.Forms
}
}
+ private void UpdateScreen()
+ {
+ if (this.ChildFormMainDisplay.MainDisplayFeedback.IsUsingFeedback() == true)
+ {
+ this.UpdateFeedbackData(this.CurrentProductItem, this.CurrentSystemParameter2);
+ this.UpdateFeedbackDeviation(this.CurrentProductItem, this.CurrentSystemParameter2);
+ }
+
+ if (this.CurrentSystemStatus.CurrentDisplay == DataStore.DisplayStore.MainDisplay)
+ {
+ if (this.ChildFormMainDisplay != null)
+ this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData);
+
+ this.ChildFormMainDisplay.UpdateModbusScreen();
+ }
+ else if (this.CurrentSystemStatus.CurrentDisplay == DataStore.DisplayStore.SystemSorterSetting)
+ {
+ if (this.ChildFormMenu.CenterSystemSorterSetting != null)
+ this.ChildFormMenu.CenterSystemSorterSetting.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem);
+ }
+ else if (this.CurrentSystemStatus.CurrentDisplay == DataStore.DisplayStore.SystemJudgmentAuto)
+ {
+ this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
+
+ if (this.ChildFormMenu != null)
+ this.ChildFormMenu.UpdateEquipmentStatusDisplay(this.CurrentSystemStatus.Equipment);
+
+ this.ChildFormMenu.CenterSystemJudgmentManual.DisplayRefresh(this.CurrentSystemStatus);
+ this.ChildFormMenu.CenterSystemJudgmentManual.BringToFront();
+ }
+ else
+ {
+ if (this.ChildFormMenu.CenterSystemJudgmentManual != null)
+ this.ChildFormMenu.CenterSystemJudgmentManual.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem);
+ }
+ }
+
// 피드백 데이터(피드백 편차 변경 X)
public void UpdateFeedbackData(ProductItem item, SystemParameter2 parameter)
{
@@ -2074,7 +2143,6 @@ namespace ITC81DB_0H.Forms
this.ChildFormMainDisplay.DisplayRefresh(this.CurrentSystemStatus);
this.smartForm.Show((int)DataStore.FormStore.FormMainDisplay);
}
- this.ChildFormMainDisplay.CurrentBottomMenuControlEnable(DataStore.EquipmentStatus.Stop);
}
else
{
@@ -2397,13 +2465,18 @@ namespace ITC81DB_0H.Forms
}
#endregion
break;
- case "4004":
- if (response == DataStore.ResponseData.ACK)
- this.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterRead4901, "");
- break;
- case "4005":
- if (response == DataStore.ResponseData.ACK)
- this.TransferDataStream(CommunicationCommand.Read, CommunicationID.MainBoard, CommunicationAddress.ParameterRead4902, "");
+ case "4907":
+ #region Value Assign
+ this.CurrentSystemParameter4.MainAutoZeroIsAutoZeroUsing = bool.Parse(receiveData.Substring(0, 4).Trim());
+ this.CurrentSystemParameter4.MainAutoZeroPlusRange = receiveData.Substring(4, 7).Trim();
+ this.CurrentSystemParameter4.MainAutoZeroMinusRange = receiveData.Substring(11, 7).Trim();
+ this.CurrentSystemParameter4.MainAutoZeroVariate = receiveData.Substring(18, 4).Trim();
+ #endregion
+ if (this.CurrentSystemStatus.CurrentDisplay == DataStore.DisplayStore.SystemAutoZero)
+ {
+ if (this.ChildFormMenu.CenterSystemAutoZero != null)
+ this.ChildFormMenu.CenterSystemAutoZero.UpdateZeroParameterDisplay(this.CurrentSystemParameter4);
+ }
break;
case "9006":
if (response == DataStore.ResponseData.ACK)
@@ -5145,15 +5218,15 @@ namespace ITC81DB_0H.Forms
return sb.ToString();
}
- private byte[] Transfer_22_Modbus()
+ public byte[] Transfer_22_Modbus_Write()
{
- byte[] madeData = new byte[TotalBytes];
- byte[] Length2Value = new byte[2];
+ byte[] madeData = new byte[ModbusTotalBytes];
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);
+ double tareValue = Helper.StringToWeight(this.CurrentProductItem.TareRange, this.SystemConfig1.DecimalPlaces);
int equipmentStatus;
if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Start)
@@ -5161,6 +5234,12 @@ namespace ITC81DB_0H.Forms
else
equipmentStatus = 0;
+ int alarmStatus;
+ if (this.IsAlarmOccured == true)
+ alarmStatus = 1;
+ else
+ alarmStatus = 0;
+
int judgmentStatus;
switch (this.CurrentWeightData.JudgmentStatus)
{
@@ -5184,61 +5263,796 @@ namespace ITC81DB_0H.Forms
break;
}
- Length2Value = GetBytes(this.SystemConfig1.EquipmentID);
- for (int i = 0; i < 2; i++)
- madeData[i] = Length2Value[1 - i];
+ Length4Value = GetBytes(this.UpdateValue);
+ for (int i = 0; i < 4; i++)
+ madeData[i] = Length4Value[3 - i];
- Length2Value = GetBytes(this.SystemConfig1.ProductNumber);
- for (int i = 0; i < 2; i++)
- madeData[2 + i] = Length2Value[1 - i];
-
- Length4Value = GetBytes((Single)underValue);
+ Length4Value = GetBytes(this.SystemConfig1.EquipmentID);
for (int i = 0; i < 4; i++)
madeData[4 + i] = Length4Value[3 - i];
- Length4Value = GetBytes((Single)passValue);
+ Length4Value = GetBytes(this.SystemConfig1.ProductNumber);
for (int i = 0; i < 4; i++)
madeData[8 + i] = Length4Value[3 - i];
- Length4Value = GetBytes((Single)overValue);
+ Length4Value = GetBytes((Single)underValue);
for (int i = 0; i < 4; i++)
madeData[12 + i] = Length4Value[3 - i];
- Length4Value = GetBytes(this.CurrentWeightData.UnderCount);
+ Length4Value = GetBytes((Single)passValue);
for (int i = 0; i < 4; i++)
madeData[16 + i] = Length4Value[3 - i];
- Length4Value = GetBytes(this.CurrentWeightData.PassCount);
+ Length4Value = GetBytes((Single)overValue);
for (int i = 0; i < 4; i++)
madeData[20 + i] = Length4Value[3 - i];
- Length4Value = GetBytes(this.CurrentWeightData.OverCount);
+ Length4Value = GetBytes((Single)tareValue);
for (int i = 0; i < 4; i++)
madeData[24 + i] = Length4Value[3 - i];
- Length4Value = GetBytes(this.CurrentWeightData.OverCount + this.CurrentWeightData.UnderCount);
+ Length4Value = GetBytes(this.CurrentWeightData.UnderCount);
for (int i = 0; i < 4; i++)
madeData[28 + i] = Length4Value[3 - i];
- Length4Value = GetBytes(this.CurrentWeightData.ExNGCount);
+ Length4Value = GetBytes(this.CurrentWeightData.PassCount);
for (int i = 0; i < 4; i++)
madeData[32 + i] = Length4Value[3 - i];
- Length4Value = GetBytes(this.CurrentWeightData.TotalCount);
+ Length4Value = GetBytes(this.CurrentWeightData.OverCount);
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(this.CurrentWeightData.OverCount + this.CurrentWeightData.UnderCount);
+ for (int i = 0; i < 4; i++)
+ madeData[40 + i] = Length4Value[3 - i];
+
+ Length4Value = GetBytes(this.CurrentWeightData.ExNGCount);
+ for (int i = 0; i < 4; i++)
+ madeData[44 + i] = Length4Value[3 - i];
+
+ Length4Value = GetBytes(this.CurrentWeightData.TotalCount);
+ for (int i = 0; i < 4; i++)
+ madeData[48 + i] = Length4Value[3 - i];
+
+ Length4Value = GetBytes(judgmentStatus);
+ for (int i = 0; i < 4; i++)
+ madeData[52 + i] = Length4Value[3 - i];
Length4Value = GetBytes((Single)this.CurrentWeightData.Weight);
for (int i = 0; i < 4; i++)
- madeData[42 + i] = Length4Value[3 - i];
+ madeData[56 + i] = Length4Value[3 - i];
- Length2Value = GetBytes(equipmentStatus);
- for (int i = 0; i < 2; i++)
- madeData[46 + i] = Length2Value[1 - i];
+ Length4Value = GetBytes(equipmentStatus);
+ for (int i = 0; i < 4; i++)
+ madeData[60 + i] = Length4Value[3 - i];
+
+ Length4Value = GetBytes(alarmStatus);
+ for (int i = 0; i < 4; i++)
+ madeData[64 + i] = Length4Value[3 - i];
+
+ return madeData;
+ }
+ private byte[] Transfer_22_Modbus_Read_RTU(byte[] readByte)
+ {
+ byte[] startAddressByte = new byte[2] { readByte[2], readByte[3] };
+ byte[] numberOfRegisterByte = new byte[2] { readByte[4], readByte[5] };
+ int startAddressInt;
+ int numberOfRegisterInt;
+ int madeDataIndex = 0;
+ byte[] length2Value = new byte[2];
+ byte[] length4Value = new byte[4];
+
+ startAddressInt = Modbus.ToBigEndianAndInt(startAddressByte);
+ numberOfRegisterInt = Modbus.ToBigEndianAndInt(numberOfRegisterByte);
+
+ byte[] madeData = new byte[numberOfRegisterInt * 2];
+
+ if (readByte[1] == ModbusFunctionCode.FunctionCode_03)
+ {
+ #region Read Holding Register(0x03)
+ for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++)
+ {
+ switch (j)
+ {
+ #region Make data
+ case _40000_ModbusAddress._01_Clear:
+ length2Value = GetBytes(this.Current40000ModbusData._40011_Clear);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._02_ClearResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40012_ClearResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._03_Operation:
+ length2Value = GetBytes(this.Current40000ModbusData._40013_Operation);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._04_OperationResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40014_OperationResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._05_ProductChange_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40015_ProductChange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._06_ProductChange_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40015_ProductChange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._07_ProductChangeResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40017_ProductChangeResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._08_UnderRange_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40018_UnderRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._09_UnderRange_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40018_UnderRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._10_UnderRangeResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40020_UnderRangeResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._11_PassRange_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40021_PassRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._12_PassRange_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40021_PassRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._13_PassRangeResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40023_PassRangeResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._14_OverRange_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40024_OverRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._15_OverRange_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40024_OverRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._16_OverRangeResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40026_OverRangeResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._17_TareWeight_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40027_TareWeight);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._18_TareWeight_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40027_TareWeight);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._19_TareWeightResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40029_TareWeightResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ default:
+ break;
+ #endregion
+ }
+ madeDataIndex += 2;
+ }
+ #endregion
+ }
+ else if (readByte[1] == ModbusFunctionCode.FunctionCode_04)
+ {
+ #region Read Input Register(0x04)
+ double underValue = 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);
+ double tareValue = Helper.StringToWeight(this.CurrentProductItem.TareRange, this.SystemConfig1.DecimalPlaces);
+
+ int equipmentStatus;
+ if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Start)
+ equipmentStatus = 1;
+ else
+ equipmentStatus = 0;
+
+ int alarmStatus;
+ if (this.IsAlarmOccured == true)
+ alarmStatus = 1;
+ else
+ alarmStatus = 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;
+ }
+
+ for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++)
+ {
+ switch (j)
+ {
+ #region Make data
+ case _30000_ModbusAddress._01_IsUpdate_High:
+ length4Value = GetBytes(this.UpdateValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._02_IsUpdate_Low:
+ length4Value = GetBytes(this.UpdateValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._03_EquipmentID_High:
+ length4Value = GetBytes(this.SystemConfig1.EquipmentID);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._04_EquipmentID_Low:
+ length4Value = GetBytes(this.SystemConfig1.EquipmentID);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._05_ProductNo_High:
+ length4Value = GetBytes(this.SystemConfig1.ProductNumber);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._06_ProductNo_Low:
+ length4Value = GetBytes(this.SystemConfig1.ProductNumber);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._07_UnderValue_High:
+ length4Value = GetBytes((Single)underValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._08_UnderValue_Low:
+ length4Value = GetBytes((Single)underValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._09_PassValue_High:
+ length4Value = GetBytes((Single)passValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._10_PassValue_Low:
+ length4Value = GetBytes((Single)passValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._11_OverValue_High:
+ length4Value = GetBytes((Single)overValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._12_OverValue_Low:
+ length4Value = GetBytes((Single)overValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._13_TareValue_High:
+ length4Value = GetBytes((Single)tareValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._14_TareValue_Low:
+ length4Value = GetBytes((Single)tareValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._15_UnderCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._16_UnderCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._17_PassCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.PassCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._18_PassCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.PassCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._19_OverCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.OverCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._20_OverCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.OverCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._21_NGCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.OverCount + this.CurrentWeightData.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._22_NGCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.OverCount + this.CurrentWeightData.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._23_ExNGCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.ExNGCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._24_ExNGCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.ExNGCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._25_TotalCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.TotalCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._26_TotalCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.TotalCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._27_Grade_High:
+ length4Value = GetBytes(judgmentStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._28_Grade_Low:
+ length4Value = GetBytes(judgmentStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._29_Weight_High:
+ if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Stop)
+ length4Value = GetBytes((Single)0.0);
+ else
+ length4Value = GetBytes((Single)this.CurrentWeightData.Weight);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._30_Weight_Low:
+ if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Stop)
+ length4Value = GetBytes((Single)0.0);
+ else
+ length4Value = GetBytes((Single)this.CurrentWeightData.Weight);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._31_OperationStatus_High:
+ length4Value = GetBytes(equipmentStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._32_OperationStatus_Low:
+ length4Value = GetBytes(equipmentStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._33_AlarmStatus_High:
+ length4Value = GetBytes(alarmStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._34_AlarmStatus_Low:
+ length4Value = GetBytes(alarmStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ default:
+ break;
+ #endregion
+ }
+ madeDataIndex += 2;
+ }
+ #endregion
+ }
+
+ return madeData;
+ }
+ private byte[] Transfer_22_Modbus_Read_TCP(byte[] readByte)
+ {
+ byte[] startAddressByte = new byte[2] { readByte[8], readByte[9] };
+ byte[] numberOfRegisterByte = new byte[2] { readByte[10], readByte[11] };
+ int startAddressInt;
+ int numberOfRegisterInt;
+ int madeDataIndex = 0;
+ byte[] length2Value = new byte[2];
+ byte[] length4Value = new byte[4];
+
+ startAddressInt = Modbus.ToBigEndianAndInt(startAddressByte);
+ numberOfRegisterInt = Modbus.ToBigEndianAndInt(numberOfRegisterByte);
+
+ byte[] madeData = new byte[numberOfRegisterInt * 2];
+
+ if (readByte[7] == ModbusFunctionCode.FunctionCode_03)
+ {
+ #region Read Holding Register(0x03)
+ for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++)
+ {
+ switch (j)
+ {
+ #region Make data
+ case _40000_ModbusAddress._01_Clear:
+ length2Value = GetBytes(this.Current40000ModbusData._40011_Clear);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._02_ClearResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40012_ClearResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._03_Operation:
+ length2Value = GetBytes(this.Current40000ModbusData._40013_Operation);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._04_OperationResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40014_OperationResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._05_ProductChange_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40015_ProductChange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._06_ProductChange_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40015_ProductChange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._07_ProductChangeResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40017_ProductChangeResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._08_UnderRange_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40018_UnderRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._09_UnderRange_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40018_UnderRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._10_UnderRangeResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40020_UnderRangeResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._11_PassRange_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40021_PassRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._12_PassRange_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40021_PassRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._13_PassRangeResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40023_PassRangeResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._14_OverRange_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40024_OverRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._15_OverRange_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40024_OverRange);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._16_OverRangeResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40026_OverRangeResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ case _40000_ModbusAddress._17_TareWeight_High:
+ length4Value = GetBytes(this.Current40000ModbusData._40027_TareWeight);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _40000_ModbusAddress._18_TareWeight_Low:
+ length4Value = GetBytes(this.Current40000ModbusData._40027_TareWeight);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _40000_ModbusAddress._19_TareWeightResult:
+ length2Value = GetBytes(this.Current40000ModbusData._40029_TareWeightResult);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length2Value[1 - i];
+ break;
+ default:
+ break;
+ #endregion
+ }
+ madeDataIndex += 2;
+ }
+ #endregion
+ }
+ else if (readByte[7] == ModbusFunctionCode.FunctionCode_04)
+ {
+ #region Read Input Register(0x04)
+ double underValue = 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);
+ double tareValue = Helper.StringToWeight(this.CurrentProductItem.TareRange, this.SystemConfig1.DecimalPlaces);
+ double weight = this.CurrentWeightData.Weight;
+
+ int equipmentStatus;
+ if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Start)
+ equipmentStatus = 1;
+ else
+ equipmentStatus = 0;
+
+ int alarmStatus;
+ if (this.IsAlarmOccured == true)
+ alarmStatus = 1;
+ else
+ alarmStatus = 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;
+ }
+
+ for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++)
+ {
+ switch (j)
+ {
+ #region Make data
+ case _30000_ModbusAddress._01_IsUpdate_High:
+ length4Value = GetBytes(this.UpdateValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._02_IsUpdate_Low:
+ length4Value = GetBytes(this.UpdateValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._03_EquipmentID_High:
+ length4Value = GetBytes(this.SystemConfig1.EquipmentID);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._04_EquipmentID_Low:
+ length4Value = GetBytes(this.SystemConfig1.EquipmentID);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._05_ProductNo_High:
+ length4Value = GetBytes(this.SystemConfig1.ProductNumber);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._06_ProductNo_Low:
+ length4Value = GetBytes(this.SystemConfig1.ProductNumber);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._07_UnderValue_High:
+ length4Value = GetBytes((Single)underValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._08_UnderValue_Low:
+ length4Value = GetBytes((Single)underValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._09_PassValue_High:
+ length4Value = GetBytes((Single)passValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._10_PassValue_Low:
+ length4Value = GetBytes((Single)passValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._11_OverValue_High:
+ length4Value = GetBytes((Single)overValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._12_OverValue_Low:
+ length4Value = GetBytes((Single)overValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._13_TareValue_High:
+ length4Value = GetBytes((Single)tareValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._14_TareValue_Low:
+ length4Value = GetBytes((Single)tareValue);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._15_UnderCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._16_UnderCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._17_PassCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.PassCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._18_PassCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.PassCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._19_OverCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.OverCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._20_OverCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.OverCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._21_NGCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.OverCount + this.CurrentWeightData.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._22_NGCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.OverCount + this.CurrentWeightData.UnderCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._23_ExNGCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.ExNGCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._24_ExNGCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.ExNGCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._25_TotalCount_High:
+ length4Value = GetBytes(this.CurrentWeightData.TotalCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._26_TotalCount_Low:
+ length4Value = GetBytes(this.CurrentWeightData.TotalCount);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._27_Grade_High:
+ length4Value = GetBytes(judgmentStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._28_Grade_Low:
+ length4Value = GetBytes(judgmentStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._29_Weight_High:
+ if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Stop)
+ length4Value = GetBytes((Single)0.0);
+ else
+ length4Value = GetBytes((Single)this.CurrentWeightData.Weight);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._30_Weight_Low:
+ if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Stop)
+ length4Value = GetBytes((Single)0.0);
+ else
+ length4Value = GetBytes((Single)this.CurrentWeightData.Weight);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._31_OperationStatus_High:
+ length4Value = GetBytes(equipmentStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._32_OperationStatus_Low:
+ length4Value = GetBytes(equipmentStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ case _30000_ModbusAddress._33_AlarmStatus_High:
+ length4Value = GetBytes(alarmStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[3 - i];
+ break;
+ case _30000_ModbusAddress._34_AlarmStatus_Low:
+ length4Value = GetBytes(alarmStatus);
+ for (int i = 0; i < 2; i++)
+ madeData[madeDataIndex + i] = length4Value[1 - i];
+ break;
+ default:
+ break;
+ #endregion
+ }
+ madeDataIndex += 2;
+ }
+ #endregion
+ }
return madeData;
}
@@ -5936,6 +6750,14 @@ namespace ITC81DB_0H.Forms
this.smartSerialPort3.Open();
}
+ public void ChangeSerialCOM3ReceiveDetect(SmartSerialPort.RECEIVEDETECTTYPE detectType)
+ {
+ this.smartSerialPort3.ReceiveDetect = detectType;
+ }
+ public void ChangeSerialCOM3FrameBufferSize(uint size)
+ {
+ this.smartSerialPort3.FrameBufferSize = size;
+ }
#endregion
#region Serial COM4
public void OpenSerialCOM4()
@@ -6079,252 +6901,803 @@ namespace ITC81DB_0H.Forms
byte[] byteArray = BitConverter.GetBytes(argument);
return byteArray;
}
- #endregion
- #region Modbus Slave COM1
- public void OpenModbusSlaveCOM1()
+
+ ///
+ /// OPC, Modbus - 항목 업데이트 시마다 +1
+ ///
+ public void Update30000ModbusItem()
{
- if (this.SystemConfig1.SerialCOM1Mode == 0)
+ if (this.IsOPCModbusUsing == false)
return;
- this.CloseModbusCOM1();
- this.CloseModbusSlaveCOM1();
+ if (this.UpdateValue > 999999999)
+ this.UpdateValue = 0;
+ else
+ this.UpdateValue++;
- if (this.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f16_OPC)
+ this.Current30000ModbusData.IsUpdate = this.UpdateValue;
+ this.Current30000ModbusData.EquipmentID = this.SystemConfig1.EquipmentID;
+ this.Current30000ModbusData.ProductNo = this.SystemConfig1.ProductNumber;
+
+ this.Current30000ModbusData.UnderValue = Helper.StringToWeight(this.CurrentProductItem.UnderRange, this.SystemConfig1.DecimalPlaces);
+ this.Current30000ModbusData.PassValue = Helper.StringToWeight(this.CurrentProductItem.PassRange, this.SystemConfig1.DecimalPlaces);
+ this.Current30000ModbusData.OverValue = Helper.StringToWeight(this.CurrentProductItem.OverRange, this.SystemConfig1.DecimalPlaces);
+ this.Current30000ModbusData.TareValue = Helper.StringToWeight(this.CurrentProductItem.TareRange, this.SystemConfig1.DecimalPlaces);
+
+ this.Current30000ModbusData.UnderCount = (UInt32)this.CurrentWeightData.UnderCount;
+ this.Current30000ModbusData.PassCount = (UInt32)this.CurrentWeightData.PassCount;
+ this.Current30000ModbusData.OverCount = (UInt32)this.CurrentWeightData.OverCount;
+ this.Current30000ModbusData.NGCount = (UInt32)this.CurrentWeightData.UnderCount + (UInt32)this.CurrentWeightData.OverCount;
+ this.Current30000ModbusData.ExNGCount = (UInt32)this.CurrentWeightData.ExNGCount;
+ this.Current30000ModbusData.TotalCount = (UInt32)this.CurrentWeightData.TotalCount;
+
+ switch (this.CurrentWeightData.JudgmentStatus)
{
- this.smartModbusSlave1.SlaveAddress = 1;
- this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600;
- this.smartModbusSlave1.Start();
+ case DataStore.JudgmentStatus.Over:
+ this.Current30000ModbusData.Grade = 0;
+ break;
+ case DataStore.JudgmentStatus.Pass:
+ this.Current30000ModbusData.Grade = 1;
+ break;
+ case DataStore.JudgmentStatus.Under:
+ this.Current30000ModbusData.Grade = 2;
+ break;
+ case DataStore.JudgmentStatus.Metal:
+ this.Current30000ModbusData.Grade = 3;
+ break;
+ case DataStore.JudgmentStatus.Double:
+ this.Current30000ModbusData.Grade = 4;
+ break;
+ default:
+ this.Current30000ModbusData.Grade = 5;
+ break;
}
- else if (this.SystemConfig1.SerialCOM1Mode == (int)DataStore.SerialMode.f22_Modbus_RTU)
+
+ if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Start)
{
- this.smartModbusSlave1.SlaveAddress = this.SystemConfig2.ModbusRTUSlaveIDCOM1;
- switch (this.SystemConfig1.SerialCOM1BaudRate)
+ this.Current30000ModbusData.Weight = this.CurrentWeightData.Weight;
+ this.Current30000ModbusData.OperationStatus = 1;
+ }
+ else
+ {
+ this.Current30000ModbusData.Weight = 0.0;
+ this.Current30000ModbusData.OperationStatus = 0;
+ }
+
+ if (this.IsAlarmOccured == true)
+ this.Current30000ModbusData.AlarmStatus = 1;
+ else
+ this.Current30000ModbusData.AlarmStatus = 0;
+
+ this.ChildFormMainDisplay.MainDisplayModbus.UpdateData(this.Current30000ModbusData);
+ }
+ ///
+ /// Modbus RTU - Write Multiple Register에 대한 Manage 메소드
+ ///
+ /// 전송받은 Modbus Data
+ public void ReceiveModbusRTUWriteManager(byte[] readByte)
+ {
+ int startAddressInt;
+ int numberOfRegisterInt;
+ float floatNum;
+ byte[] startAddressByte = new byte[2] { readByte[2], readByte[3] };
+ byte[] numberOfRegisterByte = new byte[2] { readByte[4], readByte[5] };
+
+ int madeDataIndex = 0;
+ byte[] Length2Value = new byte[2];
+ byte[] Length4Value = new byte[4];
+ byte[] Length12Value = new byte[12];
+ byte[] Length14Value = new byte[14];
+
+ startAddressInt = Modbus.ToBigEndianAndInt(startAddressByte);
+ numberOfRegisterInt = Modbus.ToBigEndianAndInt(numberOfRegisterByte);
+
+ try
+ {
+ for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++)
{
- case 0:
- this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600;
+ switch (j)
+ {
+ #region Change data
+ case _40000_ModbusAddress._01_Clear:
+ #region 40011_소거 요청
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40011_Clear = Modbus.ToBigEndianAndInt(Length2Value);
+
+ if (this.Current40000ModbusData._40011_Clear == 1)
+ {
+ try
+ {
+ this.ChildFormMainDisplay.Clear();
+ this.Current40000ModbusData._40011_Clear = 0;
+
+ // 성공
+ this.Current40000ModbusData._40012_ClearResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40012_ClearResult = 2;
+ }
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._02_ClearResult:
+ #region 40012_소거 요청 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40012_ClearResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._03_Operation:
+ #region 40013_운전/정지 요청, 1:운전/2:정지
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40013_Operation = Modbus.ToBigEndianAndInt(Length2Value);
+
+ if (this.Current40000ModbusData._40013_Operation != 0)
+ {
+ try
+ {
+ if (this.Current40000ModbusData._40013_Operation == 1)
+ {
+ this.TransferData(CommunicationCommand.Start, CommunicationID.MainBoard);
+ }
+ else
+ {
+ this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
+ }
+
+ this.Current40000ModbusData._40013_Operation = 0;
+
+ // 성공
+ this.Current40000ModbusData._40014_OperationResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40014_OperationResult = 2;
+ }
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._04_OperationResult:
+ #region 40014_운전/정지 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40014_OperationResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._05_ProductChange_High:
+ #region 40015_품번 변경 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40015_ProductChange = Modbus.ToBigEndianAndInt(Length4Value);
+
+ if (this.Current40000ModbusData._40015_ProductChange != 0)
+ {
+ try
+ {
+ if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Stop)
+ {
+ if (this.Current40000ModbusData._40015_ProductChange >= 1
+ && this.Current40000ModbusData._40015_ProductChange <= 1000)
+ this.ChildFormMainDisplay.ChangeProductNumber(this.Current40000ModbusData._40015_ProductChange);
+
+ this.Current40000ModbusData._40015_ProductChange = 0;
+
+ // 성공
+ this.Current40000ModbusData._40017_ProductChangeResult = 1;
+ }
+ else
+ {
+ this.Current40000ModbusData._40015_ProductChange = 0;
+ this.Current40000ModbusData._40017_ProductChangeResult = 2;
+ }
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40017_ProductChangeResult = 2;
+ }
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._07_ProductChangeResult:
+ #region 40017_품번 변경 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40017_ProductChangeResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._08_UnderRange_High:
+ #region 40018_Under 중량설정 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[7 + madeDataIndex + i];
+ floatNum = Modbus.ToBigEndianAndFloat(Length4Value);
+ this.Current40000ModbusData._40018_UnderRange =
+ int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig1.DecimalPlaces).Replace(".", ""));
+
+ if (this.Current40000ModbusData._40018_UnderRange >= 0 && this.Current40000ModbusData._40018_UnderRange <= 99999)
+ {
+ try
+ {
+ this.CurrentProductItem.UnderRange = this.Current40000ModbusData._40018_UnderRange.ToString();
+
+ this.SaveProductFile(this.CurrentProductItem, this.SystemConfig1.ProductNumber - 1);
+ this.TransferCurrentProductItem(this.CurrentProductItem);
+
+ this.Update30000ModbusItem();
+ this.UpdateScreen();
+
+ // 초기값으로 설정해놓기
+ this.Current40000ModbusData._40018_UnderRange = 0;
+
+ // 성공
+ this.Current40000ModbusData._40020_UnderRangeResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40020_UnderRangeResult = 2;
+ }
+ }
+ else
+ {
+ // 실패
+ this.Current40000ModbusData._40020_UnderRangeResult = 2;
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._10_UnderRangeResult:
+ #region 40020_Under 중량설정 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40020_UnderRangeResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._11_PassRange_High:
+ #region 40021_Pass 중량설정 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[7 + madeDataIndex + i];
+ floatNum = Modbus.ToBigEndianAndFloat(Length4Value);
+ this.Current40000ModbusData._40021_PassRange =
+ int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig1.DecimalPlaces).Replace(".", ""));
+
+ if (this.Current40000ModbusData._40021_PassRange >= 0 && this.Current40000ModbusData._40021_PassRange <= 99999)
+ {
+ try
+ {
+ string value = "";
+ int digit = 0, temp = 0;
+ int oldUnderRangeDeviation = this.CurrentProductItem.UnderRangeDeviation;
+ int oldOverRangeDeviation = this.CurrentProductItem.OverRangeDeviation;
+
+ this.CurrentProductItem.PassRange = this.Current40000ModbusData._40021_PassRange.ToString();
+
+ #region UnderRange
+ temp = this.CurrentProductItem.PassRangeInt + oldUnderRangeDeviation;
+ if (temp < 0)
+ value = "0";
+ else
+ value = temp.ToString();
+
+ this.CurrentProductItem.UnderRange = value;
+ #endregion
+
+ #region OverRange
+ temp = this.CurrentProductItem.PassRangeInt + oldOverRangeDeviation;
+ if (temp > 99999)
+ value = "99999";
+ else
+ value = temp.ToString();
+
+ this.CurrentProductItem.OverRange = value;
+ #endregion
+
+ this.SaveProductFile(this.CurrentProductItem, this.SystemConfig1.ProductNumber - 1);
+ this.TransferCurrentProductItem(this.CurrentProductItem);
+
+ this.Update30000ModbusItem();
+ this.UpdateScreen();
+
+ // 초기값으로 설정해놓기
+ this.Current40000ModbusData._40021_PassRange = 0;
+
+ // 성공
+ this.Current40000ModbusData._40023_PassRangeResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40023_PassRangeResult = 2;
+ }
+ }
+ else
+ {
+ // 실패
+ this.Current40000ModbusData._40023_PassRangeResult = 2;
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._13_PassRangeResult:
+ #region 40023_Pass 중량설정 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40023_PassRangeResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._14_OverRange_High:
+ #region 40024_Over 중량설정 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[7 + madeDataIndex + i];
+ floatNum = Modbus.ToBigEndianAndFloat(Length4Value);
+ this.Current40000ModbusData._40024_OverRange =
+ int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig1.DecimalPlaces).Replace(".", ""));
+
+ if (this.Current40000ModbusData._40024_OverRange >= 0 && this.Current40000ModbusData._40024_OverRange <= 99999)
+ {
+ try
+ {
+ this.CurrentProductItem.OverRange = this.Current40000ModbusData._40024_OverRange.ToString();
+
+ this.SaveProductFile(this.CurrentProductItem, this.SystemConfig1.ProductNumber - 1);
+ this.TransferCurrentProductItem(this.CurrentProductItem);
+
+ this.Update30000ModbusItem();
+ this.UpdateScreen();
+
+ // 초기값으로 설정해놓기
+ this.Current40000ModbusData._40024_OverRange = 0;
+
+ // 성공
+ this.Current40000ModbusData._40026_OverRangeResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40026_OverRangeResult = 2;
+ }
+ }
+ else
+ {
+ // 실패
+ this.Current40000ModbusData._40026_OverRangeResult = 2;
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._16_OverRangeResult:
+ #region 40026_Over 중량설정 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40026_OverRangeResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._17_TareWeight_High:
+ #region 40027_Tare 중량설정 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[7 + madeDataIndex + i];
+ floatNum = Modbus.ToBigEndianAndFloat(Length4Value);
+ this.Current40000ModbusData._40027_TareWeight =
+ int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig1.DecimalPlaces).Replace(".", ""));
+
+ if (this.Current40000ModbusData._40027_TareWeight >= 0 && this.Current40000ModbusData._40027_TareWeight <= 99999)
+ {
+ try
+ {
+ this.CurrentProductItem.TareRange = this.Current40000ModbusData._40027_TareWeight.ToString();
+
+ this.SaveProductFile(this.CurrentProductItem, this.SystemConfig1.ProductNumber - 1);
+ this.TransferCurrentProductItem(this.CurrentProductItem);
+
+ this.Update30000ModbusItem();
+ this.UpdateScreen();
+
+ // 초기값으로 설정해놓기
+ this.Current40000ModbusData._40027_TareWeight = 0;
+
+ // 성공
+ this.Current40000ModbusData._40029_TareWeightResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40029_TareWeightResult = 2;
+ }
+ }
+ else
+ {
+ // 실패
+ this.Current40000ModbusData._40029_TareWeightResult = 2;
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._19_TareWeightResult:
+ #region 40029_Tare 중량설정 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[7 + madeDataIndex + i];
+ this.Current40000ModbusData._40029_TareWeightResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ default:
+ break;
+ #endregion
+ }
+ madeDataIndex += 2;
+ }
+ }
+ catch
+ {
+
+ }
+ }
+ ///
+ /// Modbus TCP - Write Multiple Register에 대한 Manage 메소드
+ ///
+ /// 전송받은 Modbus Data
+ public void ReceiveModbusTCPWriteManager(byte[] readByte)
+ {
+ int startAddressInt;
+ int numberOfRegisterInt;
+ float floatNum;
+ byte[] startAddressByte = new byte[2] { readByte[8], readByte[9] };
+ byte[] numberOfRegisterByte = new byte[2] { readByte[10], readByte[11] };
+
+ int madeDataIndex = 0;
+ byte[] Length2Value = new byte[2];
+ byte[] Length4Value = new byte[4];
+ byte[] Length12Value = new byte[12];
+ byte[] Length14Value = new byte[14];
+
+ startAddressInt = Modbus.ToBigEndianAndInt(startAddressByte);
+ numberOfRegisterInt = Modbus.ToBigEndianAndInt(numberOfRegisterByte);
+
+ for (int j = startAddressInt; j < startAddressInt + numberOfRegisterInt; j++)
+ {
+ switch (j)
+ {
+ #region Change data
+ case _40000_ModbusAddress._01_Clear:
+ #region 40011_소거 요청
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40011_Clear = Modbus.ToBigEndianAndInt(Length2Value);
+
+ if (this.Current40000ModbusData._40011_Clear == 1)
+ {
+ try
+ {
+ this.ChildFormMainDisplay.Clear();
+ this.Current40000ModbusData._40011_Clear = 0;
+
+ // 성공
+ this.Current40000ModbusData._40012_ClearResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40012_ClearResult = 2;
+ }
+ }
+ #endregion
break;
- case 1:
- this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_19200;
+ case _40000_ModbusAddress._02_ClearResult:
+ #region 40012_소거 요청 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40012_ClearResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
break;
- case 2:
- this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_38400;
+ case _40000_ModbusAddress._03_Operation:
+ #region 40013_운전/정지 요청, 1:운전/2:정지
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40013_Operation = Modbus.ToBigEndianAndInt(Length2Value);
+
+ if (this.Current40000ModbusData._40013_Operation != 0)
+ {
+ try
+ {
+ if (this.Current40000ModbusData._40013_Operation == 1)
+ {
+ this.TransferData(CommunicationCommand.Start, CommunicationID.MainBoard);
+ }
+ else
+ {
+ this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard);
+ }
+
+ this.Current40000ModbusData._40013_Operation = 0;
+
+ // 성공
+ this.Current40000ModbusData._40014_OperationResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40014_OperationResult = 2;
+ }
+ }
+ #endregion
break;
- case 3:
- this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_57600;
+ case _40000_ModbusAddress._04_OperationResult:
+ #region 40014_운전/정지 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40014_OperationResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
break;
- case 4:
- this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_115200;
+ case _40000_ModbusAddress._05_ProductChange_High:
+ #region 40015_품번 변경 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40015_ProductChange = Modbus.ToBigEndianAndInt(Length4Value);
+
+ if (this.Current40000ModbusData._40015_ProductChange != 0)
+ {
+ try
+ {
+ if (this.CurrentSystemStatus.Equipment == DataStore.EquipmentStatus.Stop)
+ {
+ if (this.Current40000ModbusData._40015_ProductChange >= 1
+ && this.Current40000ModbusData._40015_ProductChange <= 1000)
+ this.ChildFormMainDisplay.ChangeProductNumber(this.Current40000ModbusData._40015_ProductChange);
+
+ this.Current40000ModbusData._40015_ProductChange = 0;
+
+ // 성공
+ this.Current40000ModbusData._40017_ProductChangeResult = 1;
+ }
+ else
+ {
+ this.Current40000ModbusData._40015_ProductChange = 0;
+ this.Current40000ModbusData._40017_ProductChangeResult = 2;
+ }
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40017_ProductChangeResult = 2;
+ }
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._07_ProductChangeResult:
+ #region 40017_품번 변경 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40017_ProductChangeResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._08_UnderRange_High:
+ #region 40018_Under 중량설정 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[13 + madeDataIndex + i];
+ floatNum = Modbus.ToBigEndianAndFloat(Length4Value);
+ this.Current40000ModbusData._40018_UnderRange =
+ int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig1.DecimalPlaces).Replace(".", ""));
+
+ if (this.Current40000ModbusData._40018_UnderRange >= 0 && this.Current40000ModbusData._40018_UnderRange <= 99999)
+ {
+ try
+ {
+ this.CurrentProductItem.UnderRange = this.Current40000ModbusData._40018_UnderRange.ToString();
+
+ this.SaveProductFile(this.CurrentProductItem, this.SystemConfig1.ProductNumber - 1);
+ this.TransferCurrentProductItem(this.CurrentProductItem);
+
+ this.Update30000ModbusItem();
+ this.UpdateScreen();
+
+ // 초기값으로 설정해놓기
+ this.Current40000ModbusData._40018_UnderRange = 0;
+
+ // 성공
+ this.Current40000ModbusData._40020_UnderRangeResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40020_UnderRangeResult = 2;
+ }
+ }
+ else
+ {
+ // 실패
+ this.Current40000ModbusData._40020_UnderRangeResult = 2;
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._10_UnderRangeResult:
+ #region 40020_Under 중량설정 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40020_UnderRangeResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._11_PassRange_High:
+ #region 40021_Pass 중량설정 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[13 + madeDataIndex + i];
+ floatNum = Modbus.ToBigEndianAndFloat(Length4Value);
+ this.Current40000ModbusData._40021_PassRange =
+ int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig1.DecimalPlaces).Replace(".", ""));
+
+ if (this.Current40000ModbusData._40021_PassRange >= 0 && this.Current40000ModbusData._40021_PassRange <= 99999)
+ {
+ try
+ {
+ string value = "";
+ int digit = 0, temp = 0;
+ int oldUnderRangeDeviation = this.CurrentProductItem.UnderRangeDeviation;
+ int oldOverRangeDeviation = this.CurrentProductItem.OverRangeDeviation;
+
+ this.CurrentProductItem.PassRange = this.Current40000ModbusData._40021_PassRange.ToString();
+
+ #region UnderRange
+ temp = this.CurrentProductItem.PassRangeInt + oldUnderRangeDeviation;
+ if (temp < 0)
+ value = "0";
+ else
+ value = temp.ToString();
+
+ this.CurrentProductItem.UnderRange = value;
+ #endregion
+
+ #region OverRange
+ temp = this.CurrentProductItem.PassRangeInt + oldOverRangeDeviation;
+ if (temp > 99999)
+ value = "99999";
+ else
+ value = temp.ToString();
+
+ this.CurrentProductItem.OverRange = value;
+ #endregion
+
+ this.SaveProductFile(this.CurrentProductItem, this.SystemConfig1.ProductNumber - 1);
+ this.TransferCurrentProductItem(this.CurrentProductItem);
+
+ this.Update30000ModbusItem();
+ this.UpdateScreen();
+
+ // 초기값으로 설정해놓기
+ this.Current40000ModbusData._40021_PassRange = 0;
+
+ // 성공
+ this.Current40000ModbusData._40023_PassRangeResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40023_PassRangeResult = 2;
+ }
+ }
+ else
+ {
+ // 실패
+ this.Current40000ModbusData._40023_PassRangeResult = 2;
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._13_PassRangeResult:
+ #region 40023_Pass 중량설정 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40023_PassRangeResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._14_OverRange_High:
+ #region 40024_Over 중량설정 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[13 + madeDataIndex + i];
+ floatNum = Modbus.ToBigEndianAndFloat(Length4Value);
+ this.Current40000ModbusData._40024_OverRange =
+ int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig1.DecimalPlaces).Replace(".", ""));
+
+ if (this.Current40000ModbusData._40024_OverRange >= 0 && this.Current40000ModbusData._40024_OverRange <= 99999)
+ {
+ try
+ {
+ this.CurrentProductItem.OverRange = this.Current40000ModbusData._40024_OverRange.ToString();
+
+ this.SaveProductFile(this.CurrentProductItem, this.SystemConfig1.ProductNumber - 1);
+ this.TransferCurrentProductItem(this.CurrentProductItem);
+
+ this.Update30000ModbusItem();
+ this.UpdateScreen();
+
+ // 초기값으로 설정해놓기
+ this.Current40000ModbusData._40024_OverRange = 0;
+
+ // 성공
+ this.Current40000ModbusData._40026_OverRangeResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40026_OverRangeResult = 2;
+ }
+ }
+ else
+ {
+ // 실패
+ this.Current40000ModbusData._40026_OverRangeResult = 2;
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._16_OverRangeResult:
+ #region 40026_Over 중량설정 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40026_OverRangeResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
+ break;
+ case _40000_ModbusAddress._17_TareWeight_High:
+ #region 40027_Tare 중량설정 요청
+ for (int i = 0; i < 4; i++)
+ Length4Value[i] = readByte[13 + madeDataIndex + i];
+ floatNum = Modbus.ToBigEndianAndFloat(Length4Value);
+ this.Current40000ModbusData._40027_TareWeight =
+ int.Parse(Helper.DoubleToString((double)floatNum, this.SystemConfig1.DecimalPlaces).Replace(".", ""));
+
+ if (this.Current40000ModbusData._40027_TareWeight >= 0 && this.Current40000ModbusData._40027_TareWeight <= 99999)
+ {
+ try
+ {
+ this.CurrentProductItem.TareRange = this.Current40000ModbusData._40027_TareWeight.ToString();
+
+ this.SaveProductFile(this.CurrentProductItem, this.SystemConfig1.ProductNumber - 1);
+ this.TransferCurrentProductItem(this.CurrentProductItem);
+
+ this.Update30000ModbusItem();
+ this.UpdateScreen();
+
+ // 초기값으로 설정해놓기
+ this.Current40000ModbusData._40027_TareWeight = 0;
+
+ // 성공
+ this.Current40000ModbusData._40029_TareWeightResult = 1;
+ }
+ catch
+ {
+ // 실패
+ this.Current40000ModbusData._40029_TareWeightResult = 2;
+ }
+ }
+ else
+ {
+ // 실패
+ this.Current40000ModbusData._40029_TareWeightResult = 2;
+ }
+ #endregion
+ break;
+ case _40000_ModbusAddress._19_TareWeightResult:
+ #region 40029_Tare 중량설정 요청 수행 결과
+ for (int i = 0; i < 2; i++)
+ Length2Value[i] = readByte[13 + madeDataIndex + i];
+ this.Current40000ModbusData._40029_TareWeightResult = Modbus.ToBigEndianAndInt(Length2Value);
+ #endregion
break;
default:
- this.smartModbusSlave1.Buad_Rate = SmartModbusSlave.BUADRATE.CBR_9600;
break;
+ #endregion
}
-
- this.smartModbusSlave1.Start();
+ madeDataIndex += 2;
}
}
- 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;
-
- this.CloseModbusCOM3();
- this.CloseModbusSlaveCOM3();
-
- 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;
-
- this.CloseModbusCOM4();
- this.CloseModbusSlaveCOM4();
-
- 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
- public void OpenModbusCOM1()
- {
- if (this.SystemConfig1.SerialCOM1Mode == 0)
- return;
-
- if (this.SystemConfig1.SerialCOM1Mode == 16)
- {
- this.CloseModbusCOM1();
- this.smartModbusSlave1.Start();
- }
- }
- public void CloseModbusCOM1()
- {
- if (this.smartModbusSlave1.IsOpen == true)
- this.smartModbusSlave1.End();
- }
- #endregion
- #region Modbus COM3
- public void OpenModbusCOM3()
- {
- if (this.SystemConfig1.SerialCOM3Mode == 0)
- return;
-
- if (this.SystemConfig1.SerialCOM3Mode == 16)
- {
- this.CloseModbusCOM3();
- this.smartModbusSlave3.Start();
- }
- }
- public void CloseModbusCOM3()
- {
- if (this.smartModbusSlave3.IsOpen == true)
- this.smartModbusSlave3.End();
- }
- #endregion
- #region Modbus COM4
- public void OpenModbusCOM4()
- {
- if (this.SystemConfig1.SerialCOM4Mode == 0)
- return;
-
- if (this.SystemConfig1.SerialCOM4Mode == 16)
- {
- this.CloseModbusCOM4();
- this.smartModbusSlave4.Start();
- }
- }
- public void CloseModbusCOM4()
- {
- if (this.smartModbusSlave4.IsOpen == true)
- this.smartModbusSlave4.End();
- }
#endregion
#region Ethernet
- //private string EthernetWeightDataFormat(SystemConfigurationItem1 system, WeightData weight, ProductItem product)
- //{
- // StringBuilder sb = new StringBuilder();
-
- // 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, system.DecimalPlaces)));
- // sb.Append(Helper.StringZeroFillDigits6(Helper.StringToDecimalPlaces(product.PassRange, system.DecimalPlaces)));
- // sb.Append(Helper.StringZeroFillDigits6(Helper.StringToDecimalPlaces(product.OverRange, system.DecimalPlaces)));
-
- // 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;
- // }
-
- // sb.Append(Helper.StringZeroFillDigits6(Helper.DoubleToString(weight.Weight, system.DecimalPlaces)));
- // sb.Append((char)0x03);
-
- // return sb.ToString();
- //}
+ public void IsUsingTimerEthernetPing(bool bValue)
+ {
+ if (this.SystemConfig2.IsEthernetPingTimer == true)
+ {
+ this.timerEthernetPing.Enabled = bValue;
+ }
+ else
+ this.timerEthernetPing.Enabled = false;
+ }
#region Client
public void EthernetClientConnect()
@@ -6350,6 +7723,8 @@ namespace ITC81DB_0H.Forms
cpClientThread.IsBackground = true;
cpClientThread.Start();
+
+ this.IsUsingTimerEthernetPing(true);
}
catch
{
@@ -6358,6 +7733,8 @@ namespace ITC81DB_0H.Forms
}
public void EthernetClientDisconnect()
{
+ this.IsUsingTimerEthernetPing(false);
+
this.IsEthernetThreadStop = true;
this.DelegateUISeverStatus(false);
if (null != this.EthernetStmReader)
@@ -6549,6 +7926,7 @@ namespace ITC81DB_0H.Forms
{
if (this.smartTCPMultiServer.IsStart == false)
{
+ this.IsUsingTimerEthernetPing(true);
this.ChildFormMenu.CenterConfiEthernet.DisplayLabelLocalPort(false);
this.smartTCPMultiServer.Port = this.SystemConfig2.EthernetLocalPort;
this.smartTCPMultiServer.Start();
@@ -6558,6 +7936,7 @@ namespace ITC81DB_0H.Forms
{
if (this.smartTCPMultiServer.IsStart == true)
{
+ this.IsUsingTimerEthernetPing(false);
this.ChildFormMenu.CenterConfiEthernet.DisplayLabelLocalPort(true);
this.smartTCPMultiServer.Stop();
}
@@ -7091,11 +8470,11 @@ namespace ITC81DB_0H.Forms
structItem.DummyInt2 = 0;
structItem.DummyInt3 = 0;
structItem.DummyInt4 = 0;
- structItem.DummyInt5 = 0;
- structItem.DummyInt6 = 0;
- structItem.DummyInt7 = 0;
- structItem.DummyInt8 = 0;
- structItem.DummyInt9 = 0;
+ structItem.ModbusTCPStartAddress = 0;
+ structItem.ModbusRTUStartAddressCOM1 = 0;
+ structItem.ModbusRTUStartAddressCOM3 = 0;
+ structItem.ModbusRTUStartAddressCOM4 = 0;
+ structItem.ModbusTCPSelectFunction = this.SystemConfig2.ModbusTCPSelectFunction;
structItem.BLDCTotalMotorNum = this.SystemConfig2.BLDCTotalMotorNum;
structItem.ModbusRTUSelectFunction = this.SystemConfig2.ModbusRTUSelectFunction;
structItem.ModbusRTUSlaveIDCOM1 = this.SystemConfig2.ModbusRTUSlaveIDCOM1;
@@ -7196,11 +8575,11 @@ namespace ITC81DB_0H.Forms
structItem.DummyInt2 = 0;
structItem.DummyInt3 = 0;
structItem.DummyInt4 = 0;
- structItem.DummyInt5 = 0;
- structItem.DummyInt6 = 0;
- structItem.DummyInt7 = 0;
- structItem.DummyInt8 = 0;
- structItem.DummyInt9 = 0;
+ structItem.ModbusTCPStartAddress = 0;
+ structItem.ModbusRTUStartAddressCOM1 = 0;
+ structItem.ModbusRTUStartAddressCOM3 = 0;
+ structItem.ModbusRTUStartAddressCOM4 = 0;
+ structItem.ModbusTCPSelectFunction = item.ModbusTCPSelectFunction;
structItem.BLDCTotalMotorNum = item.BLDCTotalMotorNum;
structItem.ModbusRTUSelectFunction = item.ModbusRTUSelectFunction;
structItem.ModbusRTUSlaveIDCOM1 = item.ModbusRTUSlaveIDCOM1;
@@ -7322,6 +8701,8 @@ namespace ITC81DB_0H.Forms
this.SystemConfig2.IsBypassDirectionPass = structItem.IsBypassDirectionPass;
this.SystemConfig2.IsCommunicationOption = structItem.IsCommunicationOption;
+ this.SystemConfig2.ModbusTCPSelectFunction = structItem.ModbusTCPSelectFunction;
+
this.SystemConfig2.ModbusRTUSelectFunction = structItem.ModbusRTUSelectFunction;
this.SystemConfig2.ModbusRTUSlaveIDCOM1 = structItem.ModbusRTUSlaveIDCOM1;
this.SystemConfig2.ModbusRTUSlaveIDCOM3 = structItem.ModbusRTUSlaveIDCOM3;
@@ -7915,8 +9296,8 @@ namespace ITC81DB_0H.Forms
this.LoadSystemParameter4File(ref sItem);
sb.Append(Helper.StringZeroFillDigits4(sItem.LCDAutoZeroIsAutoZeroUsing.ToString())); // 자동영점사용여부(4)
- sb.Append(Helper.StringZeroFillDigits4(sItem.LCDAutoZeroPlusRange)); // 자동영점+범위(4)
- sb.Append(Helper.StringZeroFillDigits4(sItem.LCDAutoZeroMinusRange)); // 자동영점-범위(4)
+ sb.Append(Helper.StringZeroFillDigits7(sItem.LCDAutoZeroPlusRange)); // 자동영점+범위(7)
+ sb.Append(Helper.StringZeroFillDigits7(sItem.LCDAutoZeroMinusRange)); // 자동영점-범위(7)
sb.Append(Helper.StringZeroFillDigits4(sItem.LCDAutoZeroVariate)); // 자동영점변량(4)
sb.Append("0000"); // Dummy1(4)
sb.Append("0000"); // Dummy2(4)
@@ -7928,6 +9309,16 @@ namespace ITC81DB_0H.Forms
sb.Append("0000"); // Dummy8(4)
sb.Append("0000"); // Dummy9(4)
sb.Append("0000"); // Dummy10(4)
+ sb.Append("0000"); // Dummy11(4)
+ sb.Append("0000"); // Dummy12(4)
+ sb.Append("0000"); // Dummy13(4)
+ sb.Append("0000"); // Dummy14(4)
+ sb.Append("0000"); // Dummy15(4)
+ sb.Append("0000"); // Dummy16(4)
+ sb.Append("0000"); // Dummy17(4)
+ sb.Append("0000"); // Dummy18(4)
+ sb.Append("0000"); // Dummy19(4)
+ sb.Append("0000"); // Dummy20(4)
this.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.SystemParameterWrite4, sb.ToString());
}
@@ -8107,6 +9498,18 @@ namespace ITC81DB_0H.Forms
this.TransferDataStream(CommunicationCommand.Write, ID, CommunicationAddress.BLDCMotorSetting, sb.ToString());
}
+ public void TransferCurrentProductItem(ProductItem pItem)
+ {
+ StringBuilder sb = new StringBuilder();
+
+ sb.Append(Helper.StringZeroFillDigits7(pItem.UnderRange));
+ sb.Append(Helper.StringZeroFillDigits7(pItem.PassRange));
+ sb.Append(Helper.StringZeroFillDigits7(pItem.OverRange));
+ sb.Append(Helper.StringZeroFillDigits7(pItem.TareRange));
+ sb.Append(Helper.StringZeroFillDigits4(this.SystemConfig1.ProductNumber.ToString()));
+
+ this.TransferDataStream(CommunicationCommand.Write, CommunicationID.MainBoard, CommunicationAddress.ParameterWeightSetting, sb.ToString());
+ }
#endregion
#region SystemParameter1
private void CreateSystemParameter1File()
@@ -10513,18 +11916,56 @@ namespace ITC81DB_0H.Forms
// 메인 통신 OPEN
this.OpenSmartUartLink();
- // COM1 OPEN
- this.OpenSerialCOM1();
- // COM3 OPEN
- this.OpenSerialCOM3();
- // COM4 OPEN
- this.OpenSerialCOM4();
- // Modbus COM1 OPEN
- this.OpenModbusCOM1();
- // Modbus COM3 OPEN
- this.OpenModbusCOM3();
- // Modbus COM4 OPEN
- this.OpenModbusCOM4();
+
+ #region Communication
+ if (this.SystemConfig1.SerialCOM1Mode != (int)DataStore.SerialMode.f0_None)
+ {
+ switch (this.SystemConfig1.SerialCOM1Mode)
+ {
+ case (int)DataStore.SerialMode.f16_OPC:
+ case (int)DataStore.SerialMode.f22_Modbus_RTU:
+ this.ChildFormMainDisplay.MainBottomModbusIconAdd(true);
+ break;
+ default:
+ break;
+ }
+
+ // COM1 OPEN
+ this.OpenSerialCOM1();
+ }
+
+ if (this.SystemConfig1.SerialCOM3Mode != (int)DataStore.SerialMode.f0_None)
+ {
+ switch (this.SystemConfig1.SerialCOM3Mode)
+ {
+ case (int)DataStore.SerialMode.f16_OPC:
+ case (int)DataStore.SerialMode.f22_Modbus_RTU:
+ this.ChildFormMainDisplay.MainBottomModbusIconAdd(true);
+ break;
+ default:
+ break;
+ }
+
+ // COM3 OPEN
+ this.OpenSerialCOM3();
+ }
+
+ if (this.SystemConfig1.SerialCOM4Mode != (int)DataStore.SerialMode.f0_None)
+ {
+ switch (this.SystemConfig1.SerialCOM4Mode)
+ {
+ case (int)DataStore.SerialMode.f16_OPC:
+ case (int)DataStore.SerialMode.f22_Modbus_RTU:
+ this.ChildFormMainDisplay.MainBottomModbusIconAdd(true);
+ break;
+ default:
+ break;
+ }
+
+ // COM4 OPEN
+ this.OpenSerialCOM4();
+ }
+ #endregion
// Write SystemParameter1
this.TransferParameter1();
@@ -10534,7 +11975,7 @@ namespace ITC81DB_0H.Forms
this.SmartSplashProgramLoad.Finish();
this.smartForm.Show((int)DataStore.FormStore.FormMainDisplay);
- this.ChildFormMainDisplay.CurrentBottomMenuControlEnable(DataStore.EquipmentStatus.Stop);
+ this.ChildFormMainDisplay.CurrentBottomMenuControlEnable();
// Mouse On
//this.smartForm.Mode = SmartForm.RUNMODE.DEVELOPER;
//this.smartForm.MouseCursor = SmartForm.OnOff.ON;
@@ -10695,6 +12136,143 @@ namespace ITC81DB_0H.Forms
}
#endregion
break;
+ case (int)DataStore.SerialMode.f16_OPC:
+ #region OPC
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM1);
+ else
+ responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM1);
+
+ this.TransferSerialCOM1(responseData);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM1 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ catch
+ {
+ }
+ #endregion
+ break;
+ case (int)DataStore.SerialMode.f22_Modbus_RTU:
+ #region Modbus RTU
+ this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount();
+
+ if (this.SystemConfig2.ModbusRTUSlaveIDCOM1 != Convert.ToInt32(readByte[0]))
+ return;
+
+ if (readByte[1] == 0x03) // Read Holding Register
+ {
+ #region Read Holding Register
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_03);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03);
+ else
+ responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM1, ModbusFunctionCode.FunctionCode_03);
+
+ this.TransferSerialCOM1(responseData);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive COM1 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM1 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ else if (readByte[1] == 0x10) // Write Multiple Register
+ {
+ #region Write Multiple Register
+ try
+ {
+ byte[] errorResponseData = new byte[5];
+ byte[] responseData = new byte[8];
+ byte[] crc;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_16);
+
+ if (errorCheck == 0x00)
+ {
+ for (int i = 0; i < 6; i++)
+ responseData[i] = readByte[i];
+
+ crc = this.Modbus.MakeRTUCRC(responseData, responseData.Length - 2);
+ for (int i = 0; i < 2; i++)
+ responseData[6 + i] = crc[i];
+
+ this.TransferSerialCOM1(responseData);
+
+ this.ReceiveModbusRTUWriteManager(readByte);
+ }
+ else
+ {
+ errorResponseData[0] = readByte[0];
+ errorResponseData[1] = 0x90;
+ errorResponseData[2] = errorCheck;
+
+ crc = this.Modbus.MakeRTUCRC(errorResponseData, errorResponseData.Length - 2);
+ for (int i = 0; i < 2; i++)
+ errorResponseData[3 + i] = crc[i];
+
+ this.TransferSerialCOM1(errorResponseData);
+ }
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive COM1 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM1 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ else // Read Input Register(0x04)
+ {
+ if (this.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ {
+ #region Read Input Register
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM1);
+ else
+ responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM1);
+
+ this.TransferSerialCOM1(responseData);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive COM1 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM1 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ }
+ #endregion
+ break;
default:
break;
}
@@ -10869,6 +12447,143 @@ namespace ITC81DB_0H.Forms
}
#endregion
break;
+ case (int)DataStore.SerialMode.f16_OPC:
+ #region OPC
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM3);
+ else
+ responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM3);
+
+ this.TransferSerialCOM3(responseData);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM3 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ catch
+ {
+ }
+ #endregion
+ break;
+ case (int)DataStore.SerialMode.f22_Modbus_RTU:
+ #region Modbus RTU
+ this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount();
+
+ if (this.SystemConfig2.ModbusRTUSlaveIDCOM3 != Convert.ToInt32(readByte[0]))
+ return;
+
+ if (readByte[1] == 0x03) // Read Holding Register
+ {
+ #region Read Holding Register
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_03);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03);
+ else
+ responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM3, ModbusFunctionCode.FunctionCode_03);
+
+ this.TransferSerialCOM3(responseData);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive COM3 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM3 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ else if (readByte[1] == 0x10) // Write Multiple Register
+ {
+ #region Write Multiple Register
+ try
+ {
+ byte[] errorResponseData = new byte[5];
+ byte[] responseData = new byte[8];
+ byte[] crc;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_16);
+
+ if (errorCheck == 0x00)
+ {
+ for (int i = 0; i < 6; i++)
+ responseData[i] = readByte[i];
+
+ crc = this.Modbus.MakeRTUCRC(responseData, responseData.Length - 2);
+ for (int i = 0; i < 2; i++)
+ responseData[6 + i] = crc[i];
+
+ this.TransferSerialCOM3(responseData);
+
+ this.ReceiveModbusRTUWriteManager(readByte);
+ }
+ else
+ {
+ errorResponseData[0] = readByte[0];
+ errorResponseData[1] = 0x90;
+ errorResponseData[2] = errorCheck;
+
+ crc = this.Modbus.MakeRTUCRC(errorResponseData, errorResponseData.Length - 2);
+ for (int i = 0; i < 2; i++)
+ errorResponseData[3 + i] = crc[i];
+
+ this.TransferSerialCOM3(errorResponseData);
+ }
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive COM3 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM3 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ else // Read Input Register(0x04)
+ {
+ if (this.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ {
+ #region Read Input Register
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM3);
+ else
+ responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM3);
+
+ this.TransferSerialCOM3(responseData);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive COM3 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM3 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ }
+ #endregion
+ break;
default:
break;
}
@@ -11074,52 +12789,148 @@ namespace ITC81DB_0H.Forms
}
#endregion
break;
+ case (int)DataStore.SerialMode.f16_OPC:
+ #region OPC
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM4);
+ else
+ responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM4);
+
+ this.TransferSerialCOM4(responseData);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM4 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ catch
+ {
+ }
+ #endregion
+ break;
+ case (int)DataStore.SerialMode.f22_Modbus_RTU:
+ #region Modbus RTU
+ this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount();
+
+ if (this.SystemConfig2.ModbusRTUSlaveIDCOM4 != Convert.ToInt32(readByte[0]))
+ return;
+
+ if (readByte[1] == 0x03) // Read Holding Register
+ {
+ #region Read Holding Register
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_03);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeRTUResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03);
+ else
+ responseData = this.Modbus.MakeRTUErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM4, ModbusFunctionCode.FunctionCode_03);
+
+ this.TransferSerialCOM4(responseData);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive COM4 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM4 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ else if (readByte[1] == 0x10) // Write Multiple Register
+ {
+ #region Write Multiple Register
+ try
+ {
+ byte[] errorResponseData = new byte[5];
+ byte[] responseData = new byte[8];
+ byte[] crc;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_16);
+
+ if (errorCheck == 0x00)
+ {
+ for (int i = 0; i < 6; i++)
+ responseData[i] = readByte[i];
+
+ crc = this.Modbus.MakeRTUCRC(responseData, responseData.Length - 2);
+ for (int i = 0; i < 2; i++)
+ responseData[6 + i] = crc[i];
+
+ this.TransferSerialCOM4(responseData);
+
+ this.ReceiveModbusRTUWriteManager(readByte);
+ }
+ else
+ {
+ errorResponseData[0] = readByte[0];
+ errorResponseData[1] = 0x90;
+ errorResponseData[2] = errorCheck;
+
+ crc = this.Modbus.MakeRTUCRC(errorResponseData, errorResponseData.Length - 2);
+ for (int i = 0; i < 2; i++)
+ errorResponseData[3 + i] = crc[i];
+
+ this.TransferSerialCOM4(errorResponseData);
+ }
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive COM4 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM4 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ else // Read Input Register(0x04)
+ {
+ if (this.SystemConfig2.ModbusRTUSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ {
+ #region Read Input Register
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorRTU(readByte, ModbusFunctionCode.FunctionCode_04);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeRTU04ResponseData(this.Transfer_22_Modbus_Read_RTU(readByte), this.SystemConfig2.ModbusRTUSlaveIDCOM4);
+ else
+ responseData = this.Modbus.MakeRTU04ErrorResponseData(errorCheck, this.SystemConfig2.ModbusRTUSlaveIDCOM4);
+
+ this.TransferSerialCOM4(responseData);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive COM4 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send COM4 ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ }
+ #endregion
+ break;
default:
break;
}
}
- // OPC 설정 시 사용
- private void smartModbusSlave1_OnReadHoldingRegisters(SmartModbusSlave.READHOLDINGREGISTERS datas)
- {
- byte[] madeDatas = new byte[TotalBytes];
-
- // 수신 Slave Address 와 설정된 Slave Address가 같은 경우
- if (datas.RequestDatas.iSlave == this.smartModbusSlave1.SlaveAddress)
- {
- madeDatas = this.Transfer_22_Modbus();
-
- datas.ResponDatas.chDatas = madeDatas;
- datas.ResponDatas.iNumberOfByte = TotalBytes;
- }
- }
- private void smartModbusSlave3_OnReadHoldingRegisters(SmartModbusSlave.READHOLDINGREGISTERS datas)
- {
- byte[] madeDatas = new byte[TotalBytes];
-
- // 수신 Slave Address 와 설정된 Slave Address가 같은 경우
- if (datas.RequestDatas.iSlave == this.smartModbusSlave1.SlaveAddress)
- {
- madeDatas = this.Transfer_22_Modbus();
-
- datas.ResponDatas.chDatas = madeDatas;
- datas.ResponDatas.iNumberOfByte = TotalBytes;
- }
- }
- private void smartModbusSlave4_OnReadHoldingRegisters(SmartModbusSlave.READHOLDINGREGISTERS datas)
- {
- byte[] madeDatas = new byte[TotalBytes];
-
- // 수신 Slave Address 와 설정된 Slave Address가 같은 경우
- if (datas.RequestDatas.iSlave == this.smartModbusSlave1.SlaveAddress)
- {
- madeDatas = this.Transfer_22_Modbus();
-
- datas.ResponDatas.chDatas = madeDatas;
- datas.ResponDatas.iNumberOfByte = TotalBytes;
- }
- }
-
private void smartTCPMultiServer_OnReceiveHandler(SmartTCPMultiServer.CHandleClinet.READINFO datas)
{
int ret = 0;
@@ -11263,34 +13074,147 @@ namespace ITC81DB_0H.Forms
}
#endregion
break;
- case 16:
+ case (int)DataStore.EthernetMode.f16_OPC:
#region OPC
if (this.smartTCPMultiServer.ClientInfoList != null)
{
- sendDatas[0] = readByte[0];
- sendDatas[1] = readByte[1];
- sendDatas[2] = 0x00;
- sendDatas[3] = 0x00;
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorTCP(readByte, ModbusFunctionCode.FunctionCode_04);
- // Length(Unit ID~ 길이)
- sendDatas[4] = 0x00;
- sendDatas[5] = 0x33;
- // Unit ID
- sendDatas[6] = 0x01;
- //Function code
- sendDatas[7] = 0x03;
-
- // Byte Count(Data의 개수)
- sendDatas[8] = 0x30;
-
- madeDatas = this.Transfer_22_Modbus();
-
- for (int i = 0; i < TotalBytes; i++)
- sendDatas[9 + i] = madeDatas[i];
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeTCP04ResponseData(readByte, this.Transfer_22_Modbus_Read_TCP(readByte));
+ else
+ responseData = this.Modbus.MakeTCP04ErrorResponseData(readByte, errorCheck);
foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList)
{
- this.smartTCPMultiServer.SendByteByClientID(client.strID, sendDatas);
+ this.smartTCPMultiServer.SendByteByClientID(client.strID, responseData);
+ }
+ }
+ #endregion
+ break;
+ case (int)DataStore.EthernetMode.f22_Modbus_TCP:
+ #region Modbus TCP
+ if (this.smartTCPMultiServer.ClientInfoList != null)
+ {
+ this.ChildFormMainDisplay.MainDisplayModbus.UpdateReceiveCount();
+
+ if (readByte[7] == 0x03) // Read Holding Register
+ {
+ #region Read Holding Register
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorTCP(readByte, ModbusFunctionCode.FunctionCode_03);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeTCPResponseData(readByte, this.Transfer_22_Modbus_Read_TCP(readByte), ModbusFunctionCode.FunctionCode_03);
+ else
+ responseData = this.Modbus.MakeTCPErrorResponseData(readByte, errorCheck, ModbusFunctionCode.FunctionCode_03);
+
+ foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList)
+ {
+ this.smartTCPMultiServer.SendByteByClientID(client.strID, responseData);
+ }
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive TCP ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send TCP ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ else if (readByte[7] == 0x10) // Write Multiple Register
+ {
+ #region Write Multiple Register
+ try
+ {
+ byte[] errorResponseData = new byte[9];
+ byte[] responseData = new byte[12];
+ byte errorCheck = this.Modbus.CheckRequestDataErrorTCP(readByte, ModbusFunctionCode.FunctionCode_16);
+
+ if (errorCheck == 0x00)
+ {
+ for (int i = 0; i < 12; i++)
+ responseData[i] = readByte[i];
+ responseData[5] = 0x06;
+
+ foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList)
+ {
+ this.smartTCPMultiServer.SendByteByClientID(client.strID, responseData);
+ }
+
+ this.ReceiveModbusTCPWriteManager(readByte);
+ }
+ else
+ {
+ for (int i = 0; i < 5; i++)
+ errorResponseData[i] = readByte[i];
+
+ // Length
+ errorResponseData[5] = 0x03;
+ // Unit ID
+ errorResponseData[6] = 0x01;
+ // Function Code
+ errorResponseData[7] = 0x90;
+ // Error Code
+ errorResponseData[8] = errorCheck;
+
+ foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList)
+ {
+ this.smartTCPMultiServer.SendByteByClientID(client.strID, responseData);
+ }
+ }
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive TCP ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send TCP ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
+ else // Read Input Register(0x04)
+ {
+ if (this.SystemConfig2.ModbusTCPSelectFunction == (int)DataStore.ModbusFunction._04_ReadInputRegister)
+ {
+ #region Read Input Register
+ try
+ {
+ byte[] responseData;
+ byte errorCheck = this.Modbus.CheckRequestDataErrorTCP(readByte, ModbusFunctionCode.FunctionCode_04);
+
+ if (errorCheck == 0x00)
+ responseData = this.Modbus.MakeTCP04ResponseData(readByte, this.Transfer_22_Modbus_Read_TCP(readByte));
+ else
+ responseData = this.Modbus.MakeTCP04ErrorResponseData(readByte, errorCheck);
+
+ foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList)
+ {
+ this.smartTCPMultiServer.SendByteByClientID(client.strID, responseData);
+ }
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ {
+ this.smartFileCommunicationLog.WriteString(string.Format("Receive TCP ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(readByte)));
+ this.smartFileCommunicationLog.WriteString(string.Format("Send TCP ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, BitConverter.ToString(responseData)));
+ }
+ }
+ catch
+ {
+ }
+ #endregion
+ }
}
}
#endregion
@@ -11327,6 +13251,86 @@ namespace ITC81DB_0H.Forms
this.CollectionBufferWeightData.Clear();
}
}
+ private void timerEthernetPing_Tick(object sender, EventArgs e)
+ {
+ try
+ {
+ CIPSetting.PINGRESULTINFO pingResultInfo = new CIPSetting.PINGRESULTINFO();
+ if (this.SystemConfig2.EthernetOperationMode == 1) // 중량선별기 : Server
+ {
+ try
+ {
+ //if (string.IsNullOrEmpty(this.smartTCPMultiServer.ClientInfoList[0].strIPAddress))
+ //{
+ // if (this.IsCommunicationLogOpen == true)
+ // {
+ // this.smartFileCommunicationLog.WriteString(string.Format("Connection ({0:yyyy-MM-dd HH:mm:ss}): null ", DateTime.Now));
+ // this.smartFileCommunicationLog.WriteString(string.Format("ClientInfoList ({0:yyyy-MM-dd HH:mm:ss}): {1}_{2}", DateTime.Now, this.smartTCPMultiServer.ClientInfoList[0].strIPAddress));
+ // }
+
+ // return;
+ //}
+
+ //if (this.IsCommunicationLogOpen == true)
+ // this.smartFileCommunicationLog.WriteString(string.Format("ClientInfoList ({0:yyyy-MM-dd HH:mm:ss}): {1}_{2}", DateTime.Now, this.smartTCPMultiServer.ClientInfoList[0].strIPAddress));
+ bool bValue = this.smartConfigs.IPSettings.PingIP(this.smartTCPMultiServer.ClientInfoList[0].strIPAddress, ref pingResultInfo);
+ if (bValue == false)
+ {
+ this.ChildFormMainDisplay.UpdateEthernetStatusDisplay(false);
+ this.ChildFormMenu.CenterConfiEthernet.DelegateConnectedIPStatusOut("-");
+ bool disconnect = this.smartTCPMultiServer.CloseClientIP(this.smartTCPMultiServer.ClientInfoList[0].strIPAddress);
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.WriteString(string.Format("CloseClientIP ({0:yyyy-MM-dd HH:mm:ss}): {1}_{2}", DateTime.Now, disconnect.ToString()));
+
+ this.EthernetServerStart();
+ }
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.WriteString(string.Format("Connection ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, bValue.ToString()));
+ }
+ catch
+ {
+ this.ChildFormMainDisplay.UpdateEthernetStatusDisplay(false);
+ this.ChildFormMenu.CenterConfiEthernet.DelegateConnectedIPStatusOut("-");
+
+ // 로그
+ if (this.IsCommunicationLogOpen == true)
+ this.smartFileCommunicationLog.WriteString(string.Format("Error ({0:yyyy-MM-dd HH:mm:ss}): Catch", DateTime.Now));
+ }
+ }
+ else // 중량선별기 : Client
+ {
+ try
+ {
+ if (this.smartConfigs.IPSettings.PingIP(this.SystemConfig2.EthernetAddress, ref pingResultInfo) == false)
+ {
+ this.EthernetClientDisconnect();
+ this.EthernetClientConnect();
+ }
+ }
+ catch
+ {
+ this.DelegateUISeverStatus(false);
+ this.ChildFormMenu.CenterConfiEthernet.DelegateConnectedIPStatusOut("-");
+ }
+ }
+ }
+ catch
+ {
+ if (this.SystemConfig2.EthernetOperationMode == 1) // 중량선별기 : Server
+ {
+ this.ChildFormMainDisplay.UpdateEthernetStatusDisplay(false);
+ }
+ else // 중량선별기 : Client
+ {
+ this.DelegateUISeverStatus(false);
+ this.EthernetClientDisconnect();
+ }
+ }
+ }
// 전송지연시간 관련
private void timerCOM1_Tick(object sender, EventArgs e)
diff --git a/ITC81DB_0H/Forms/FormMain.resx b/ITC81DB_0H/Forms/FormMain.resx
index a989c76..edce1dc 100644
--- a/ITC81DB_0H/Forms/FormMain.resx
+++ b/ITC81DB_0H/Forms/FormMain.resx
@@ -147,15 +147,6 @@
235, 56
-
- 403, 56
-
-
- 568, 56
-
-
- 733, 56
-
898, 56
@@ -165,6 +156,9 @@
1054, 56
+
+ 399, 58
+
WEBPAD
diff --git a/ITC81DB_0H/Forms/FormMainDisplay.Designer.cs b/ITC81DB_0H/Forms/FormMainDisplay.Designer.cs
index d1245b3..2192d65 100644
--- a/ITC81DB_0H/Forms/FormMainDisplay.Designer.cs
+++ b/ITC81DB_0H/Forms/FormMainDisplay.Designer.cs
@@ -63,6 +63,7 @@
this.timerServer = new System.Windows.Forms.Timer();
this.buttonConveyorUpDown = new SmartX.SmartButton();
this.buttonHiddenMenu = new SmartX.SmartButton();
+ this.buttonModbus = new SmartX.SmartButton();
((System.ComponentModel.ISupportInitialize)(this.smartForm1)).BeginInit();
this.panel1.SuspendLayout();
this.SuspendLayout();
@@ -620,6 +621,7 @@
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Black;
+ this.panel1.Controls.Add(this.buttonModbus);
this.panel1.Controls.Add(this.buttonFeedback);
this.panel1.Controls.Add(this.buttonBargraph);
this.panel1.Controls.Add(this.buttonStartMenu);
@@ -785,6 +787,38 @@
this.buttonHiddenMenu.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonHiddenMenu.UpImage")));
this.buttonHiddenMenu.Click += new System.EventHandler(this.buttonHiddenMenu_Click);
//
+ // buttonModbus
+ //
+ this.buttonModbus.BackPictureBox = null;
+ this.buttonModbus.BackPictureBox1 = null;
+ this.buttonModbus.BackPictureBox2 = null;
+ this.buttonModbus.ButtonColor = System.Drawing.Color.Gray;
+ this.buttonModbus.ButtonImageAutoSize = true;
+ this.buttonModbus.ColorKeySamplePosition = new System.Drawing.Point(0, 0);
+ this.buttonModbus.DisableImage = ((System.Drawing.Image)(resources.GetObject("buttonModbus.DisableImage")));
+ this.buttonModbus.DownImage = ((System.Drawing.Image)(resources.GetObject("buttonModbus.DownImage")));
+ this.buttonModbus.GroupID = 0;
+ this.buttonModbus.InitVisible = true;
+ this.buttonModbus.Location = new System.Drawing.Point(456, 0);
+ this.buttonModbus.Mode = SmartX.SmartButton.BUTTONMODE.RADIO;
+ this.buttonModbus.Name = "buttonModbus";
+ this.buttonModbus.NestedClickEventPrevent = false;
+ this.buttonModbus.OutlinePixel = 1;
+ this.buttonModbus.RepeatInterval = 200;
+ this.buttonModbus.RepeatIntervalAccelerate = null;
+ this.buttonModbus.SafeInterval = 200;
+ this.buttonModbus.Size = new System.Drawing.Size(65, 65);
+ this.buttonModbus.SpecialFunction = SmartX.SmartButton.SPECIALFUNC.NONE;
+ this.buttonModbus.TabIndex = 553;
+ this.buttonModbus.TextColor = System.Drawing.Color.Black;
+ this.buttonModbus.TextDownColor = System.Drawing.Color.White;
+ this.buttonModbus.TextHAlign = SmartX.SmartButton.TextHorAlign.Middle;
+ this.buttonModbus.TextLocation = new System.Drawing.Point(0, 0);
+ this.buttonModbus.TextVAlign = SmartX.SmartButton.TextVerAlign.Middle;
+ this.buttonModbus.UpImage = ((System.Drawing.Image)(resources.GetObject("buttonModbus.UpImage")));
+ this.buttonModbus.Visible = false;
+ this.buttonModbus.Click += new System.EventHandler(this.buttonModbus_Click);
+ //
// FormMainDisplay
//
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
@@ -858,5 +892,6 @@
private SmartX.SmartButton buttonFeedback;
private SmartX.SmartButton buttonConveyorUpDown;
private SmartX.SmartButton buttonHiddenMenu;
+ private SmartX.SmartButton buttonModbus;
}
}
\ No newline at end of file
diff --git a/ITC81DB_0H/Forms/FormMainDisplay.cs b/ITC81DB_0H/Forms/FormMainDisplay.cs
index 9224667..97552c4 100644
--- a/ITC81DB_0H/Forms/FormMainDisplay.cs
+++ b/ITC81DB_0H/Forms/FormMainDisplay.cs
@@ -32,6 +32,7 @@ namespace ITC81DB_0H.Forms
public ControlMainDisplayMenu MainDisplayMenu;
public ControlMainDisplayAlarm MainDisplayAlarm;
public ControlMainDisplayFeedback MainDisplayFeedback;
+ public ControlMainDisplayModbus MainDisplayModbus;
#endregion
#region Constructor
@@ -164,6 +165,7 @@ namespace ITC81DB_0H.Forms
this.MainDisplayMenu = new ControlMainDisplayMenu(this);
this.MainDisplayAlarm = new ControlMainDisplayAlarm();
this.MainDisplayFeedback = new ControlMainDisplayFeedback(this);
+ this.MainDisplayModbus = new ControlMainDisplayModbus(this);
this.MainDisplayWeightBigScreen.Location = new Point(0, 65);
this.MainDisplayWeightSmall.Location = new Point(0, 65);
@@ -174,6 +176,7 @@ namespace ITC81DB_0H.Forms
this.MainDisplayMenu.Location = new Point(0, 213);
this.MainDisplayAlarm.Location = new Point(390, 60);
this.MainDisplayFeedback.Location = new Point(0, 313);
+ this.MainDisplayModbus.Location = new Point(0, 213);
this.Controls.Add(this.MainDisplayWeightBigScreen);
this.Controls.Add(this.MainDisplayWeightSmall);
@@ -184,6 +187,7 @@ namespace ITC81DB_0H.Forms
this.Controls.Add(this.MainDisplayMenu);
this.Controls.Add(this.MainDisplayAlarm);
this.Controls.Add(this.MainDisplayFeedback);
+ this.Controls.Add(this.MainDisplayModbus);
if (this.ParentForm.SystemConfig1.IsLogin == true)
{
@@ -231,7 +235,7 @@ namespace ITC81DB_0H.Forms
else
this.ParentForm.CurrentSystemStatus.CurrentUser.Group = DataStore.UserGroup.Level4Developer;
- this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
+ this.CurrentDisplay = DataStore.MainDisplayStore.BarGraph;
this.DisplayBottomMain(this.CurrentDisplay);
}
@@ -247,6 +251,23 @@ namespace ITC81DB_0H.Forms
}
}
+ public void BottomButtonLocation(int buttonNo, SmartX.SmartButton button)
+ {
+ switch (buttonNo)
+ {
+ case 1:
+ button.Location = new Point(385, 0);
+ break;
+ case 2:
+ button.Location = new Point(456, 0);
+ break;
+ case 3:
+ button.Location = new Point(527, 0);
+ break;
+ default:
+ break;
+ }
+ }
public void UpdateDisplayAlarmView(WeightData data)
{
this.MainDisplayWeightBigScreen.UpdateDisplayAlarmView(this.ParentForm.CurrentWeightData);
@@ -357,6 +378,13 @@ namespace ITC81DB_0H.Forms
if (this.MainDisplayStopDataStatistics != null)
this.MainDisplayStopDataStatistics.Clear();
}
+ public void Clear()
+ {
+ this.ParentForm.ClearQueue();
+
+ this.ClearCurrentData();
+ this.ParentForm.TransferData(CommunicationCommand.Clear, CommunicationID.SubBoard1);
+ }
private void UpdateDisplayUser(SystemStatus status)
{
@@ -527,8 +555,6 @@ namespace ITC81DB_0H.Forms
//this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
//this.DisplayBottomMain(this.CurrentDisplay);
-
- this.CurrentBottomMenuControlEnable(status);
}
else
{
@@ -557,8 +583,6 @@ namespace ITC81DB_0H.Forms
//this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
//this.DisplayBottomMain(this.CurrentDisplay);
-
- this.CurrentBottomMenuControlEnable(status);
}
}
public void UpdateCurrentProductDisplay(DataStore.EquipmentStatus status, ProductItem pItem, WeightData wData)
@@ -589,7 +613,7 @@ namespace ITC81DB_0H.Forms
this.MainDisplayStartList.UpdateCurrentProductDisplay(status, pItem, wData);
if (this.MainDisplayStopDataStatistics != null)
this.MainDisplayStopDataStatistics.UpdateCurrentProductDisplay(status, pItem, wData);
- if(this.MainDisplayMenu != null && this.CurrentDisplay == DataStore.MainDisplayStore.DisplayStartMenu)
+ if(this.MainDisplayMenu != null && this.CurrentDisplay == DataStore.MainDisplayStore.SubMenu)
this.MainDisplayMenu.UpdateControl(this.ParentForm.CurrentJudgmentSetItem, this.ParentForm.CurrentSystemParameter4);
}
public void UpdateStopWeightDisplay(DataStore.EquipmentStatus status, WeightData data)
@@ -627,6 +651,16 @@ namespace ITC81DB_0H.Forms
if (this.MainDisplayStopDataStatistics != null)
this.MainDisplayStopDataStatistics.UpdateStartWeightDisplay(status, wData);
}
+ public void ChangeProductNumber(int productNumber)
+ {
+ this.ParentForm.ClearAlarm(0);
+ this.SendCommProductChange(productNumber);
+ }
+ public void SendCommProductChange(int productNumber)
+ {
+ this.buttonProductNo.Text = "**";
+ this.ParentForm.TransferProductParameter(productNumber);
+ }
public void UpdateBarcodeDisplay(Barcode barcode)
{
if (this.MainDisplayWeightBigScreen != null)
@@ -642,11 +676,38 @@ namespace ITC81DB_0H.Forms
this.MainDisplayWeightSmall.UpdateEthernetStatusDisplay(status);
}
- public void CurrentBottomMenuControlEnable(DataStore.EquipmentStatus status)
+ public void UpdateModbusScreen()
{
- if (this.MainDisplayFeedback.IsUsingFeedback() == true)
+ if (this.CurrentDisplay == DataStore.MainDisplayStore.Modbus)
{
- this.buttonFeedback.Visible = true;
+ this.ParentForm.Update30000ModbusItem();
+ this.MainDisplayModbus.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
+ }
+ }
+ public void MainBottomModbusIconAdd(bool bValue)
+ {
+ this.ParentForm.IsOPCModbusUsing = bValue;
+ this.CurrentBottomMenuControlEnable();
+ }
+
+ public void CurrentBottomMenuControlEnable()
+ {
+ Collection buttons = new Collection();
+ bool feedback = this.MainDisplayFeedback.IsUsingFeedback();
+ int sampleCount = int.Parse(this.ParentForm.CurrentSystemParameter2.OPT1SamplingCount);
+ bool modbus = this.ParentForm.IsOPCModbusUsing;
+
+ buttons.Clear();
+ buttons.Add(this.buttonFeedback);
+ buttons.Add(this.buttonModbus);
+ for (int i = 0; i < buttons.Count; i++)
+ buttons[i].Visible = false;
+
+ buttons.Clear();
+ if (feedback == true && sampleCount != 0)
+ {
+ buttons.Add(this.buttonFeedback);
+
if (this.ParentForm.CurrentSystemParameter2.OPT1OverRangeInt <= 0 && this.ParentForm.CurrentSystemParameter2.OPT1UnderRangeInt <= 0)
{
this.ParentForm.UpdateFeedbackData(this.ParentForm.CurrentProductItem, this.ParentForm.CurrentSystemParameter2);
@@ -655,109 +716,62 @@ namespace ITC81DB_0H.Forms
else
this.ParentForm.UpdateFeedbackDeviation(this.ParentForm.CurrentProductItem, this.ParentForm.CurrentSystemParameter2);
}
- else
- this.buttonFeedback.Visible = false;
+ if (modbus == true)
+ buttons.Add(this.buttonModbus);
- //if (status == DataStore.EquipmentStatus.Start)
- //{
- // this.buttonMenu.Enabled = false;
- //}
- //else
- //{
- // if (this.ParentForm.CurrentSystemStatus.CurrentUser.Group == DataStore.UserGroup.LogOff)
- // this.buttonMenu.Enabled = false;
- // else
- // this.buttonMenu.Enabled = true;
- //}
+ for (int i = 0; i < buttons.Count; i++)
+ {
+ this.BottomButtonLocation(i + 1, buttons[i]);
+ buttons[i].Visible = true;
+ }
}
public void UpdateDisplayMenuButton(DataStore.MainDisplayStore main)
{
+ if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
+ this.buttonStartMenu.ButtonUp();
+ if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
+ this.buttonBargraph.ButtonUp();
+ if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
+ this.buttonLinegraph.ButtonUp();
+ if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
+ this.buttonList.ButtonUp();
+ if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
+ this.buttonDataStat.ButtonUp();
+ if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
+ this.buttonFeedback.ButtonUp();
+ if (this.buttonModbus.ButtonStatus != SmartButton.BUTSTATUS.UP)
+ this.buttonModbus.ButtonUp();
+
switch (main)
{
- case DataStore.MainDisplayStore.DisplayStartMenu:
+ case DataStore.MainDisplayStore.SubMenu:
if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
this.buttonStartMenu.ButtonDown();
- if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonBargraph.ButtonUp();
- if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonLinegraph.ButtonUp();
- if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonList.ButtonUp();
- if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonDataStat.ButtonUp();
- if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonFeedback.ButtonUp();
break;
- case DataStore.MainDisplayStore.DisplayStartBarGraph:
- if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonStartMenu.ButtonUp();
+ case DataStore.MainDisplayStore.BarGraph:
if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
this.buttonBargraph.ButtonDown();
- if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonLinegraph.ButtonUp();
- if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonList.ButtonUp();
- if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonDataStat.ButtonUp();
- if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonFeedback.ButtonUp();
break;
- case DataStore.MainDisplayStore.DisplayStartLineGraph:
- if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonStartMenu.ButtonUp();
- if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonBargraph.ButtonUp();
+ case DataStore.MainDisplayStore.LineGraph:
if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
this.buttonLinegraph.ButtonDown();
- if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonList.ButtonUp();
- if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonDataStat.ButtonUp();
- if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonFeedback.ButtonUp();
break;
- case DataStore.MainDisplayStore.DisplayStartList:
- if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonStartMenu.ButtonUp();
- if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonBargraph.ButtonUp();
- if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonLinegraph.ButtonUp();
+ case DataStore.MainDisplayStore.List:
if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
this.buttonList.ButtonDown();
- if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonDataStat.ButtonUp();
- if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonFeedback.ButtonUp();
break;
- case DataStore.MainDisplayStore.DisplayStopDataStat:
- if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonStartMenu.ButtonUp();
- if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonBargraph.ButtonUp();
- if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonLinegraph.ButtonUp();
- if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonList.ButtonUp();
+ case DataStore.MainDisplayStore.DataStat:
if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
this.buttonDataStat.ButtonDown();
- if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonFeedback.ButtonUp();
break;
- case DataStore.MainDisplayStore.DisplayFeedback:
- if (this.buttonStartMenu.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonStartMenu.ButtonUp();
- if (this.buttonBargraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonBargraph.ButtonUp();
- if (this.buttonLinegraph.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonLinegraph.ButtonUp();
- if (this.buttonList.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonList.ButtonUp();
- if (this.buttonDataStat.ButtonStatus != SmartButton.BUTSTATUS.UP)
- this.buttonDataStat.ButtonUp();
+ case DataStore.MainDisplayStore.Feedback:
if (this.buttonFeedback.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
this.buttonFeedback.ButtonDown();
break;
+ case DataStore.MainDisplayStore.Modbus:
+ if (this.buttonModbus.ButtonStatus != SmartButton.BUTSTATUS.DOWN)
+ this.buttonModbus.ButtonDown();
+ break;
default:
break;
}
@@ -766,8 +780,8 @@ namespace ITC81DB_0H.Forms
{
switch (main)
{
- case DataStore.MainDisplayStore.DisplayStartMenu:
- this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStartMenu);
+ case DataStore.MainDisplayStore.SubMenu:
+ this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.SubMenu);
this.MainDisplayMenu.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayWeightSmall.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
//this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
@@ -775,41 +789,48 @@ namespace ITC81DB_0H.Forms
//this.MainDisplayWeightBigScreen.BringToFront();
this.MainDisplayWeightSmall.BringToFront();
break;
- case DataStore.MainDisplayStore.DisplayStartBarGraph:
- this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStartBarGraph);
+ case DataStore.MainDisplayStore.BarGraph:
+ this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.BarGraph);
this.MainDisplayStart.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayStart.BringToFront();
this.MainDisplayWeightBigScreen.BringToFront();
break;
- case DataStore.MainDisplayStore.DisplayStartLineGraph:
- this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStartLineGraph);
+ case DataStore.MainDisplayStore.LineGraph:
+ this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.LineGraph);
this.MainDisplayStartGraph.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayStartGraph.BringToFront();
this.MainDisplayWeightBigScreen.BringToFront();
break;
- case DataStore.MainDisplayStore.DisplayStartList:
- this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStartList);
+ case DataStore.MainDisplayStore.List:
+ this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.List);
this.MainDisplayStartList.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayWeightSmall.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayStartList.BringToFront();
this.MainDisplayWeightSmall.BringToFront();
break;
- case DataStore.MainDisplayStore.DisplayStopDataStat:
- this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayStopDataStat);
+ case DataStore.MainDisplayStore.DataStat:
+ this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DataStat);
this.MainDisplayStopDataStatistics.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayStopDataStatistics.BringToFront();
this.MainDisplayWeightBigScreen.BringToFront();
break;
- case DataStore.MainDisplayStore.DisplayFeedback:
- this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.DisplayFeedback);
+ case DataStore.MainDisplayStore.Feedback:
+ this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.Feedback);
this.MainDisplayFeedback.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayWeightBigScreen.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.MainDisplayFeedback.BringToFront();
this.MainDisplayWeightBigScreen.BringToFront();
break;
+ case DataStore.MainDisplayStore.Modbus:
+ this.ParentForm.Update30000ModbusItem();
+ this.UpdateDisplayMenuButton(DataStore.MainDisplayStore.Modbus);
+ this.MainDisplayModbus.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
+ this.MainDisplayModbus.BringToFront();
+ this.MainDisplayWeightSmall.BringToFront();
+ break;
default:
break;
}
@@ -861,8 +882,16 @@ namespace ITC81DB_0H.Forms
this.UpdateDisplayUser(status);
- if (this.CurrentDisplay == DataStore.MainDisplayStore.DisplayFeedback)
- this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
+ if (this.CurrentDisplay == DataStore.MainDisplayStore.Feedback)
+ {
+ if (this.buttonFeedback.Visible == false)
+ this.CurrentDisplay = DataStore.MainDisplayStore.BarGraph;
+ }
+ if (this.CurrentDisplay == DataStore.MainDisplayStore.Modbus)
+ {
+ if (this.buttonModbus.Visible == false)
+ this.CurrentDisplay = DataStore.MainDisplayStore.BarGraph;
+ }
this.DisplayBottomMain(this.CurrentDisplay);
@@ -1078,19 +1107,19 @@ namespace ITC81DB_0H.Forms
switch (this.CurrentDisplay)
{
- case DataStore.MainDisplayStore.DisplayStartMenu:
+ case DataStore.MainDisplayStore.SubMenu:
this.MainDisplayMenu.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
- case DataStore.MainDisplayStore.DisplayStartBarGraph:
+ case DataStore.MainDisplayStore.BarGraph:
this.MainDisplayStart.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
- case DataStore.MainDisplayStore.DisplayStartLineGraph:
+ case DataStore.MainDisplayStore.LineGraph:
this.MainDisplayStartGraph.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
- case DataStore.MainDisplayStore.DisplayStartList:
+ case DataStore.MainDisplayStore.List:
this.MainDisplayStartList.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
- case DataStore.MainDisplayStore.DisplayStopDataStat:
+ case DataStore.MainDisplayStore.DataStat:
this.MainDisplayStopDataStatistics.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
default:
@@ -1114,19 +1143,19 @@ namespace ITC81DB_0H.Forms
switch (this.CurrentDisplay)
{
- case DataStore.MainDisplayStore.DisplayStartMenu:
+ case DataStore.MainDisplayStore.SubMenu:
this.MainDisplayMenu.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
- case DataStore.MainDisplayStore.DisplayStartBarGraph:
+ case DataStore.MainDisplayStore.BarGraph:
this.MainDisplayStart.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
- case DataStore.MainDisplayStore.DisplayStartLineGraph:
+ case DataStore.MainDisplayStore.LineGraph:
this.MainDisplayStartGraph.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
- case DataStore.MainDisplayStore.DisplayStartList:
+ case DataStore.MainDisplayStore.List:
this.MainDisplayStartList.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
- case DataStore.MainDisplayStore.DisplayStopDataStat:
+ case DataStore.MainDisplayStore.DataStat:
this.MainDisplayStopDataStatistics.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
break;
default:
@@ -1169,46 +1198,52 @@ namespace ITC81DB_0H.Forms
private void buttonStop_Click(object sender, EventArgs e)
{
- this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
+ this.CurrentDisplay = DataStore.MainDisplayStore.BarGraph;
this.DisplayBottomMain(this.CurrentDisplay);
}
private void buttonBargraph_Click(object sender, EventArgs e)
{
- this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartBarGraph;
+ this.CurrentDisplay = DataStore.MainDisplayStore.BarGraph;
this.DisplayBottomMain(this.CurrentDisplay);
}
private void buttonLinegraph_Click(object sender, EventArgs e)
{
- this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartLineGraph;
+ this.CurrentDisplay = DataStore.MainDisplayStore.LineGraph;
this.DisplayBottomMain(this.CurrentDisplay);
}
private void buttonList_Click(object sender, EventArgs e)
{
- this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartList;
+ this.CurrentDisplay = DataStore.MainDisplayStore.List;
this.DisplayBottomMain(this.CurrentDisplay);
}
private void buttonDataStat_Click(object sender, EventArgs e)
{
- this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStopDataStat;
+ this.CurrentDisplay = DataStore.MainDisplayStore.DataStat;
this.DisplayBottomMain(this.CurrentDisplay);
}
private void buttonStartMenu_Click(object sender, EventArgs e)
{
- this.CurrentDisplay = DataStore.MainDisplayStore.DisplayStartMenu;
+ this.CurrentDisplay = DataStore.MainDisplayStore.SubMenu;
this.DisplayBottomMain(this.CurrentDisplay);
}
private void buttonFeedback_Click(object sender, EventArgs e)
{
- this.CurrentDisplay = DataStore.MainDisplayStore.DisplayFeedback;
+ this.CurrentDisplay = DataStore.MainDisplayStore.Feedback;
this.DisplayBottomMain(this.CurrentDisplay);
- }
+ }
+ private void buttonModbus_Click(object sender, EventArgs e)
+ {
+ this.CurrentDisplay = DataStore.MainDisplayStore.Modbus;
+
+ this.DisplayBottomMain(this.CurrentDisplay);
+ }
#endregion
private void buttonExit_Click(object sender, EventArgs e)
diff --git a/ITC81DB_0H/Forms/FormMainDisplay.resx b/ITC81DB_0H/Forms/FormMainDisplay.resx
index 4521967..7cb783f 100644
--- a/ITC81DB_0H/Forms/FormMainDisplay.resx
+++ b/ITC81DB_0H/Forms/FormMainDisplay.resx
@@ -1243,6 +1243,297 @@
MRwOXS4XrjYDr9c7GAxQgM/W63U8Hsd1JkFbJhaLKYqCGnyg33umaBlqtGUoc5Th3el0qtVqOG1CkiS1
Wq1rLahl9Pt9If/XeSJqIpPJhMohyzJtH3xqZqFQaLlc5nI5HJsctdVwOIwDxhhjjDHGGGPsJhbLG7hZ
LovvQ3RGAAAAAElFTkSuQmCC
+
+
+
+
+ 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
+ AAAAAElFTkSuQmCC
diff --git a/ITC81DB_0H/Forms/FormMenu.cs b/ITC81DB_0H/Forms/FormMenu.cs
index 3744ec9..5b32c69 100644
--- a/ITC81DB_0H/Forms/FormMenu.cs
+++ b/ITC81DB_0H/Forms/FormMenu.cs
@@ -601,6 +601,9 @@ namespace ITC81DB_0H.Forms
case DataStore.DisplayStore.MainDisplay:
this.ParentForm.ChildFormMainDisplay.DisplayHiddenMenu(true);
break;
+ case DataStore.DisplayStore.ConfiEthernet:
+ this.CenterConfiEthernet.DisplayHiddenMenu(true);
+ break;
case DataStore.DisplayStore.EquipInitialize:
this.CenterEquipInitialize.DisplayHiddenMenu(true);
break;
@@ -678,6 +681,7 @@ namespace ITC81DB_0H.Forms
this.CenterConfiSerial.BringToFront();
break;
case DataStore.MenuBottomConfiguration.Ethernet:
+ this.bottomConfiguration.CurrentMenu = DataStore.MenuBottomConfiguration.Ethernet;
this.CenterConfiEthernet.DisplayRefresh(this.ParentForm.CurrentSystemStatus);
this.CenterConfiEthernet.BringToFront();
break;
diff --git a/ITC81DB_0H/Helper.cs b/ITC81DB_0H/Helper.cs
index 455688b..5b67f58 100644
--- a/ITC81DB_0H/Helper.cs
+++ b/ITC81DB_0H/Helper.cs
@@ -52,6 +52,26 @@ namespace ITC81DB_0H
return ret;
}
+ ///
+ /// 소수점 없는 String 값의 끝에 "0" 추가 + 소수점 추가 후 String 값으로 리턴
+ ///
+ /// 소수점이 없는 값
+ /// 소수점 자릿수
+ /// 소수점 자리 추가 데이터
+ public static string StringToDecimalPlacesPlusZero(string value, int decimalPlaces)
+ {
+ string ret = "";
+ double dValue = 0.0;
+
+ if (value == "0")
+ dValue = StringToWeight(value, decimalPlaces);
+ else
+ dValue = StringToWeight(value + "0", decimalPlaces);
+ ret = DoubleToString(dValue, decimalPlaces);
+
+ return ret;
+ }
+
///
/// 소수점 없는 String형 값을 소수점 추가후 Double형으로 리턴(부호가 포함된 String형값)
///
diff --git a/ITC81DB_0H/ITC81DB_2H.csproj b/ITC81DB_0H/ITC81DB_2H.csproj
index 2df2303..decf669 100644
--- a/ITC81DB_0H/ITC81DB_2H.csproj
+++ b/ITC81DB_0H/ITC81DB_2H.csproj
@@ -47,6 +47,10 @@
Off
+
+ False
+ C:\Program Files (x86)\Intech\InModbus.dll
+
@@ -98,6 +102,12 @@
ControlCenterSystemBLDCMotorSetting.cs
+
+ UserControl
+
+
+ ControlConfiModbus.cs
+
UserControl
@@ -164,6 +174,12 @@
ControlConfiOptionBoard2.cs
+
+ UserControl
+
+
+ ControlMainDisplayModbus.cs
+
UserControl
@@ -610,6 +626,10 @@
ControlConfiEthernetLocalIP.cs
Designer
+
+ ControlConfiModbus.cs
+ Designer
+
ControlConfiSerialBarcode.cs
Designer
@@ -646,6 +666,10 @@
ControlMainDisplayFeedback.cs
Designer
+
+ ControlMainDisplayModbus.cs
+ Designer
+
ControlMainDisplayStopDataStatistics.cs
Designer
diff --git a/ITC81DB_0H/Version.txt b/ITC81DB_0H/Version.txt
index 0c99c10..c5399c1 100644
--- a/ITC81DB_0H/Version.txt
+++ b/ITC81DB_0H/Version.txt
@@ -12,6 +12,11 @@
⺻ м 跮
*/
+@ Ver 2.1.0 by CJY
+ - 2023.02.21
+ - Ver 2.0.0 Modify
+ - ̴ ߰
+
@ Ver 2.0.0 by CJY
- 2023.02.06
- Ver 1.4.0 Modify
diff --git a/ITC81DB_0H/bin/Release/ITC81DB_2H.exe b/ITC81DB_0H/bin/Release/ITC81DB_2H.exe
index 642a958..880ff91 100644
Binary files a/ITC81DB_0H/bin/Release/ITC81DB_2H.exe and b/ITC81DB_0H/bin/Release/ITC81DB_2H.exe differ
diff --git a/ITC81DB_0H/bin/Release/ITC81DB_2H_ImageDll.dll b/ITC81DB_0H/bin/Release/ITC81DB_2H_ImageDll.dll
index d8a2501..ea666fa 100644
Binary files a/ITC81DB_0H/bin/Release/ITC81DB_2H_ImageDll.dll and b/ITC81DB_0H/bin/Release/ITC81DB_2H_ImageDll.dll differ
diff --git a/ITC81DB_0H/bin/Release/InModbus.dll b/ITC81DB_0H/bin/Release/InModbus.dll
new file mode 100644
index 0000000..c6b4610
Binary files /dev/null and b/ITC81DB_0H/bin/Release/InModbus.dll differ
diff --git a/ITC81DB_0H/obj/Release/ITC81DB_2H.csproj.FileListAbsolute.txt b/ITC81DB_0H/obj/Release/ITC81DB_2H.csproj.FileListAbsolute.txt
index f65e556..6c132e4 100644
--- a/ITC81DB_0H/obj/Release/ITC81DB_2H.csproj.FileListAbsolute.txt
+++ b/ITC81DB_0H/obj/Release/ITC81DB_2H.csproj.FileListAbsolute.txt
@@ -73,3 +73,6 @@ D:\Laboratory\ITC81DB_2H\ITC81DB_0H\bin\Release\ITC81DB_2H_ImageDll.pdb
D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_2H.exe
D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_2H.pdb
D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_0H.Controls.ControlCenterSystemAutoZero.resources
+D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_0H.Controls.ControlMainDisplayModbus.resources
+D:\Laboratory\ITC81DB_2H\ITC81DB_0H\bin\Release\InModbus.dll
+D:\Laboratory\ITC81DB_2H\ITC81DB_0H\obj\Release\ITC81DB_0H.Controls.ControlConfiModbus.resources
diff --git a/ITC81DB_0H/obj/Release/ITC81DB_2H.exe b/ITC81DB_0H/obj/Release/ITC81DB_2H.exe
index 642a958..880ff91 100644
Binary files a/ITC81DB_0H/obj/Release/ITC81DB_2H.exe and b/ITC81DB_0H/obj/Release/ITC81DB_2H.exe differ
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/Class1.cs b/ITC81DB_ImageDll/ITC81DB_ImageDll/Class1.cs
index fee6b36..5a0a579 100644
--- a/ITC81DB_ImageDll/ITC81DB_ImageDll/Class1.cs
+++ b/ITC81DB_ImageDll/ITC81DB_ImageDll/Class1.cs
@@ -169,6 +169,7 @@ namespace ITC81DB_2H_ImageDll
chnMainLoginDisable,
chnMainLoginUp,
chnMainLogOutDown,
+ chnMainModbusScreen,
chnMainPrintDisable,
chnMainPrintDown,
chnMainPrintUp,
@@ -382,6 +383,7 @@ namespace ITC81DB_2H_ImageDll
engJudgmentStandardUp,
engMainFeedbackScreen,
engMainLineScreen,
+ engMainModbusScreen,
engMainRunLineOverDisable,
engMainRunLineOverDown,
engMainRunLineOverUp,
@@ -615,6 +617,7 @@ namespace ITC81DB_2H_ImageDll
gerMainCancelUp,
gerMainFeedbackScreen,
gerMainLineScreen,
+ gerMainModbusScreen,
gerMainRunLineOverDisable,
gerMainRunLineOverDown,
gerMainRunLineOverUp,
@@ -827,6 +830,7 @@ namespace ITC81DB_2H_ImageDll
korJudgmentStandardUp,
korMainFeedbackScreen,
korMainLineScreen,
+ korMainModbusScreen,
korMainRunLineOverDisable,
korMainRunLineOverDown,
korMainRunLineOverUp,
@@ -1043,6 +1047,7 @@ namespace ITC81DB_2H_ImageDll
rusMainLoginLoginDisable,
rusMainLoginLoginDown,
rusMainLoginLoginUp,
+ rusMainModbusScreen,
rusMainRunLineOverDisable,
rusMainRunLineOverDown,
rusMainRunLineOverUp,
@@ -2197,6 +2202,9 @@ namespace ITC81DB_2H_ImageDll
case ButtonImages.engMainLineScreen:
bt = new Bitmap(Resource1.engMainLineScreen);
break;
+ case ButtonImages.engMainModbusScreen:
+ bt = new Bitmap(Resource1.engMainModbusScreen);
+ break;
case ButtonImages.engMainRunLineOverDisable:
bt = new Bitmap(Resource1.engMainRunLineOverDisable);
break;
@@ -2839,6 +2847,9 @@ namespace ITC81DB_2H_ImageDll
case ButtonImages.gerMainLineScreen:
bt = new Bitmap(Resource1.gerMainLineScreen);
break;
+ case ButtonImages.gerMainModbusScreen:
+ bt = new Bitmap(Resource1.gerMainModbusScreen);
+ break;
case ButtonImages.gerMainRunLineOverDisable:
bt = new Bitmap(Resource1.gerMainRunLineOverDisable);
break;
@@ -3460,6 +3471,9 @@ namespace ITC81DB_2H_ImageDll
case ButtonImages.korMainLineScreen:
bt = new Bitmap(Resource1.korMainLineScreen);
break;
+ case ButtonImages.korMainModbusScreen:
+ bt = new Bitmap(Resource1.korMainModbusScreen);
+ break;
case ButtonImages.korMainRunLineOverDisable:
bt = new Bitmap(Resource1.korMainRunLineOverDisable);
break;
@@ -4042,6 +4056,9 @@ namespace ITC81DB_2H_ImageDll
case ButtonImages.rusMainLoginLoginUp:
bt = new Bitmap(Resource1.rusMainLoginLoginUp);
break;
+ case ButtonImages.rusMainModbusScreen:
+ bt = new Bitmap(Resource1.rusMainModbusScreen);
+ break;
case ButtonImages.rusMainRunLineOverDisable:
bt = new Bitmap(Resource1.rusMainRunLineOverDisable);
break;
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/ITC81DB_2H_ImageDll.csproj b/ITC81DB_ImageDll/ITC81DB_ImageDll/ITC81DB_2H_ImageDll.csproj
index a84d048..850597e 100644
--- a/ITC81DB_ImageDll/ITC81DB_ImageDll/ITC81DB_2H_ImageDll.csproj
+++ b/ITC81DB_ImageDll/ITC81DB_ImageDll/ITC81DB_2H_ImageDll.csproj
@@ -3262,6 +3262,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/Resource1.Designer.cs b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resource1.Designer.cs
index f7d3b0e..4fafa5f 100644
--- a/ITC81DB_ImageDll/ITC81DB_ImageDll/Resource1.Designer.cs
+++ b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resource1.Designer.cs
@@ -1184,6 +1184,13 @@ namespace ITC81DB_2H_ImageDll {
}
}
+ internal static System.Drawing.Bitmap chnMainModbusScreen {
+ get {
+ object obj = ResourceManager.GetObject("chnMainModbusScreen", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
internal static System.Drawing.Bitmap chnMainPrintDisable {
get {
object obj = ResourceManager.GetObject("chnMainPrintDisable", resourceCulture);
@@ -2675,6 +2682,13 @@ namespace ITC81DB_2H_ImageDll {
}
}
+ internal static System.Drawing.Bitmap engMainModbusScreen {
+ get {
+ object obj = ResourceManager.GetObject("engMainModbusScreen", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
internal static System.Drawing.Bitmap engMainRunLineOverDisable {
get {
object obj = ResourceManager.GetObject("engMainRunLineOverDisable", resourceCulture);
@@ -4201,6 +4215,13 @@ namespace ITC81DB_2H_ImageDll {
}
}
+ internal static System.Drawing.Bitmap gerMainModbusScreen {
+ get {
+ object obj = ResourceManager.GetObject("gerMainModbusScreen", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
internal static System.Drawing.Bitmap gerMainRunLineOverDisable {
get {
object obj = ResourceManager.GetObject("gerMainRunLineOverDisable", resourceCulture);
@@ -5664,6 +5685,13 @@ namespace ITC81DB_2H_ImageDll {
}
}
+ internal static System.Drawing.Bitmap korMainModbusScreen {
+ get {
+ object obj = ResourceManager.GetObject("korMainModbusScreen", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
internal static System.Drawing.Bitmap korMainRunLineOverDisable {
get {
object obj = ResourceManager.GetObject("korMainRunLineOverDisable", resourceCulture);
@@ -7050,6 +7078,13 @@ namespace ITC81DB_2H_ImageDll {
}
}
+ internal static System.Drawing.Bitmap rusMainModbusScreen {
+ get {
+ object obj = ResourceManager.GetObject("rusMainModbusScreen", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
internal static System.Drawing.Bitmap rusMainRunLineOverDisable {
get {
object obj = ResourceManager.GetObject("rusMainRunLineOverDisable", resourceCulture);
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/Resource1.resx b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resource1.resx
index e4d99e9..fa5512e 100644
--- a/ITC81DB_ImageDll/ITC81DB_ImageDll/Resource1.resx
+++ b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resource1.resx
@@ -3196,4 +3196,19 @@
Resources\engHelpBLDCUp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ Resources\chnMainModbusScreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\engMainModbusScreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\gerMainModbusScreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\korMainModbusScreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ Resources\rusMainModbusScreen.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/chnMainModbusScreen.png b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/chnMainModbusScreen.png
new file mode 100644
index 0000000..dd477be
Binary files /dev/null and b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/chnMainModbusScreen.png differ
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/engMainModbusScreen.png b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/engMainModbusScreen.png
new file mode 100644
index 0000000..8410e2e
Binary files /dev/null and b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/engMainModbusScreen.png differ
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/gerMainModbusScreen.png b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/gerMainModbusScreen.png
new file mode 100644
index 0000000..6f43ac9
Binary files /dev/null and b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/gerMainModbusScreen.png differ
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/korMainModbusScreen.png b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/korMainModbusScreen.png
new file mode 100644
index 0000000..862453f
Binary files /dev/null and b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/korMainModbusScreen.png differ
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/rusMainModbusScreen.png b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/rusMainModbusScreen.png
new file mode 100644
index 0000000..d34a955
Binary files /dev/null and b/ITC81DB_ImageDll/ITC81DB_ImageDll/Resources/rusMainModbusScreen.png differ
diff --git a/ITC81DB_ImageDll/ITC81DB_ImageDll/bin/Release/ITC81DB_2H_ImageDll.dll b/ITC81DB_ImageDll/ITC81DB_ImageDll/bin/Release/ITC81DB_2H_ImageDll.dll
index d8a2501..ea666fa 100644
Binary files a/ITC81DB_ImageDll/ITC81DB_ImageDll/bin/Release/ITC81DB_2H_ImageDll.dll and b/ITC81DB_ImageDll/ITC81DB_ImageDll/bin/Release/ITC81DB_2H_ImageDll.dll differ