private void Imprimir_Click(object sender, EventArgs e) { VO.Ciclos ciclo = CicloDAO.buscaCiclo(crg, idCiclo); OpcoesImpressao impressao = new OpcoesImpressao(ciclo); impressao.ShowDialog(this); }
private void Grafico_Click(object sender, EventArgs e) { VO.Ciclos ciclo = CicloDAO.buscaCiclo(crg, idCiclo); Grafico grafico = new Grafico(ciclo); grafico.ShowDialog(this); }
private void Finalizar_Click(object sender, EventArgs e) { if (Finalizar.Text == "Enviar Finalizadas") { var checados = DtgChecked(dtgAndamento); if (checados.Count > 0) { if (MessageBox.Show("Deseja continuar a enviar os ciclos para finalizadas?", "Atenção", MessageBoxButtons.YesNo) == DialogResult.Yes) { foreach (var item in checados) { CicloDAO.alteraSituacao(Convert.ToInt32(item.Cells[2].Value), Convert.ToInt32(item.Cells[1].Value)); } CarregaCiclos(); } } else { MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { var filtro = new Filtro(this); filtro.ShowDialog(this); } }
private void Produtos_Click(object sender, EventArgs e) { VO.Ciclos ciclo = CicloDAO.buscaCiclo(crg, idCiclo); List <ProdutoCiclo> listaProdutos = ProdutoCicloDAO.listaProdutosCiclo(ciclo); DetalhesProdutosCiclo produtos = new DetalhesProdutosCiclo(listaProdutos); produtos.ShowDialog(this); }
public void CarregaCiclos() { var filtro = UltimosDAO.RetornaUltimoFiltro(); dtgAndamento.Rows.Clear(); dtgFinalizados.Rows.Clear(); List <VO.Ciclos> CiclosAndamento = CicloDAO.listaCiclosPorSituacaoAll(0); foreach (var c in CiclosAndamento) { dtgAndamento.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } selecao = filtro.ValorFiltro; if (selecao == 4) { int crg = filtro.Equipamento; List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoEq(crg, 1); foreach (var c in CiclosFinalizados) { dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } } else if (selecao == 3) { int crg = filtro.Equipamento; int mes = filtro.QtdMeses; List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoMes(crg, 1, -mes); foreach (var c in CiclosFinalizados) { dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } } else if (selecao == 2) { int crg = filtro.Equipamento; List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoEntre(crg, 1, filtro.DataInicio, filtro.DataFim); foreach (var c in CiclosFinalizados) { dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } } else { List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoAll(1); foreach (var c in CiclosFinalizados) { dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } } toggleBotoesDtgAndamento(false); }
public void CarregaCiclos() { string[] filtro = ObterDadosFiltro(); dtgAndamento.Rows.Clear(); dtgFinalizados.Rows.Clear(); List <VO.Ciclos> CiclosAndamento = CicloDAO.listaCiclosPorSituacaoAll(0); foreach (var c in CiclosAndamento) { dtgAndamento.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } //selecao = int.Parse(filtro[0]); if (selecao == 4) { int crg = int.Parse(filtro[3]); List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoEq(crg, 1); foreach (var c in CiclosFinalizados) { dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } } else if (selecao == 3) { int crg = int.Parse(filtro[3]); int mes = int.Parse(filtro[4]); List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoMes(crg, 1, -mes); foreach (var c in CiclosFinalizados) { dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } } else if (selecao == 2) { int crg = int.Parse(filtro[3]); string dataInicio = filtro[1]; string dataFim = filtro[2]; List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoEntre(crg, 1, Convert.ToDateTime(dataInicio), Convert.ToDateTime(dataFim)); foreach (var c in CiclosFinalizados) { dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } } else { List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoAll(1); foreach (var c in CiclosFinalizados) { dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } } }
private void dtgFinalizados_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex == 9) { var row = dtgFinalizados.Rows[e.RowIndex]; var ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(row.Cells[2].Value), Convert.ToInt32(row.Cells[1].Value)); ciclo.descricao = (string)row.Cells[9].Value; CicloDAO.alteraCiclo(ciclo); } }
private void Excluir_Click(object sender, EventArgs e) { var checados = new List <DataGridViewRow>(); if (tabCiclos.SelectedIndex == 0) { checados = DtgChecked(dtgAndamento); } else { checados = DtgChecked(dtgFinalizados); } if (checados.Count > 0) { if (MessageBox.Show("Deseja excluir o(s) ciclo(s) selecionado(s)?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { foreach (var item in checados) { VO.LogMudanca log = new VO.LogMudanca(); log.descricao = "O tratamento nº " + Convert.ToInt32(item.Cells[4].Value) + " do CRG nº " + Convert.ToInt32(item.Cells[2].Value) + " iniciado no dia " + item.Cells[8].Value + " foi excluído"; log.crg = Convert.ToInt32(item.Cells[2].Value); log.data = DateTime.Now; string[] dados = ObterDadosUltimo(); log.responsavel = dados[1]; LogMudancaDAO.insereLogMudanca(log); LeiturasCicloDAO.DeletaLeiturasCiclo(Convert.ToInt32(item.Cells[1].Value), Convert.ToInt32(item.Cells[2].Value)); LeiturasTratDAO.DeletaLeiturasTratamento(Convert.ToInt32(item.Cells[1].Value), Convert.ToInt32(item.Cells[2].Value)); ProdutoCicloDAO.DeletaProdutosCiclo(Convert.ToInt32(item.Cells[1].Value), Convert.ToInt32(item.Cells[2].Value)); CicloDAO.DeletaCiclo(Convert.ToInt32(item.Cells[1].Value), Convert.ToInt32(item.Cells[2].Value)); } CarregaCiclos(); } } else { MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
public void CarregaCiclos() { dtgAndamento.Rows.Clear(); dtgFinalizados.Rows.Clear(); List <VO.Ciclos> CiclosAndamento = CicloDAO.listaCiclosPorSituacaoAll(0); List <VO.Ciclos> CiclosFinalizados = CicloDAO.listaCiclosPorSituacaoAll(1); foreach (var c in CiclosAndamento) { dtgAndamento.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } foreach (var c in CiclosFinalizados) { dtgFinalizados.Rows.Add(false, c.id, c.crg, c.numSerie, c.nTrat.ToString("000"), c.nl.ToString("000"), c.nlt.ToString("000"), c.dataColeta, c.dataInicio, c.descricao); } }
private void ImportarCiclo(ImportarCiclo ciclo) { try { // Inclui o ciclo no banco de dados CicloDAO.inserirCiclo(ciclo.ciclo); ciclo.ciclo.id = CicloDAO.retornaId(ciclo.ciclo); // Insere as leituras da ciclo if (ciclo.ciclo.tipoCRG == 2) { LeiturasCicloDAO.inserirLeiturasCiclo150(ciclo.leiturasCiclo, 0, ciclo.ciclo); } else { LeiturasCicloDAO.inserirLeiturasCiclo(ciclo.leiturasCiclo, 0, ciclo.ciclo); } // Caso haja tratamento, insere-se neste método if (ciclo.leiturasTratamento.Count > 0) { if (ciclo.ciclo.tipoCRG == 2) { LeiturasTratDAO.inserirLeiturasTratamento150(ciclo.leiturasTratamento, 0, ciclo.ciclo); } else { LeiturasTratDAO.inserirLeiturasTratamento(ciclo.leiturasTratamento, 0, ciclo.ciclo); } } foreach (var p in ciclo.produtosCiclo) { //Insere produtos do ciclo p.ciclo.id = ciclo.ciclo.id; ProdutoCicloDAO.inserirProdutoCiclo(p); } } catch (Exception exception) { throw new Exception(exception.Message); } }
private void Alterar_Click(object sender, EventArgs e) { if (Atualizar.Text == "Atualizar") { var checados = DtgChecked(dtgAndamento); if (checados.Count == 0) { return; } var frmTipoCom = new frmSelecionarMeioComunicacao(0); frmTipoCom.ShowDialog(this); if (!frmTipoCom.Sucesso) { return; } var tipoCom = frmTipoCom.TipoComunicacao; if (string.IsNullOrWhiteSpace(tipoCom)) { return; } foreach (var item in checados) { var crg = Convert.ToInt32(item.Cells[2].Value); var nTrat = Convert.ToInt32(item.Cells[4].Value); if (tipoCom == "ONLINE") { var func = new funcaoAssincrona(() => SecagensBO.ReceberSecagem(0, crg, ConfiguracaoDAO.retornaPorta())); this.Enabled = false; frmCarregar = new Carregar(); frmCarregar.Show(this); var asyncResult = func.BeginInvoke((ar) => { }, null); while (asyncResult.IsCompleted == false) { Application.DoEvents(); Thread.Sleep(50); } frmCarregar.Invoke(new MethodInvoker(() => frmCarregar.Close())); var listaRetorno = func.EndInvoke(asyncResult); if (listaRetorno == null || listaRetorno.Count == 0) { MessageBox.Show("Não foi possível comunicar com o equipamento!", "Erro de comunicação", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Enabled = true; return; } var secagem = SecagensBO.DescriptografarSecagem(listaRetorno); if (secagem == null) { MessageBox.Show("Não foi possível carregar este ciclo!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Enabled = true; return; } secagem.ciclo.crg = crg; var status = SecagensBO.SalvarSecagem(true, secagem, this); if (status.Cancelado) { this.Enabled = true; return; } if (!status.Sucesso) { var msgs = string.Empty; foreach (var msg in ErrorHandler.GetAllErrors) { msgs += Environment.NewLine + msg.ErrorMessage; } MessageBox.Show( "Não foi possível salvar o ciclo " + secagem.ciclo.nTrat + "!" + Environment.NewLine + Environment.NewLine + "Detalhes: " + msgs, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Enabled = true; return; } MessageBox.Show( "Ciclo " + secagem.ciclo.nTrat + " " + (status.Salvo ? "salvo" : "atualizado") + " com sucesso!", "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Information); CarregaCiclos(); Enabled = true; Activate(); } else { var frmPendrive = new frmPendriveList(crg, nTrat); frmPendrive.ShowDialog(this); var arquivo = frmPendrive.Arquivo; if (string.IsNullOrWhiteSpace(arquivo) || nTrat == -1 || crg == -1) { return; } var bytes = File.ReadAllBytes(arquivo); if (!bytes.Any()) { ErrorHandler.ThrowNew(0, "Arquivo inválido!"); goto Fim; } var secagem = SecagensBO.DescriptografarSecagem(bytes.ToList(), 1); if (secagem == null) { var msg = "Não foi possível carregar este ciclo!"; if (ErrorHandler.GetLastError != null) { msg += Environment.NewLine + Environment.NewLine + "Detalhes:" + Environment.NewLine + ErrorHandler.GetLastError.ErrorMessage; ErrorHandler.ClearErrors(); } MessageBox.Show(msg, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); goto Fim; } secagem.ciclo.crg = crg; var status = SecagensBO.SalvarSecagem(true, secagem); if (status.Sucesso) { MessageBox.Show("Ciclo " + secagem.ciclo.nTrat + " " + (status.Salvo ? "salvo" : "atualizado") + " com sucesso!", "Sucesso!", MessageBoxButtons.OK, MessageBoxIcon.Information); goto Fim; } var ultimoErro = ErrorHandler.GetLastError; if (ultimoErro != null) { MessageBox.Show(ultimoErro.ErrorMessage, ultimoErro.Identifier == 0 ? "Erro" : "Informação", MessageBoxButtons.OK, ultimoErro.Identifier == 0 ? MessageBoxIcon.Error : MessageBoxIcon.Information); goto Fim; } } Fim: Activate(); CarregaCiclos(); } } else { var checados = DtgChecked(dtgFinalizados); if (checados.Count > 0) { foreach (var item in checados) { var ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(item.Cells[2].Value), Convert.ToInt32(item.Cells[1].Value)); var novoCiclo = new NovoCiclo(true, Convert.ToInt32(item.Cells[4].Value), ciclo, Convert.ToInt32(item.Cells[2].Value) - 1, false); novoCiclo.ShowDialog(this); } CarregaCiclos(); } else { MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
private void Email_Click(object sender, EventArgs e) { FormularioEmail form = new FormularioEmail(this); form.ShowDialog(this); if (continuarExportandoEmail) { var crg = 0; FileInfo file = new FileInfo(@Environment.CurrentDirectory + "\\CiclosExportados.crg08"); if (file.Exists) { file.Delete(); } var writer = new XmlTextWriter(Environment.CurrentDirectory + "\\CiclosExportados.crg08", null); // Gera o XML de cada ciclo try { writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteStartElement("Ciclos"); for (int i = 0; i < dtgAndamento.RowCount; i++) { if (dtgAndamento.Rows[i].Cells[0].Value.ToString() == "True") { var id = int.Parse(dtgAndamento.Rows[i].Cells[1].Value.ToString()); crg = int.Parse(dtgAndamento.Rows[i].Cells[2].Value.ToString()); var ciclo = CicloDAO.buscaCiclo(crg, id); ExportarCiclo(writer, ciclo, i + 1); } } for (int i = 0; i < dtgFinalizados.RowCount; i++) { if (dtgFinalizados.Rows[i].Cells[0].Value.ToString() == "True") { var id = int.Parse(dtgFinalizados.Rows[i].Cells[1].Value.ToString()); crg = int.Parse(dtgFinalizados.Rows[i].Cells[2].Value.ToString()); var ciclo = CicloDAO.buscaCiclo(crg, id); ExportarCiclo(writer, ciclo, i + 1); } } writer.WriteFullEndElement(); writer.WriteEndDocument(); } catch (Exception error) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar exportar"; string dataHora = DateTime.Now.ToString(); logErro.data = DateTime.Now; logErro.maisDetalhes = error.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar exportar por email.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } finally { writer.Flush(); writer.Close(); var xmlDoc = new XmlDocument(); try { xmlDoc.PreserveWhitespace = true; xmlDoc.Load(file.Name); } catch (Exception er) { Console.WriteLine(er.Message); } var cspParams = new CspParameters(); cspParams.KeyContainerName = "CRG08"; var rsaKey = new RSACryptoServiceProvider(cspParams); try { Crypto.Encrypt(xmlDoc, "Ciclo", "Ciclo", rsaKey, "rsaKey"); xmlDoc.Save(file.Name); } catch (Exception er) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar exportar"; string dataHora = DateTime.Now.ToString(); logErro.data = DateTime.Now; logErro.maisDetalhes = er.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar exportar por email.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } MailMessage msg = new MailMessage(); List <Destinatarios> listaDestinatarios = ListaDestinatarios(); string[] dadosConfiguracao = ObterDadosEmail(); if (listaDestinatarios.Count > 0) { msg.From = new MailAddress(dadosConfiguracao[1]); foreach (var d in listaDestinatarios) { msg.To.Add(new MailAddress(d.email)); } msg.Subject = "Envio de Ciclos Exportados pelo CRG 08"; msg.Body = "Ciclo exportado no dia " + DateTime.Today.ToString().Substring(0, 10) + " do equipamento CRG 08 enviado via software do CRG 08 desenvolvido pela Digisystem Indústria de " + "Sistema Eletrônico LTDA, e autorizado conforme configuração do usuário no software."; msg.Attachments.Add(new Attachment(@Environment.CurrentDirectory + "\\CiclosExportados.crg08")); SmtpClient smtp = new SmtpClient(dadosConfiguracao[0]); smtp.Port = Convert.ToInt32(dadosConfiguracao[4]); if (int.Parse(dadosConfiguracao[5]) == 1) { smtp.EnableSsl = true; } else { smtp.EnableSsl = false; } smtp.Credentials = new NetworkCredential(dadosConfiguracao[2], dadosConfiguracao[3]); smtp.SendAsync(msg, msg.Subject); smtp.SendCompleted += new SendCompletedEventHandler(stmp_SendCompletedRGD); } MessageBox.Show("O email foi enviado com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.None); } } }
public bool AtualizaCiclo() { List <string> mensagens = new List <string>(); //Lista ciclos em Andamento List <VO.Ciclos> ciclos = CicloDAO.listaCiclosPorSituacaoAll(0); t = new Thread(new ThreadStart(carregarAguarde)); //this.Enabled = false; try { for (int i = 0; i < ciclos.Count; i++) { VO.Ciclos cic = ciclos[i]; List <ProdutoCiclo> listaProdutos = ProdutoCicloDAO.listaProdutosCiclo(cic); VO.Ciclos ciclo = new VO.Ciclos(); string porta = ConfiguracaoDAO.retornaPorta(); bool continua = false; if (!t.IsAlive) { t.Start(); } var srpComm = new SerialPort(porta, 19200, Parity.None, 8, StopBits.One); srpComm.DtrEnable = true; srpComm.RtsEnable = false; srpComm.ReadBufferSize = 100000; srpComm.WriteBufferSize = 100000; Conexao.srpComm = srpComm; Conexao.srpComm.Open(); Thread.Sleep(100); int numBytes = 0; int aux = cic.crg + 63; Conexao.srpComm.Write(((char)19).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)17).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)aux).ToString()); Thread.Sleep(100); if (Conexao.srpComm.BytesToRead != 0) { numBytes = byte.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } continua = true; if (continua) { // int cont = 0; //Verifica se é aparelho novo ou antigo switch (Conexao.buffer[0]) { //Versão nova até 150ºC case 167: string binario = decimalParaBinario(cic.nTrat); numTrat1 = binarioParaDecimal(binario.Substring(0, 8)); numTrat2 = binarioParaDecimal(binario.Substring(8, 8)); Conexao.srpComm.Write(((char)5).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)numTrat1).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)numTrat2).ToString()); Thread.Sleep(8000); int contador = 0; do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = int.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } contador++; } while (Conexao.srpComm.BytesToRead != 0); int checksum = 0; //Verifica se o ciclo ainda está na memória do equipamento if (Conexao.buffer.Length > 2) { for (int j = 0; j < Conexao.buffer.Length - 2; j++) { checksum ^= Conexao.buffer[j]; } if (checksum == Conexao.buffer[Conexao.buffer.Length - 2]) { int aux2 = Conexao.buffer.Length - 10; cic.numSerie = ((char)Conexao.buffer[aux2]).ToString() + ((char)Conexao.buffer[aux2 + 1]).ToString() + ((char)Conexao.buffer[aux2 + 2]).ToString() + ((char)Conexao.buffer[aux2 + 3]).ToString() + ((char)Conexao.buffer[aux2 + 4]).ToString() + ((char)Conexao.buffer[aux2 + 5]).ToString() + ((char)Conexao.buffer[aux2 + 6]).ToString() + ((char)Conexao.buffer[aux2 + 7]).ToString(); cic.nTrat = (Conexao.buffer[0] * 256) + Conexao.buffer[1]; string dataInicio = string.Concat((Conexao.buffer[7] / 16), (Conexao.buffer[7] % 16)) + "/" + string.Concat((Conexao.buffer[8] / 16), (Conexao.buffer[8] % 16)) + "/20" + string.Concat((Conexao.buffer[9] / 16), (Conexao.buffer[9] % 16)) + " " + string.Concat((Conexao.buffer[5] / 16), (Conexao.buffer[5] % 16)) + ":" + string.Concat((Conexao.buffer[4] / 16), (Conexao.buffer[4] % 16)); cic.dataInicio = Convert.ToDateTime(dataInicio); cic.dataColeta = DateTime.Now; bool retorno = false; int indiceLeitCiclo = LeiturasCicloDAO.retornaQtdeLeituras(cic.id, cic.crg); int indiceLeitTrat = LeiturasTratDAO.retornaQtdeLeituras(cic.id, cic.crg); retorno = ConexaoBO.EnviaBancodeDados(cic, Conexao.buffer, true, listaProdutos, indiceLeitCiclo, indiceLeitTrat, true); if (retorno) { AtualizaUltimo(cic.operador, cic.responsavel); mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " foi atualizado com sucesso."); } } else { MessageBox.Show("Erro no checksum.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " nao está mais na memória do equipamento."); } break; //Versão nova até 102ºC case 166: string binario1 = decimalParaBinario(cic.nTrat); numTrat1 = binarioParaDecimal(binario1.Substring(0, 8)); numTrat2 = binarioParaDecimal(binario1.Substring(8, 8)); Conexao.srpComm.Write(((char)5).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)numTrat1).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)numTrat2).ToString()); Thread.Sleep(8000); int contador1 = 0; do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = int.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } contador1++; } while (Conexao.srpComm.BytesToRead != 0); int checksum1 = 0; //Verifica se o ciclo ainda está na memória do equipamento if (Conexao.buffer.Length > 2) { for (int j = 0; j < Conexao.buffer.Length - 2; j++) { checksum1 ^= Conexao.buffer[j]; } if (checksum1 == Conexao.buffer[Conexao.buffer.Length - 2]) { int aux2 = Conexao.buffer.Length - 10; ciclo.numSerie = ((char)Conexao.buffer[aux2]).ToString() + ((char)Conexao.buffer[aux2 + 1]).ToString() + ((char)Conexao.buffer[aux2 + 2]).ToString() + ((char)Conexao.buffer[aux2 + 3]).ToString() + ((char)Conexao.buffer[aux2 + 4]).ToString() + ((char)Conexao.buffer[aux2 + 5]).ToString() + ((char)Conexao.buffer[aux2 + 6]).ToString() + ((char)Conexao.buffer[aux2 + 7]).ToString(); ciclo.nTrat = (Conexao.buffer[0] * 256) + Conexao.buffer[1]; string dataInicio = string.Concat((Conexao.buffer[7] / 16), (Conexao.buffer[7] % 16)) + "/" + string.Concat((Conexao.buffer[8] / 16), (Conexao.buffer[8] % 16)) + "/20" + string.Concat((Conexao.buffer[9] / 16), (Conexao.buffer[9] % 16)) + " " + string.Concat((Conexao.buffer[5] / 16), (Conexao.buffer[5] % 16)) + ":" + string.Concat((Conexao.buffer[4] / 16), (Conexao.buffer[4] % 16)); ciclo.dataInicio = Convert.ToDateTime(dataInicio); ciclo.dataColeta = DateTime.Now; bool retorno = false; int indiceLeitCiclo = LeiturasCicloDAO.retornaQtdeLeituras(ciclo.id, ciclo.crg); int indiceLeitTrat = LeiturasTratDAO.retornaQtdeLeituras(ciclo.id, ciclo.crg); retorno = ConexaoBO.EnviaBancodeDados(ciclo, Conexao.buffer, true, listaProdutos, indiceLeitCiclo, indiceLeitTrat, false); if (retorno) { AtualizaUltimo(cic.operador, cic.responsavel); mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " foi atualizado com sucesso."); } } else { mensagens.Add("Não foi possível atualizar o ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + ". Erro de Checksum."); } } else { mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " nao está mais na memória do equipamento."); } break; //Versão antiga até 102ºC apenas case 165: Conexao.srpComm.Write(((char)6).ToString()); Thread.Sleep(8000); int cont = 0; do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = int.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } cont++; } while (Conexao.srpComm.BytesToRead != 0); int chk = 0; for (int j = 0; j < Conexao.buffer.Length - 2; j++) { chk ^= Conexao.buffer[j]; } if (((Conexao.buffer[5] * 256) + Conexao.buffer[2]) == cic.nTrat) { if (chk == Conexao.buffer[Conexao.buffer.Length - 2]) { int aux2 = Conexao.buffer.Length - 10; cic.numSerie = ((char)Conexao.buffer[aux2]).ToString() + ((char)Conexao.buffer[aux2 + 1]).ToString() + ((char)Conexao.buffer[aux2 + 2]).ToString() + ((char)Conexao.buffer[aux2 + 3]).ToString() + ((char)Conexao.buffer[aux2 + 4]).ToString() + ((char)Conexao.buffer[aux2 + 5]).ToString() + ((char)Conexao.buffer[aux2 + 6]).ToString() + ((char)Conexao.buffer[aux2 + 7]).ToString(); cic.nTrat = (Conexao.buffer[5] * 256) + Conexao.buffer[2]; string dataInicio = string.Concat((Conexao.buffer[6] / 16), (Conexao.buffer[6] % 16)) + "/" + string.Concat((Conexao.buffer[7] / 16), (Conexao.buffer[7] % 16)) + "/20" + string.Concat((Conexao.buffer[8] / 16), (Conexao.buffer[8] % 16)) + " " + string.Concat((Conexao.buffer[4] / 16), (Conexao.buffer[4] % 16)) + ":" + string.Concat((Conexao.buffer[3] / 16), (Conexao.buffer[3] % 16)); cic.dataInicio = Convert.ToDateTime(dataInicio); cic.dataColeta = DateTime.Now; bool retorno = false; int indiceLeitCiclo = LeiturasCicloDAO.retornaQtdeLeituras(cic.id, cic.crg); int indiceLeitTrat = LeiturasTratDAO.retornaQtdeLeituras(cic.id, cic.crg); retorno = ConexaoBO.EnviaBancodeDadosAntigo(cic, Conexao.buffer, true, listaProdutos, indiceLeitCiclo, indiceLeitTrat); if (retorno) { AtualizaUltimo(cic.operador, cic.responsavel); mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " foi atualizado com sucesso."); } } else { mensagens.Add("Não foi possível atualizar o ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + ". Erro de Checksum."); } } else { mensagens.Add("O ciclo nº " + cic.nTrat + " do aparelho nº " + cic.crg + " não está mais no histórico."); } break; } } Conexao.srpComm.Close(); Thread.Sleep(100); } t.Abort(); if (mensagens.Count > 0) { StatusAtualizacao frm = new StatusAtualizacao(mensagens); frm.ShowDialog(this); } return(true); } catch (Exception error) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = 0; logErro.descricao = "Erro ao tentar receber o ciclo"; logErro.maisDetalhes = error.Message + " " + error.StackTrace; logErro.data = DateTime.Now; LogErroDAO.inserirLogErro(logErro, logErro.crg); t.Abort(); return(false); } }
public static bool EnviaBancodeDadosAntigo(Ciclos ciclo, byte[] buffer, bool atualiza, List <ProdutoCiclo> listaProdutos, int indiceLeitCiclo, int indiceLeitTrat) { try { //Novo histórico List <LeiturasTrat> leiturasTrat = new List <LeiturasTrat>(); List <LeiturasCiclo> leiturasCiclo = new List <LeiturasCiclo>(); if ((Conexao.buffer[0] & 128) == 0) { ciclo.baseTempo = 0; } else { ciclo.baseTempo = 1; } ciclo.nl = ((Conexao.buffer[0] & 127) * 256) + Conexao.buffer[1]; string dataFim = string.Concat((Conexao.buffer[12] / 16), (Conexao.buffer[12] % 16)) + "/" + string.Concat((Conexao.buffer[13] / 16), (Conexao.buffer[13] % 16)) + "/20" + string.Concat((Conexao.buffer[14] / 16), (Conexao.buffer[14] % 16)) + " " + string.Concat((Conexao.buffer[10] / 16), (Conexao.buffer[10] % 16)) + ":" + string.Concat((Conexao.buffer[9] / 16), (Conexao.buffer[9] % 16)); ciclo.dataFim = Convert.ToDateTime(dataFim); //Sensor ciclo.sensor = Conexao.buffer[16] & 240; int cont = 20; ciclo.tipoCRG = 100; //Qtde leituras do Tratamento ciclo.nlt = ((Conexao.buffer.Length - ((ciclo.nl * 8) + 42)) / 8); //leituras do Ciclo if (ciclo.nl > 0) { for (int i = 0; i < ciclo.nl; i++) { LeiturasCiclo leitura = new LeiturasCiclo(); int auxL = (Conexao.buffer[cont] * 16) + (Conexao.buffer[cont + 1] / 16); if (auxL < 1000) { leitura.T1 = auxL / 10.0; } else { leitura.T1 = 999 / 10.0; } auxL = ((Conexao.buffer[cont + 1] % 16) * 256) + Conexao.buffer[cont + 2]; if (auxL < 1000) { leitura.T2 = auxL / 10.0; } else { leitura.T2 = 999 / 10.0; } auxL = (Conexao.buffer[cont + 3] * 16) + (Conexao.buffer[cont + 4] / 16); if (auxL < 1000) { leitura.T3 = auxL / 10.0; } else { leitura.T3 = 999 / 10.0; } auxL = ((Conexao.buffer[cont + 4] % 16) * 256) + Conexao.buffer[cont + 5]; if (auxL < 1000) { leitura.T4 = auxL / 10.0; } else { leitura.T4 = 999 / 10.0; } leitura.horario = string.Concat((Conexao.buffer[cont + 7] / 16), (Conexao.buffer[cont + 7] % 16)) + ":" + string.Concat((Conexao.buffer[cont + 6] / 16), (Conexao.buffer[cont + 6] % 16)); leiturasCiclo.Add(leitura); cont = cont + 8; } } //Temperatura de Controle e do Tratamento int auxT = (Conexao.buffer[cont] * 256) + Conexao.buffer[cont + 1]; if (auxT < 1000) { ciclo.temperaturaControle = auxT / 10; } else { ciclo.temperaturaControle = 999 / 10; } auxT = (Conexao.buffer[cont + 2] * 256) + Conexao.buffer[cont + 3]; if (auxT < 1000) { ciclo.temperaturaTrat = auxT / 10; } else { ciclo.temperaturaTrat = 999 / 10; } //Tempo Tratamento ciclo.tempoTrat = Conexao.buffer[cont + 4]; if (ciclo.tempoTrat > 100) { ciclo.tempoTrat = 99; } //Data e hora inicio do tratamento String dataInicioTrat = string.Concat((Conexao.buffer[cont + 8] / 16), (Conexao.buffer[cont + 8] % 16)) + "/" + string.Concat((Conexao.buffer[cont + 9] / 16), (Conexao.buffer[cont + 9] % 16)) + "/20" + string.Concat((Conexao.buffer[cont + 10] / 16), (Conexao.buffer[cont + 10] % 16)) + " " + string.Concat((Conexao.buffer[cont + 6] / 16), (Conexao.buffer[cont + 6] % 16)) + ":" + string.Concat((Conexao.buffer[cont + 5] / 16), (Conexao.buffer[cont + 5] % 16)); ciclo.dataIniTrat = Convert.ToDateTime(dataInicioTrat); //Leitura inicio do Tratamento ciclo.NLIniTrat = ((Conexao.buffer[cont + 11] & 127) * 256) + Conexao.buffer[cont + 12]; //leituras do Tratamento if (ciclo.nlt > 0) { cont = cont + 13; for (int i = 0; i < ciclo.nlt; i++) { LeiturasTrat leitura = new LeiturasTrat(); int auxL = (Conexao.buffer[cont] * 16) + (Conexao.buffer[cont + 1] / 16); if (auxL < 1000) { leitura.T1 = auxL / 10.0; } else { leitura.T1 = 999 / 10.0; } auxL = ((Conexao.buffer[cont + 1] % 16) * 256) + Conexao.buffer[cont + 2]; if (auxL < 1000) { leitura.T2 = auxL / 10.0; } else { leitura.T2 = 999 / 10.0; } auxL = (Conexao.buffer[cont + 3] * 16) + (Conexao.buffer[cont + 4] / 16); if (auxL < 1000) { leitura.T3 = auxL / 10.0; } else { leitura.T3 = 999 / 10.0; } auxL = ((Conexao.buffer[cont + 4] % 16) * 256) + Conexao.buffer[cont + 5]; if (auxL < 1000) { leitura.T4 = auxL / 10.0; } else { leitura.T4 = 999 / 10.0; } leitura.horario = string.Concat((Conexao.buffer[cont + 7] / 16), (Conexao.buffer[cont + 7] % 16)) + ":" + string.Concat((Conexao.buffer[cont + 6] / 16), (Conexao.buffer[cont + 6] % 16)); leiturasTrat.Add(leitura); cont = cont + 8; } } ciclo.nlAntesTrat = ciclo.NLIniTrat - 1; int iniResf; if (ciclo.baseTempo == 0) { iniResf = ciclo.NLIniTrat + ciclo.tempoTrat; } else { iniResf = ciclo.NLIniTrat + 1; } if (ciclo.nl - iniResf >= 19 && ciclo.baseTempo == 0) { ciclo.nlPostTrat = 20; } else if (ciclo.nl - iniResf >= 9 && ciclo.baseTempo == 1) { ciclo.nlPostTrat = 10; } else if (ciclo.nl >= iniResf) { ciclo.nlPostTrat = ((ciclo.nl - iniResf) + 1); } ciclo.nlPostTrat = Conexao.buffer[28]; ciclo.situacao = 0; if (!atualiza) { bool retorno = CicloDAO.inserirCiclo(ciclo); if (retorno) { ciclo.id = CicloDAO.retornaId(ciclo); foreach (var l in listaProdutos) { l.ciclo = ciclo; ProdutoCicloDAO.inserirProdutoCiclo(l); } if (leiturasCiclo.Count > 0) { LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, 0, ciclo); } if (leiturasTrat.Count > 0) { LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, 0, ciclo); } } } else { bool retorno = CicloDAO.alteraCiclo(ciclo); if (retorno) { ProdutoCicloDAO.DeletaProdutosCiclo(ciclo.id, ciclo.crg); for (int i = 0; i < listaProdutos.Count; i++) { listaProdutos[i].ciclo = ciclo; ProdutoCicloDAO.inserirProdutoCiclo(listaProdutos[i]); } if (leiturasCiclo.Count > 0) { LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, indiceLeitCiclo, ciclo); } if (leiturasTrat.Count > 0) { LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, indiceLeitTrat, ciclo); } } } return(true); } catch (Exception error) { LogErro logErro = new LogErro(); logErro.crg = ciclo.crg; logErro.data = DateTime.Now; logErro.descricao = "Erro ao tentar processar os dados do Tratamento e salvá-lo"; logErro.maisDetalhes = error.Message + " " + error.StackTrace; return(false); } }
public static bool EnviaBancodeDados(Ciclos ciclo, byte[] buffer, bool atualiza, List <ProdutoCiclo> listaProdutos, int indiceLeitCiclo, int indiceLeitTrat, bool crg150) { try { //Novo histórico List <LeiturasTrat> leiturasTrat = new List <LeiturasTrat>(); List <LeiturasCiclo> leiturasCiclo = new List <LeiturasCiclo>(); ciclo.nl = (Conexao.buffer[2] * 256) + Conexao.buffer[3]; string dataFim = string.Concat((Conexao.buffer[13] / 16), (Conexao.buffer[13] % 16)) + "/" + string.Concat((Conexao.buffer[14] / 16), (Conexao.buffer[14] % 16)) + "/20" + string.Concat((Conexao.buffer[15] / 16), (Conexao.buffer[15] % 16)) + " " + string.Concat((Conexao.buffer[11] / 16), (Conexao.buffer[11] % 16)) + ":" + string.Concat((Conexao.buffer[10] / 16), (Conexao.buffer[10] % 16)); ciclo.dataFim = Convert.ToDateTime(dataFim); string dataIniTrat = string.Concat((Conexao.buffer[19] / 16), (Conexao.buffer[19] % 16)) + "/" + string.Concat((Conexao.buffer[20] / 16), (Conexao.buffer[20] % 16)) + "/20" + string.Concat((Conexao.buffer[21] / 16), (Conexao.buffer[21] % 16)) + " " + string.Concat((Conexao.buffer[17] / 16), (Conexao.buffer[17] % 16)) + ":" + string.Concat((Conexao.buffer[16] / 16), (Conexao.buffer[16] % 16)); ciclo.dataIniTrat = Convert.ToDateTime(dataIniTrat); //Leitura inicio do Tratamento ciclo.NLIniTrat = ((Conexao.buffer[22] & 127) * 256) + Conexao.buffer[23]; //Qtde leituras do Tratamento ciclo.nlt = Conexao.buffer[24]; //Flags string flags = decimalParaBinario(Conexao.buffer[25]); ciclo.baseTempo = Convert.ToInt32(flags.Substring(6, 1)); //TControl e Histerese string aux = decimalParaBinario(Conexao.buffer[26]); ciclo.tControl = binarioParaDecimal(aux.Substring(0, 4)); ciclo.histerese = binarioParaDecimal(aux.Substring(4, 4)); ciclo.nlAntesTrat = Conexao.buffer[27]; ciclo.nlPostTrat = Conexao.buffer[28]; //Tempo Tratamento ciclo.tempoTrat = Conexao.buffer[33]; //Sensor ciclo.sensor = Conexao.buffer[26] & 240; if (crg150) { //Tipo 1 é normal e 2 é 150 ciclo.tipoCRG = 150; //Temperatura de Controle e do Tratamento int auxT = (Conexao.buffer[29] * 256) + Conexao.buffer[30]; if (auxT < 150) { ciclo.temperaturaControle = auxT; } else { ciclo.temperaturaControle = 150; } auxT = (Conexao.buffer[31] * 256) + Conexao.buffer[32]; if (auxT < 150) { ciclo.temperaturaTrat = auxT; } else { ciclo.temperaturaTrat = 150; } //leituras do Ciclo int cont = 34; if (ciclo.nl > 0) { for (int i = 0; i < ciclo.nl; i++) { LeiturasCiclo leitura = new LeiturasCiclo(); int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16); if (auxL < 150) { leitura.T1 = auxL; } else { leitura.T1 = 150; } auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4]; if (auxL < 150) { leitura.T2 = auxL; } else { leitura.T2 = 150; } auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16); if (auxL < 150) { leitura.T3 = auxL; } else { leitura.T3 = 150; } auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7]; if (auxL < 150) { leitura.T4 = auxL; } else { leitura.T4 = 150; } leitura.horario = string.Concat((Conexao.buffer[cont] / 16), (Conexao.buffer[cont] % 16)) + ":" + string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16)); leiturasCiclo.Add(leitura); cont = cont + 8; } } //leituras do Tratamento if (ciclo.nlt > 0) { for (int i = 0; i < ciclo.nlt; i++) { LeiturasTrat leitura = new LeiturasTrat(); int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16); if (auxL < 150) { leitura.T1 = auxL; } else { leitura.T1 = 150; } auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4]; if (auxL < 150) { leitura.T2 = auxL; } else { leitura.T2 = 150; } auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16); if (auxL < 150) { leitura.T3 = auxL; } else { leitura.T3 = 150; } auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7]; if (auxL < 150) { leitura.T4 = auxL; } else { leitura.T4 = 150; } string binario = decimalParaBinario(Conexao.buffer[cont]); auxL = binarioParaDecimal(binario.Substring(1, 7)); leitura.horario = string.Concat((auxL / 16), (auxL % 16)) + ":" + string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16)); leiturasTrat.Add(leitura); cont = cont + 8; } } } else { //1 é normal e 2 é 150 ciclo.tipoCRG = 100; //Temperatura de Controle e do Tratamento int auxT = (Conexao.buffer[29] * 256) + Conexao.buffer[30]; if (auxT < 1000) { ciclo.temperaturaControle = auxT / 10; } else { ciclo.temperaturaControle = 999 / 10; } auxT = (Conexao.buffer[31] * 256) + Conexao.buffer[32]; if (auxT < 1000) { ciclo.temperaturaTrat = auxT / 10; } else { ciclo.temperaturaTrat = 999 / 10; } //leituras do Ciclo int cont = 34; if (ciclo.nl > 0) { for (int i = 0; i < ciclo.nl; i++) { LeiturasCiclo leitura = new LeiturasCiclo(); int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16); if (auxL < 1000) { leitura.T1 = auxL / 10.0; } else { leitura.T1 = 999 / 10.0; } auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4]; if (auxL < 1000) { leitura.T2 = auxL / 10.0; } else { leitura.T2 = 999 / 10.0; } auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16); if (auxL < 1000) { leitura.T3 = auxL / 10.0; } else { leitura.T3 = 999 / 10.0; } auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7]; if (auxL < 1000) { leitura.T4 = auxL / 10.0; } else { leitura.T4 = 999 / 10.0; } leitura.horario = string.Concat((Conexao.buffer[cont] / 16), (Conexao.buffer[cont] % 16)) + ":" + string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16)); leiturasCiclo.Add(leitura); cont = cont + 8; } } //leituras do Tratamento if (ciclo.nlt > 0) { for (int i = 0; i < ciclo.nlt; i++) { LeiturasTrat leitura = new LeiturasTrat(); int auxL = (Conexao.buffer[cont + 2] * 16) + (Conexao.buffer[cont + 3] / 16); if (auxL < 1000) { leitura.T1 = auxL / 10.0; } else { leitura.T1 = 999 / 10.0; } auxL = ((Conexao.buffer[cont + 3] % 16) * 256) + Conexao.buffer[cont + 4]; if (auxL < 1000) { leitura.T2 = auxL / 10.0; } else { leitura.T2 = 999 / 10.0; } auxL = (Conexao.buffer[cont + 5] * 16) + (Conexao.buffer[cont + 6] / 16); if (auxL < 1000) { leitura.T3 = auxL / 10.0; } else { leitura.T3 = 999 / 10.0; } auxL = ((Conexao.buffer[cont + 6] % 16) * 256) + Conexao.buffer[cont + 7]; if (auxL < 1000) { leitura.T4 = auxL / 10.0; } else { leitura.T4 = 999 / 10.0; } string binario = decimalParaBinario(Conexao.buffer[cont]); auxL = binarioParaDecimal(binario.Substring(1, 7)); leitura.horario = string.Concat((auxL / 16), (auxL % 16)) + ":" + string.Concat((Conexao.buffer[cont + 1] / 16), (Conexao.buffer[cont + 1] % 16)); leiturasTrat.Add(leitura); cont = cont + 8; } } } ciclo.situacao = 0; if (!atualiza) { bool retorno = CicloDAO.inserirCiclo(ciclo); if (retorno) { ciclo.id = CicloDAO.retornaId(ciclo); foreach (var l in listaProdutos) { l.ciclo = ciclo; ProdutoCicloDAO.inserirProdutoCiclo(l); } if (leiturasCiclo.Count > 0) { LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, 0, ciclo); } if (leiturasTrat.Count > 0) { LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, 0, ciclo); } } } else { bool retorno = CicloDAO.alteraCiclo(ciclo); if (retorno) { ProdutoCicloDAO.DeletaProdutosCiclo(ciclo.id, ciclo.crg); for (int i = 0; i < listaProdutos.Count; i++) { listaProdutos[i].ciclo = ciclo; ProdutoCicloDAO.inserirProdutoCiclo(listaProdutos[i]); } if (leiturasCiclo.Count > 0) { LeiturasCicloDAO.inserirLeiturasCiclo(leiturasCiclo, indiceLeitCiclo, ciclo); } if (leiturasTrat.Count > 0) { LeiturasTratDAO.inserirLeiturasTratamento(leiturasTrat, indiceLeitTrat, ciclo); } } } return(true); } catch (Exception error) { LogErro logErro = new LogErro(); logErro.crg = ciclo.crg; logErro.data = DateTime.Now; logErro.descricao = "Erro ao tentar processar os dados do Tratamento e salvá-lo"; logErro.maisDetalhes = error.Message + " " + error.StackTrace; return(false); } }
private void Alterar_Click(object sender, EventArgs e) { if (Atualizar.Text == "Atualizar") { var frmTipoCom = new frmSelecionarMeioComunicacao(); frmTipoCom.ShowDialog(this); var tipoCom = frmTipoCom.comunicacao; if (string.IsNullOrWhiteSpace(tipoCom)) { return; } MessageBox.Show(tipoCom); return; int[] atualizacao = ConfiguracaoDAO.RetornaAtualizacao(); Configuracao config = new Configuracao(); config.atualizacao = atualizacao[0]; if (config.atualizacao == 1) { var checados = DtgChecked(dtgAndamento); if (checados.Count > 0) { foreach (var item in checados) { var ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(item.Cells[2].Value), Convert.ToInt32(item.Cells[1].Value)); var novoCiclo = new NovoCiclo(true, Convert.ToInt32(item.Cells[4].Value), ciclo, Convert.ToInt32(item.Cells[2].Value) - 1, false); novoCiclo.ShowDialog(this); } CarregaCiclos(); } else { MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); } /*for (int i = 0; i < dtgAndamento.Rows.Count; i++) * { * var rows = dtgAndamento.Rows; * if ((bool) dtgAndamento.Rows[i].Cells[0].Value) * { * VO.Ciclos ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(dtgAndamento.Rows[i].Cells[2].Value), * Convert.ToInt32(dtgAndamento.Rows[i].Cells[1].Value)); * NovoCiclo novoCiclo = new NovoCiclo(true,Convert.ToInt32(dtgAndamento.Rows[i].Cells[4].Value), * ciclo, Convert.ToInt32(dtgAndamento.Rows[i].Cells[2].Value) - 1, false); * novoCiclo.ShowDialog(this); * } * }*/ } } else { var checados = DtgChecked(dtgFinalizados); if (checados.Count > 0) { foreach (var item in checados) { var ciclo = CicloDAO.buscaCiclo(Convert.ToInt32(item.Cells[2].Value), Convert.ToInt32(item.Cells[1].Value)); var novoCiclo = new NovoCiclo(true, Convert.ToInt32(item.Cells[4].Value), ciclo, Convert.ToInt32(item.Cells[2].Value) - 1, false); novoCiclo.ShowDialog(this); } CarregaCiclos(); } else { MessageBox.Show("Não há nenhum ciclo selecionado!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
private void DetalhesCiclo_Load(object sender, EventArgs e) { var config = ConfiguracaoDAO.PegarConfigRelatorio(); VO.Ciclos ciclo = CicloDAO.buscaCiclo(crg, idCiclo); List <LeiturasCiclo> listaLeiturasCiclo = LeiturasCicloDAO.ListaLeiturasCiclos(ciclo); List <LeiturasTrat> listaLeiturasTrat = LeiturasTratDAO.ListaLeiturasTratamento(ciclo); var dados = new List <string>(); if (string.IsNullOrEmpty(ciclo.versaoEquip)) { dados.Add("Controlador nº" + crg.ToString("##") + " com " + ciclo.nl + " leituras(NTRAT: " + ciclo.nTrat.ToString("000") + ") - Nº Série " + ciclo.numSerie); } else { dados.Add("Controlador nº" + crg.ToString("##") + " com " + ciclo.nl + " leituras(NTRAT: " + ciclo.nTrat.ToString("000") + ") " + ciclo.versaoEquip + " - Nº Série " + ciclo.numSerie); } dados.Add("Valores programados no SET POINT do equipamento"); dados.Add(" - Temperatura de Controle(Tc): " + ciclo.temperaturaControle.ToString("##.0") + "ºC"); dados.Add(" - Temperatura do Tratamento(Tt): " + ciclo.temperaturaTrat.ToString("##.0") + "ºC"); dados.Add(" - Tempo do Tratamento(tt): " + ciclo.tempoTrat + " minuto(s)"); dados.Add("Período do ciclo: " + ciclo.dataInicio + " - " + ciclo.dataFim); dados.Add("Descrição: " + ciclo.descricao); if (listaLeiturasTrat.Count > 0 && ciclo.nlt == ciclo.tempoTrat) { dados.Add("Início do tratamento na leitura " + ciclo.NLIniTrat + " - " + ciclo.dataIniTrat + " (concluído)"); } else { dados.Add("Não realizou o tratamento"); } dados.Add("Responsável Técnico: " + ciclo.responsavel); dados.Add("Operador: " + ciclo.operador); if (!string.IsNullOrWhiteSpace(ciclo.VolumeFixo)) { dados.Add("Volume total: " + ciclo.VolumeFixo + (ciclo.IsMetrosCubicos ? "m³" : " peça(s)")); } else { dados.Add(""); } switch (ciclo.sensor) { case 0: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Amb"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Amb"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 16: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Amb"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Amb"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 32: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Amb"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Amb"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 48: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Amb"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Amb"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 64: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Mad"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Amb"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Mad"; dtgCiclo.Columns["T3"].HeaderText = "T3 Amb"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; case 80: dtgTratamento.Columns["T1T"].HeaderText = "T1 Mad"; dtgTratamento.Columns["T2T"].HeaderText = "T2 Mad"; dtgTratamento.Columns["T3T"].HeaderText = "T3 Mad"; dtgTratamento.Columns["T4T"].HeaderText = "T4 Amb"; dtgCiclo.Columns["T1"].HeaderText = "T1 Mad"; dtgCiclo.Columns["T2"].HeaderText = "T2 Mad"; dtgCiclo.Columns["T3"].HeaderText = "T3 Mad"; dtgCiclo.Columns["T4"].HeaderText = "T4 Amb"; break; } foreach (var dado in dados) { dtgResumo.Rows.Add(dado); } dtgResumo.Rows[1].DefaultCellStyle.Font = new Font("Microsoft Sans Seriff", 8, FontStyle.Bold); if (ciclo.tipoCRG == 100) { foreach (var leiturasCiclo in listaLeiturasCiclo) { dtgCiclo.Rows.Add((dtgCiclo.Rows.Count + 1).ToString("000"), leiturasCiclo.horario, leiturasCiclo.T1.ToString("#0.0"), leiturasCiclo.T2.ToString("#0.0"), leiturasCiclo.T3.ToString("#0.0"), leiturasCiclo.T4.ToString("#0.0")); if (ciclo.NLIniTrat == dtgCiclo.Rows.Count) { dtgCiclo.Rows[dtgCiclo.Rows.Count - 1].DefaultCellStyle.BackColor = Color.PaleGreen; } } int contGeral = 1; var listaTratamento = new List <ListaCiclosTratGrafico>(); if (listaLeiturasTrat.Count > 0 && ciclo.nlt == ciclo.tempoTrat) { listaTratamento = RelTratamento.populaTratamento(ciclo, listaLeiturasCiclo, listaLeiturasTrat, config); } if (listaTratamento.Count > 0) { var nlt_inicio_tratamento = 0; var nlt_fim_tratamento = 0; foreach (var item in listaTratamento.ToList()) { if (item.demarca_tratamento) { if (nlt_inicio_tratamento == 0) { nlt_inicio_tratamento = item.NLT; } else { nlt_fim_tratamento = item.NLT; } } dtgTratamento.Rows.Add(item.NLT.ToString("000"), item.NL.ToString("000"), item.horario, item.T1.ToString("#0.0"), item.T2.ToString("#0.0"), item.T3.ToString("#0.0"), item.T4.ToString("#0.0")); } foreach (DataGridViewRow row in dtgTratamento.Rows) { var nlt_value = Convert.ToInt32(row.Cells[0].Value); if (nlt_value >= nlt_inicio_tratamento && nlt_value <= nlt_fim_tratamento) { row.DefaultCellStyle.BackColor = Color.PaleGreen; } } //Leituras Anteriores ao Tratamento /*for (int i = 0; i < ciclo.nlAntesTrat; i += 2) * { * dtgTratamento.Rows.Add("--", contGeral.ToString("000"), listaLeiturasCiclo[i].horario, * listaLeiturasCiclo[i].T1.ToString("##.0"), * listaLeiturasCiclo[i].T2.ToString("##.0"), listaLeiturasCiclo[i].T3.ToString("##.0"), * listaLeiturasCiclo[i].T4.ToString("##.0")); * contGeral += 2; * } * * int contTrat = 1; * //Leituras do Tratamento * for (int i = 0; i < listaLeiturasTrat.Count; i += 2) * { * dtgTratamento.Rows.Add(contTrat.ToString("000"), contGeral.ToString("000"), * listaLeiturasTrat[i].horario, listaLeiturasTrat[i].T1.ToString("##.0"), * listaLeiturasTrat[i].T2.ToString("##.0"), listaLeiturasTrat[i].T3.ToString("##.0"), * listaLeiturasTrat[i].T4.ToString("##.0")); * contTrat += 2; * contGeral += 2; * dtgTratamento.Rows[dtgTratamento.RowCount - 1].DefaultCellStyle.BackColor = Color.PaleGreen; * } * * //Leituras Posteriores ao Tratamento * for (int i = contGeral; i < listaLeiturasCiclo.Count; i += 2) * { * dtgTratamento.Rows.Add("--", contGeral.ToString("000"), listaLeiturasCiclo[i - 1].horario, * listaLeiturasCiclo[i - 1].T1.ToString("##.0"), * listaLeiturasCiclo[i - 1].T2.ToString("##.0"), listaLeiturasCiclo[i - 1].T3.ToString("##.0"), * listaLeiturasCiclo[i - 1].T4.ToString("##.0")); * contGeral += 2; * }*/ } } else if (ciclo.tipoCRG == 150) { foreach (var leiturasCiclo in listaLeiturasCiclo) { dtgCiclo.Rows.Add((dtgCiclo.Rows.Count + 1).ToString("000"), leiturasCiclo.horario, leiturasCiclo.T1.ToString(), leiturasCiclo.T2.ToString(), leiturasCiclo.T3.ToString(), leiturasCiclo.T4.ToString()); if (ciclo.NLIniTrat == dtgCiclo.Rows.Count) { dtgCiclo.Rows[dtgCiclo.Rows.Count - 1].DefaultCellStyle.BackColor = Color.PaleGreen; } } int contGeral = 1; var listaTratamento = new List <ListaCiclosTratGrafico>(); if (listaLeiturasTrat.Count > 0 && ciclo.nlt == ciclo.tempoTrat) { listaTratamento = RelTratamento.populaTratamento(ciclo, listaLeiturasCiclo, listaLeiturasTrat, config); } if (listaTratamento.Count > 0) { var nlt_inicio_tratamento = 0; var nlt_fim_tratamento = 0; foreach (var item in listaTratamento.ToList()) { if (item.demarca_tratamento) { if (nlt_inicio_tratamento == 0) { nlt_inicio_tratamento = item.NLT; } else { nlt_fim_tratamento = item.NLT; } } dtgTratamento.Rows.Add(item.NLT.ToString("000"), item.NL.ToString("000"), item.horario, item.T1.ToString(), item.T2.ToString(), item.T3.ToString(), item.T4.ToString()); } foreach (DataGridViewRow row in dtgTratamento.Rows) { var nlt_value = Convert.ToInt32(row.Cells[0].Value); if (nlt_value >= nlt_inicio_tratamento && nlt_value <= nlt_fim_tratamento) { row.DefaultCellStyle.BackColor = Color.PaleGreen; } } //Leituras Anteriores ao Tratamento /*for (int i = 0; i < ciclo.nlAntesTrat; i += 2) * { * dtgTratamento.Rows.Add("--", contGeral.ToString("000"), listaLeiturasCiclo[i].horario, * listaLeiturasCiclo[i].T1.ToString(), * listaLeiturasCiclo[i].T2.ToString(), listaLeiturasCiclo[i].T3.ToString(), * listaLeiturasCiclo[i].T4.ToString()); * contGeral += 2; * } * * int contTrat = 1; * //Leituras do Tratamento * for (int i = 0; i < listaLeiturasTrat.Count; i += 2) * { * dtgTratamento.Rows.Add(contTrat.ToString("000"), contGeral.ToString("000"), * listaLeiturasTrat[i].horario, listaLeiturasTrat[i].T1.ToString(), * listaLeiturasTrat[i].T2.ToString(), listaLeiturasTrat[i].T3.ToString(), * listaLeiturasTrat[i].T4.ToString()); * contTrat += 2; * contGeral += 2; * dtgTratamento.Rows[dtgTratamento.RowCount - 1].DefaultCellStyle.BackColor = Color.PaleGreen; * } * * //Leituras Posteriores ao Tratamento * for (int i = contGeral; i < listaLeiturasCiclo.Count; i += 2) * { * dtgTratamento.Rows.Add("--", contGeral.ToString("000"), listaLeiturasCiclo[i - 1].horario, * listaLeiturasCiclo[i - 1].T1.ToString(), * listaLeiturasCiclo[i - 1].T2.ToString(), listaLeiturasCiclo[i - 1].T3.ToString(), * listaLeiturasCiclo[i - 1].T4.ToString()); * contGeral += 2; * }*/ } } }
private void Receber_Click(object sender, EventArgs e) { dtgHistorico.Rows.Clear(); int numEquipamento = cmbCRG.SelectedIndex + 1; string porta = ConfiguracaoDAO.retornaPorta(); bool continua = false; byte numBytes = 0; try { t = new Thread(new ThreadStart(carregarAguarde)); t.Start(); var srpComm = new SerialPort(porta, 19200, Parity.None, 8, StopBits.One); srpComm.DtrEnable = true; srpComm.RtsEnable = false; srpComm.ReadBufferSize = 50000; srpComm.WriteBufferSize = 50000; Conexao.srpComm = srpComm; if (Conexao.srpComm.IsOpen == false) { Conexao.srpComm.Open(); Thread.Sleep(100); } int aux = numEquipamento + 63; Conexao.srpComm.Write(((char)19).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)17).ToString()); Thread.Sleep(100); Conexao.srpComm.Write(((char)aux).ToString()); Thread.Sleep(100); if (Conexao.srpComm.BytesToRead != 0) { numBytes = byte.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } continua = true; if (continua) { int contador = 0; switch (Conexao.buffer[0]) { case 167: Conexao.srpComm.Write(((char)15).ToString()); Thread.Sleep(500); do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = byte.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } } while (contador < 3 && Conexao.srpComm.BytesToRead != 0); int checksum = 0; for (int i = 0; i < Conexao.buffer.Length - 2; i++) { checksum ^= Conexao.buffer[i]; } if (checksum == Conexao.buffer[Conexao.buffer.Length - 2]) { for (int i = 0; i < Conexao.buffer.Length - 2; i++) { VO.Ciclos ciclo = new VO.Ciclos(); ciclo.nTrat = (Conexao.buffer[i] * 256) + Conexao.buffer[i + 1]; ciclo.nl = (Conexao.buffer[i + 2] * 256) + Conexao.buffer[i + 3]; ciclo.dataInicio = Convert.ToDateTime( string.Concat((Conexao.buffer[i + 7] / 16), (Conexao.buffer[i + 7] % 16)) + "/" + string.Concat((Conexao.buffer[i + 8] / 16), (Conexao.buffer[i + 8] % 16)) + "/20" + string.Concat((Conexao.buffer[i + 9] / 16), (Conexao.buffer[i + 9] % 16)) + " " + string.Concat((Conexao.buffer[i + 5] / 16), (Conexao.buffer[i + 5] % 16)) + ":" + string.Concat((Conexao.buffer[i + 4] / 16), (Conexao.buffer[i + 4] % 16))); ciclo.crg = numEquipamento; bool noBanco = CicloDAO.testanoBanco(ciclo); if (!noBanco) { dtgHistorico.Rows.Add(ciclo.nTrat, ciclo.nl, ciclo.dataInicio.ToString("dd/MM/yyyy HH:mm")); } i = i + 9; } t.Abort(); Thread.Sleep(100); if (dtgHistorico.Rows.Count == 0) { MessageBox.Show("Não há nenhum histórico novo"); } Conexao.srpComm.Close(); } else { MessageBox.Show("Erro de checksum.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); Conexao.srpComm.Close(); } break; case 166: Conexao.srpComm.Write(((char)15).ToString()); Thread.Sleep(500); do { if (Conexao.srpComm.BytesToRead != 0) { numBytes = byte.Parse(Conexao.srpComm.BytesToRead.ToString()); Conexao.buffer = new byte[numBytes]; Conexao.srpComm.Read(Conexao.buffer, 0, numBytes); } } while (contador < 3 && Conexao.srpComm.BytesToRead != 0); int checksum1 = 0; for (int i = 0; i < Conexao.buffer.Length - 2; i++) { checksum1 ^= Conexao.buffer[i]; } if (checksum1 == Conexao.buffer[Conexao.buffer.Length - 2]) { for (int i = 0; i < Conexao.buffer.Length - 2; i++) { VO.Ciclos ciclo = new VO.Ciclos(); ciclo.nTrat = (Conexao.buffer[i] * 256) + Conexao.buffer[i + 1]; ciclo.nl = (Conexao.buffer[i + 2] * 256) + Conexao.buffer[i + 3]; ciclo.dataInicio = Convert.ToDateTime( string.Concat((Conexao.buffer[i + 7] / 16), (Conexao.buffer[i + 7] % 16)) + "/" + string.Concat((Conexao.buffer[i + 8] / 16), (Conexao.buffer[i + 8] % 16)) + "/20" + string.Concat((Conexao.buffer[i + 9] / 16), (Conexao.buffer[i + 9] % 16)) + " " + string.Concat((Conexao.buffer[i + 5] / 16), (Conexao.buffer[i + 5] % 16)) + ":" + string.Concat((Conexao.buffer[i + 4] / 16), (Conexao.buffer[i + 4] % 16))); ciclo.crg = numEquipamento; bool noBanco = CicloDAO.testanoBanco(ciclo); if (!noBanco) { dtgHistorico.Rows.Add(ciclo.nTrat, ciclo.nl, ciclo.dataInicio.ToString("dd/MM/yyyy HH:mm")); } i = i + 9; } t.Abort(); Thread.Sleep(100); if (dtgHistorico.Rows.Count == 0) { MessageBox.Show("Não há nenhum histórico novo", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); } Conexao.srpComm.Close(); } else { MessageBox.Show("Erro de checksum.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); Conexao.srpComm.Close(); } break; case 165: t.Abort(); Thread.Sleep(100); if (dtgHistorico.Rows.Count > 0) { dtgHistorico.Rows.Clear(); } MessageBox.Show("Essa função não está disponivel para esse equipamento.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information); Conexao.srpComm.Close(); break; } inserir.Enabled = true; } } catch (Exception error) { if (t.IsAlive) { t.Abort(); Thread.Sleep(100); } VO.LogErro logErro = new VO.LogErro(); logErro.crg = numEquipamento; logErro.data = DateTime.Now; logErro.descricao = "Erro ao decodificar os dados do histórico, aparelho nº " + numEquipamento; logErro.maisDetalhes = error.Message + " " + error.StackTrace; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro durante a comunicação com o equipamento", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void Arquivo_Click(object sender, EventArgs e) { var crg = 0; if (Exportar.Checked) { salvarCiclo.RestoreDirectory = true; salvarCiclo.Title = "Exportar Ciclo para..."; salvarCiclo.Filter = "crg08 files(*.crg08)|*.crg08"; salvarCiclo.DefaultExt = "crg08"; salvarCiclo.CheckPathExists = true; var dialogResult = salvarCiclo.ShowDialog(this); if (dialogResult == DialogResult.OK) { var writer = new XmlTextWriter(salvarCiclo.FileName, null); // Gera o XML de cada ciclo try { writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteStartElement("Ciclos"); for (int i = 0; i < dtgAndamento.RowCount; i++) { if (dtgAndamento.Rows[i].Cells[0].Value.ToString() == "True") { var id = int.Parse(dtgAndamento.Rows[i].Cells[1].Value.ToString()); crg = int.Parse(dtgAndamento.Rows[i].Cells[2].Value.ToString()); var ciclo = CicloDAO.buscaCiclo(crg, id); ExportarCiclo(writer, ciclo, i + 1); } } for (int i = 0; i < dtgFinalizados.RowCount; i++) { if (dtgFinalizados.Rows[i].Cells[0].Value.ToString() == "True") { var id = int.Parse(dtgFinalizados.Rows[i].Cells[1].Value.ToString()); crg = int.Parse(dtgFinalizados.Rows[i].Cells[2].Value.ToString()); var ciclo = CicloDAO.buscaCiclo(crg, id); ExportarCiclo(writer, ciclo, i + 1); } } writer.WriteFullEndElement(); writer.WriteEndDocument(); } catch (Exception error) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar exportar"; string dataHora = DateTime.Now.ToString(); logErro.data = DateTime.Now; logErro.maisDetalhes = error.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar exportar.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } finally { writer.Flush(); writer.Close(); var xmlDoc = new XmlDocument(); try { xmlDoc.PreserveWhitespace = true; xmlDoc.Load(salvarCiclo.FileName); } catch (Exception er) { Console.WriteLine(er.Message); } var cspParams = new CspParameters(); cspParams.KeyContainerName = "CRG08"; var rsaKey = new RSACryptoServiceProvider(cspParams); try { Crypto.Encrypt(xmlDoc, "Ciclo", "Ciclo", rsaKey, "rsaKey"); xmlDoc.Save(salvarCiclo.FileName); } catch (Exception er) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar exportar"; string dataHora = DateTime.Now.ToString(); logErro.data = DateTime.Now; logErro.maisDetalhes = er.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar exportar.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } CarregaCiclos(); MessageBox.Show("Ciclo exportado com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.None); } } } else { var listaCiclos = new List <ImportarCiclo>(); var importacaoCiclo = new ImportarCiclo(); var listaLeituras = new List <LeiturasCiclo>(); var listaTratamento = new List <LeiturasTrat>(); var produtosCiclos = new List <ProdutoCiclo>(); var tag = ""; var stream = new MemoryStream(); var xmlDocument = new XmlDocument(); var cspParams = new CspParameters(); abrirCiclo.RestoreDirectory = true; abrirCiclo.Title = "Importar Ciclo"; abrirCiclo.Filter = "crg08 files(*.crg08)|*.crg08"; abrirCiclo.DefaultExt = "crg08"; abrirCiclo.CheckPathExists = true; VO.Ciclos cicloTemp; VO.Ciclos cic = new VO.Ciclos(); var dialogResult = abrirCiclo.ShowDialog(this); if (dialogResult == DialogResult.OK) { try { cspParams.KeyContainerName = "CRG08"; var rsaKey = new RSACryptoServiceProvider(cspParams); xmlDocument.PreserveWhitespace = true; xmlDocument.Load(abrirCiclo.FileName); Crypto.Decrypt(xmlDocument, rsaKey, "rsaKey"); xmlDocument.Save(stream); stream.Flush(); stream.Position = 0; // Carrega os dados no Reader para ler var reader = new XmlTextReader(stream); reader.WhitespaceHandling = WhitespaceHandling.None; // Para ignorar espaço em branco // Carrega os dados de um ciclo, verifica se já existe e questiona // o usuário se ele deseja substituir e os próximos ciclos também while ((reader.Read())) { switch (reader.NodeType) { case XmlNodeType.EndElement: if (reader.Name == "Ciclo") { importacaoCiclo.leiturasCiclo = listaLeituras; importacaoCiclo.leiturasTratamento = listaTratamento; importacaoCiclo.produtosCiclo = produtosCiclos; importacaoCiclo.ciclo = cic; listaCiclos.Add(importacaoCiclo); importacaoCiclo = new ImportarCiclo(); listaLeituras = new List <LeiturasCiclo>(); listaTratamento = new List <LeiturasTrat>(); produtosCiclos = new List <ProdutoCiclo>(); cic = new VO.Ciclos(); } break; case XmlNodeType.Element: tag = reader.Name; if (tag == "LeituraCiclo") { listaLeituras.Add(CarregaLeiturasCiclo(reader.ReadSubtree())); } else if (tag == "LeituraTratamento") { listaTratamento.Add(CarregaLeituraTratamento(reader.ReadSubtree())); } else if (tag == "ProdutoCiclo") { produtosCiclos.Add(CarregaProdutos(reader.ReadSubtree())); } break; case XmlNodeType.Text: switch (tag) { // Cabeçalho case "Id": cic.id = Convert.ToInt32(reader.Value); break; case "CRG": cic.crg = Convert.ToInt32(reader.Value); break; case "NTrat": cic.nTrat = Convert.ToInt32(reader.Value); break; case "NL": cic.nl = Convert.ToInt32(reader.Value); break; case "BaseTempo": cic.baseTempo = Convert.ToInt32(reader.Value); break; case "NLT": cic.nlt = Convert.ToInt32(reader.Value); break; case "DataColeta": cic.dataColeta = Convert.ToDateTime(reader.Value); break; case "Descricao": cic.descricao = reader.Value; break; case "DataInicio": cic.dataInicio = Convert.ToDateTime(reader.Value); break; case "DataFim": cic.dataFim = Convert.ToDateTime(reader.Value); break; case "NLIniTrat": cic.NLIniTrat = Convert.ToInt32(reader.Value); break; case "TemperaturaControle": cic.temperaturaControle = Convert.ToSingle(reader.Value); break; case "TemperaturaTrat": cic.temperaturaTrat = Convert.ToSingle(reader.Value); break; case "TempoTrat": cic.tempoTrat = Convert.ToInt32(reader.Value); break; case "Responsavel": cic.responsavel = reader.Value; break; case "Operador": cic.operador = reader.Value; break; case "Situacao": cic.situacao = Convert.ToInt32(reader.Value); break; case "NumSerie": cic.numSerie = reader.Value; break; case "VersaoEquip": cic.versaoEquip = reader.Value; break; case "Histerese": cic.histerese = Convert.ToInt32(reader.Value); break; case "TControl": cic.tControl = Convert.ToInt32(reader.Value); break; case "NLAntesTrat": cic.nlAntesTrat = Convert.ToInt32(reader.Value); break; case "NLPostTrat": cic.nlPostTrat = Convert.ToInt32(reader.Value); break; case "Sensor": cic.sensor = Convert.ToInt32(reader.Value); break; case "CA": cic.CA = reader.Value; break; case "tipoCRG": cic.tipoCRG = Convert.ToInt32(reader.Value); break; } break; } } foreach (var ciclo in listaCiclos) { // Verifica se o ciclo está no banco de dados e add em um Obj temporário = cicloTemp cicloTemp = CicloDAO.testaCiclo(ciclo.ciclo); if (cicloTemp != null) { // Se o obj for diferente de nulo... if (MessageBox.Show("O ciclo de nº " + ciclo.ciclo.nTrat + " já existe no Banco de Dados. Deseja atualizar?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { bool retorno = CicloDAO.alteraCiclo(ciclo.ciclo); if (retorno) { ProdutoCicloDAO.DeletaProdutosCiclo(ciclo.ciclo.id, ciclo.ciclo.crg); for (int i = 0; i < ciclo.produtosCiclo.Count; i++) { ciclo.produtosCiclo[i].ciclo = ciclo.ciclo; ProdutoCicloDAO.inserirProdutoCiclo(ciclo.produtosCiclo[i]); } if (ciclo.leiturasCiclo.Count > 0) { if (ciclo.ciclo.tipoCRG == 2) { LeiturasCicloDAO.inserirLeiturasCiclo150(ciclo.leiturasCiclo, ciclo.ciclo.nl, ciclo.ciclo); } else { LeiturasCicloDAO.inserirLeiturasCiclo(ciclo.leiturasCiclo, ciclo.ciclo.nl, ciclo.ciclo); } } if (ciclo.leiturasTratamento.Count > 0) { if (ciclo.ciclo.tipoCRG == 2) { LeiturasTratDAO.inserirLeiturasTratamento150(ciclo.leiturasTratamento, ciclo.ciclo.nlt, ciclo.ciclo); } else { LeiturasTratDAO.inserirLeiturasTratamento(ciclo.leiturasTratamento, ciclo.ciclo.nlt, ciclo.ciclo); } } } CarregaCiclos(); } } else { // Inclui a ciclo ImportarCiclo(ciclo); CarregaCiclos(); } } MessageBox.Show("Importação realizada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.None); } catch (Exception ex) { VO.LogErro logErro = new VO.LogErro(); logErro.crg = crg; logErro.descricao = "Erro ao tentar importar ciclo"; logErro.data = DateTime.Now; logErro.maisDetalhes = ex.Message; LogErroDAO.inserirLogErro(logErro, logErro.crg); MessageBox.Show("Erro ao tentar importar.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } }