using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using LFP_Manager.DataStructure; using LFP_Manager.Function; using LFP_Manager.Utils; namespace LFP_Manager.Controls { public delegate void setUpdate(object sender); public delegate void setCommand(int mode, int flag, ParamData aParam); public struct ParamData { public short Fault; public short Warning; public short Release; public short Time; } public partial class ucParamSet : UserControl { #region VARIABLES int id = 0; ParamData rParam; ParamData wParam; public int wFlag = 0; public event setCommand OnCommand = null; #endregion #region CONSTRUCTORS public ucParamSet() { InitializeComponent(); } #endregion #region EXT EVENT FUNCTION private void OnCommnadEvent(int mode, int flag, ParamData aParam) { OnCommand?.Invoke(mode, flag, aParam); } #endregion #region BUTTON EVENT private void btnRead_Click(object sender, EventArgs e) { OnCommnadEvent(id, 0, rParam); } private void btnSet_Click(object sender, EventArgs e) { if ((edTripNew.Text == "") || (edWarningNew.Text == "") || (edReleaseNew.Text == "")) { return; } wParam = rParam; OnCommnadEvent(id, 1, MakeNewParam(id)); } private ParamData MakeNewParam(int aId) { switch (aId) { case 0: // Cell Over Voltage case 1: // Cell Under Voltage wParam.Fault = Convert.ToInt16(edTripNew.Text); wParam.Warning = Convert.ToInt16(edWarningNew.Text); wParam.Release = Convert.ToInt16(edReleaseNew.Text); break; case 2: // System Over Voltage case 3: // System Under Voltage wParam.Fault = (short)(Convert.ToDouble(edTripNew.Text) * 10); wParam.Warning = (short)(Convert.ToDouble(edWarningNew.Text) * 10); wParam.Release = (short)(Convert.ToDouble(edReleaseNew.Text) * 10); break; case 4: // Charge High Temperature case 5: // Charge Loq Temperature case 6: // Discharge High Temperature case 7: // Discharge Low Temperature case 10: // Low SOC case 11: // Low SOC wParam.Fault = Convert.ToInt16(edTripNew.Text); wParam.Warning = Convert.ToInt16(edWarningNew.Text); wParam.Release = Convert.ToInt16(edReleaseNew.Text); break; case 8: // Charge Over Current case 9: // Discharge Over Current wParam.Fault = (short)(Convert.ToDouble(edTripNew.Text) * 10); wParam.Warning = (short)(Convert.ToDouble(edWarningNew.Text) * 10); wParam.Release = (short)(Convert.ToDouble(edReleaseNew.Text) * 1); break; } return wParam; } #endregion #region PUBLIC FUCTIONS public void SetId(int aId) { id = aId; } public void UpdateData(ParamData aParam) { rParam = aParam; DisplayParam(); UpdateNewParam(); } public void VisibleItem(int item, bool flag) { switch (item) { case 0: lbFault.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; lcTripParam.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; lcTripParamNew.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; lbTripUnit.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; break; case 1: edWarning.Enabled = flag; edWarningNew.Enabled = flag; break; case 2: lbRelease.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; lcReleaseParam.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; lcReleaseParamNew.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; lbReleaseUnit.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never; break; } } public void EnableItem(int item, bool flag) { switch (item) { case 0: edTrip.Enabled = flag; edTripNew.Enabled = flag; break; case 1: edWarning.Enabled = flag; edWarningNew.Enabled = flag; break; case 2: edRelease.Enabled = flag; edReleaseNew.Enabled = flag; break; } } public void EnableDisableSetBtn(bool flag) { btnSet.Enabled = flag; } public void SetParamName(int no, string nm) { switch (no) { case 0: gbParamSet.Text = nm; if ((nm == "Charge Over Current") || (nm == "Discharge Over Current")) { lbFault.Text = "Fault 2"; lbWarning.Text = "Fault 1"; } break; case 1: lbTripUnit.Text = nm; lbWarningUnit.Text = nm; if (nm == "A") lbReleaseUnit.Text = "S"; else lbReleaseUnit.Text = nm; break; } } #endregion #region DISPLAY private void DisplayParam() { ParamData Param = new ParamData(); Param = rParam; switch (id) { case 0: case 1: edTrip.Text = String.Format("{0}", Param.Fault); edWarning.Text = String.Format("{0}", Param.Warning); edRelease.Text = String.Format("{0}", Param.Release); break; case 2: case 3: edTrip.Text = String.Format("{0:#0.0}", (float)Param.Fault / 10); edWarning.Text = String.Format("{0:#0.0}", (float)Param.Warning / 10); edRelease.Text = String.Format("{0:#0.0}", (float)Param.Release / 10); break; case 4: case 5: case 6: case 7: case 10: case 11: edTrip.Text = String.Format("{0}", Param.Fault); edWarning.Text = String.Format("{0}", Param.Warning); edRelease.Text = String.Format("{0}", Param.Release); break; case 8: // Charge Over Current case 9: // Discharge Over Current edTrip.Text = String.Format("{0:#0.0}", (float)Param.Fault / 10); edWarning.Text = String.Format("{0:#0.0}", (float)Param.Warning / 10); edRelease.Text = String.Format("{0}", (float)Param.Release / 1); break; } } private void UpdateNewParam() { if (wFlag == 0) { ParamData Param = rParam; switch (id) { case 0: case 1: edTripNew.Text = String.Format("{0}", Param.Fault); edWarningNew.Text = String.Format("{0}", Param.Warning); edReleaseNew.Text = String.Format("{0}", Param.Release); break; case 2: case 3: edTripNew.Text = String.Format("{0:#0.0}", (float)Param.Fault / 10); edWarningNew.Text = String.Format("{0:#0.0}", (float)Param.Warning / 10); edReleaseNew.Text = String.Format("{0:#0.0}", (float)Param.Release / 10); break; case 4: case 5: case 6: case 7: case 10: case 11: edTripNew.Text = String.Format("{0}", Param.Fault); edWarningNew.Text = String.Format("{0}", Param.Warning); edReleaseNew.Text = String.Format("{0}", Param.Release); break; case 8: case 9: edTripNew.Text = String.Format("{0:#0.0}", (float)Param.Fault / 10); edWarningNew.Text = String.Format("{0:#0.0}", (float)Param.Warning / 10); edReleaseNew.Text = String.Format("{0}", (float)Param.Release / 1); break; } wFlag = 1; } } #endregion private void TextBox_KeyPress(object sender, KeyPressEventArgs e) { //csUtils.TypingOnlyNumber(sender, e, true, true); } } }