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);
}
}
}
}