Files
JP_KDDI_LFPS_48100/LFP_Manager/Controls/ucCommConfig.cs
2025-12-19 13:59:34 +09:00

238 lines
6.8 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Runtime.InteropServices;
using System.IO;
using System.IO.Ports;
using LFP_Manager.DataStructure;
using LFP_Manager.Function;
using System.Data.Entity.Infrastructure;
namespace LFP_Manager.Controls
{
public partial class ucCommConfig : DevExpress.XtraEditors.XtraUserControl
{
#region EVENT
public delegate void CloseEvent(object aConfig, bool saved);
#endregion
#region VARIABLES
CommConfig Config = new CommConfig();
public event CloseEvent OnClose = null;
DataTable dtComport = new DataTable();
private bool saved = false;
#endregion
#region CONSTRUCTORS
public ucCommConfig()
{
InitializeComponent();
CommPortLoad();
IniLoad();
}
private void InitComportDataTable()
{
dtComport = new DataTable();
dtComport.Columns.Add("name", typeof(string));
dtComport.Columns.Add("name2", typeof(string));
}
#endregion
#region DATA LOAD AND SAVE
private void CommPortLoad()
{
bool found = false;
int ComId = 0;
InitComportDataTable();
foreach (string comport in SerialPort.GetPortNames())
{
DataRow aRow = dtComport.NewRow();
aRow["name"] = comport;
dtComport.Rows.Add(aRow);
}
for (int i = 0; i < dtComport.Rows.Count; i++)
{
cbUartPort.Properties.Items.Add(dtComport.Rows[i]["name"].ToString());
}
if (Config.UartPort != "")
{
for (int i = 0; i < cbUartPort.Properties.Items.Count; i++)
{
if (dtComport.Rows[i]["name"].ToString() == Config.UartPort)
{
found = true;
ComId = i;
break;
}
}
}
if (found)
{
cbUartPort.SelectedIndex = ComId;
Config.UartPort = cbUartPort.Properties.Items[ComId].ToString();
}
else
{
if (cbUartPort.Properties.Items.Count > 0)
{
cbUartPort.SelectedIndex = 0;
}
}
}
private void IniLoad()
{
csIniControlFunction.IniLoad(Application.ExecutablePath, ref Config);
cbUartModel.Properties.Items.Clear();
CbSnmpModel.Properties.Items.Clear();
foreach (string m_name in csConstData.UART_MODEL)
{
cbUartModel.Properties.Items.Add(m_name);
CbSnmpModel.Properties.Items.Add(m_name);
}
CbModuleQty.Properties.Items.Clear();
for (int i = 0; i < csConstData.SystemInfo.MAX_MODULE_SIZE; i++)
{
CbModuleQty.Properties.Items.Add(string.Format("{0}", i + 1));
}
switch (Config.CommType)
{
case csConstData.CommType.COMM_UART:
RbUart.Checked = true;
break;
case csConstData.CommType.COMM_RS485:
RbRS485.Checked = true;
break;
case csConstData.CommType.COMM_SNMP:
RbSnmp.Checked = true;
break;
default:
RbUart.Checked = true;
break;
}
if (Config.SnmpIP == "")
{ Config.SnmpIP = teTargetIP.Text; }
teTargetIP.Text = Config.SnmpIP;
CbSnmpModel.SelectedIndex = Config.SnmpModelIndex;
cbUartPort.Text = Config.UartPort;
cbUartModel.SelectedIndex = Config.UartModelIndex;
CbModuleQty.Text = string.Format("{0}", Config.ModuleQty);
edRecvWaitTime.Text = string.Format("{0}", Config.RecvWaitTime);
cbDbLogPeriod.Text = Config.DbLogPeriod.ToString();
}
private void IniSave()
{
if (RbUart.Checked)
{
Config.CommType = csConstData.CommType.COMM_UART;
}
else if (RbRS485.Checked)
{
Config.CommType = csConstData.CommType.COMM_RS485;
}
else if (RbSnmp.Checked)
{
Config.CommType = csConstData.CommType.COMM_SNMP;
}
try
{
Config.SnmpIP = teTargetIP.Text;
Config.SnmpModelIndex = CbSnmpModel.SelectedIndex;
Config.UartPort = cbUartPort.Text;
Config.UartModelIndex = cbUartModel.SelectedIndex;
Config.ModuleQty = Convert.ToInt32(CbModuleQty.Text);
Config.RecvWaitTime = Convert.ToInt32(edRecvWaitTime.Text);
Config.DbLogPeriod = Convert.ToInt32(cbDbLogPeriod.Text);
csIniControlFunction.IniSave(Application.ExecutablePath, Config);
saved = true;
}
catch (Exception)
{
MessageBox.Show("Save fail - Please check config", "Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
#endregion
#region BUTTON EVENT
private void btnClose_Click(object sender, EventArgs e)
{
OnClose?.Invoke(Config, saved);
}
private void btnSave_Click(object sender, EventArgs e)
{
IniSave();
}
#endregion
#region COMPONENT EVENT
private void RbUart_CheckStateChanged(object sender, EventArgs e)
{
if (RbUart.Checked)
{
LcGroupUart.Enabled = true;
LcGroupSnmp.Enabled = false;
CbModuleQty.Enabled = false;
CbModuleQty.Text = "1";
}
}
private void RbRS485_CheckStateChanged(object sender, EventArgs e)
{
if (RbRS485.Checked)
{
LcGroupUart.Enabled = true;
LcGroupSnmp.Enabled = false;
CbModuleQty.Enabled = true;
}
}
private void RbSnmp_CheckedChanged(object sender, EventArgs e)
{
if (RbSnmp.Checked)
{
LcGroupUart.Enabled = false;
LcGroupSnmp.Enabled = true;
CbModuleQty.Enabled = true;
CbModuleQty.Text = "1";
}
}
#endregion
}
}