2024-07-18 18:00:14 +00:00
using AForge.Video ;
using AForge.Video.DirectShow ;
using AgroBase.Comum ;
using AgroBase.Models ;
using AgroBase.Models.Modules ;
using AgroBase.Services ;
2024-07-16 20:04:09 +00:00
using System ;
using System.Collections.Generic ;
using System.Drawing ;
using System.Linq ;
using System.Threading.Tasks ;
using System.Windows.Forms ;
2024-07-26 19:54:25 +00:00
using static AgroBase . Models . Enums ;
2024-07-16 20:04:09 +00:00
namespace AgroBase.Forms.IHM
{
public partial class frmDiagnosticos : Form
{
2024-07-18 18:00:14 +00:00
static string [ ] ComplementosPadrao = { "Falha" , "Sucesso" } ;
static List < DiagnosticoModel > Diagnosticos = new List < DiagnosticoModel > ( ) ;
public static bool Diagnosticando
{
get
{
return Diagnosticos . Any ( x = > x . EmAndamento ) ;
}
}
2024-07-16 20:04:09 +00:00
public frmDiagnosticos ( )
{
InitializeComponent ( ) ;
2024-09-24 19:02:54 +00:00
FuncoesGlobais . DefinirEventosPicBtn ( picVoltar , "" , async ( ) = >
2024-07-16 20:04:09 +00:00
{
2024-07-18 18:00:14 +00:00
if ( Diagnosticando )
{
return ;
}
2024-07-16 20:04:09 +00:00
this . Close ( ) ;
} ) ;
2024-09-24 19:02:54 +00:00
FuncoesGlobais . DefinirEventosPicBtn ( picDiagnosticarTudo , "Erro ao realizar diagnóstico geral!" , async ( ) = >
2024-07-16 20:04:09 +00:00
{
2024-07-18 18:00:14 +00:00
if ( Diagnosticando )
{
return ;
}
2024-07-16 20:04:09 +00:00
if ( MessageBox . Show ( "Iniciar o diagnóstico completo do equipamento?" , "Iniciar Diagnóstico" , MessageBoxButtons . YesNo , MessageBoxIcon . Question ) = = DialogResult . Yes )
{
2024-07-18 18:00:14 +00:00
picLoading . Image = Properties . Resources . loading ;
tabControl1 . SelectedIndex = 0 ;
await IniciarDiagnostico ( tabControl1 . SelectedIndex ) ;
tabControl1 . SelectedIndex = 1 ;
await IniciarDiagnostico ( tabControl1 . SelectedIndex ) ;
tabControl1 . SelectedIndex = 2 ;
await IniciarDiagnostico ( tabControl1 . SelectedIndex ) ;
tabControl1 . SelectedIndex = 3 ;
await IniciarDiagnostico ( tabControl1 . SelectedIndex ) ;
tabControl1 . SelectedIndex = 4 ;
await IniciarDiagnostico ( tabControl1 . SelectedIndex ) ;
tabControl1 . SelectedIndex = 5 ;
await IniciarDiagnostico ( tabControl1 . SelectedIndex ) ;
tabControl1 . SelectedIndex = 6 ;
await IniciarDiagnostico ( tabControl1 . SelectedIndex ) ;
2024-10-03 18:21:30 +00:00
tabControl1 . SelectedIndex = 8 ;
await IniciarDiagnostico ( tabControl1 . SelectedIndex ) ;
2024-07-26 19:54:25 +00:00
FinalizarDiagnostico ( ) ;
2024-07-16 20:04:09 +00:00
2024-07-18 18:00:14 +00:00
picLoading . Image = null ;
MessageBox . Show ( $"Diagnóstico completo do equipamento concluído com sucesso!" , "Diagnóstico Concluído" , MessageBoxButtons . OK , MessageBoxIcon . Information ) ;
2024-07-16 20:04:09 +00:00
}
} ) ;
2024-09-24 19:02:54 +00:00
FuncoesGlobais . DefinirEventosPicBtn ( picIniciarDiagnostico , "Erro ao realizar diagnóstico do módulo " + tabControl1 . SelectedTab . Text , async ( ) = >
2024-07-16 20:04:09 +00:00
{
2024-07-18 18:00:14 +00:00
if ( Diagnosticando )
{
return ;
}
2024-07-16 20:04:09 +00:00
string ModuloSelecionado = tabControl1 . SelectedTab . Text ;
if ( MessageBox . Show ( "Iniciar o diagnóstico do módulo " + ModuloSelecionado + "?" , "Iniciar Diagnóstico" , MessageBoxButtons . YesNo , MessageBoxIcon . Question ) = = DialogResult . Yes )
{
2024-07-18 18:00:14 +00:00
picLoading . Image = Properties . Resources . loading ;
2024-07-16 20:04:09 +00:00
2024-07-18 18:00:14 +00:00
bool Sucesso = await IniciarDiagnostico ( tabControl1 . SelectedIndex ) ;
2024-07-26 19:54:25 +00:00
FinalizarDiagnostico ( ) ;
2024-07-18 18:00:14 +00:00
picLoading . Image = null ;
if ( Sucesso )
{
MessageBox . Show ( $"Diagnóstico do módulo {ModuloSelecionado} concluído com sucesso!" , "Diagnóstico Concluído" , MessageBoxButtons . OK , MessageBoxIcon . Information ) ;
}
else
{
MessageBox . Show ( $"Diagnóstico do módulo {ModuloSelecionado} concluído com erro!" , "Diagnóstico Concluído" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
2024-07-16 20:04:09 +00:00
}
} ) ;
}
private void frmDiagnosticos_Load ( object sender , EventArgs e )
{
2024-07-18 18:00:14 +00:00
PreencherDadosDiagnosticos ( ) ;
}
private void PreencherDadosDiagnosticos ( )
{
Diagnosticos = new List < DiagnosticoModel > ( )
{
new DiagnosticoModel ( )
{
Modulo = T_Code . Atu ,
Descricao = "Pulverizador" ,
ResultadoMinimo = 90 ,
grid = dgPulverizador ,
Testes = new List < ColunasDiagnosticoModel > ( )
} ,
new DiagnosticoModel ( )
{
Modulo = T_Code . Mov ,
Descricao = "Movimentação" ,
ResultadoMinimo = 75 ,
grid = dgMovimentacao ,
Testes = new List < ColunasDiagnosticoModel > ( )
} ,
new DiagnosticoModel ( )
{
Modulo = T_Code . Dir ,
Descricao = "Direcional" ,
ResultadoMinimo = 75 ,
grid = dgDirecional ,
Testes = new List < ColunasDiagnosticoModel > ( )
} ,
new DiagnosticoModel ( )
{
Modulo = T_Code . Pzm ,
Descricao = "Sensoriamento" ,
ResultadoMinimo = 100 ,
grid = dgSensoriamento ,
Testes = new List < ColunasDiagnosticoModel > ( )
} ,
new DiagnosticoModel ( )
{
Modulo = T_Code . Lra ,
Descricao = "Comunicação" ,
ResultadoMinimo = 60 ,
grid = dgComunicacao ,
Testes = new List < ColunasDiagnosticoModel > ( )
} ,
new DiagnosticoModel ( )
{
Modulo = T_Code . Cam ,
Descricao = "Cameras" ,
ResultadoMinimo = 100 ,
grid = dgCameras ,
Testes = new List < ColunasDiagnosticoModel > ( )
} ,
new DiagnosticoModel ( )
{
Modulo = T_Code . Sen ,
Descricao = "Sinaleiros" ,
ResultadoMinimo = 90 ,
grid = dgSinaleiros ,
Testes = new List < ColunasDiagnosticoModel > ( )
} ,
2025-03-10 19:51:39 +00:00
new DiagnosticoModel ( )
{
Modulo = T_Code . Mks ,
Descricao = "Reles" ,
ResultadoMinimo = 90 ,
grid = dgReles ,
Testes = new List < ColunasDiagnosticoModel > ( )
} ,
2024-07-18 18:00:14 +00:00
} ;
PreencherDadosDiagnosticoPulverizador ( Diagnosticos . FirstOrDefault ( x = > x . Modulo = = T_Code . Atu ) ) ;
PreencherDadosDiagnosticoMovimentacao ( Diagnosticos . FirstOrDefault ( x = > x . Modulo = = T_Code . Mov ) ) ;
PreencherDadosDiagnosticoDirecional ( Diagnosticos . FirstOrDefault ( x = > x . Modulo = = T_Code . Dir ) ) ;
PreencherDadosDiagnosticoSensoriamento ( Diagnosticos . FirstOrDefault ( x = > x . Modulo = = T_Code . Pzm ) ) ;
PreencherDadosDiagnosticoComunicacao ( Diagnosticos . FirstOrDefault ( x = > x . Modulo = = T_Code . Lra ) ) ;
PreencherDadosDiagnosticoCameras ( Diagnosticos . FirstOrDefault ( x = > x . Modulo = = T_Code . Cam ) ) ;
PreencherDadosDiagnosticoSinaleiros ( Diagnosticos . FirstOrDefault ( x = > x . Modulo = = T_Code . Sen ) ) ;
2025-03-10 19:51:39 +00:00
PreencherDadosDiagnosticoReles ( Diagnosticos . FirstOrDefault ( x = > x . Modulo = = T_Code . Mks ) ) ;
2024-07-18 18:00:14 +00:00
PreencherDadosTabelaResultado ( dgResultados ) ;
2024-10-03 18:21:30 +00:00
OperacaoModel . PopularTreeView ( tvwFalhas , Variaveis . OperacaoEmAndamento . RetornaCodigoFalha ( ) ) ;
2024-07-18 18:00:14 +00:00
}
private async Task < bool > IniciarDiagnostico ( int idx )
{
bool Sucesso = false ;
2024-10-03 18:21:30 +00:00
2025-03-10 19:51:39 +00:00
if ( idx = = 9 )
2024-10-03 18:21:30 +00:00
{
OperacaoModel . PopularTreeView ( tvwFalhas , Variaveis . OperacaoEmAndamento . RetornaCodigoFalha ( ) ) ;
return true ;
}
2024-07-18 18:00:14 +00:00
var Diagnostico = Diagnosticos [ idx ] ;
Diagnostico . Testes . ForEach ( x = >
{
x . Resultado = "Pendente" ;
x . ValorAferido = 0 ;
} ) ;
Diagnostico . Concluido = false ;
Diagnostico . EmAndamento = true ;
if ( idx = = 0 )
{
Sucesso = await IniciarDiagnosticoPulverizador ( Diagnostico ) ;
}
else if ( idx = = 1 )
{
Sucesso = await IniciarDiagnosticoMovimentacao ( Diagnostico ) ;
}
else if ( idx = = 2 )
{
Sucesso = await IniciarDiagnosticoDirecional ( Diagnostico ) ;
}
else if ( idx = = 3 )
{
Sucesso = await IniciarDiagnosticoSensoriamento ( Diagnostico ) ;
}
else if ( idx = = 4 )
{
Sucesso = await IniciarDiagnosticoComunicacao ( Diagnostico ) ;
}
else if ( idx = = 5 )
{
Sucesso = await IniciarDiagnosticoCameras ( Diagnostico ) ;
}
else if ( idx = = 6 )
{
Sucesso = await IniciarDiagnosticoSinaleiros ( Diagnostico ) ;
}
2025-03-10 19:51:39 +00:00
else if ( idx = = 7 )
{
Sucesso = await IniciarDiagnosticoReles ( Diagnostico ) ;
}
2024-07-18 18:00:14 +00:00
Diagnostico . Concluido = true ;
Diagnostico . EmAndamento = false ;
return Sucesso ;
}
2024-07-26 19:54:25 +00:00
private void FinalizarDiagnostico ( )
{
2025-03-10 19:51:39 +00:00
tabControl1 . SelectedIndex = 8 ;
2024-07-26 19:54:25 +00:00
AualizarDadosTabelaResultado ( dgResultados ) ;
}
2024-07-18 18:00:14 +00:00
#region TABELAS
private int PreencheDadosLinha ( DataGridView grid , List < ColunasDiagnosticoModel > Testes , int idx , double Valor )
{
var Teste = Testes [ idx ] ;
Teste . ValorAferido = Valor ;
grid . Rows [ idx ] . Cells [ 3 ] . Value = Teste . ValorAferidoStr ;
int Sucesso =
2025-02-03 19:54:39 +00:00
Teste . ComplementoValorPadrao = = "<" ? ( Teste . ValorAferido ! = - 1 & & Teste . ValorAferido < Teste . ValorPadrao ? 1 : 0 ) :
2024-07-18 18:00:14 +00:00
Teste . ComplementoValorPadrao = = ">" ? ( Teste . ValorAferido > Teste . ValorPadrao ? 1 : 0 ) :
2025-02-03 19:54:39 +00:00
Teste . ComplementoValorPadrao = = "~" ? ( Teste . ValorAferido ! = Math . Floor ( Teste . ValorAferido ) ? 1 : 0 ) :
2024-07-18 18:00:14 +00:00
( Teste . ValorAferido = = Teste . ValorPadrao ? 1 : 0 ) ;
Teste . Resultado = ComplementosPadrao [ Sucesso ] ;
grid . Rows [ idx ] . Cells [ 4 ] . Value = Teste . Resultado ;
idx + + ;
AualizarDadosTabelaResultado ( dgResultados ) ;
return idx ;
2024-07-16 20:04:09 +00:00
}
2024-07-18 18:00:14 +00:00
private void PreencherDadosTabelaResultado ( DataGridView grid )
2024-07-16 20:04:09 +00:00
{
grid . Columns . Clear ( ) ;
grid . Rows . Clear ( ) ;
2024-07-18 18:00:14 +00:00
grid . Columns . Add ( "clModulo" , "Módulo" ) ;
grid . Columns . Add ( "clTestes" , "Testes" ) ;
grid . Columns . Add ( "clResultadoMinimo" , "Resultado mínimo" ) ;
grid . Columns . Add ( "clSucesso" , "Sucesso (%)" ) ;
2024-07-16 20:04:09 +00:00
grid . Columns . Add ( "clResultado" , "Resultado" ) ;
2024-07-18 18:00:14 +00:00
foreach ( var Modulo in Diagnosticos )
{
grid . Rows . Add ( Modulo . Descricao , Modulo . Testes . Count ( ) . ToString ( ) , Modulo . ResultadoMinimo . ToString ( "0.00" ) + "%" , "" , Modulo . Resultado ) ;
}
grid . DefaultCellStyle . Font = new Font ( FontFamily . GenericSansSerif , 10 ) ;
grid . ColumnHeadersDefaultCellStyle . Font = new Font ( FontFamily . GenericSansSerif , 10 ) ;
grid . AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode . AllCells ;
grid . Columns [ grid . Columns . Count - 1 ] . AutoSizeMode = DataGridViewAutoSizeColumnMode . Fill ;
AualizarDadosTabelaResultado ( grid ) ;
}
private void AualizarDadosTabelaResultado ( DataGridView grid )
{
for ( int i = 0 ; i < Diagnosticos . Count ( ) ; i + + )
{
grid . Rows [ i ] . Cells [ 3 ] . Value = Diagnosticos [ i ] . PercentualSucesso . ToString ( "0.00" ) + "%" ;
grid . Rows [ i ] . Cells [ 4 ] . Value = Diagnosticos [ i ] . Resultado ;
}
}
#endregion
#region DIAGNOSTICOS PULVERIZADOR
private void PreencherDadosDiagnosticoPulverizador ( DiagnosticoModel Diagnostico )
{
var Testes = new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( ) { Componente = "Módulo" , Teste = "Conectado" , ValorPadrao = 1 , ComplementoValorPadrao = ComplementosPadrao [ 1 ] } ,
new ColunasDiagnosticoModel ( ) { Componente = "Módulo" , Teste = "Inicializado" , ValorPadrao = 1 , ComplementoValorPadrao = ComplementosPadrao [ 1 ] } ,
new ColunasDiagnosticoModel ( ) { Componente = "Bomba Hidráulica" , Teste = "Inicializado" , ValorPadrao = 1 , ComplementoValorPadrao = ComplementosPadrao [ 1 ] } ,
new ColunasDiagnosticoModel ( ) { Componente = "Sensor de Massa" , Teste = "Inicializado" , ValorPadrao = 1 , ComplementoValorPadrao = ComplementosPadrao [ 1 ] } ,
new ColunasDiagnosticoModel ( ) { Componente = "Sensor de Pressão" , Teste = "Inicializado" , ValorPadrao = 1 , ComplementoValorPadrao = ComplementosPadrao [ 1 ] } ,
new ColunasDiagnosticoModel ( ) { Componente = "Sensor de Fluxo" , Teste = "Inicializado" , ValorPadrao = 1 , ComplementoValorPadrao = ComplementosPadrao [ 1 ] } ,
} ;
Testes . AddRange ( Variaveis . OperacaoEmAndamento . DispAtu . Dados . BicosPulverizadores . SelectMany ( x = > new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = "Bico Pulverizador " + x . ID ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
}
} ) ) ;
Testes . AddRange ( new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( ) { Componente = "Bomba Hidráulica" , Teste = "Atuação" , ValorPadrao = 75 , ComplementoValorPadrao = ">" } ,
new ColunasDiagnosticoModel ( ) { Componente = "Sensor de Massa" , Teste = "Leitura" , ValorPadrao = 1 , ComplementoValorPadrao = ">" } ,
new ColunasDiagnosticoModel ( ) { Componente = "Sensor de Pressão" , Teste = "Leitura" , ValorPadrao = 75 , ComplementoValorPadrao = ">" } ,
new ColunasDiagnosticoModel ( ) { Componente = "Sensor de Fluxo" , Teste = "Leitura" , ValorPadrao = 5 , ComplementoValorPadrao = ">" } ,
} ) ;
Testes . AddRange ( Variaveis . OperacaoEmAndamento . DispAtu . Dados . BicosPulverizadores . SelectMany ( x = > new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = "Bico Pulverizador " + x . ID ,
Teste = "Ligar" ,
2025-02-03 19:54:39 +00:00
ValorPadrao = 1
2024-07-18 18:00:14 +00:00
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Bico Pulverizador " + x . ID ,
Teste = "Desligar" ,
2025-02-03 19:54:39 +00:00
ValorPadrao = 0
2024-07-18 18:00:14 +00:00
}
} ) ) ;
Diagnostico . Testes = Testes ;
Diagnostico . PreencherDadosTabela ( ) ;
}
private async Task < bool > IniciarDiagnosticoPulverizador ( DiagnosticoModel Diagnostico )
{
int idx = 0 ;
var grid = Diagnostico . grid ;
var Testes = Diagnostico . Testes ;
2024-07-26 19:54:25 +00:00
bool Conectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = Enums . T_Code . Atu ) ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Conectado ? 1 : 0 ) ;
2024-07-26 19:54:25 +00:00
DispositivosService < AtuadorModel > Dispositivo = ( DispositivosService < AtuadorModel > ) Variaveis . DispositivosConectados . FirstOrDefault ( x = > x . Dispositivo = = Enums . T_Code . Atu ) ;
2024-07-18 18:00:14 +00:00
bool Inicializado = Dispositivo ! = null & & Dispositivo . Dados . Conectado ;
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? 1 : 0 ) ;
AtuadorBombaModel Bomba = Dispositivo . Dados . BombaPressurizadora ;
bool BombaInicializado = Bomba . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , BombaInicializado ? 1 : 0 ) ;
2024-07-26 19:54:25 +00:00
SensorModel sMAS = Dispositivo . Dados . Sensores . FirstOrDefault ( x = > x . Componente = = Enums . S_Code . sMAS ) ;
2024-07-18 18:00:14 +00:00
bool MassaInicializado = sMAS ! = null ? sMAS . Inicializado : false ;
idx = PreencheDadosLinha ( grid , Testes , idx , MassaInicializado ? 1 : 0 ) ;
2024-07-26 19:54:25 +00:00
SensorModel sPRS = Dispositivo . Dados . Sensores . FirstOrDefault ( x = > x . Componente = = Enums . S_Code . sPRS ) ;
2024-07-18 18:00:14 +00:00
bool PressaoInicializado = sPRS ! = null ? sPRS . Inicializado : false ;
idx = PreencheDadosLinha ( grid , Testes , idx , PressaoInicializado ? 1 : 0 ) ;
2024-07-26 19:54:25 +00:00
SensorModel sFLX = Dispositivo . Dados . Sensores . FirstOrDefault ( x = > x . Componente = = Enums . S_Code . sFLX ) ;
2024-07-18 18:00:14 +00:00
bool FluxoInicializado = sFLX ! = null ? sFLX . Inicializado : false ;
idx = PreencheDadosLinha ( grid , Testes , idx , FluxoInicializado ? 1 : 0 ) ;
AtuadorBicoModel B01 = Dispositivo . Dados . BicosPulverizadores [ 0 ] ;
bool B01Inicializado = B01 ! = null & & B01 . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , B01Inicializado ? 1 : 0 ) ;
AtuadorBicoModel B02 = Dispositivo . Dados . BicosPulverizadores [ 1 ] ;
bool B02Inicializado = B02 ! = null & & B02 . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , B02Inicializado ? 1 : 0 ) ;
AtuadorBicoModel B03 = Dispositivo . Dados . BicosPulverizadores [ 2 ] ;
bool B03Inicializado = B03 ! = null & & B03 . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , B03Inicializado ? 1 : 0 ) ;
AtuadorBicoModel B04 = Dispositivo . Dados . BicosPulverizadores [ 3 ] ;
bool B04Inicializado = B04 ! = null & & B04 . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , B04Inicializado ? 1 : 0 ) ;
2025-02-03 19:54:39 +00:00
await EnviarComandoBomba ( true , Testes [ idx ] . ValorPadrao , 5000 , Dispositivo . Dados ) ;
2024-07-18 18:00:14 +00:00
2024-07-24 20:04:55 +00:00
double Pressao = PressaoInicializado ? Dispositivo . Dados . PressaoLinha : - 1 ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Pressao ) ;
2025-02-03 19:54:39 +00:00
double Massa = MassaInicializado ? Dispositivo . Dados . MassaReservatorio : - 1 ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Massa ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , Pressao ) ;
2025-02-03 19:54:39 +00:00
await EnviarComandoBico ( B01 , true , 3000 , Testes [ idx ] . ValorPadrao , Dispositivo . Dados ) ;
2024-07-18 18:00:14 +00:00
2024-12-05 12:52:28 +00:00
double Fluxo = FluxoInicializado ? Dispositivo . Dados . VazaoFluxoMLpSInstantanea : - 1 ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Fluxo ) ;
2025-02-03 19:54:39 +00:00
bool statusB01_1 = B01Inicializado & & B01 . LeituraStatusBico ;
idx = PreencheDadosLinha ( grid , Testes , idx , statusB01_1 ? 1 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2024-07-26 19:54:25 +00:00
await EnviarComandoBico ( B01 , false , 1000 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
bool statusB01_0 = B01Inicializado & & ! B01 . LeituraStatusBico ;
idx = PreencheDadosLinha ( grid , Testes , idx , statusB01_0 ? 0 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2024-07-26 19:54:25 +00:00
await EnviarComandoBico ( B02 , true , 1000 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
bool statusB02_1 = B02Inicializado & & B02 . LeituraStatusBico ;
idx = PreencheDadosLinha ( grid , Testes , idx , statusB02_1 ? 1 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2024-07-26 19:54:25 +00:00
await EnviarComandoBico ( B02 , false , 1000 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
bool statusB02_0 = B02Inicializado & & ! B02 . LeituraStatusBico ;
idx = PreencheDadosLinha ( grid , Testes , idx , statusB02_0 ? 0 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2024-07-26 19:54:25 +00:00
await EnviarComandoBico ( B03 , true , 1000 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
bool statusB03_1 = B03Inicializado & & B03 . LeituraStatusBico ;
idx = PreencheDadosLinha ( grid , Testes , idx , statusB03_1 ? 1 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2024-07-26 19:54:25 +00:00
await EnviarComandoBico ( B03 , false , 1000 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
bool statusB03_0 = B03Inicializado & & ! B03 . LeituraStatusBico ;
idx = PreencheDadosLinha ( grid , Testes , idx , statusB03_0 ? 0 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2024-07-26 19:54:25 +00:00
await EnviarComandoBico ( B04 , true , 1000 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
bool statusB04_1 = B04Inicializado & & B04 . LeituraStatusBico ;
idx = PreencheDadosLinha ( grid , Testes , idx , statusB04_1 ? 1 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2024-07-26 19:54:25 +00:00
await EnviarComandoBico ( B04 , false , 1000 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
bool statusB04_0 = B04Inicializado & & B04 . LeituraStatusBico ;
idx = PreencheDadosLinha ( grid , Testes , idx , statusB04_0 ? 0 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
await EnviarComandoBomba ( false , 0 , 500 ) ;
2024-07-18 18:00:14 +00:00
return true ;
}
2025-02-03 19:54:39 +00:00
private async Task EnviarComandoBomba ( bool Ligar , double Pressao , int Timeout , AtuadorModel disp = null )
2024-07-18 18:00:14 +00:00
{
2024-12-05 12:52:28 +00:00
var Bomba = Variaveis . OperacaoEmAndamento . DispAtu . Dados . BombaPressurizadora ;
2025-02-03 19:54:39 +00:00
Variaveis . OperacaoEmAndamento . Controle . PressaoLinha = Pressao + 10 ;
2024-12-05 12:52:28 +00:00
GeneralJoystick . EnviarComandoAtuador ( S_Code . sBMB , Ligar , Bomba . ID ) ;
2025-02-03 19:54:39 +00:00
DateTime inicio = DateTime . Now ;
while ( DateTime . Now < inicio . AddMilliseconds ( Timeout ) )
{
await Task . Delay ( 100 ) ;
if ( disp ! = null & & disp . PressaoLinha > = Pressao )
{
await EnviarComandoBomba ( false , Pressao , 0 ) ;
break ;
}
}
2024-07-18 18:00:14 +00:00
}
2025-02-03 19:54:39 +00:00
private async Task EnviarComandoBico ( AtuadorBicoModel Bico , bool Ligar , int Timeout , double ValorComparar = 0 , AtuadorModel disp = null )
2024-07-18 18:00:14 +00:00
{
2024-07-26 19:54:25 +00:00
GeneralJoystick . EnviarComandoAtuador ( S_Code . sBIC , Ligar , Bico . ID ) ;
2025-02-03 19:54:39 +00:00
DateTime inicio = DateTime . Now ;
while ( DateTime . Now < inicio . AddMilliseconds ( Timeout ) )
{
await Task . Delay ( 100 ) ;
if ( disp ! = null & & disp . VazaoFluxoMLpSInstantanea > = ValorComparar )
{
break ;
}
}
2024-07-18 18:00:14 +00:00
}
#endregion
#region DIAGNOSTICOS MOVIMENTACAO
private void PreencherDadosDiagnosticoMovimentacao ( DiagnosticoModel Diagnostico )
{
var Testes = new List < ColunasDiagnosticoModel > ( ) ;
2024-07-24 20:04:55 +00:00
Testes . AddRange ( new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo SEN" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo SEN" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
} ) ;
2024-07-18 18:00:14 +00:00
Testes . AddRange ( Variaveis . OperacaoEmAndamento . DispMvd . Dados . Modulos . SelectMany ( x = > new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
2024-07-24 20:04:55 +00:00
{
Componente = "S_TMP_" + x . Modulo_ID ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
2025-02-03 19:54:39 +00:00
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
2024-07-24 20:04:55 +00:00
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Temperatura" ,
2024-10-03 18:21:30 +00:00
ValorPadrao = 10 ,
ComplementoValorPadrao = ">"
2024-07-24 20:04:55 +00:00
} ,
new ColunasDiagnosticoModel ( )
2024-07-18 18:00:14 +00:00
{
Componente = x . Modulo_ID ,
Teste = "Tensão" ,
ValorPadrao = 36 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
2024-07-24 20:04:55 +00:00
Teste = "Temperatura Driver" ,
ValorPadrao = 65 ,
2024-07-18 18:00:14 +00:00
ComplementoValorPadrao = "<"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Código Erro" ,
ValorPadrao = 0
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Para Frente" ,
2024-07-24 20:04:55 +00:00
ValorPadrao = 2 ,
2024-07-18 18:00:14 +00:00
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Parado" ,
ValorPadrao = 0
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Para Trás" ,
2024-07-24 20:04:55 +00:00
ValorPadrao = 2 ,
2024-07-18 18:00:14 +00:00
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Parado" ,
ValorPadrao = 0
} ,
2024-07-26 19:54:25 +00:00
new ColunasDiagnosticoModel ( )
2025-02-03 19:54:39 +00:00
{
Componente = x . Modulo_ID ,
Teste = "Corrente" ,
ValorPadrao = 0.2 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
2024-07-26 19:54:25 +00:00
{
Componente = x . Modulo_ID + " Servo Freio" ,
Teste = "Ativar" ,
2024-12-05 12:52:28 +00:00
ValorPadrao = x . MovMotor . ConfigFreio . Incremental ? 15 : 165
2024-07-26 19:54:25 +00:00
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID + " Servo Freio" ,
Teste = "Desativar" ,
2024-12-05 12:52:28 +00:00
ValorPadrao = x . MovMotor . ConfigFreio . Incremental ? 0 : 180
2024-07-26 19:54:25 +00:00
} ,
2025-02-03 19:54:39 +00:00
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID + " Servo Freio" ,
Teste = "Tensão" ,
ValorPadrao = 7.0 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID + " Servo Freio" ,
Teste = "Corrente" ,
ValorPadrao = 200 ,
ComplementoValorPadrao = ">"
} ,
2024-07-18 18:00:14 +00:00
} ) ) ;
Diagnostico . Testes = Testes ;
Diagnostico . PreencherDadosTabela ( ) ;
}
private async Task < bool > IniciarDiagnosticoMovimentacao ( DiagnosticoModel Diagnostico )
{
int idx = 0 ;
var grid = Diagnostico . grid ;
var Testes = Diagnostico . Testes ;
2024-08-20 17:38:23 +00:00
TipoMovimentoDirecional _oldTipoMovimento = Variaveis . OperacaoEmAndamento . Controle . TipoMovimento ;
2024-10-03 18:21:30 +00:00
double _oldPercentualVelocidade = Variaveis . OperacaoEmAndamento . Controle . PercentualVelocidadeSP ;
2024-08-20 17:38:23 +00:00
Variaveis . OperacaoEmAndamento . Controle . TipoMovimento = TipoMovimentoDirecional . Diagnostico ;
2024-10-03 18:21:30 +00:00
Variaveis . OperacaoEmAndamento . Controle . PercentualVelocidadeSP = 20 ;
2024-08-20 17:38:23 +00:00
2024-07-26 19:54:25 +00:00
DispositivosService < MovimentacaoUnificadaModel > Dispositivo = ( DispositivosService < MovimentacaoUnificadaModel > ) Variaveis . DispositivosConectados . FirstOrDefault ( x = > x . Dispositivo = = Enums . T_Code . Mvd ) ;
2024-07-18 18:00:14 +00:00
if ( Dispositivo = = null )
{
return false ;
}
2024-07-24 20:04:55 +00:00
bool SenConectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = T_Code . Sen ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , SenConectado ? 1 : 0 ) ;
var Modulo_Sen = Variaveis . OperacaoEmAndamento . DispSen . Dados ;
bool SenIniciado = Modulo_Sen . Conectado ;
idx = PreencheDadosLinha ( grid , Testes , idx , SenIniciado ? 1 : 0 ) ;
2024-07-18 18:00:14 +00:00
foreach ( var Modulo in Dispositivo . Dados . Modulos )
{
2024-07-26 19:54:25 +00:00
bool Conectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = Enums . T_Code . Bld & & x . Mod_ID = = Modulo . Modulo_ID ) ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Conectado ? 1 : 0 ) ;
2025-01-10 18:52:38 +00:00
bool Inicializado = Modulo . MovMotor . Inicializado ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? 1 : 0 ) ;
2024-07-24 20:04:55 +00:00
var SensorTmp = Modulo_Sen . Sensores . FirstOrDefault ( x = > x . Componente = = S_Code . sTMP & & x . ID . Contains ( Modulo . Modulo_ID ) ) ;
bool TempIniciado = SensorTmp ! = null & & SensorTmp . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , TempIniciado ? 1 : 0 ) ;
2024-07-18 18:00:14 +00:00
2024-07-24 20:04:55 +00:00
double Temperatura = TempIniciado ? Modulo . MovMotor . Temperatura : - 1 ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Temperatura ) ;
2024-07-24 20:04:55 +00:00
double Tensao = Inicializado ? Modulo . MovMotor . Tensao : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , Tensao ) ;
double TemperaturaDriver = Inicializado ? Modulo . MovMotor . TemperaturaDriver : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , TemperaturaDriver ) ;
double CodigoErro = Inicializado ? Modulo . MovMotor . CodigoAlarme : - 1 ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , CodigoErro ) ;
2024-07-26 19:54:25 +00:00
bool ParaFrente = Inicializado ? await EnviarComandoMov ( Modulo , Enums . Direcao . Frente , Testes [ idx ] , 5000 ) : false ;
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? Testes [ idx ] . ValorAferido : - 1 ) ;
2025-02-03 19:54:39 +00:00
double CorrenteMotor = Inicializado ? Modulo . MovMotor . Corrente_Motor : - 1 ;
2024-07-26 19:54:25 +00:00
bool Parado = Inicializado ? await EnviarComandoMov ( Modulo , Enums . Direcao . Parado , Testes [ idx ] , 5000 ) : false ;
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? Testes [ idx ] . ValorAferido : - 1 ) ;
bool ParaTras = Inicializado ? await EnviarComandoMov ( Modulo , Enums . Direcao . Tras , Testes [ idx ] , 5000 ) : false ;
2024-07-24 20:04:55 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? Testes [ idx ] . ValorAferido : - 1 ) ;
2024-07-18 18:00:14 +00:00
2024-07-26 19:54:25 +00:00
Parado = Inicializado ? await EnviarComandoMov ( Modulo , Enums . Direcao . Parado , Testes [ idx ] , 5000 ) : false ;
2024-07-24 20:04:55 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? Testes [ idx ] . ValorAferido : - 1 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , CorrenteMotor ) ;
2024-07-26 19:54:25 +00:00
var ServoFreio = Modulo_Sen . Servos . FirstOrDefault ( x = > x . ID . Contains ( Modulo . Modulo_ID ) & & x . Inicializado ) ;
2024-11-25 12:14:59 +00:00
( bool atuar , int angAtivar ) = Modulo . MovMotor . ConfigFreio . AtualizarDadosFreio ( true , 0 , 15 ) ;
bool AtivarFreio = SenIniciado & & ServoFreio ! = null ? await EnviarComandoMovFreio ( Variaveis . OperacaoEmAndamento . DispSen , ServoFreio , angAtivar , Testes [ idx ] , 2000 ) : false ;
2024-08-20 17:38:23 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , ServoFreio ! = null ? Testes [ idx ] . ValorAferido : - 1 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
var SensorAB7V2 = Modulo_Sen . DadosLeitura . SensoresCorrente . FirstOrDefault ( x = > x . ID = = "AB7V2" ) ;
double CorrenteFreio = SensorAB7V2 ! = null ? SensorAB7V2 . Current ? ? 0 : - 1 ;
double TensaoFreio = SensorAB7V2 ! = null ? SensorAB7V2 . BusVoltage : - 1 ;
2024-11-25 12:14:59 +00:00
( bool desatuar , int angDesativar ) = Modulo . MovMotor . ConfigFreio . AtualizarDadosFreio ( false ) ;
bool DesativarFreio = SenIniciado & & ServoFreio ! = null ? await EnviarComandoMovFreio ( Variaveis . OperacaoEmAndamento . DispSen , ServoFreio , angDesativar , Testes [ idx ] , 2000 ) : false ;
2024-08-20 17:38:23 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , ServoFreio ! = null ? Testes [ idx ] . ValorAferido : - 1 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , TensaoFreio ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , CorrenteFreio ) ;
2024-07-18 18:00:14 +00:00
}
2024-08-20 17:38:23 +00:00
Variaveis . OperacaoEmAndamento . Controle . TipoMovimento = _oldTipoMovimento ;
2024-10-03 18:21:30 +00:00
Variaveis . OperacaoEmAndamento . Controle . PercentualVelocidadeSP = _oldPercentualVelocidade ;
2024-08-20 17:38:23 +00:00
2024-07-18 18:00:14 +00:00
return true ;
2024-07-16 20:04:09 +00:00
}
2024-07-26 19:54:25 +00:00
private async Task < bool > EnviarComandoMov ( ModuloMvdModel Modulo , Direcao Sentido , ColunasDiagnosticoModel Teste , int Timeout )
2024-07-16 20:04:09 +00:00
{
2024-07-26 19:54:25 +00:00
Variaveis . OperacaoEmAndamento . DispMvd . Dados . Modulos . ForEach ( x = > x . MovMotor . Comandar = false ) ;
2024-07-18 18:00:14 +00:00
Modulo . MovMotor . Comandar = true ;
2024-07-16 20:04:09 +00:00
2024-07-26 19:54:25 +00:00
GeneralJoystick . EnviaComandoMotor ( Sentido = = Direcao . Frente ? Keys . Up : Sentido = = Direcao . Tras ? Keys . Down : Keys . Escape , T_Code . Mov ) ;
2024-07-16 20:04:09 +00:00
2024-07-18 18:00:14 +00:00
DateTime Inicio = DateTime . Now ;
bool Sucesso = false ;
while ( ! Sucesso & & Inicio . AddMilliseconds ( Timeout ) > DateTime . Now )
2024-07-16 20:04:09 +00:00
{
2024-07-24 20:04:55 +00:00
await Task . Delay ( 500 ) ;
2024-07-18 18:00:14 +00:00
2024-12-05 12:52:28 +00:00
Sentido sentidoMovimento =
Sentido = = Enums . Direcao . Frente ? Modulo . MovMotor . ConfigSentidos [ Variaveis . OperacaoEmAndamento . Controle . TipoMovimento ] . Frente :
2024-07-26 19:54:25 +00:00
Sentido = = Enums . Direcao . Tras ? Modulo . MovMotor . ConfigSentidos [ Variaveis . OperacaoEmAndamento . Controle . TipoMovimento ] . Tras :
2024-12-05 12:52:28 +00:00
Enums . Sentido . Parado ;
bool sentidoCorreto =
Sentido = = Direcao . Parado ? true :
Modulo . MovMotor . Sentido = = sentidoMovimento ;
2024-07-18 18:00:14 +00:00
bool rpmCorreto =
2024-07-24 20:04:55 +00:00
Teste . ComplementoValorPadrao = = "<" ? Modulo . MovMotor . RPM_Roda < Teste . ValorPadrao :
Teste . ComplementoValorPadrao = = ">" ? Modulo . MovMotor . RPM_Roda > Teste . ValorPadrao :
Modulo . MovMotor . RPM_Roda = = Teste . ValorPadrao ;
2024-07-18 18:00:14 +00:00
Sucesso = sentidoCorreto & & rpmCorreto ;
2024-07-16 20:04:09 +00:00
}
2024-07-24 20:04:55 +00:00
Teste . ValorAferido = Modulo . MovMotor . RPM_Roda ;
2024-07-26 19:54:25 +00:00
return Sucesso ;
}
2024-11-25 12:14:59 +00:00
private async Task < bool > EnviarComandoMovFreio ( DispositivosService < SensoriamentoModel > Dispositivo , SensorServoModel ServoFreio , int Angulo , ColunasDiagnosticoModel Teste , int Timeout )
2024-07-26 19:54:25 +00:00
{
Dispositivo . Dados . Servos . ForEach ( x = > x . Controlar = false ) ;
ServoFreio . Controlar = true ;
2024-11-25 12:14:59 +00:00
GeneralJoystick . EnviarComandoSensoriamento ( S_Code . sFRO , ServoFreio . ID , Angulo ) ;
2024-07-26 19:54:25 +00:00
//Dispositivo.AdicionarMensagemFila(Dispositivo.Dados.Modulo_ID, ServoFreio.ProtocoloComando(), true, false);
DateTime Inicio = DateTime . Now ;
bool Sucesso = false ;
while ( ! Sucesso & & Inicio . AddMilliseconds ( Timeout ) > DateTime . Now )
{
2024-11-29 20:28:25 +00:00
Dispositivo . Dados . RequisitarDadosModulo ( ) ;
2024-07-26 19:54:25 +00:00
await Task . Delay ( 1000 ) ;
Sucesso =
2024-12-05 12:52:28 +00:00
Teste . ComplementoValorPadrao = = "<" ? ServoFreio . LeituraAngulo < Teste . ValorPadrao :
Teste . ComplementoValorPadrao = = ">" ? ServoFreio . LeituraAngulo > Teste . ValorPadrao :
ServoFreio . LeituraAngulo = = Teste . ValorPadrao ;
2024-07-26 19:54:25 +00:00
}
2024-12-05 12:52:28 +00:00
Teste . ValorAferido = ServoFreio . LeituraAngulo ;
2024-07-18 18:00:14 +00:00
return Sucesso ;
2024-07-16 20:04:09 +00:00
}
2024-07-18 18:00:14 +00:00
#endregion
#region DIAGNOSTICOS DIRECIONAL
private void PreencherDadosDiagnosticoDirecional ( DiagnosticoModel Diagnostico )
2024-07-16 20:04:09 +00:00
{
2024-07-18 18:00:14 +00:00
var Testes = new List < ColunasDiagnosticoModel > ( ) ;
2025-03-10 19:51:39 +00:00
Testes . AddRange ( new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo SEN" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo SEN" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
} ) ;
2024-07-18 18:00:14 +00:00
Testes . AddRange ( Variaveis . OperacaoEmAndamento . DispMvd . Dados . Modulos . SelectMany ( x = > new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Código Erro" ,
ValorPadrao = 0
} ,
new ColunasDiagnosticoModel ( )
2025-03-10 19:51:39 +00:00
{
Componente = "S_POT_" + x . Modulo_ID ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "S_POT_" + x . Modulo_ID ,
Teste = "Status" ,
ValorPadrao = ( int ) StatusSensorPotenciometro . Centro
} ,
new ColunasDiagnosticoModel ( )
2024-07-18 18:00:14 +00:00
{
Componente = x . Modulo_ID ,
Teste = "Para Esquerda" ,
ValorPadrao = 20 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Para Direita" ,
ValorPadrao = - 20 ,
ComplementoValorPadrao = "<"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . Modulo_ID ,
Teste = "Para Zero" ,
ValorPadrao = 0
} ,
} ) ) ;
Diagnostico . Testes = Testes ;
Diagnostico . PreencherDadosTabela ( ) ;
}
2024-07-16 20:04:09 +00:00
2024-07-18 18:00:14 +00:00
private async Task < bool > IniciarDiagnosticoDirecional ( DiagnosticoModel Diagnostico )
{
int idx = 0 ;
var grid = Diagnostico . grid ;
var Testes = Diagnostico . Testes ;
2024-08-20 17:38:23 +00:00
TipoMovimentoDirecional _oldTipoMovimento = Variaveis . OperacaoEmAndamento . Controle . TipoMovimento ;
double _oldAngulo = Variaveis . OperacaoEmAndamento . Controle . Angulo ;
2024-12-05 12:52:28 +00:00
double _oldVelocidadeMP = Variaveis . OperacaoEmAndamento . Controle . VelocidadeMP ;
2024-08-20 17:38:23 +00:00
2024-07-26 19:54:25 +00:00
DispositivosService < MovimentacaoUnificadaModel > Dispositivo = ( DispositivosService < MovimentacaoUnificadaModel > ) Variaveis . DispositivosConectados . FirstOrDefault ( x = > x . Dispositivo = = Enums . T_Code . Mvd ) ;
2024-07-18 18:00:14 +00:00
if ( Dispositivo = = null )
2024-07-16 20:04:09 +00:00
{
2024-07-18 18:00:14 +00:00
return false ;
2024-07-16 20:04:09 +00:00
}
2024-07-18 18:00:14 +00:00
2024-12-05 12:52:28 +00:00
Variaveis . OperacaoEmAndamento . Controle . TipoMovimento = TipoMovimentoDirecional . Diagnostico ;
Variaveis . OperacaoEmAndamento . Controle . Angulo = 25 ;
Variaveis . OperacaoEmAndamento . Controle . VelocidadeMP = 30 ;
2025-03-10 19:51:39 +00:00
bool SenConectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = T_Code . Sen ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , SenConectado ? 1 : 0 ) ;
var Modulo_Sen = Variaveis . OperacaoEmAndamento . DispSen . Dados ;
bool SenIniciado = Modulo_Sen . Conectado ;
idx = PreencheDadosLinha ( grid , Testes , idx , SenIniciado ? 1 : 0 ) ;
2024-07-18 18:00:14 +00:00
foreach ( var Modulo in Dispositivo . Dados . Modulos )
{
2024-12-03 20:55:25 +00:00
var Leitura = Modulo . DirMotor . Leitura ;
2024-07-18 18:00:14 +00:00
2024-07-26 19:54:25 +00:00
bool Conectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = Enums . T_Code . Mks & & x . Mod_ID = = Modulo . Modulo_ID ) ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Conectado ? 1 : 0 ) ;
2025-01-10 18:52:38 +00:00
bool Inicializado = Modulo . DirMotor . Inicializado ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? 1 : 0 ) ;
int . TryParse ( Leitura ? . Mensagem ? ? "" , out int CodigoErro ) ;
2024-07-24 20:04:55 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? CodigoErro : - 1 ) ;
2024-07-18 18:00:14 +00:00
2025-03-10 19:51:39 +00:00
var SensorPot = Modulo_Sen . Sensores . FirstOrDefault ( x = > x . Componente = = S_Code . sPOT & & x . ID . Contains ( Modulo . Modulo_ID ) ) ;
bool PotIniciado = SensorPot ! = null & & SensorPot . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , PotIniciado ? 1 : 0 ) ;
int potStatus = PotIniciado ? ( int ) ( ( ( FirmwareSensorPotenciometro ) SensorPot . Leitura ) ? . Status ? ? StatusSensorPotenciometro . Indefinido ) : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , potStatus ) ;
2024-08-20 17:38:23 +00:00
//MKS057DService.AddrRef = Convert.ToByte(Modulo.DirMotor.Endereco, 16);
if ( Inicializado )
await EnviarComandoDir ( Modulo , Enums . Direcao . Esquerda , Testes [ idx ] , 5000 ) ;
2025-02-03 19:54:39 +00:00
else
Testes [ idx ] . ValorAferido = - 1 ;
2024-08-20 17:38:23 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Testes [ idx ] . ValorAferido ) ;
if ( Inicializado )
await EnviarComandoDir ( Modulo , Enums . Direcao . Direita , Testes [ idx ] , 5000 ) ;
2025-02-03 19:54:39 +00:00
else
Testes [ idx ] . ValorAferido = - 1 ;
2024-08-20 17:38:23 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Testes [ idx ] . ValorAferido ) ;
2024-07-18 18:00:14 +00:00
2024-08-20 17:38:23 +00:00
if ( Inicializado )
await EnviarComandoDir ( Modulo , Enums . Direcao . Parado , Testes [ idx ] , 5000 ) ;
2025-02-03 19:54:39 +00:00
else
Testes [ idx ] . ValorAferido = - 1 ;
2024-08-20 17:38:23 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Testes [ idx ] . ValorAferido ) ;
2024-07-18 18:00:14 +00:00
2024-08-20 17:38:23 +00:00
//MKS057DService.AddrRef = 0x00;
2024-07-18 18:00:14 +00:00
}
2024-08-20 17:38:23 +00:00
Variaveis . OperacaoEmAndamento . Controle . TipoMovimento = _oldTipoMovimento ;
Variaveis . OperacaoEmAndamento . Controle . Angulo = _oldAngulo ;
2024-12-05 12:52:28 +00:00
Variaveis . OperacaoEmAndamento . Controle . VelocidadeMP = _oldVelocidadeMP ;
2024-08-20 17:38:23 +00:00
2024-07-18 18:00:14 +00:00
return true ;
}
2024-08-20 17:38:23 +00:00
private async Task EnviarComandoDir ( ModuloMvdModel Modulo , Enums . Direcao Sentido , ColunasDiagnosticoModel Teste , int Timeout )
2024-07-18 18:00:14 +00:00
{
DateTime Inicio = DateTime . Now ;
bool Sucesso = false ;
while ( ! Sucesso & & Inicio . AddMilliseconds ( Timeout ) > DateTime . Now )
{
2024-12-05 12:52:28 +00:00
Modulo . DirMotor . EnviarComandoControle ( Sentido ) ;
2024-07-18 18:00:14 +00:00
await Task . Delay ( 200 ) ;
2024-08-20 17:38:23 +00:00
/ * bool sentidoCorreto = Modulo . DirMotor . Sentido = =
2024-07-26 19:54:25 +00:00
( Sentido = = Enums . Direcao . Esquerda ? Modulo . DirMotor . ConfigSentidos [ Variaveis . OperacaoEmAndamento . Controle . TipoMovimento ] . Esquerda :
Sentido = = Enums . Direcao . Direita ? Modulo . DirMotor . ConfigSentidos [ Variaveis . OperacaoEmAndamento . Controle . TipoMovimento ] . Direita :
2024-08-20 17:38:23 +00:00
Enums . Sentido . Parado ) ; * /
2024-07-18 18:00:14 +00:00
bool anguloCorreto =
Teste . ComplementoValorPadrao = = "<" ? Modulo . DirMotor . Angulo < Teste . ValorPadrao :
Teste . ComplementoValorPadrao = = ">" ? Modulo . DirMotor . Angulo > Teste . ValorPadrao :
Modulo . DirMotor . Angulo = = Teste . ValorPadrao ;
2024-08-20 17:38:23 +00:00
Sucesso = anguloCorreto ;
2024-07-18 18:00:14 +00:00
}
2024-08-20 17:38:23 +00:00
Teste . ValorAferido = Modulo . DirMotor . Angulo ;
2024-07-18 18:00:14 +00:00
}
#endregion
#region DIAGNOSTICOS SENSORIAMENTO
private void PreencherDadosDiagnosticoSensoriamento ( DiagnosticoModel Diagnostico )
{
var Testes = new List < ColunasDiagnosticoModel > ( ) ;
Testes . AddRange ( new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = "PZEM" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "PZEM" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "PZEM" ,
Teste = "Tensão Bateria" ,
ValorPadrao = 36 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "PZEM" ,
Teste = "Corrente Bateria" ,
2024-12-05 12:52:28 +00:00
ValorPadrao = 0.1 ,
2024-07-18 18:00:14 +00:00
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
2024-07-24 20:04:55 +00:00
{
Componente = "Módulo Sen" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo Sen" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo Sen" ,
Teste = "Tensão Barramento 5V" ,
ValorPadrao = 4.95 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo Sen" ,
Teste = "Corrente Barramento 5V" ,
2024-12-05 12:52:28 +00:00
ValorPadrao = 500 ,
2024-07-24 20:04:55 +00:00
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
2025-02-03 19:54:39 +00:00
{
Componente = "Módulo Sen" ,
Teste = "Tensão Barramento 7V2" ,
ValorPadrao = 7.0 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo Sen" ,
Teste = "Corrente Barramento 7V2" ,
ValorPadrao = 0 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
2024-07-24 20:04:55 +00:00
{
Componente = "Módulo Sen" ,
Teste = "Tensão Barramento 12V" ,
ValorPadrao = 11.5 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo Sen" ,
Teste = "Corrente Barramento 12V" ,
2024-12-05 12:52:28 +00:00
ValorPadrao = 0 ,
2024-07-24 20:04:55 +00:00
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
2024-07-18 18:00:14 +00:00
{
Componente = "WIT MOTION" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "WIT MOTION" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "WIT MOTION" ,
Teste = "Orientação Magnética" ,
ValorPadrao = 0 ,
ComplementoValorPadrao = "~"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "GPS" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "GPS" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "GPS" ,
2025-03-10 19:51:39 +00:00
Teste = "Correção" ,
ValorPadrao = ( int ) TiposCorrecaoGPS . RTKFlutuante ,
2024-07-18 18:00:14 +00:00
ComplementoValorPadrao = ">"
} ,
2025-02-03 19:54:39 +00:00
new ColunasDiagnosticoModel ( )
{
Componente = "GPS" ,
Teste = "Satelites" ,
2025-03-10 19:51:39 +00:00
ValorPadrao = 10 ,
2025-02-03 19:54:39 +00:00
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "GPS" ,
Teste = "Orientação Mangética" ,
ValorPadrao = 0 ,
ComplementoValorPadrao = "~"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Ultrassom" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Ultrassom" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Ultrassom" ,
Teste = "U1" ,
ValorPadrao = 30 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Ultrassom" ,
Teste = "U2" ,
ValorPadrao = 30 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Ultrassom" ,
Teste = "U3" ,
ValorPadrao = 30 ,
ComplementoValorPadrao = ">"
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Ultrassom" ,
Teste = "U4" ,
ValorPadrao = 30 ,
ComplementoValorPadrao = ">"
} ,
2024-07-18 18:00:14 +00:00
} ) ;
Diagnostico . Testes = Testes ;
Diagnostico . PreencherDadosTabela ( ) ;
}
private async Task < bool > IniciarDiagnosticoSensoriamento ( DiagnosticoModel Diagnostico )
{
int idx = 0 ;
var grid = Diagnostico . grid ;
var Testes = Diagnostico . Testes ;
2024-07-26 19:54:25 +00:00
bool PzmConectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = Enums . T_Code . Pzm ) ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , PzmConectado ? 1 : 0 ) ;
bool PzmInicializado = PZEMService . Iniciado ;
idx = PreencheDadosLinha ( grid , Testes , idx , PzmInicializado ? 1 : 0 ) ;
2024-07-24 20:04:55 +00:00
double Tensao = PzmInicializado ? PZEMService . UltimaLeitura . Tensao : - 1 ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Tensao ) ;
2024-07-24 20:04:55 +00:00
double Corrente = PzmInicializado ? PZEMService . UltimaLeitura . Corrente : - 1 ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Corrente ) ;
2024-07-24 20:04:55 +00:00
bool SenConectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = T_Code . Sen ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , SenConectado ? 1 : 0 ) ;
var Modulo_Sen = Variaveis . OperacaoEmAndamento . DispSen . Dados ;
bool SenIniciado = Modulo_Sen . Conectado ;
idx = PreencheDadosLinha ( grid , Testes , idx , SenIniciado ? 1 : 0 ) ;
2024-12-05 12:52:28 +00:00
var S5V = ( ( FirmwareSensorCorrente ) Modulo_Sen . Sensores . FirstOrDefault ( x = > x . ID = = "AB5V" ) . Leitura ) ;
double Tensao5V = S5V ! = null ? ( double ) S5V . BusVoltage : - 1 ;
2024-07-24 20:04:55 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Tensao5V ) ;
2024-11-29 20:28:25 +00:00
double Corrente5V = S5V ! = null ? ( double ) S5V . Current : - 1 ;
2024-07-24 20:04:55 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Corrente5V ) ;
2025-02-03 19:54:39 +00:00
var S7V2 = ( ( FirmwareSensorCorrente ) Modulo_Sen . Sensores . FirstOrDefault ( x = > x . ID = = "AB7V2" ) . Leitura ) ;
double Tensao7V2 = S7V2 ! = null ? ( double ) S7V2 . BusVoltage : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , Tensao7V2 ) ;
double Corrente7V2 = S7V2 ! = null ? ( double ) S7V2 . Current : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , Corrente7V2 ) ;
2024-12-05 12:52:28 +00:00
var S12V = ( ( FirmwareSensorCorrente ) Modulo_Sen . Sensores . FirstOrDefault ( x = > x . ID = = "AB12V" ) . Leitura ) ;
double Tensao12V = S12V ! = null ? ( double ) S12V . BusVoltage : - 1 ;
2024-07-24 20:04:55 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Tensao12V ) ;
2024-11-29 20:28:25 +00:00
double Corrente12V = S12V ! = null ? ( double ) S12V . Current : - 1 ;
2024-07-24 20:04:55 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Corrente12V ) ;
2024-07-26 19:54:25 +00:00
bool WitConectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = Enums . T_Code . Wit ) ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , WitConectado ? 1 : 0 ) ;
bool WitInicializado = WT901CService . Iniciado ;
idx = PreencheDadosLinha ( grid , Testes , idx , WitInicializado ? 1 : 0 ) ;
2024-07-24 20:04:55 +00:00
double Orientacao = WitInicializado ? WT901CService . DadosLeitura . AngleZ : - 1 ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Orientacao ) ;
2024-07-26 19:54:25 +00:00
bool GpsConectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = Enums . T_Code . Gps ) ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , GpsConectado ? 1 : 0 ) ;
bool GpsInicializado = GPSService . Iniciado ;
idx = PreencheDadosLinha ( grid , Testes , idx , GpsInicializado ? 1 : 0 ) ;
2025-03-10 19:51:39 +00:00
double Precisao = GpsInicializado ? ( int ) GPSService . UltimaLeitura . QualidadeFix : - 1 ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Precisao ) ;
2025-02-03 19:54:39 +00:00
double Satelites = GpsInicializado ? GPSService . UltimaLeitura . NumeroSatelites : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , Satelites ) ;
double OrientacaoGPS = GpsInicializado ? GPSService . UltimaLeitura . CursoVerdadeiro : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , OrientacaoGPS ) ;
bool A05Conectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = Enums . T_Code . A05 ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , A05Conectado ? 1 : 0 ) ;
bool A05Inicializado = UltrasonicA05Service . Iniciado ;
idx = PreencheDadosLinha ( grid , Testes , idx , A05Inicializado ? 1 : 0 ) ;
double U1 = A05Inicializado ? UltrasonicA05Service . DadosLeitura . U1 : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , U1 ) ;
double U2 = A05Inicializado ? UltrasonicA05Service . DadosLeitura . U2 : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , U2 ) ;
double U3 = A05Inicializado ? UltrasonicA05Service . DadosLeitura . U3 : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , U3 ) ;
double U4 = A05Inicializado ? UltrasonicA05Service . DadosLeitura . U4 : - 1 ;
idx = PreencheDadosLinha ( grid , Testes , idx , U4 ) ;
2024-07-18 18:00:14 +00:00
return true ;
}
#endregion
#region DIAGNOSTICOS COMUNICACAO
private void PreencherDadosDiagnosticoComunicacao ( DiagnosticoModel Diagnostico )
{
var Testes = new List < ColunasDiagnosticoModel > ( ) ;
Testes . AddRange ( new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo Sen" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo Sen" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "RLLRA" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "RLLRA" ,
Teste = "Ligar" ,
ValorPadrao = 1 ,
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "RLLRA" ,
Teste = "Desligar" ,
ValorPadrao = 0 ,
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo LoRa" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo LoRa" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo LoRa" ,
Teste = "Parametrizado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo LoRa" ,
Teste = "Envio" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo LoRa" ,
Teste = "Recebimento" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
} ) ;
Diagnostico . Testes = Testes ;
Diagnostico . PreencherDadosTabela ( ) ;
}
private async Task < bool > IniciarDiagnosticoComunicacao ( DiagnosticoModel Diagnostico )
{
int idx = 0 ;
var grid = Diagnostico . grid ;
var Testes = Diagnostico . Testes ;
bool SenConectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = T_Code . Sen ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , SenConectado ? 1 : 0 ) ;
DispositivosService < SensoriamentoModel > Dispositivo = ( DispositivosService < SensoriamentoModel > ) Variaveis . DispositivosConectados . FirstOrDefault ( x = > x . Dispositivo = = T_Code . Sen ) ;
bool SenInicializado = Dispositivo ! = null & & Dispositivo . Dados . Conectado ;
idx = PreencheDadosLinha ( grid , Testes , idx , SenInicializado ? 1 : 0 ) ;
SensorReleModel ReleLra = Dispositivo . Dados . Reles . FirstOrDefault ( x = > x . ID = = "RLLRA" ) ;
bool RlInicializado = SenInicializado & & ReleLra ! = null & & ReleLra . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , RlInicializado ? 1 : 0 ) ;
2025-02-03 19:54:39 +00:00
if ( RlInicializado )
await EnviarComandoRele ( Dispositivo , ReleLra , true , 1000 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
bool RlStatus_1 = RlInicializado & & ( ReleLra . Leitura ? . Leitura ? ? Estado . Reset ) = = Estado . Ligado ;
idx = PreencheDadosLinha ( grid , Testes , idx , RlStatus_1 ? 1 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
if ( RlInicializado )
await EnviarComandoRele ( Dispositivo , ReleLra , false , 1000 ) ;
2024-07-18 18:00:14 +00:00
2025-02-03 19:54:39 +00:00
bool RlStatus_0 = RlInicializado & & ( ReleLra . Leitura ? . Leitura ? ? Estado . Reset ) = = Estado . Desligado ;
idx = PreencheDadosLinha ( grid , Testes , idx , RlStatus_0 ? 0 : - 1 ) ;
2024-07-18 18:00:14 +00:00
bool Conectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = T_Code . Lra ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , Conectado ? 1 : 0 ) ;
bool Inicializado = LoRaService . Iniciado ;
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? 1 : 0 ) ;
2025-02-03 19:54:39 +00:00
bool sucesso = false ;
if ( Inicializado )
{
( bool _sucesso , LoRaParametrosModel parametros ) = await Variaveis . ConexaoLoRa . RequisitarParametrosModuloAsync ( ) ;
sucesso = _sucesso ;
}
2024-07-18 18:00:14 +00:00
bool Parametrizado = Inicializado & & sucesso & & Variaveis . ConexaoLoRa . parametros ! = null ;
idx = PreencheDadosLinha ( grid , Testes , idx , Parametrizado ? 1 : 0 ) ;
2025-02-03 19:54:39 +00:00
bool MensagemEnviada = false ;
if ( Inicializado )
{
int msgEnviadasAnterior = LoRaService . MensagensEnviadas ;
LoRaService . EnviarDadosParaBase ( ) ;
await Task . Delay ( 2000 ) ;
MensagemEnviada = LoRaService . MensagensEnviadas > msgEnviadasAnterior ;
}
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , MensagemEnviada ? 1 : 0 ) ;
2025-02-03 19:54:39 +00:00
bool MensagemRecebida = false ;
if ( Inicializado )
{
await Task . Delay ( VariaveisEquipamento . TempoEntrePingsConexao * 2 ) ;
MensagemRecebida = VariaveisOperacao . PosicaoBase ! = null ;
}
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , MensagemRecebida ? 1 : 0 ) ;
return true ;
}
private async Task EnviarComandoRele ( DispositivosService < SensoriamentoModel > Dispositivo , SensorReleModel Rele , bool Ligar , int Delay )
{
var novoEstado = Ligar ? Estado . Ligado : Estado . Desligado ;
2024-07-26 19:54:25 +00:00
GeneralJoystick . EnviarComandoSensoriamento ( S_Code . sRLE , Rele . ID , novoEstado ) ;
2024-07-18 18:00:14 +00:00
await Task . Delay ( Delay ) ;
2024-11-29 20:28:25 +00:00
Dispositivo . Dados . RequisitarDadosModulo ( ) ;
2024-07-18 18:00:14 +00:00
await Task . Delay ( Delay ) ;
}
#endregion
#region DIAGNOSTICOS CAMERAS
Bitmap bitmapCamera = null ;
private void PreencherDadosDiagnosticoCameras ( DiagnosticoModel Diagnostico )
{
var Testes = new List < ColunasDiagnosticoModel > ( ) ;
Testes . AddRange ( new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = "Caminho Frontal" ,
Teste = "Configurado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Caminho Frontal" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Caminho Frontal" ,
Teste = "Vídeo" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
2025-03-10 19:51:39 +00:00
}
2024-07-18 18:00:14 +00:00
} ) ;
2025-03-10 19:51:39 +00:00
foreach ( var camera in Variaveis . OperacaoEmAndamento . CamerasSolo )
{
Testes . AddRange ( new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = camera . Nome ,
Teste = "Configurado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = camera . Nome ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = camera . Nome ,
Teste = "Vídeo" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
}
} ) ;
}
2024-07-18 18:00:14 +00:00
Diagnostico . Testes = Testes ;
Diagnostico . PreencherDadosTabela ( ) ;
}
private async Task < bool > IniciarDiagnosticoCameras ( DiagnosticoModel Diagnostico )
{
int idx = 0 ;
var grid = Diagnostico . grid ;
var Testes = Diagnostico . Testes ;
2024-12-06 20:19:59 +00:00
List < string > CamerasIDs = CameraService . ObterListaCameras ( ) . Values . ToList ( ) ;
2024-07-18 18:00:14 +00:00
2024-12-06 20:19:59 +00:00
string IDcamRua = ( Variaveis . OperacaoEmAndamento . DispSen . Dados . CameraID_Caminho ? ? "" ) ; //.Replace("\\", "#").ToLower();
2024-07-18 18:00:14 +00:00
bool RuaConfigurado = ! string . IsNullOrEmpty ( IDcamRua ) & & IDcamRua ! = "Sem video" ;
idx = PreencheDadosLinha ( grid , Testes , idx , RuaConfigurado ? 1 : 0 ) ;
bool RuaConectado = RuaConfigurado & & CamerasIDs . Any ( x = > x . Contains ( IDcamRua ) ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , RuaConectado ? 1 : 0 ) ;
bool RuaVideo = await VerificaImagemCamera ( CamerasIDs , IDcamRua , RuaConectado ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , RuaVideo ? 1 : 0 ) ;
2025-03-10 19:51:39 +00:00
foreach ( var camera in Variaveis . OperacaoEmAndamento . CamerasSolo )
{
string IDcamSolo = ( Variaveis . OperacaoEmAndamento . DispSen . Dados . CameraID_Solo [ 0 ] ? ? "" ) ; //.Replace("\\", "#").ToLower();
2024-07-18 18:00:14 +00:00
2025-03-10 19:51:39 +00:00
bool SoloConfigurado = ! string . IsNullOrEmpty ( IDcamSolo ) & & IDcamSolo ! = "Sem video" ;
idx = PreencheDadosLinha ( grid , Testes , idx , SoloConfigurado ? 1 : 0 ) ;
2024-07-18 18:00:14 +00:00
2025-03-10 19:51:39 +00:00
bool SoloConectado = SoloConfigurado & & CamerasIDs . Any ( x = > x . Contains ( IDcamSolo ) ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , SoloConectado ? 1 : 0 ) ;
2024-07-18 18:00:14 +00:00
2025-03-10 19:51:39 +00:00
bool SoloVideo = await VerificaImagemCamera ( CamerasIDs , IDcamSolo , SoloConectado ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , SoloVideo ? 1 : 0 ) ;
}
2024-07-18 18:00:14 +00:00
return true ;
}
private void videoSource_NewFrame ( object sender , NewFrameEventArgs eventArgs )
{
bitmapCamera = ( Bitmap ) eventArgs . Frame . Clone ( ) ;
picCamera . Image = bitmapCamera ;
}
private async Task < bool > VerificaImagemCamera ( List < string > CamerasIDs , string ID , bool Conecatdo )
{
if ( ! Conecatdo )
{
return false ;
}
2024-12-06 20:19:59 +00:00
string a = CamerasIDs . First ( x = > x . Contains ( ID ) ) ;
2024-07-18 18:00:14 +00:00
VideoCaptureDevice videoSource ;
2024-12-06 20:19:59 +00:00
videoSource = new VideoCaptureDevice ( ID ) ;
2024-07-18 18:00:14 +00:00
videoSource . NewFrame + = new NewFrameEventHandler ( videoSource_NewFrame ) ;
videoSource . Start ( ) ;
DateTime Inicio = DateTime . Now ;
while ( bitmapCamera = = null & & Inicio . AddMilliseconds ( 5000 ) > DateTime . Now )
{
await Task . Delay ( 200 ) ;
}
bool VideoSucesso = bitmapCamera ! = null & & ! IsBlackFrame ( bitmapCamera ) ;
bitmapCamera = null ;
videoSource . Stop ( ) ;
return VideoSucesso ;
}
private bool IsBlackFrame ( Bitmap bitmap )
{
float brightnessThreshold = 0.1f ; // Ajuste conforme necessário
float totalBrightness = 0 ;
int pixelCount = bitmap . Width * bitmap . Height ;
for ( int y = 0 ; y < bitmap . Height ; y + + )
{
for ( int x = 0 ; x < bitmap . Width ; x + + )
{
Color pixelColor = bitmap . GetPixel ( x , y ) ;
totalBrightness + = pixelColor . GetBrightness ( ) ;
}
}
float averageBrightness = totalBrightness / pixelCount ;
return averageBrightness < brightnessThreshold ;
}
#endregion
#region DIAGNOSTICOS SINALEIROS
private void PreencherDadosDiagnosticoSinaleiros ( DiagnosticoModel Diagnostico )
{
var Testes = new List < ColunasDiagnosticoModel > ( ) ;
Testes . AddRange ( new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
} ) ;
Testes . AddRange ( Variaveis . OperacaoEmAndamento . DispSen . Dados . Sinaleiros . SelectMany ( x = > new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = x . ID ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . ID ,
Teste = "Ligar" ,
ValorPadrao = 1 ,
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . ID ,
Teste = "Desligar" ,
ValorPadrao = 0 ,
} ,
} ) ) ;
Diagnostico . Testes = Testes ;
Diagnostico . PreencherDadosTabela ( ) ;
2024-07-16 20:04:09 +00:00
}
2024-07-18 18:00:14 +00:00
private async Task < bool > IniciarDiagnosticoSinaleiros ( DiagnosticoModel Diagnostico )
2024-07-16 20:04:09 +00:00
{
2024-07-18 18:00:14 +00:00
int idx = 0 ;
var grid = Diagnostico . grid ;
var Testes = Diagnostico . Testes ;
2024-07-26 19:54:25 +00:00
bool Conectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = Enums . T_Code . Sen ) ;
2024-07-18 18:00:14 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Conectado ? 1 : 0 ) ;
2024-07-16 20:04:09 +00:00
2024-07-26 19:54:25 +00:00
DispositivosService < SensoriamentoModel > Dispositivo = ( DispositivosService < SensoriamentoModel > ) Variaveis . DispositivosConectados . FirstOrDefault ( x = > x . Dispositivo = = Enums . T_Code . Sen ) ;
2024-07-18 18:00:14 +00:00
bool Inicializado = Dispositivo ! = null & & Dispositivo . Dados . Conectado ;
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? 1 : 0 ) ;
foreach ( var Sinaleiro in Dispositivo . Dados . Sinaleiros )
2024-07-16 20:04:09 +00:00
{
2024-07-18 18:00:14 +00:00
bool Iniciado = Sinaleiro . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? 1 : 0 ) ;
2024-07-24 20:04:55 +00:00
if ( Iniciado )
{
await EnviarComandoSinaleiro ( Dispositivo , Sinaleiro , true , 1000 ) ;
}
2024-07-18 18:00:14 +00:00
2024-12-03 20:55:25 +00:00
StatusLED Status = Sinaleiro . LeituraStatus ;
2025-02-03 19:54:39 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Iniciado & & Status = = StatusLED . Aceso ? 1 : - 1 ) ;
2024-07-18 18:00:14 +00:00
2024-07-24 20:04:55 +00:00
if ( Iniciado )
{
await EnviarComandoSinaleiro ( Dispositivo , Sinaleiro , false , 1000 ) ;
}
2024-07-18 18:00:14 +00:00
2024-12-03 20:55:25 +00:00
Status = Sinaleiro . LeituraStatus ;
2025-02-03 19:54:39 +00:00
idx = PreencheDadosLinha ( grid , Testes , idx , Iniciado & & Status = = StatusLED . Apagado ? 0 : - 1 ) ;
2024-07-16 20:04:09 +00:00
}
2024-07-18 18:00:14 +00:00
return true ;
2024-07-16 20:04:09 +00:00
}
2024-07-18 18:00:14 +00:00
private async Task EnviarComandoSinaleiro ( DispositivosService < SensoriamentoModel > Dispositivo , SensorSinaleiroModel Sinaleiro , bool Ligar , int Delay )
2024-07-16 20:04:09 +00:00
{
2024-07-26 19:54:25 +00:00
var Comportamento = VariaveisEquipamento . ComportamentoPorStatus ( StatusOperacao . NaoIniciado ) ;
Comportamento . statusLED = Ligar ? StatusLED . Aceso : StatusLED . Apagado ;
GeneralJoystick . EnviarComandoSensoriamento ( S_Code . sLED , Sinaleiro . ID , Comportamento ) ;
2024-07-18 18:00:14 +00:00
await Task . Delay ( Delay ) ;
2024-11-29 20:28:25 +00:00
Dispositivo . Dados . RequisitarDadosModulo ( ) ;
2024-07-18 18:00:14 +00:00
await Task . Delay ( Delay ) ;
}
2025-03-10 19:51:39 +00:00
#endregion
2024-07-18 18:00:14 +00:00
2025-03-10 19:51:39 +00:00
#region DIAGNOSTICOS RELES
2024-07-18 18:00:14 +00:00
2025-03-10 19:51:39 +00:00
private void PreencherDadosDiagnosticoReles ( DiagnosticoModel Diagnostico )
{
var Testes = new List < ColunasDiagnosticoModel > ( ) ;
Testes . AddRange ( new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo" ,
Teste = "Conectado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = "Módulo" ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
} ) ;
Testes . AddRange ( Variaveis . OperacaoEmAndamento . DispSen . Dados . Reles . SelectMany ( x = > new List < ColunasDiagnosticoModel > ( )
{
new ColunasDiagnosticoModel ( )
{
Componente = x . ID ,
Teste = "Inicializado" ,
ValorPadrao = 1 ,
ComplementoValorPadrao = ComplementosPadrao [ 1 ]
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . ID ,
Teste = "Ligar" ,
ValorPadrao = 1 ,
} ,
new ColunasDiagnosticoModel ( )
{
Componente = x . ID ,
Teste = "Desligar" ,
ValorPadrao = 0 ,
} ,
} ) ) ;
Diagnostico . Testes = Testes ;
Diagnostico . PreencherDadosTabela ( ) ;
}
private async Task < bool > IniciarDiagnosticoReles ( DiagnosticoModel Diagnostico )
{
int idx = 0 ;
2024-07-16 20:04:09 +00:00
2025-03-10 19:51:39 +00:00
var grid = Diagnostico . grid ;
var Testes = Diagnostico . Testes ;
bool Conectado = SerialService . DispositivosMapeados . Any ( x = > x . Dispositivo = = Enums . T_Code . Sen ) ;
idx = PreencheDadosLinha ( grid , Testes , idx , Conectado ? 1 : 0 ) ;
DispositivosService < SensoriamentoModel > Dispositivo = ( DispositivosService < SensoriamentoModel > ) Variaveis . DispositivosConectados . FirstOrDefault ( x = > x . Dispositivo = = Enums . T_Code . Sen ) ;
bool Inicializado = Dispositivo ! = null & & Dispositivo . Dados . Conectado ;
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? 1 : 0 ) ;
foreach ( var Rele in Dispositivo . Dados . Reles )
{
bool Iniciado = Rele . Inicializado ;
idx = PreencheDadosLinha ( grid , Testes , idx , Inicializado ? 1 : 0 ) ;
if ( Iniciado )
{
await EnviarComandoRele ( Dispositivo , Rele , true , 1000 ) ;
}
Estado Status = Rele . LeituraEstado ;
idx = PreencheDadosLinha ( grid , Testes , idx , Iniciado & & Status = = Estado . Ligado ? 1 : - 1 ) ;
if ( Iniciado )
{
await EnviarComandoRele ( Dispositivo , Rele , false , 1000 ) ;
}
Status = Rele . LeituraEstado ;
idx = PreencheDadosLinha ( grid , Testes , idx , Iniciado & & Status = = Estado . Desligado ? 0 : - 1 ) ;
}
return true ;
}
#endregion
2024-07-18 18:00:14 +00:00
class DiagnosticoModel
{
public T_Code Modulo { get ; set ; }
public string Descricao { get ; set ; }
public double ResultadoMinimo { get ; set ; }
public bool EmAndamento { get ; set ; }
public bool Concluido { get ; set ; }
public double PercentualSucesso
{
get
{
double sucesso = Testes . Count ( x = > x . Resultado = = ComplementosPadrao [ 1 ] ) ;
double resultado = sucesso > 0 ? ( sucesso / Testes . Count ( ) * 100 ) : 0 ;
return resultado ;
}
}
public string Resultado
{
get
{
return
EmAndamento ? "Diagnosticando..." :
Concluido ? ( PercentualSucesso > = ResultadoMinimo ) ? "Apto" : "Inapto" :
"Pendente" ;
}
}
public DataGridView grid { get ; set ; }
public List < ColunasDiagnosticoModel > Testes { get ; set ; }
private void DefinirEstiloTabela ( )
{
grid . DefaultCellStyle . Font = new Font ( FontFamily . GenericSansSerif , 10 ) ;
grid . ColumnHeadersDefaultCellStyle . Font = new Font ( FontFamily . GenericSansSerif , 10 ) ;
grid . AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode . AllCells ;
grid . Columns [ grid . Columns . Count - 1 ] . AutoSizeMode = DataGridViewAutoSizeColumnMode . Fill ;
}
private void PreencheCabecalho ( )
{
grid . Columns . Clear ( ) ;
grid . Rows . Clear ( ) ;
grid . Columns . Add ( "clComponente" , "Componente" ) ;
grid . Columns . Add ( "clTeste" , "Teste" ) ;
grid . Columns . Add ( "clValorPadrao" , "Valor Padrão" ) ;
grid . Columns . Add ( "clValorAferido" , "Valor Aferido" ) ;
grid . Columns . Add ( "clResultado" , "Resultado" ) ;
DefinirEstiloTabela ( ) ;
}
public void PreencherDadosTabela ( )
{
PreencheCabecalho ( ) ;
foreach ( var teste in Testes )
{
string valorPadrao =
ComplementosPadrao . Contains ( teste . ComplementoValorPadrao ) ? teste . ComplementoValorPadrao :
! string . IsNullOrEmpty ( teste . ComplementoValorPadrao ) ? teste . ComplementoValorPadrao + " " + teste . ValorPadrao . ToString ( ) :
teste . ValorPadrao . ToString ( ) ;
grid . Rows . Add ( teste . Componente , teste . Teste , valorPadrao , teste . ValorAferido , teste . Resultado ) ;
}
}
2024-07-16 20:04:09 +00:00
}
2024-07-18 18:00:14 +00:00
class ColunasDiagnosticoModel
{
public string Componente { get ; set ; }
public string Teste { get ; set ; }
public double ValorPadrao { get ; set ; }
public string ComplementoValorPadrao { get ; set ; }
public double ValorAferido { get ; set ; }
public string ValorAferidoStr
{
get
{
return
2025-02-03 19:54:39 +00:00
ComplementosPadrao . Contains ( ComplementoValorPadrao ) ?
( ValorAferido = = - 1 ? ComplementosPadrao [ 0 ] : ComplementosPadrao [ Convert . ToInt32 ( ValorAferido ) ] ) :
2024-07-18 18:00:14 +00:00
ValorAferido . ToString ( "0.00" ) ;
}
}
public string Resultado { get ; set ; } = "Pendente" ;
}
2024-07-16 20:04:09 +00:00
}
2024-07-18 18:00:14 +00:00
2024-07-16 20:04:09 +00:00
}