MainWindow.xaml.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. using Microsoft.Win32;
  2. using Newtonsoft.Json;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. using System.Media;
  8. using System.Net;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows;
  12. using System.Windows.Controls;
  13. using System.Windows.Data;
  14. using System.Windows.Documents;
  15. using System.Windows.Input;
  16. using System.Windows.Media;
  17. using System.Windows.Media.Imaging;
  18. using System.Windows.Navigation;
  19. using System.Windows.Shapes;
  20. namespace GasStationCamera
  21. {
  22. /// <summary>
  23. /// Логика взаимодействия для MainWindow.xaml
  24. /// </summary>
  25. public partial class MainWindow : Window
  26. {
  27. public List<DataFromCamera> dataFromCameras = new List<DataFromCamera>();
  28. public DataFromCamera TrueCarNumber = new DataFromCamera();
  29. public bool StartServer = false;
  30. public MainWindow()
  31. {
  32. InitializeComponent();
  33. GetDataFromCsv();
  34. }
  35. public void GetDataFromCsv()
  36. {
  37. string[] csv = File.ReadAllLines(Environment.CurrentDirectory + "/Resources/Camera_Load.csv");
  38. for (int i = 1; i < csv.Length; i++)
  39. {
  40. DataFromCamera dataFromCamera = new DataFromCamera();
  41. string[] column = csv[i].Split(',');
  42. dataFromCamera.Date = Convert.ToDateTime(column[0]);
  43. dataFromCamera.Status = Convert.ToBoolean(column[1].ToLower());
  44. dataFromCamera.CarNumber = column[2];
  45. dataFromCamera.NameImage = column[3].Substring(1,column[3].Length-2);
  46. dataFromCameras.Add(dataFromCamera);
  47. }
  48. }
  49. public void CheckNumberCar(string NameImage)
  50. {
  51. foreach (var item in dataFromCameras)
  52. {
  53. if (item.NameImage == NameImage)
  54. {
  55. TxtStateCheckNumber.Text = "Гос. номер распознан: ";
  56. TxtCarNumber.Text = item.CarNumber;
  57. BtnConfirm.Visibility = Visibility.Visible;
  58. TrueCarNumber = item;
  59. TrueCarNumber.Date = DateTime.Now;
  60. return;
  61. }
  62. }
  63. TrueCarNumber = TrueCarNumber = new DataFromCamera { CarNumber = "", Date = DateTime.Now, Status = false, NameImage = $"не распознан.{NameImage.Split('.')[1]}" }; ;
  64. SystemSounds.Asterisk.Play();
  65. TxtStateCheckNumber.Text = "Гос. не номер распознан. Введите его в ручную: ";
  66. TbCarkNumber.Visibility = Visibility.Visible;
  67. BtnConfirm.Visibility = Visibility.Visible;
  68. }
  69. public async void StartPostDataOfCamera()
  70. {
  71. HttpListener httpListener = new HttpListener();
  72. httpListener.Prefixes.Add("http://127.0.0.1:7070/getDataFromCamera/");
  73. httpListener.Start();
  74. while (StartServer == true)
  75. {
  76. HttpListenerContext context = await httpListener.GetContextAsync();
  77. HttpListenerRequest request = context.Request;
  78. HttpListenerResponse response = context.Response;
  79. var Json = JsonConvert.SerializeObject(TrueCarNumber);
  80. byte[] buffer = Encoding.UTF8.GetBytes(Json);
  81. response.ContentLength64 = buffer.Length;
  82. Stream output = response.OutputStream;
  83. output.Write(buffer, 0, buffer.Length);
  84. output.Close();
  85. }
  86. httpListener.Abort();
  87. }
  88. private void BtnConfirm_Click(object sender, RoutedEventArgs e)
  89. {
  90. if (TrueCarNumber.CarNumber == "")
  91. {
  92. if (string.IsNullOrEmpty(TbCarkNumber.Text))
  93. {
  94. MessageBox.Show("Номер не введён", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
  95. return;
  96. }
  97. TrueCarNumber.CarNumber = TbCarkNumber.Text;
  98. }
  99. StartServer = true;
  100. StartPostDataOfCamera();
  101. MessageBox.Show("Данные отправлены", "Информация", MessageBoxButton.OK, MessageBoxImage.Information);
  102. }
  103. private void ImageGrid_MouseDown(object sender, MouseButtonEventArgs e)
  104. {
  105. StartServer = false;
  106. TxtStateCheckNumber.Text = string.Empty;
  107. TxtCarNumber.Text = string.Empty;
  108. TbCarkNumber.Visibility = Visibility.Collapsed;
  109. BtnConfirm.Visibility = Visibility.Collapsed;
  110. OpenFileDialog openFileDialog = new OpenFileDialog();
  111. if (openFileDialog.ShowDialog() == true)
  112. {
  113. ImgPhoto.Source = new BitmapImage(new Uri(openFileDialog.FileName));
  114. string NameImage = openFileDialog.SafeFileName;
  115. CheckNumberCar(NameImage);
  116. }
  117. }
  118. }
  119. }