init
This commit is contained in:
153
DataPRO/TDASCommands/TestTriggerCommands.cs
Normal file
153
DataPRO/TDASCommands/TestTriggerCommands.cs
Normal file
@@ -0,0 +1,153 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using DTS.Common.ICommunication;
|
||||
|
||||
namespace DTS.DASLib.Command.TDAS
|
||||
{
|
||||
internal class TestTriggerCommandString : CommandString
|
||||
{
|
||||
protected override string _CommandString => "TESTTRIG";
|
||||
|
||||
protected override string _CommandDescription => "Test trigger";
|
||||
|
||||
public string SubCommand { get; set; }
|
||||
|
||||
public string Status { get; set; }
|
||||
|
||||
public override byte[] GetParameters()
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
sb.Append(" ");
|
||||
sb.Append(SubCommand);
|
||||
return Encoding.ASCII.GetBytes(sb.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class TestTrigger : CommandBase
|
||||
{
|
||||
public int ModuleIndex
|
||||
{
|
||||
get => ((TDASCommandPacketBase)baseCommand).ModuleIndex;
|
||||
set => ((TDASCommandPacketBase)baseCommand).ModuleIndex = value;
|
||||
}
|
||||
|
||||
public enum SubCommandValues { ARM, STATUS, OFF };
|
||||
public enum StatusValues { ARMED, OFF };
|
||||
|
||||
public SubCommandValues SubCommand
|
||||
{
|
||||
get => (SubCommandValues)Enum.Parse(typeof(SubCommandValues), _CommandString.SubCommand);
|
||||
set => _CommandString.SubCommand = value.ToString();
|
||||
}
|
||||
public StatusValues TriggerStatus => (StatusValues)Enum.Parse(typeof(StatusValues), _CommandString.Status);
|
||||
|
||||
private TestTriggerCommandString _CommandString
|
||||
{
|
||||
get
|
||||
{
|
||||
var command = baseCommand as TDASCommandPacketBase;
|
||||
return command?.GetCommandStringObject(0) as TestTriggerCommandString;
|
||||
}
|
||||
}
|
||||
public TestTrigger(DTS.Common.Interface.DASFactory.ICommunication sock)
|
||||
: base(sock)
|
||||
{
|
||||
var command = new TDASCommandPacketBase(new TestTriggerCommandString())
|
||||
{
|
||||
RebuildBytes = true,
|
||||
RackCommand = false
|
||||
};
|
||||
baseCommand = command;
|
||||
_CommandString.SubCommand = SubCommandValues.STATUS.ToString(); ;
|
||||
}
|
||||
public TestTrigger(DTS.Common.Interface.DASFactory.ICommunication sock, int msTimeout)
|
||||
: base(sock, msTimeout)
|
||||
{
|
||||
var command = new TDASCommandPacketBase(new TestTriggerCommandString())
|
||||
{
|
||||
RackCommand = false,
|
||||
RebuildBytes = true
|
||||
};
|
||||
baseCommand = command;
|
||||
_CommandString.SubCommand = SubCommandValues.STATUS.ToString();
|
||||
}
|
||||
|
||||
protected override void ProcessData()
|
||||
{
|
||||
if (null == baseResponse) { return; }
|
||||
var s = Encoding.ASCII.GetString(baseResponse.ToBytes());
|
||||
var start = s.IndexOf(_CommandString.GetCommandPortion(), StringComparison.Ordinal) + _CommandString.GetCommandPortion().Length + 1;
|
||||
var end = s.IndexOf("\r\n", StringComparison.Ordinal);
|
||||
if (start >= 0 && end > start)
|
||||
{
|
||||
_responseData = s.Substring(start, end - start);
|
||||
}
|
||||
else { return; }
|
||||
|
||||
var tokens = ResponseData.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
if (2 <= tokens.Length)
|
||||
{
|
||||
_CommandString.Status = tokens[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal class TestTriggerBroadcastCommandString : CommandString
|
||||
{
|
||||
protected override string _CommandString => ModuleIndex >= 0 ? $"*{ModuleIndex}TESTTRIG" : "*TESTTRIG";
|
||||
|
||||
protected override string _CommandDescription => ModuleIndex >= 0 ? $"Test trigger broadcast *{ModuleIndex}TESTTRIG" : "Test trigger broadcast *TESTTRIG";
|
||||
|
||||
public int ModuleIndex { get; set; }
|
||||
|
||||
public string SubCommand { get; set; }
|
||||
|
||||
public override byte[] GetParameters()
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
sb.Append(" ");
|
||||
sb.Append(SubCommand);
|
||||
return Encoding.ASCII.GetBytes(sb.ToString());
|
||||
}
|
||||
|
||||
public TestTriggerBroadcastCommandString(int moduleIndex) { ModuleIndex = moduleIndex; }
|
||||
}
|
||||
public class TestTriggerBroadcast : CommandBase
|
||||
{
|
||||
private TestTriggerBroadcastCommandString _CommandString
|
||||
{
|
||||
get
|
||||
{
|
||||
var command = baseCommand as TDASCommandPacketBase;
|
||||
return command?.GetCommandStringObject(0) as TestTriggerBroadcastCommandString;
|
||||
}
|
||||
}
|
||||
public TestTrigger.SubCommandValues SubCommand
|
||||
{
|
||||
get => (TestTrigger.SubCommandValues)Enum.Parse(typeof(TestTrigger.SubCommandValues), _CommandString.SubCommand);
|
||||
set => _CommandString.SubCommand = value.ToString();
|
||||
}
|
||||
|
||||
public TestTriggerBroadcast(DTS.Common.Interface.DASFactory.ICommunication sock, int moduleIndex)
|
||||
: base(sock)
|
||||
{
|
||||
var command = new TDASCommandPacketBase(new TestTriggerBroadcastCommandString(moduleIndex));
|
||||
command.RackCommand = false;
|
||||
command.RebuildBytes = true;
|
||||
baseCommand = command;
|
||||
_CommandString.SubCommand = TestTrigger.SubCommandValues.STATUS.ToString();
|
||||
}
|
||||
public TestTriggerBroadcast(DTS.Common.Interface.DASFactory.ICommunication sock, int moduleIndex, int msTimeout)
|
||||
: base(sock, msTimeout)
|
||||
{
|
||||
var command = new TDASCommandPacketBase(new TestTriggerBroadcastCommandString(moduleIndex));
|
||||
command.RackCommand = false;
|
||||
command.RebuildBytes = true;
|
||||
baseCommand = command;
|
||||
_CommandString.SubCommand = TestTrigger.SubCommandValues.STATUS.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user