Esempio n. 1
0
        // Update real time sensor data grid view
        private void UpdateDataGridView(string sensorName, SensorDataVO data)
        {
            if (gridViewList.ContainsKey(sensorName))
            {
                int index = -1;
                for (int i = 0; i < sensorNames.Length; ++i)
                {
                    if (sensorNames[i].Equals(sensorName))
                    {
                        index = i;
                        break;
                    }
                }
                string extraName = dataReaders[index].ToString();

                Action updateAction = () => {
                    gridViewList[sensorName].Rows.Insert(0, new string[] {
                        extraName,
                        data.CurTime.ToString("MM월 dd일 HH:mm:ss"),
                        data.Data.ToString()
                    });
                    if (gridViewList[sensorName].Rows.Count > 30)
                    {
                        int gridIndex = gridViewList[sensorName].Rows.Count - 1;
                        gridViewList[sensorName].Rows.Remove(gridViewList[sensorName].Rows[gridIndex]);
                    }
                };
                gridViewList[sensorName].BeginInvoke(updateAction);
            }
        }
Esempio n. 2
0
        // Read current sensor data
        private void timer1_Tick(object sender, EventArgs e)
        {
            var curData = new List <SensorData>();

            // Update chart
            try
            {
                chart1.Series.SuspendUpdates();
                foreach (string sensor in checkeredList)
                {
                    if (chart1.Series.IndexOf(sensor) != -1)
                    {
                        int index = -1;
                        for (int i = 0; i < sensorNames.Length; ++i)
                        {
                            if (sensorNames[i].Equals(sensor))
                            {
                                index = i;
                                break;
                            }
                        }
                        SensorDataVO readData = dataReaders[index].ReadSensorData();
                        if (readData.Type == SensorType.None)
                        {
                            continue;
                        }
                        SensorData addData = new SensorData()
                        {
                            Data           = readData.Data,
                            Time           = readData.CurTime,
                            SensorConfigId = configs[index].Id
                        };
                        curData.Add(addData);
                        AddDataToChart(sensor, readData);
                    }
                }
                if (chart1.Series[0] != null && chart1.Series[0].Points.Count > 0)
                {
                    chart1.ChartAreas[0].AxisX.Minimum = chart1.Series[0].Points[0].XValue;
                    chart1.ChartAreas[0].AxisX.Maximum = DateTime.FromOADate(chart1.Series[0].Points[0].XValue).AddSeconds(12).ToOADate();
                }
                chart1.Series.ResumeUpdates();
            }
            catch (Exception)
            {
                return;
            }

            // DB transaction
            try
            {
                dbManager.dc.SensorDatas.InsertAllOnSubmit(curData);
                dbManager.dc.SubmitChanges();
            }
            catch (Exception)
            {
            }
        }
Esempio n. 3
0
 // Add real time data to chart
 public void AddDataToChart(string sensorName, SensorDataVO curData)
 {
     lock (this.chart1){
         DateTime timeStamp = DateTime.Now;
         if (chart1.Series.IndexOf(sensorName) != -1)
         {
             Series series = chart1.Series[sensorName];
             AddDataToSeries(series, timeStamp, curData.CurTime, curData.Data);
             UpdateDataGridView(sensorName, curData);
         }
     }
 }
 public override SensorDataVO ReadSensorData()
 {
     lock (this.dataQueue)
     {
         if (this.dataQueue.Count < 1)
         {
             return(new SensorDataVO(0, DateTime.Now, SensorType.None));
         }
         ExtractData  data = this.dataQueue.Dequeue();
         SensorDataVO vo   = new SensorDataVO(
             data.Data,
             data.Time,
             SensorType.Omap);
         return(vo);
     }
 }