public EspServer(int boards_number, DBConnect DBConnection, Action ConnectionErrorAction, MainWind caller) { boards_number_ = boards_number; mainWindow = caller; tcp_listener_ = new TcpListener(IPAddress.Any, ESP_SERVER_PORT); board_handlers_ = new List <Thread>(); is_running_ = false; this.db_connect = DBConnection; this.ConnectionErrorAction = ConnectionErrorAction; cancellation_token_source_ = new CancellationTokenSource(); time_sync_events_ = new ManualResetEvent[boards_number]; packets_ready_events = new AutoResetEvent[boards_number]; boards_status_ = new String[boards_number_]; for (int i = 0; i < boards_number; i++) { time_sync_events_[i] = new ManualResetEvent(false); packets_ready_events[i] = new AutoResetEvent(false); boards_status_[i] = "Offline"; } connection_handler_ = new Thread(this.connectionHandler); connection_handler_.Name = "ConnectionHandler"; connection_handler_.Start(); }
private void ActionWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e) { MainWind.Show(); }
public chartDataHandler(MainWind window, int nBoards, EspServer esp_client, DBConnect dbC, CartesianChart scatterChart, CartesianChart fiveMinutesChart, Action errorAction) { _window = window; _nBoards = nBoards; _esp_server = esp_client; _statCalc = new StatCalc(dbC); _errorAction = errorAction; _cts = new CancellationTokenSource(); _ct = _cts.Token; this.scatterChart = scatterChart; this.fiveMinutesChart = fiveMinutesChart; boardsPos = new ChartValues <Scheda>(); hiddenPhonePos = new ChartValues <DatiDispositivo>(); phonePos = new ChartValues <DatiDispositivo>(); selectedPhonePos = new ChartValues <DatiDispositivo>(); scatterChart.Series.Add(new ScatterSeries(boardsPos) { Title = "Schede", MinPointShapeDiameter = 15, PointGeometry = DefaultGeometries.Triangle, StrokeThickness = 4, Fill = System.Windows.Media.Brushes.Transparent, Stroke = Utils.green }); scatterChart.Series.Add(new ScatterSeries(phonePos) { Title = "Dispositivi Visibili", MinPointShapeDiameter = 15, PointGeometry = DefaultGeometries.Diamond, StrokeThickness = 4, Fill = System.Windows.Media.Brushes.Transparent, Stroke = Utils.orange, }); scatterChart.Series.Add(new ScatterSeries(hiddenPhonePos) { Title = "Dispositivi Nascosti", MinPointShapeDiameter = 15, PointGeometry = DefaultGeometries.Diamond, StrokeThickness = 4, Fill = System.Windows.Media.Brushes.Transparent, Stroke = Utils.purple }); scatterChart.Series.Add(new ScatterSeries(selectedPhonePos) { Title = "MAC selezionato", MinPointShapeDiameter = 20, PointGeometry = DefaultGeometries.Cross, StrokeThickness = 4, Fill = System.Windows.Media.Brushes.Transparent, Stroke = Utils.red }); scatterChart.AxisX.Add(new Axis { MinValue = -2, MaxValue = 2, LabelFormatter = x => Math.Round(x, 2).ToString(), Title = "posizione [m]" }); scatterChart.AxisY.Add(new Axis { MinValue = -2, MaxValue = 2, LabelFormatter = x => Math.Round(x, 2).ToString(), Title = "posizione [m]" }); InitializeFiveMinuteChart(); Axis xAxis = new Axis(); Axis yAxis = new Axis(); xAxis.Separator.Step = 1; xAxis.FontSize = 15; xAxis.Title = "Tempo [minuti]"; yAxis.FontSize = 15; yAxis.Title = "Numero dispositivi"; yAxis.Separator.Step = 1; xAxis.MinValue = 0; xAxis.MaxValue = 5; yAxis.MinValue = 0; yAxis.MaxValue = 10; fiveMinutesChart.AxisX.Add(xAxis); fiveMinutesChart.AxisY.Add(yAxis); scatterChart.Series[0].Configuration = Mappers.Xy <Scheda>().X(b => b.Punto.Ascissa).Y(b => b.Punto.Ordinata); scatterChart.Series[0].Values = boardsPos; scatterChart.Series[1].Configuration = Mappers.Xy <DatiDispositivo>().X(b => b.Posizione.Ascissa).Y(b => b.Posizione.Ordinata); scatterChart.Series[1].Values = phonePos; scatterChart.Series[2].Configuration = Mappers.Xy <DatiDispositivo>().X(b => b.Posizione.Ascissa).Y(b => b.Posizione.Ordinata); scatterChart.Series[2].Values = hiddenPhonePos; scatterChart.Series[3].Configuration = Mappers.Xy <DatiDispositivo>().X(b => b.Posizione.Ascissa).Y(b => b.Posizione.Ordinata); scatterChart.Series[3].Values = selectedPhonePos; scatterChart.Series[0].LabelPoint = point => string.Format("ID scheda: {0}\n X:{1} Y:{2}", ((Scheda)point.Instance).ID_scheda, Math.Round(((Scheda)point.Instance).Punto.Ascissa, 2), Math.Round(((Scheda)point.Instance).Punto.Ordinata, 2)); scatterChart.Series[1].LabelPoint = point => string.Format(" MAC: {0}\n Timestamp:{1} \n X:{2} Y:{3}", Utils.Formatta_MAC_Address(((DatiDispositivo)point.Instance).MAC_Address), Utils.UnixTimestampToDateTime(((DatiDispositivo)point.Instance).Timestamp), Math.Round(((DatiDispositivo)point.Instance).Posizione.Ascissa, 2), Math.Round(((DatiDispositivo)point.Instance).Posizione.Ordinata, 2)); scatterChart.Series[2].LabelPoint = point => string.Format(" MAC: {0}\n Timestamp:{1} \n X:{2} Y:{3}", Utils.Formatta_MAC_Address(((DatiDispositivo)point.Instance).MAC_Address), Utils.UnixTimestampToDateTime(((DatiDispositivo)point.Instance).Timestamp), Math.Round(((DatiDispositivo)point.Instance).Posizione.Ascissa, 2), Math.Round(((DatiDispositivo)point.Instance).Posizione.Ordinata, 2)); scatterChart.Series[3].LabelPoint = point => string.Format(" MAC: {0}\n Timestamp:{1} \n X:{2} Y:{3}", Utils.Formatta_MAC_Address(((DatiDispositivo)point.Instance).MAC_Address), Utils.UnixTimestampToDateTime(((DatiDispositivo)point.Instance).Timestamp), Math.Round(((DatiDispositivo)point.Instance).Posizione.Ascissa, 2), Math.Round(((DatiDispositivo)point.Instance).Posizione.Ordinata, 2)); t = new Thread(new ThreadStart(this.ReceiverFunc)); t.Start(); }