private void UpdateValueTextbox(TextBox txt, double value) { Classificacoes.Classificacao classe = this.Classe.GetClassificacao(value); if (classe != Classificacoes.Classificacao.Undefined) { txt.Text = value.ToString("0.000"); } else { txt.Text = "----"; } txt.ForeColor = this.GetClassColor(classe); }
public Color GetClassColor(Classificacoes.Classificacao classificacao) { switch (classificacao) { case Classificacoes.Classificacao.Conforme: return(Color.LimeGreen); case Classificacoes.Classificacao.Classe2: return(Color.Yellow); case Classificacoes.Classificacao.Classe3: return(Color.OrangeRed); case Classificacoes.Classificacao.NaoConforme: return(Color.Red); default: return(Color.White); } }
public DataPoint(double value, DateTime dataHora, Classificacoes.Classificacao classe) { this.Value = value; this.DataHora = dataHora; this.Classe = classe; }
public static string GetGraph(string id, string DtInicio, string DtFim, string Offset) { //Populating a DataTable from database. DataTable dt = new DataTable(); dt.Columns.Add("D", typeof(double)); //dt.Columns.Add("C", typeof(int)); dt.Columns.Add("T", typeof(string)); int maxOfRecords = 1000; if (string.IsNullOrWhiteSpace(Offset) || !Diversos.IsNumeric(Offset)) { Offset = "0"; } try { Maquina maquina = VARS.Maquinas.First(x => x.Id == Convert.ToInt32(id)); // int lastSec = -1; if (maquina == null) { throw new Exception("máquina não encontrada!"); } else if (maquina.GraficoPontos.GetPoints(DateTime.Parse(DtInicio), DateTime.Parse(DtFim).AddMinutes(1).AddSeconds(-1), Convert.ToDouble(Offset.Replace(".", ",")))) { //get stats LAST_SEARCH_STATS.Clear(); //get class LAST_CLASS_TABLE.Clear(); LAST_CLASS = Classificacoes.Classificacao.Undefined; long numPointsClasse2 = 0; long numPointsClasse3 = 0; long numPointsNC = 0; Classificacoes.Classificacao lastClass = Classificacoes.Classificacao.Undefined; int increment = (int)Math.Ceiling((double)maquina.GraficoPontos.Pontos.Count / maxOfRecords); for (int i = 0; i < maquina.GraficoPontos.Pontos.Count; i++) { if (i % increment == 0 || (maquina.GraficoPontos.Pontos[i].Classe != Classificacoes.Classificacao.Conforme && maquina.GraficoPontos.Pontos[i].Classe != lastClass)) { // dt.Rows.Add(Math.Round(maquina.GraficoPontos.Pontos[i].Value, 3), (int)maquina.GraficoPontos.Pontos[i].Classe, maquina.GraficoPontos.Pontos[i].DataHora.ToString("dd/MM/yyyy HH:mm:ss")); dt.Rows.Add(Math.Round(maquina.GraficoPontos.Pontos[i].Value, 3), maquina.GraficoPontos.Pontos[i].DataHora.ToString("dd/MM/yyyy HH:mm:ss")); } if (LAST_CLASS_TABLE.Count < 1000) { if (maquina.GraficoPontos.Pontos[i].Classe != Classificacoes.Classificacao.Conforme) { if (maquina.GraficoPontos.Pontos[i].Classe != lastClass) { LAST_CLASS_TABLE.Add(maquina.GraficoPontos.Pontos[i]); } } } lastClass = maquina.GraficoPontos.Pontos[i].Classe; if (maquina.GraficoPontos.Pontos[i].Classe == Classificacoes.Classificacao.Classe2) { numPointsClasse2++; } else if (maquina.GraficoPontos.Pontos[i].Classe == Classificacoes.Classificacao.Classe3) { numPointsClasse3++; } else if (maquina.GraficoPontos.Pontos[i].Classe == Classificacoes.Classificacao.NaoConforme) { numPointsNC++; } } //analise a conformidade da bobine if (numPointsNC > 0 || numPointsClasse3 > maquina.Classe.MaxPontosClasse3 || numPointsClasse2 > maquina.Classe.MaxPontosClasse2) { LAST_CLASS = Classificacoes.Classificacao.NaoConforme; } else if (numPointsClasse3 > 0) { LAST_CLASS = Classificacoes.Classificacao.Classe3; } else if (numPointsClasse2 > 0) { LAST_CLASS = Classificacoes.Classificacao.Classe2; } else { LAST_CLASS = Classificacoes.Classificacao.Conforme; } //get stats double aux = Math.Round(maquina.GraficoPontos.Pontos.Select(x => x.Value).Average(), 3); LAST_SEARCH_STATS.Add(new Maquina.PontosGraph.DataPoint(aux, DateTime.Now, maquina.Classe.GetClassificacao(aux))); LAST_SEARCH_STATS.Add(maquina.GraficoPontos.Minimum); LAST_SEARCH_STATS.Add(maquina.GraficoPontos.Maximum); } } catch (Exception ex) { Debug.WriteLine("GetGraph(): " + ex.Message); return(string.Empty); } return(VARS.ConvertDataTabletoString(dt)); }
private void timer1_Tick(object sender, EventArgs e) { try { if (this.ReadStatus && ledPLC.Image != Resources.ledGreen) { ledPLC.Image = Resources.ledGreen; } else if (!this.ReadStatus && ledPLC.Image != Resources.ledRed) { ledPLC.Image = Resources.ledRed; } if (this.DbStatus && ledDB.Image != Resources.ledGreen) { ledDB.Image = Resources.ledGreen; } else if (!this.DbStatus && ledDB.Image != Resources.ledRed) { ledDB.Image = Resources.ledRed; } txtDiametro.Text = this.ReadStatus ? this.Diametro.ToString("0.000") : "####"; #region Classificação if (this.ReadStatus) { Classificacoes.Classificacao classificacao = this.Classe.GetClassificacao(this.Diametro); switch (classificacao) { case Classificacoes.Classificacao.Conforme: txtClassificacao.Text = "Conforme"; txtClassificacao.ForeColor = Color.LimeGreen; break; case Classificacoes.Classificacao.Classe2: txtClassificacao.Text = "Classe 2"; txtClassificacao.ForeColor = Color.Yellow; break; case Classificacoes.Classificacao.Classe3: txtClassificacao.Text = "Classe 3"; txtClassificacao.ForeColor = Color.OrangeRed; break; case Classificacoes.Classificacao.NaoConforme: txtClassificacao.Text = "Não Conforme"; txtClassificacao.ForeColor = Color.Red; break; default: txtClassificacao.Text = "----"; txtClassificacao.ForeColor = Color.White; break; } if (classificacao != Classificacoes.Classificacao.Conforme) { if (classificacao != this.lastClass) { if (dgvPoints.RowCount == this.DgvSpRows) { dgvPoints.Rows.RemoveAt(this.DgvSpRows - 1); } dgvPoints.Rows.Insert(0, this.Diametro.ToString("0.000"), DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), txtClassificacao.Text); dgvPoints.Rows[0].DefaultCellStyle.BackColor = txtClassificacao.ForeColor; // dgvPoints.Rows[dgvPoints.RowCount - 1].DefaultCellStyle.BackColor = txtClassificacao.ForeColor; dgvPoints.ClearSelection(); } this.lastClass = classificacao; } } else { txtClassificacao.ForeColor = txtDiametro.ForeColor = Color.White; txtClassificacao.Text = "####"; } #endregion if (tabControl1.SelectedIndex == 1 && this.points.Count > 0) { lock (this.lockPoints) { this.UpdateValueTextbox(lblMedia, this.points.Select(x => x.Value).Average()); this.UpdateValueTextbox(lblMin, this.points.Select(x => x.Value).Min()); this.UpdateValueTextbox(lblMax, this.points.Select(x => x.Value).Max()); lblTempoComm.Text = this.TotalTime.ToString() + " ms"; lblTempoComm.ForeColor = this.TotalReadTime < 250 ? Color.LimeGreen : Color.Red; int pointsNC = this.points.Count(x => x.Classe != Classificacoes.Classificacao.Conforme); lblNumPontosNC.Text = pointsNC.ToString(); if (pointsNC > 0 && pointsNC < this.Classe.MaxPontosNC) { lblNumPontosNC.ForeColor = Color.Orange; } else if (pointsNC >= this.Classe.MaxPontosNC) { lblNumPontosNC.ForeColor = Color.Red; } else { lblNumPontosNC.ForeColor = Color.White; } dgvHistLastPoints.Rows.Clear(); foreach (DataPoint point in this.points) { dgvHistLastPoints.Rows.Add(point.Value.ToString("0.000"), point.DataHora.ToString("dd/MM/yyyy HH:mm:ss")); dgvHistLastPoints.Rows[dgvHistLastPoints.RowCount - 1].DefaultCellStyle.BackColor = this.GetClassColor(point.Classe); if (dgvHistLastPoints.RowCount == this.DgvSpRows) { break; } } } } else { dgvHistLastPoints.Rows.Clear(); lblMedia.Text = lblMin.Text = lblMax.Text = lblTempoComm.Text = lblNumPontosNC.Text = "---"; lblMedia.ForeColor = lblMin.ForeColor = lblMax.ForeColor = lblTempoComm.ForeColor = lblNumPontosNC.ForeColor = Color.White; } this.timerFpError = false; } catch (Exception ex) { Debug.WriteLine("timer1_Tick(): " + ex.Message); if (!this.timerFpError) { this.AdicionaLog("timer1_Tick(): " + ex.Message); } this.timerFpError = true; } }