74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Windows.Media.Media3D.Converters;
 | |
| using vmsnet.Configures;
 | |
| 
 | |
| namespace vmsnet
 | |
| {
 | |
|     public class DigitalIndicator : JdModbusRTU
 | |
|     {
 | |
| 
 | |
|         /// <summary>
 | |
|         /// default value  = 1
 | |
|         /// </summary>
 | |
|         public byte SlaveID { get; set; } = 1;  // Slave No 
 | |
| 
 | |
|         public DigitalIndicator(byte slaveID = 0) : base("", new RtuConfigure { BaudRate = 9600, DataBits = 8, StopBits = System.IO.Ports.StopBits.One, Parity = System.IO.Ports.Parity.None })
 | |
|         {
 | |
|             SlaveID = slaveID;
 | |
|          
 | |
|         }
 | |
| 
 | |
|         public DigitalIndicator(string comPort, RtuConfigure configure, byte slaveId = 0) : base(comPort, configure)
 | |
|         {
 | |
|             SlaveID = slaveId;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// value 값을 디스플레이에 전송합니다.
 | |
|         /// 전송 주소는 기본 0으로 설정되어 있습니다
 | |
|         /// 이 명령은 회신값을 체크하고 True를 반환하지 않습니다.
 | |
|         /// False 반환시에는 장치 상태를 점검 하세요
 | |
|         /// </summary>
 | |
|         /// <param name="value"></param>
 | |
|         /// <returns></returns>
 | |
|         public bool SetKA(int value)
 | |
|         {
 | |
|             var buffer = splitI32(value);
 | |
|             return WriteValue(buffer);
 | |
|         }
 | |
| 
 | |
|         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)
 | |
|             {
 | |
|                 ErrorMessage = "포트가 열리지 않았습니다";
 | |
|                 return false;
 | |
|             }
 | |
|             if (master == null)
 | |
|             {
 | |
|                 ErrorMessage = "모드버스가 초기화 되지 않았습니다";
 | |
|                 return false;
 | |
|             }
 | |
| 
 | |
|             try
 | |
|             {
 | |
|                 master.WriteMultipleRegisters(this.SlaveID, 0, values);
 | |
|                 return true;
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 ErrorMessage = ex.Message;
 | |
|                 return false;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     }
 | |
| }
 | 
