AdcService.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. 
  2. namespace AdService.Service
  3. {
  4. /// <summary>
  5. /// 采集服务
  6. /// </summary>
  7. public class AdcService
  8. {
  9. /// <summary>
  10. /// 单例
  11. /// </summary>
  12. public static AdcService Instance { get; private set; } = new AdcService();
  13. private bool isBusy = false;
  14. //是否持续采集
  15. private bool isSustain = true;
  16. /// <summary>
  17. /// 启动采集(无采集卡)
  18. /// </summary>
  19. /// <param name="dtos"></param>
  20. /// <returns></returns>
  21. public async Task<AdcResultDto> StartTestAsync(List<AdCard> dtos)
  22. {
  23. if (isBusy)
  24. {
  25. throw new Exception("上次采集未结束");
  26. }
  27. try
  28. {
  29. isBusy = true;
  30. string test = Path.Combine(Directory.GetCurrentDirectory(), "test.dat");//测试数据
  31. var bytes = File.ReadAllBytes(test);
  32. AdcResultDto adcResult = new AdcResultDto(DateTime.Now);
  33. await Task.Run(() =>
  34. {
  35. while (isSustain)
  36. {
  37. List<SignalFile> signalFiles = new List<SignalFile>();
  38. string addate = Path.Combine("D:\\work\\data", DateTime.Now.ToString("yyyyMMdd_HH"));//20250307_10
  39. Directory.CreateDirectory(addate);
  40. foreach (var item in dtos)
  41. {
  42. for (int i = 0; i < item.AdChannels.Count; i++)
  43. {
  44. var fsad = item.ClockFreq / item.Mutil;
  45. SignalFile signal = new SignalFile()
  46. {
  47. AdCardID = item.AdChannels[i].AdCardID.ToString(),
  48. ChNum = item.AdChannels[i].ChNum,
  49. Fs = (int)fsad,
  50. SatInfoID = item.AdChannels[i].SatInfoID.ToString(),
  51. SigTime = DateTime.Now,
  52. DirName = "D:\\work\\data",
  53. };
  54. File.WriteAllBytes(Path.Combine("D:\\work\\data", signal.DateDirName, signal.FileName), bytes);
  55. signalFiles.Add(signal);
  56. }
  57. adcResult.FileList = signalFiles;
  58. }
  59. Thread.Sleep(1000 * 15);
  60. }
  61. });
  62. return adcResult;
  63. }
  64. finally
  65. {
  66. await Task.Delay(5000);
  67. isBusy = false;
  68. }
  69. }
  70. /// <summary>
  71. /// 停止采集
  72. /// </summary>
  73. public void StopAd()
  74. {
  75. isSustain = false;
  76. }
  77. }
  78. }