Пример #1
0
        private bool StartMonitorForServer(BrainHatServerStatus status)
        {
            ActiveClient = ServersMonitor.GetHatClient(HostName);
            if (ActiveClient != null)
            {
                DataProcessor = new BrainflowDataProcessor(HostName, status.BoardId, status.SampleRate);
                SetBandPowerCalculator();

                BlinkDetector.GetData          = DataProcessor.GetRawChunk;
                BlinkDetector.GetStdDevMedians = DataProcessor.GetStdDevianMedians;
                ActiveClient.RawDataReceived  += DataProcessor.AddDataToProcessor;
                SeekingAlpha.GetBandPower      = DataProcessor.GetBandPower;

                DataProcessor.NewSample += BlinkDetector.OnNewSample;

                _ = Task.Run(async() =>
                {
                    await DataProcessor.StartDataProcessorAsync();
                    await DataProcessor.StartBandPowerMonitorAsync();
                    await ActiveClient.StartReadingFromLslAsync();
                });

                return(true);
            }

            return(false);
        }
Пример #2
0
        private async Task RunStatusMonitorAsync(CancellationToken token)
        {
            try
            {
                while (!token.IsCancellationRequested)
                {
                    string eth0, wlan0, hostName;
                    GetNetworkProperties(out eth0, out wlan0, out hostName);

                    BrainHatServerStatus status = new BrainHatServerStatus()
                    {
                        HostName     = hostName,
                        Eth0Address  = eth0,
                        Wlan0Address = wlan0,
                        TimeStamp    = DateTimeOffset.UtcNow,
                    };

                    StatusUpdate?.Invoke(this, new BrainHatStatusEventArgs(status));

                    await Task.Delay(2000);
                }
            }
            catch (OperationCanceledException)
            { }
            catch (Exception e)
            {
                Log?.Invoke(this, new LogEventArgs(this, "RunStatusMonitorAsync", e, LogLevel.ERROR));
            }
        }
Пример #3
0
        private void UpdateStatusUi(BrainHatServerStatus status)
        {
            if (LslBroadcast == null)
            {
                return;
            }

            //  update the UI
            groupBoxRunStatus.Invoke(new Action(() =>
            {
                labelRunStatus.Text  = (DataLatencyTimer.Elapsed.TotalSeconds < 0.5) ? Properties.Resources.ReadingData : Properties.Resources.ReadingDataNot;
                labelDataStatus.Text = status.IsStreaming ? Properties.Resources.StreamRunning : Properties.Resources.StreamStopped;

                if (status.IsStreaming)
                {
                    if (DataLatencyTimer.Elapsed.TotalSeconds < .5)
                    {
                        pictureBoxStatus.Image = Properties.Resources.greenLight;
                    }
                    else
                    {
                        pictureBoxStatus.Image = Properties.Resources.redLight;
                    }
                }
                else
                {
                    if (BrainflowBoard != null && BrainflowBoard.UserPausedStream)
                    {
                        pictureBoxStatus.Image = Properties.Resources.yellowLight;
                    }
                    else
                    {
                        pictureBoxStatus.Image = Properties.Resources.redLight;
                    }
                }



                string srbStatus = "";
                switch (status.CytonSRB1)
                {
                case SrbSet.Unknown:
                    srbStatus = $"{Properties.Resources.SRB1} {Properties.Resources.Unknown}";
                    break;

                case SrbSet.Disconnected:
                    srbStatus = $"{Properties.Resources.SRB1} {Properties.Resources.Disconnected}";
                    break;

                case SrbSet.Connected:
                    srbStatus = $"{Properties.Resources.SRB1} {Properties.Resources.Connected}";
                    break;
                }
                if ((BrainhatBoardIds)status.BoardId == BrainhatBoardIds.CYTON_DAISY_BOARD)
                {
                    switch (status.DaisySRB1)
                    {
                    case SrbSet.Unknown:
                        srbStatus = $"Daisy {Properties.Resources.SRB1} {Properties.Resources.Unknown}";
                        break;

                    case SrbSet.Disconnected:
                        srbStatus = $"Daisy {Properties.Resources.SRB1} {Properties.Resources.Disconnected}";
                        break;

                    case SrbSet.Connected:
                        srbStatus = $"Daisy {Properties.Resources.SRB1} {Properties.Resources.Connected}";
                        break;
                    }
                }
                labelSrbStatus.Text = srbStatus;
            }));
        }