diff --git a/TEST/DigitalIndicator/Form1.cs b/TEST/DigitalIndicator/Form1.cs index 40ea76f..13e8bbe 100644 --- a/TEST/DigitalIndicator/Form1.cs +++ b/TEST/DigitalIndicator/Form1.cs @@ -65,8 +65,8 @@ namespace DigitalIndicator dev.DataBits = 8; // 데이터 비트 dev.Parity = System.IO.Ports.Parity.None; dev.StopBits = System.IO.Ports.StopBits.One; - dev.ReadTimeout = 2000; - dev.WriteTimeout = 2000; + dev.ReadTimeout = 1500; + dev.WriteTimeout = 1500; try { @@ -81,10 +81,6 @@ namespace DigitalIndicator // Modbus 마스터 생성 modbus = ModbusSerialMaster.CreateRtu(dev); } - - - - } private void timer1_Tick(object sender, EventArgs e) diff --git a/cVMS.NET_CS/Device/DigitalIndicator.cs b/cVMS.NET_CS/Device/DigitalIndicator.cs index e4adb13..56f4d4c 100644 --- a/cVMS.NET_CS/Device/DigitalIndicator.cs +++ b/cVMS.NET_CS/Device/DigitalIndicator.cs @@ -52,6 +52,13 @@ namespace vmsnet return new ushort[] { hValue, lValue }; } + UInt16[] splitI32(Int32 value) + { + var hValue = (UInt16)(value >> 16); + var lValue = (UInt16)(value & 0xFFFF); + return new ushort[] { hValue, lValue }; + } + public bool WriteValue(UInt16[] values) { if (IsOpen == false) @@ -64,6 +71,7 @@ namespace vmsnet ErrorMessage = "모드버스가 초기화 되지 않았습니다"; return false; } + try { master.WriteMultipleRegisters(this.SlaveID, 0, values); @@ -76,6 +84,5 @@ namespace vmsnet } } - } } diff --git a/cVMS.NET_CS/HMI/MainDisplay/DispCtrl.cs b/cVMS.NET_CS/HMI/MainDisplay/DispCtrl.cs index 2edc5a1..1807e9a 100644 --- a/cVMS.NET_CS/HMI/MainDisplay/DispCtrl.cs +++ b/cVMS.NET_CS/HMI/MainDisplay/DispCtrl.cs @@ -51,7 +51,7 @@ namespace vmsnet.HMI { public bool MonitorOn { get; set; } public CMouseinfo Mouseinfo; //마우스위치정보 - + //그룹데이터 public CGROUP[] GROUPS = new CGROUP[0]; public CWINDOW WINDOW = new CWINDOW(); @@ -1477,23 +1477,6 @@ namespace vmsnet.HMI String MaxKA = (grp._amp * 10f).ToString("#0.00"); //Console.WriteLine($"{grp.이름} : {MaxKA} {grp._ampunit}"); - //if (grp.이름 == "EL2500E") MaxKA = "0.01"; - - - /**************************************************************************************/ - /* 작성자: 이재웅, 작성일: 2024-11-19, 작성내용: 8개 전해조의 합산 전류량[KA] Modbus 전송 부분 */ - /**************************************************************************************/ - - //using (var client = new JdModbus("COM3", new RtuConfigure() { BaudRate = 115200 })) - //{ - // client.Connect(); - - // ushort[] grpKA = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; // 전력량 배열 (예시) - // byte slaveaddr = 3; - // client.WriteHoldingRegisters(RelayControl.mKA, grpKA, slaveaddr); - //} - - /**************************************************************************************/ Fontsize = g.MeasureString(MaxKA, FONT_KA); SizeF FontSizeu = g.MeasureString(Kaunit, FONT_KU); @@ -1697,7 +1680,7 @@ namespace vmsnet.HMI this.WINDOW._itemheight = WindowRect.Height / this.WINDOW.RowCount; } - + if (this.GROUPS.Length < 1) { g.DrawString("NO Group", this.Font, Brushes.Red, WindowRect.Left, WindowRect.Top); @@ -1716,14 +1699,18 @@ namespace vmsnet.HMI var 열번호 = grp.열번호; var 줄번호 = grp.줄번호; + //전체화면이 아닌경우라면 지정된 그룹만 표시한다 if (FullScreen == false) { - if (ShowIndex < 0 || ShowIndex > this.GROUPS.GetUpperBound(0)) visible = false; + if (ShowIndex < 0 || ShowIndex > this.GROUPS.GetUpperBound(0)) visible = false; //인덱스오류체크 else visible = (idx == ShowIndex); 열번호 = 0; 줄번호 = 0; } + + + //마우스를 올린경우 추가정보 표시 if (grp.Showinfo) infogrp = grp; //else //{ @@ -1733,7 +1720,18 @@ namespace vmsnet.HMI idx += 1; } - if (infogrp != null) DrawGroup(g, infogrp, new Point(0, 0), new SizeF(WINDOW.ITEMWIDTH, WINDOW.ITEMHEIGHT), WindowRect, infogrp.열번호, infogrp.줄번호, false, true); + if (infogrp != null) + { + var colnum = infogrp.열번호; + var rownum = infogrp.줄번호; + if (FullScreen == false) + { + colnum = 0; + rownum = 0; + } + DrawGroup(g, infogrp, new Point(0, 0), new SizeF(WINDOW.ITEMWIDTH, WINDOW.ITEMHEIGHT), WindowRect, colnum, rownum, false, true); + + } //end group //} @@ -1928,6 +1926,9 @@ namespace vmsnet.HMI private int Check_GroupHeader(MouseEventArgs e, Boolean resetshowinfo = false) { if (this.GROUPS == null) return -1; + + + for (int i = 0; i < this.GROUPS.Length; i++) { RectangleF rect = this.GROUPS[i].Rect_Header; @@ -1936,7 +1937,16 @@ namespace vmsnet.HMI //현재위치가 해당 Rectagle 안이라면 속해있다. if (e.X > rect.X && e.X < rect.X + rect.Width) { - if (e.Y > rect.Y && e.Y < rect.Y + rect.Height) return i; + if (e.Y > rect.Y && e.Y < rect.Y + rect.Height) + { + //전체화면이 아닌경우에는 선택된 그룹번호를 반환 + if (this.FullScreen == false) + { + if (this.ShowIndex < 0 || this.ShowIndex >= this.GroupCount) return -1; + else return this.ShowIndex; + } + else return i; + } } } return -1; diff --git a/cVMS.NET_CS/Setting/Frm_Config.cs b/cVMS.NET_CS/Setting/Frm_Config.cs index 2d3ff2a..2afaa11 100644 --- a/cVMS.NET_CS/Setting/Frm_Config.cs +++ b/cVMS.NET_CS/Setting/Frm_Config.cs @@ -1022,7 +1022,7 @@ namespace vmsnet } private void button3_Click(object sender, EventArgs e) - { + { // KA indicator 테스트 var valuebuffer = new ushort[20]; valuebuffer[0] = Convert.ToUInt16(txtValue.Text); for (int i = 1; i < valuebuffer.Length; i++) valuebuffer[i] = 0;