using System; using System.Windows.Media.Media3D.Converters; using vmsnet.Configures; namespace vmsnet { public class DigitalIndicator : JdModbusRTU { /// /// default value = 1 /// 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; } /// /// value 값을 디스플레이에 전송합니다. /// 전송 주소는 기본 0으로 설정되어 있습니다 /// 이 명령은 회신값을 체크하고 True를 반환하지 않습니다. /// False 반환시에는 장치 상태를 점검 하세요 /// /// /// 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; } } } }