using Microsoft.Win32; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Media; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace GasStationCamera { /// /// Логика взаимодействия для MainWindow.xaml /// public partial class MainWindow : Window { public List dataFromCameras = new List(); public DataFromCamera TrueCarNumber = new DataFromCamera(); public bool StartServer = false; public MainWindow() { InitializeComponent(); GetDataFromCsv(); } public void GetDataFromCsv() { string[] csv = File.ReadAllLines(Environment.CurrentDirectory + "/Resources/Camera_Load.csv"); for (int i = 1; i < csv.Length; i++) { DataFromCamera dataFromCamera = new DataFromCamera(); string[] column = csv[i].Split(','); dataFromCamera.Date = Convert.ToDateTime(column[0]); dataFromCamera.Status = Convert.ToBoolean(column[1].ToLower()); dataFromCamera.CarNumber = column[2]; dataFromCamera.NameImage = column[3].Substring(1,column[3].Length-2); dataFromCameras.Add(dataFromCamera); } } public void CheckNumberCar(string NameImage) { foreach (var item in dataFromCameras) { if (item.NameImage == NameImage) { TxtStateCheckNumber.Text = "Гос. номер распознан: "; TxtCarNumber.Text = item.CarNumber; BtnConfirm.Visibility = Visibility.Visible; TrueCarNumber = item; TrueCarNumber.Date = DateTime.Now; return; } } TrueCarNumber = TrueCarNumber = new DataFromCamera { CarNumber = "", Date = DateTime.Now, Status = false, NameImage = $"не распознан.{NameImage.Split('.')[1]}" }; ; SystemSounds.Asterisk.Play(); TxtStateCheckNumber.Text = "Гос. не номер распознан. Введите его в ручную: "; TbCarkNumber.Visibility = Visibility.Visible; BtnConfirm.Visibility = Visibility.Visible; } public async void StartPostDataOfCamera() { HttpListener httpListener = new HttpListener(); httpListener.Prefixes.Add("http://127.0.0.1:7070/getDataFromCamera/"); httpListener.Start(); while (StartServer == true) { HttpListenerContext context = await httpListener.GetContextAsync(); HttpListenerRequest request = context.Request; HttpListenerResponse response = context.Response; var Json = JsonConvert.SerializeObject(TrueCarNumber); byte[] buffer = Encoding.UTF8.GetBytes(Json); response.ContentLength64 = buffer.Length; Stream output = response.OutputStream; output.Write(buffer, 0, buffer.Length); output.Close(); } httpListener.Abort(); } private void BtnConfirm_Click(object sender, RoutedEventArgs e) { if (TrueCarNumber.CarNumber == "") { if (string.IsNullOrEmpty(TbCarkNumber.Text)) { MessageBox.Show("Номер не введён", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); return; } TrueCarNumber.CarNumber = TbCarkNumber.Text; } StartServer = true; StartPostDataOfCamera(); MessageBox.Show("Данные отправлены", "Информация", MessageBoxButton.OK, MessageBoxImage.Information); } private void ImageGrid_MouseDown(object sender, MouseButtonEventArgs e) { StartServer = false; TxtStateCheckNumber.Text = string.Empty; TxtCarNumber.Text = string.Empty; TbCarkNumber.Visibility = Visibility.Collapsed; BtnConfirm.Visibility = Visibility.Collapsed; OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == true) { ImgPhoto.Source = new BitmapImage(new Uri(openFileDialog.FileName)); string NameImage = openFileDialog.SafeFileName; CheckNumberCar(NameImage); } } } }