From 37819777417453681088988257e051d41892efd4 Mon Sep 17 00:00:00 2001 From: shark219-hub Date: Wed, 27 Nov 2024 11:55:33 +0900 Subject: [PATCH] =?UTF-8?q?TrendViewer,=20=EC=B0=A8=ED=8A=B8=20LegendText?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=ED=95=9C=20=EC=85=80=EC=9D=B4=EB=A6=84?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Viewer/TrendViewer/Frm_trend.cs | 5 +- cVMS.NET_CS/HMI/MainDisplay/DispCtrl.cs | 182 ++++++++++--------- cVMS.NET_CS/Modbus/JdModbusRTU.cs | 5 +- cVMS.NET_CS/Properties/Resources.Designer.cs | 10 + cVMS.NET_CS/Properties/Resources.resx | 43 +++-- cVMS.NET_CS/Resources/applix.png | Bin 0 -> 735 bytes cVMS.NET_CS/Setting/Frm_Config.Designer.cs | 32 ++-- cVMS.NET_CS/Setting/Frm_Config.cs | 11 +- cVMS.NET_CS/Setting/Frm_Config.resx | 15 -- 9 files changed, 161 insertions(+), 142 deletions(-) create mode 100644 cVMS.NET_CS/Resources/applix.png diff --git a/Viewer/TrendViewer/Frm_trend.cs b/Viewer/TrendViewer/Frm_trend.cs index 82749e0..364d1f9 100644 --- a/Viewer/TrendViewer/Frm_trend.cs +++ b/Viewer/TrendViewer/Frm_trend.cs @@ -578,8 +578,9 @@ namespace vmsnet } else myScatter.LineColor = ScottPlot.Colors.Red; myScatter.Color = myScatter.LineColor; - myScatter.LegendText = $"CH{i + 1}"; - this.myPlots[i] = myScatter; //visible 변경및 데이터 접근을 위해 변수에 따로 저장해둔다. + /* 작성자: 이재웅, 작성일: 2024-11-27, 내용: 변경한 셀이름으로 차트범례 표시 */ + myScatter.LegendText = chinfo.ItemArray[1].ToString(); //$"CH{i + 1}"; + this.myPlots[i] = myScatter; //visible 변경 및 데이터 접근을 위해 변수에 따로 저장해둔다. } formsPlot1.Plot.Axes.DateTimeTicksBottom(); diff --git a/cVMS.NET_CS/HMI/MainDisplay/DispCtrl.cs b/cVMS.NET_CS/HMI/MainDisplay/DispCtrl.cs index d0eaf7e..5b24dd1 100644 --- a/cVMS.NET_CS/HMI/MainDisplay/DispCtrl.cs +++ b/cVMS.NET_CS/HMI/MainDisplay/DispCtrl.cs @@ -12,6 +12,7 @@ using System.Data.SqlTypes; using System.Diagnostics; using vmsnet.Attributes; using vmsnet.Configures; +using AR; namespace vmsnet.HMI { @@ -1700,105 +1701,116 @@ namespace vmsnet.HMI base.OnPaint(e); //this.SuspendLayout(); - ///각영역을 새로 만들어야하는경우이다. - if (bMakeRect) + try { - if (FullScreen) + ///각영역을 새로 만들어야하는경우이다. + if (bMakeRect) { - WindowRect = new RectangleF(Padding.Left, Padding.Top, this.Width - Padding.Left - Padding.Right, this.Height - Padding.Top - Padding.Bottom); - //TrendRect = new RectangleF(0,0,0,0); - // BarRect = new RectangleF(0, 0, 0, 0); - // NavRect = new RectangleF(0, 0, 0, 0); + if (FullScreen) + { + WindowRect = new RectangleF(Padding.Left, Padding.Top, this.Width - Padding.Left - Padding.Right, this.Height - Padding.Top - Padding.Bottom); + //TrendRect = new RectangleF(0,0,0,0); + // BarRect = new RectangleF(0, 0, 0, 0); + // NavRect = new RectangleF(0, 0, 0, 0); + } + else + { + + WindowRect = new RectangleF(Padding.Left, Padding.Top, this.Width - Padding.Left - Padding.Right, this.Height - Padding.Top - Padding.Bottom); + + //개별화면일경우 + // int WindowWidth = SmallSize; // (int)((this.Width - Padding.Left - Padding.Right) * 0.4); + // int halfHeight = (int)((this.Height- Padding.Top - Padding.Bottom - 50-10) * 0.5); + // WindowRect = new RectangleF(Padding.Left, Padding.Top, WindowWidth, this.Height - Padding.Top - Padding.Bottom); + + // NavRect = new RectangleF(WindowRect.Right + 10, WindowRect.Top, this.Width - WindowRect.Right - 10 - 1, 50); + // TrendRect = new RectangleF(NavRect.Left, WindowRect.Top + 50, this.Width - WindowRect.Right - 10 - 1, halfHeight); + // BarRect = new RectangleF(NavRect.Left, TrendRect.Bottom + 10, TrendRect.Width, halfHeight); + } + bMakeRect = false; } + + Buttons = new List(0); + //Buttonstag = new List(0); + //Buttonstype = new List(0); + + Boolean isnull = false; + if (!init) isnull = true; else { - - WindowRect = new RectangleF(Padding.Left, Padding.Top, this.Width - Padding.Left - Padding.Right, this.Height - Padding.Top - Padding.Bottom); - - //개별화면일경우 - // int WindowWidth = SmallSize; // (int)((this.Width - Padding.Left - Padding.Right) * 0.4); - // int halfHeight = (int)((this.Height- Padding.Top - Padding.Bottom - 50-10) * 0.5); - // WindowRect = new RectangleF(Padding.Left, Padding.Top, WindowWidth, this.Height - Padding.Top - Padding.Bottom); - - // NavRect = new RectangleF(WindowRect.Right + 10, WindowRect.Top, this.Width - WindowRect.Right - 10 - 1, 50); - // TrendRect = new RectangleF(NavRect.Left, WindowRect.Top + 50, this.Width - WindowRect.Right - 10 - 1, halfHeight); - // BarRect = new RectangleF(NavRect.Left, TrendRect.Bottom + 10, TrendRect.Width, halfHeight); - } - bMakeRect = false; - } - - Buttons = new List(0); - //Buttonstag = new List(0); - //Buttonstype = new List(0); - - Boolean isnull = false; - if (!init) isnull = true; - else - { - if (this.WINDOW == null || this.GROUPS == null) isnull = true; - if (isnull && this.GROUPS.Length == 0) isnull = true; - } - - //표시아이템이없다면 오류를 낸다. - if (isnull) - { - //progress - int bw = (int)(this.Width * 0.8); - int bh = 30; - - Rectangle rr = new Rectangle((this.Width - bw) / 2, (this.Height - bh) / 2, bw, bh); - Rectangle FullRect = new Rectangle(0, 0, this.Width, this.Height); - using (var gradientBrush = new LinearGradientBrush(FullRect, Color.White, Color.White, LinearGradientMode.Vertical)) - { - e.Graphics.FillRectangle(gradientBrush, FullRect); - SizeF initsize = e.Graphics.MeasureString(initmsg, FONT_NANUM_20_BOLD); - e.Graphics.DrawString(initmsg, FONT_NANUM_20_BOLD, Brushes.Black, this.Width / 2 - initsize.Width / 2, this.Height / 2 - initsize.Height / 2 - bh - 20); + if (this.WINDOW == null || this.GROUPS == null) isnull = true; + if (isnull && this.GROUPS.Length == 0) isnull = true; } - using (var lb = new LinearGradientBrush(rr, Color.LightBlue, Color.SkyBlue, LinearGradientMode.Vertical)) + //표시아이템이없다면 오류를 낸다. + if (isnull) { - if (initpercent > 100) initpercent = 100; - int perc = (int)(rr.Width * initpercent / 100); - e.Graphics.FillRectangle(lb, new Rectangle(rr.Left, rr.Top, perc, rr.Height)); - e.Graphics.DrawRectangle(Pens.DarkGray, rr); - e.Graphics.DrawRectangle(Pens.DarkGoldenrod, FullRect.Left, FullRect.Top, FullRect.Width - 1, FullRect.Height - 1); + //progress + int bw = (int)(this.Width * 0.8); + int bh = 30; + + Rectangle rr = new Rectangle((this.Width - bw) / 2, (this.Height - bh) / 2, bw, bh); + Rectangle FullRect = new Rectangle(0, 0, this.Width, this.Height); + using (var gradientBrush = new LinearGradientBrush(FullRect, Color.White, Color.White, LinearGradientMode.Vertical)) + { + e.Graphics.FillRectangle(gradientBrush, FullRect); + SizeF initsize = e.Graphics.MeasureString(initmsg, FONT_NANUM_20_BOLD); + e.Graphics.DrawString(initmsg, FONT_NANUM_20_BOLD, Brushes.Black, this.Width / 2 - initsize.Width / 2, this.Height / 2 - initsize.Height / 2 - bh - 20); + } + + using (var lb = new LinearGradientBrush(rr, Color.LightBlue, Color.SkyBlue, LinearGradientMode.Vertical)) + { + if (initpercent > 100) initpercent = 100; + int perc = (int)(rr.Width * initpercent / 100); + e.Graphics.FillRectangle(lb, new Rectangle(rr.Left, rr.Top, perc, rr.Height)); + e.Graphics.DrawRectangle(Pens.DarkGray, rr); + e.Graphics.DrawRectangle(Pens.DarkGoldenrod, FullRect.Left, FullRect.Top, FullRect.Width - 1, FullRect.Height - 1); + } + + this.ResumeLayout(); + return; } - this.ResumeLayout(); - return; - } + // AntiAliasing + e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; - // AntiAliasing - e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; + //그룹목록 + DrawGroups(e.Graphics); /* GROUPS 화면 Display !!! */ - //그룹목록 - DrawGroups(e.Graphics); /* GROUPS 화면 Display !!! */ - - //monitor off display - if (MonitorOn == false) - { - e.Graphics.FillRectangle(SB_WhiteSmoke_200, DisplayRectangle); - e.Graphics.DrawString("MONITOR PAUSE", FONT_TAHOMA_80_BOLD, Brushes.Gray, DisplayRectangle, new StringFormat + //monitor off display + if (MonitorOn == false) { - Alignment = StringAlignment.Center, - LineAlignment = StringAlignment.Center, - }); - } - - //if (!FullScreen && ShowIndex >= 0) - { - //트렌드뷰용채널데이터를 새로 만드는경우 - //if (bMakeTrendViewChData) MakeTrendViewChData(); - - //마지막데이터와 2초의 차이가 있다면 데이터를 생성해준다. - DateTime NOwdate = DateTime.Now; - TimeSpan ts = NOwdate - LastNotifyTime; - if (ts.TotalSeconds >= NotifyDataSecond) - { - //알림 - if (OnNotifyData != null) OnNotifyData(NOwdate); - LastNotifyTime = NOwdate; + e.Graphics.FillRectangle(SB_WhiteSmoke_200, DisplayRectangle); + e.Graphics.DrawString("MONITOR PAUSE", FONT_TAHOMA_80_BOLD, Brushes.Gray, DisplayRectangle, new StringFormat + { + Alignment = StringAlignment.Center, + LineAlignment = StringAlignment.Center, + }); } + + //if (!FullScreen && ShowIndex >= 0) + { + //트렌드뷰용채널데이터를 새로 만드는경우 + //if (bMakeTrendViewChData) MakeTrendViewChData(); + + //마지막데이터와 2초의 차이가 있다면 데이터를 생성해준다. + DateTime NOwdate = DateTime.Now; + TimeSpan ts = NOwdate - LastNotifyTime; + if (ts.TotalSeconds >= NotifyDataSecond) + { + //알림 + if (OnNotifyData != null) OnNotifyData(NOwdate); + LastNotifyTime = NOwdate; + } + } + } + catch (NullReferenceException ex1) + { + // UI 디스플레이 중, 예외발생 문제 + } + catch (Exception ex) + { + // else error !!! } } diff --git a/cVMS.NET_CS/Modbus/JdModbusRTU.cs b/cVMS.NET_CS/Modbus/JdModbusRTU.cs index ea6a770..7fa99a0 100644 --- a/cVMS.NET_CS/Modbus/JdModbusRTU.cs +++ b/cVMS.NET_CS/Modbus/JdModbusRTU.cs @@ -58,9 +58,10 @@ namespace vmsnet ErrorMessage = "포트명이 입력되지 않았습니다"; return false; } + if (port != null && port.IsOpen) port.Close(); - - if (port == null) port = new SerialPort(this.PortName); + //if (port == null) port = new SerialPort(this.PortName); + port = new SerialPort(this.PortName); port.BaudRate = Configure.BaudRate; port.Parity = Configure.Parity; port.DataBits = Configure.DataBits; diff --git a/cVMS.NET_CS/Properties/Resources.Designer.cs b/cVMS.NET_CS/Properties/Resources.Designer.cs index 16b04d3..c5be550 100644 --- a/cVMS.NET_CS/Properties/Resources.Designer.cs +++ b/cVMS.NET_CS/Properties/Resources.Designer.cs @@ -60,6 +60,16 @@ namespace vmsnet.Properties { } } + /// + /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. + /// + internal static System.Drawing.Bitmap applix { + get { + object obj = ResourceManager.GetObject("applix", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다. /// diff --git a/cVMS.NET_CS/Properties/Resources.resx b/cVMS.NET_CS/Properties/Resources.resx index b4793f9..2acd172 100644 --- a/cVMS.NET_CS/Properties/Resources.resx +++ b/cVMS.NET_CS/Properties/Resources.resx @@ -118,23 +118,17 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\Backup Green Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Blue Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Purple Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Clear Green Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\down_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Blue Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\down_orange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Get Info Blue Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Backup Green Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icons8-positive-dynamic-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -142,16 +136,25 @@ ..\Resources\Green Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Orange Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Purple Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Red Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Get Info Blue Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\up_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\down_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\down_orange.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Orange Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Red Ball.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\applix.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/cVMS.NET_CS/Resources/applix.png b/cVMS.NET_CS/Resources/applix.png new file mode 100644 index 0000000000000000000000000000000000000000..31bdce83017ac23db486e3f5629f6b39e3f987d3 GIT binary patch literal 735 zcmV<50wDc~P)QTNAQ~Wm zn1BI<;sTJuTeog8Y}>Yt!Ozc+;oG-w3|qErVPIxvhHC`rfmsF+KujAD+98ZK>#3tm|#u - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG - YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 - 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw - bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc - VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 - c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 - Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo - mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ - kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D - TgDQASA1MVpwzwAAAABJRU5ErkJggg==