コード例 #1
0
 public void InitRecording(ProgramSetting setting)
 {
     Mouse.OverrideCursor = Cursors.Wait;
     Busy.IsBusy          = true; //Enable busy indicator to bolck main window
     //Use background thread to execute initialization
     ThreadPool.QueueUserWorkItem((object state) =>
     {
         SensorInfos.Clear();
         string conf = File.ReadAllText(setting.SensorConfPath);
         SensorInfos.AddRange(JsonConvert.DeserializeObject <List <SensorInfo> >(conf));
         SelectedSensor = SensorInfos[0];
         WindSensor     = SensorInfos.Find(t => t.SensorType == SensorInfo.Types.Anemometer); //Find Anemometer
         if (WindSensor == null)
         {
             MessageBox.Show("No anemometer found in sensor list.", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning);
         }
         else
         {
             Application.Current.Dispatcher.Invoke(() => //Use invoke to refresh UI elements
             {
                 WindInfo.DataContext = WindSensor.SensorData;
             });
         }
         dataLogger    = new DataLoger();
         string result = dataLogger.Init(setting);
         if (result == "Error") //If the Tapis is not available, abort init.
         {
             MessageBox.Show("Unable to refresh Tapis token.Please creat token manually.");
             return;
         }
         if (SerialCOM.IsOpen)
         {
             SerialCOM.Close();
         }
         SerialCOM.InitCOM(setting.PortName, setting.BaudRate, new SerialDataReceivedEventHandler(SerialPort_DataReceived));
         sensorWatcher.SetTimer(SensorInfos);
         Application.Current.Dispatcher.Invoke(() => //Use invoke to refresh UI elements
         {
             NodeList.Items.Refresh();
             sciChartSurface.DataContext = SelectedSensor.SensorData.PlotControl;
             sll.DataContext             = SelectedSensor.SensorData.PlotControl;
             lll.DataContext             = SelectedSensor.SensorData.PlotControl;
             Status.DataContext          = SelectedSensor.SensorData;
             CloudStatus.DataContext     = dataLogger;
             StateManager           = new StateManager(dataLogger, SerialCOM, dataBaseUtils, this, StateManager.State.Recording);
             ModeStatus.DataContext = StateManager;
             Mouse.OverrideCursor   = null;
             Busy.IsBusy            = false; //Disable busy indicator.
         });
     }, null);
 }
コード例 #2
0
 public StateManager(DataLoger dataLoger, SerialCOM serialCOM, List <DataBaseUtils> dataBaseUtils, MainWindow mainWindow, State state)
 {
     DataLoger         = dataLoger;
     SerialCOM         = serialCOM;
     DataBaseUtilsList = dataBaseUtils;
     MainWindow        = mainWindow;
     // Create a timer with a 1 second interval.
     aTimer = new Timer(1000);
     // Hook up the Elapsed event for the timer.
     aTimer.Elapsed  += SendSleepCommand;
     aTimer.AutoReset = true;
     aTimer.Enabled   = false;
     _state           = state;
     SetRecord();
 }
コード例 #3
0
        private void CheckTapis(object sender, RoutedEventArgs e)
        {
            CheckBtn.IsEnabled   = false;
            Mouse.OverrideCursor = Cursors.Wait;
            DataLoger dataLoger = new DataLoger();

            Validation.DataContext = dataLoger;
            ThreadPool.QueueUserWorkItem((object state) =>
            {
                dataLoger.Init(ProgramSetting);
                dataLoger.TryUpload();
                Application.Current.Dispatcher.Invoke(() => //Use invoke to refresh UI elements
                {
                    Mouse.OverrideCursor = null;
                    CheckBtn.IsEnabled   = true;
                    if (dataLoger.isPass)
                    {
                        Validation.CanFinish = true;
                    }
                });
            }, null);
        }