initial commit
This commit is contained in:
72
cVMS.NET_CS/Device/DigitalIndicator.cs
Normal file
72
cVMS.NET_CS/Device/DigitalIndicator.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
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;
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
UInt16[] splitI32(Int32 value)
|
||||
{
|
||||
var hValue = (UInt16)(value >> 16);
|
||||
var lValue = (UInt16)(value & 0xFFFF);
|
||||
return new ushort[] { hValue, lValue };
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user