CRVM-redis-6/Driver/ZDState.cs
2025-11-07 02:02:31 +08:00

74 lines
1.9 KiB
C#

using System;
using NationalInstruments.DAQmx;
namespace CRVM.Driver
{
public class ZDSate
{
private Task task;
private DigitalMultiChannelWriter writer;
private DOChannel[] chanels;
private bool[] data;
public int linesCount;
public ZDSate()
{
task = new Task();
writer = new DigitalMultiChannelWriter(task.Stream);
string[] lineNames = DaqSystem.Local.GetPhysicalChannels(PhysicalChannelTypes.DOLine, PhysicalChannelAccess.External);
linesCount = lineNames.Length;
chanels = new DOChannel[linesCount];
for (int i = 0; i < lineNames.Length; i++)
{
chanels[i] = task.DOChannels.CreateChannel(lineNames[i], "", ChannelLineGrouping.OneChannelForEachLine);
}
data = new bool[linesCount];
Start();
}
public string WriteData(bool[] data)//写入各个通道的标志
{
if (data.Length != linesCount)
{
return "data length is not equals dataLength";
}
try
{
writer.WriteSingleSampleSingleLine(true, data);
return null;
}
catch (Exception ex)
{
return ex.Message;
}
}
public string Start()//开始任务
{
try
{
task.Start();
}
catch (DaqException ex)
{
return ex.Message;
}
return null;
}
public string Stop()//停止任务
{
try
{
task.Stop();
return null;
}
catch (DaqException ex)
{
return ex.Message;
}
}
}
}