namespace AdService.Service
{
///
/// 采集服务
///
public class AdcService
{
///
/// 单例
///
public static AdcService Instance { get; private set; } = new AdcService();
private bool isBusy = false;
//是否持续采集
private bool isSustain = true;
///
/// 启动采集(无采集卡)
///
///
///
public async Task StartTestAsync(List dtos)
{
if (isBusy)
{
throw new Exception("上次采集未结束");
}
try
{
isBusy = true;
string test = Path.Combine(Directory.GetCurrentDirectory(), "test.dat");//测试数据
var bytes = File.ReadAllBytes(test);
AdcResultDto adcResult = new AdcResultDto(DateTime.Now);
await Task.Run(() =>
{
while (isSustain)
{
List signalFiles = new List();
string addate = Path.Combine("D:\\work\\data", DateTime.Now.ToString("yyyyMMdd_HH"));//20250307_10
Directory.CreateDirectory(addate);
foreach (var item in dtos)
{
for (int i = 0; i < item.AdChannels.Count; i++)
{
var fsad = item.ClockFreq / item.Mutil;
SignalFile signal = new SignalFile()
{
AdCardID = item.AdChannels[i].AdCardID.ToString(),
ChNum = item.AdChannels[i].ChNum,
Fs = (int)fsad,
SatInfoID = item.AdChannels[i].SatInfoID.ToString(),
SigTime = DateTime.Now,
DirName = "D:\\work\\data",
};
File.WriteAllBytes(Path.Combine("D:\\work\\data", signal.DateDirName, signal.FileName), bytes);
signalFiles.Add(signal);
}
adcResult.FileList = signalFiles;
}
Thread.Sleep(1000 * 15);
}
});
return adcResult;
}
finally
{
await Task.Delay(5000);
isBusy = false;
}
}
///
/// 停止采集
///
public void StopAd()
{
isSustain = false;
}
}
}