Ejemplo n.º 1
0
        private static Task GenerateTrackerTask()
        {
            return(new Task(async() =>
            {
                tracker_active = true;

                while (tracker_active)
                {
                    try
                    {
                        address = await KEL103Tools.FindLoadAddress();

                        tracker_init_complete = true;

                        //do work
                        using (UdpClient client = new UdpClient(KEL103Persistance.Configuration.CommandPort))
                        {
                            KEL103Tools.ConfigureClient(address, client);

                            KEL103StateTracker.client = client;

                            while (tracker_active)
                            {
                                Stopwatch q = new Stopwatch();
                                q.Start();

                                CheckoutClient();

                                var kel_state = new KEL103State();

                                var voltage = await KEL103Command.MeasureVoltage(client);
                                var current = await KEL103Command.MeasureCurrent(client);
                                var power = await KEL103Command.MeasurePower(client);

                                var input_state = await KEL103Command.GetLoadInputSwitchState(client);

                                var time_stame = DateTime.Now;

                                CheckinClient();

                                q.Stop();

                                var retreval_span = TimeSpan.FromTicks(q.ElapsedTicks);

                                kel_state.Voltage = voltage;
                                kel_state.Current = current;
                                kel_state.Power = power;
                                kel_state.TimeStamp = time_stame;
                                kel_state.InputState = input_state;
                                kel_state.ValueAquisitionTimespan = retreval_span;

                                NewKEL103StateAvailable(kel_state);

                                //await Task.Delay(10);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }));
        }