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; } } }