12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
-
- using AdService.Controller.Dto;
- using Newtonsoft.Json;
- namespace AdService.Service
- {
- /// <summary>
- /// 采集服务
- /// </summary>
- public class AdcService
- {
- /// <summary>
- /// 单例
- /// </summary>
- public static AdcService Instance { get; private set; } = new AdcService();
- private bool isBusy = false;
- //是否持续采集
- private bool isSustain = true;
- ILogger logger { get; set; }
- /// <summary>
- /// 启动采集(无采集卡)
- /// </summary>
- /// <param name="dtos"></param>
- /// <returns></returns>
- public async Task<AdcResultDto> StartTestAsync(List<AdSatChDto> dtos)
- {
- if (isBusy)
- {
- throw new Exception("上次采集未结束");
- }
- try
- {
- StreamReader sr = new StreamReader(Directory.GetCurrentDirectory() + "/appsettings.json");
- string json = sr.ReadToEnd();
- // 解析 JSON 字符串
- var adConfig = JsonConvert.DeserializeObject<AdConfig>(json);
- 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<SignalFile> signalFiles = new List<SignalFile>();
- string addate = Path.Combine(adConfig.DataDir, DateTime.Now.ToString("yyyyMMdd_HH"));//20250307_10
- Directory.CreateDirectory(addate);
- foreach (var item in dtos)
- {
- var fsad = item.ClockFreq / item.Mutil;
- SignalFile signal = new SignalFile()
- {
- ChNum = item.Channel,
- Fs = (int)fsad,
- SatInfoID = item.SatCode.ToString(),
- SigTime = DateTime.Now,
- DirName = adConfig.DataDir,
- };
- var fileName = String.Concat(signal.DateDirName+"_Sat",item.SatCode+"_CH",item.Channel+"_freq",fsad+".dat");
- File.WriteAllBytes(Path.Combine(adConfig.DataDir, signal.DateDirName, fileName), bytes);
- signalFiles.Add(signal);
- }
- Thread.Sleep(1000 * 15);
- }
- });
- return adcResult;
- }
- finally
- {
- await Task.Delay(5000);
- isBusy = false;
- }
- }
- /// <summary>
- /// 停止采集
- /// </summary>
- public void StopAd()
- {
- isSustain = false;
- }
- }
- }
|