Program.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Configuration;
  7. using System.IO;
  8. using System.Threading;
  9. using System.Globalization;
  10. namespace CapMoni
  11. {
  12. internal class Program
  13. {
  14. static void Main(string[] args)
  15. {
  16. var fileDir = ConfigurationManager.AppSettings["FileDir"].Trim();//采集文件存放目录
  17. var duration = ConfigurationManager.AppSettings["Duration"].Trim();//采集时长
  18. if (!int.TryParse(duration, out int durationInt))
  19. {
  20. Console.WriteLine("请在配置文件中配置正确的时长信息");
  21. return;
  22. }
  23. var freqs = ConfigurationManager.AppSettings["Freqs"].Trim();//频点
  24. Task.Run(() =>
  25. {
  26. while (true)
  27. {
  28. try
  29. {
  30. var dirs = Directory.EnumerateDirectories(fileDir);
  31. foreach (var dir in dirs)
  32. {
  33. DirectoryInfo info = new DirectoryInfo(dir);
  34. var canParse = DateTime.TryParseExact(info.Name, "yyyy_MM_dd_HH", null, System.Globalization.DateTimeStyles.None, out DateTime time);
  35. if (canParse)
  36. {
  37. if ((DateTime.Now - time).TotalHours > 1.2)
  38. {
  39. try
  40. {
  41. Directory.Delete(dir, true);
  42. Console.WriteLine($"目录【{dir}】已删除");
  43. }
  44. catch
  45. {
  46. Console.WriteLine($"目录【{dir}】删除失败!");
  47. }
  48. }
  49. }
  50. }
  51. }
  52. catch
  53. { }
  54. Thread.Sleep(60000);
  55. }
  56. });
  57. while (true)
  58. {
  59. var dateNow = DateTime.Now;
  60. var fileNameDate = dateNow.ToString("yyyy_MM_dd_HH_mm_ss");
  61. var fileNameTime = $"{fileNameDate}_000000000";
  62. if (!Directory.Exists(fileDir))
  63. Directory.CreateDirectory(fileDir);
  64. var fileDate = dateNow.ToString("yyyy_MM_dd_HH");
  65. var fileDirDate = Path.Combine(fileDir, fileDate);
  66. var oldDir = Path.Combine(fileDir, dateNow.AddHours(-2).ToString("yyyy_MM_dd_HH"));
  67. if (Directory.Exists(oldDir))
  68. {
  69. Directory.Delete(oldDir, true);
  70. }
  71. if (!Directory.Exists(fileDirDate))
  72. Directory.CreateDirectory(fileDirDate);
  73. var freqList = freqs.Split(new string[] { ";" }, System.StringSplitOptions.RemoveEmptyEntries);
  74. Parallel.For(0, freqList.Length, idx =>
  75. {
  76. var fileName = $"{fileNameTime}_ch11_-1___N43.333333_E57.222222_96000.000Hz_{freqList[idx]}MHz_ch1_xd{idx + 1}";
  77. var filePath = Path.Combine(fileDirDate, $"{fileName}.dat");
  78. BinaryWriter datFile1 = new BinaryWriter(new FileStream(filePath, FileMode.Create), Encoding.UTF8);
  79. fileName = $"{fileNameTime}_ch22_-1___N43.333333_E57.222222_96000.000Hz_{freqList[idx]}MHz_ch2_xd{idx + 1}";
  80. filePath = Path.Combine(fileDirDate, $"{fileName}.dat");
  81. BinaryWriter datFile2 = new BinaryWriter(new FileStream(filePath, FileMode.Create), Encoding.UTF8);
  82. fileName = $"{fileNameTime}_ch33_-1___N43.333333_E57.222222_96000.000Hz_{freqList[idx]}MHz_ch3_xd{idx + 1}";
  83. filePath = Path.Combine(fileDirDate, $"{fileName}.dat");
  84. BinaryWriter datFile3 = new BinaryWriter(new FileStream(filePath, FileMode.Create), Encoding.UTF8);
  85. Thread.Sleep(durationInt * 1000);
  86. var dataCon = File.ReadAllBytes("1.dat");
  87. datFile1.Write(dataCon);
  88. datFile2.Write(dataCon);
  89. datFile3.Write(dataCon);
  90. //Thread.Sleep(6000);
  91. datFile1.Flush();
  92. datFile1.Close();
  93. datFile2.Flush();
  94. datFile2.Close();
  95. datFile3.Flush();
  96. datFile3.Close();
  97. Console.WriteLine($"{filePath}采集完毕");
  98. });
  99. }
  100. }
  101. }
  102. }