359 lines
17 KiB
C#
359 lines
17 KiB
C#
|
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.Forms;
|
|||
|
using ITC81DB_ImageDll;
|
|||
|
using ITC81DB.DialogForms;
|
|||
|
|
|||
|
namespace ITC81DB
|
|||
|
{
|
|||
|
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 if (this.ParentForm.ParentForm.SystemConfig1.Language == DataStore.LanguageID.Spanish)
|
|||
|
{
|
|||
|
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
|
|||
|
{
|
|||
|
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.ModbusSlaveIDCOM1 = 1;
|
|||
|
else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM3)
|
|||
|
this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3 = 1;
|
|||
|
else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM4)
|
|||
|
this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4 = 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.ModbusSlaveIDCOM1.ToString();
|
|||
|
this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig3.ModbusRTUStartAddressCOM1.ToString();
|
|||
|
}
|
|||
|
else if (menu == DataStore.MenuBottomConfiguration.SerialCOM3)
|
|||
|
{
|
|||
|
this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3.ToString();
|
|||
|
this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig3.ModbusRTUStartAddressCOM3.ToString();
|
|||
|
}
|
|||
|
else if (menu == DataStore.MenuBottomConfiguration.SerialCOM4)
|
|||
|
{
|
|||
|
this.labelSlaveID.Text = this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4.ToString();
|
|||
|
this.labelStartAddress.Text = this.ParentForm.ParentForm.SystemConfig3.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.SystemConfig3.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.ModbusSlaveIDCOM1 = myKeyPad.IntValue;
|
|||
|
else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM3)
|
|||
|
this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM3 = myKeyPad.IntValue;
|
|||
|
else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM4)
|
|||
|
this.ParentForm.ParentForm.SystemConfig2.ModbusSlaveIDCOM4 = 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.SystemConfig3.ModbusRTUStartAddressCOM1 = myKeyPad.IntValue;
|
|||
|
else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM3)
|
|||
|
this.ParentForm.ParentForm.SystemConfig3.ModbusRTUStartAddressCOM3 = myKeyPad.IntValue;
|
|||
|
else if (this.ParentForm.CurrentConfigurationMenu() == DataStore.MenuBottomConfiguration.SerialCOM4)
|
|||
|
this.ParentForm.ParentForm.SystemConfig3.ModbusRTUStartAddressCOM4 = myKeyPad.IntValue;
|
|||
|
else
|
|||
|
this.ParentForm.ParentForm.SystemConfig3.ModbusTCPStartAddress = myKeyPad.IntValue;
|
|||
|
|
|||
|
this.ParentForm.ParentForm.SaveSystemConfigurationFile3(this.ParentForm.ParentForm.SystemConfig3);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
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
|
|||
|
}
|
|||
|
}
|