USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Problemas para cálculos de horas - difícil
Álvaro
Pontos: 2843
GUARULHOS
SP - BRASIL
Postada em 10/12/2007 10:23 hs            
Galera bom dia !!!

Galera estou com um problema para cálcular um determinado período e somar no horário do relógio do sistema.
O problema é assim:
Na empresa tenho um programa que faz testes em motores, desse sistema da para se tirar diversas informações como temperatura da água do motor, pressão do óleo, consumo de combustível, enfim todo e qualquer dado do motor. E esses dados precisam ser gravados, que dados o nome de aquisição de dados. O sistema faz uma ligação com os módulos que são colocados para tirarem essas leituras, converterem em uma linguagem na qual o sistema possa entender e recebe também dados e comandos do sistema e executa a ação no motor, por ex: acelerar o motor, dar partida no motor etc
Bom resumidamente é isso, qual o problema ?

Tenho que fazer a aquisição dos dados em um período de segundo a segundo, coisa que eu já conseguir fazer, só que existe um ciclo que o sistema faz automaticamente que leva 60 seg, até ai tudo bem, más se colocamos esse ciclo para rodar e usamos um cronometro para marcar o tempo que ele leva, o tempo que é gravado é de aprox 62 a 63 seg e tem vezes que ele demora menos tipo 59 seg.
A minha idéia era conseguir fazer um cálculo dessa diferença e somar ou diminuir ela da função timer ( horário do sistema )
Essa diferença se dá por causa da comunicação com os módulos que é demorada, pois são muitos canais a serem aquisitados
Tentei fazer esse cálculo e subtrair a diferença do timer, más ele me deu a resposta que não era possível por ser uma variável de somente leitura

Preciso saber se alguém já passou por isso, ou se tem alguma forma de controle de tempo que seja preciso, independente do tempo de processamento do sistema para que com isso eu pudesse ter o tempo preciso de 60 seg na minha aquisição

Nos meus forms estou usando o objeto timer para que o sistema possa rodar sózinho

Galera será que alguém consegue a façanha de me ajudar, isso está rachando a minha cabeça
Agradeço a todos
     
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 10/12/2007 12:23 hs            
Coloca o código que vc está usando pra fazer esse form, e explique que resultado ele está retornando assim fica mais facil
 
até
 
   
Álvaro
Pontos: 2843
GUARULHOS
SP - BRASIL
Postada em 10/12/2007 12:45 hs            
Aqui verifica o tempo decorrido desde que iniciou o passo
'ATUALIZAÇÃO DO TEMPO DECORRIDO
If Lb_STATUS.Caption = "AUTOMATICO" And BO_AUTOMATICO_START.value = 1 Then
    If Val(lb_dem_step_temp.Caption) > 0 Then 'SE EXISTE TEMPO NO TEMPO PASSO
        'TIRA A DIFERENÇA DO TEMPO INICIAL DO PASSO COM A HORA ATUAL PARA VERIFICAR O TEMPO DECORRIDO DO PASSO
        ax_decor = DateDiff("s", Contador_tempo_passo, Time)
        If ax_decor >= 0 Then
            lb_temp_decor.Caption = ax_decor
        Else
'            contador_tempo_ax5 = DateAdd("s", -Val(lb_temp_decor.Caption), Time)
        End If
        If Val(lb_temp_decor.Caption) > Val(lb_dem_step_temp.Caption) Then lb_temp_decor.Caption = lb_dem_step_temp.Caption
    End If
End If

aqui verifica se já terminou o tempo do passo
'MUDANÇA DE PASSO POR TEMPO
If Lb_STATUS.Caption = "AUTOMATICO" And BO_AUTOMATICO_START.value = 1 Then
    ax_decor = datediff("s",Contador_tempo_passo, Time)
    If Val(ax_decor) >= Val(lb_dem_step_temp.Caption) Then
        If dem_aquisicao = 1 Then
            st = "AUTOM"
            AQUISICAO_MANUAL st
        End If
    
        Contador_tempo_passo = Time
        
        lb_temp_decor.Caption = 0
        controle_automatico "*"
        contador_tempo_ax2 = Time
        AquisiçaoPasso = Now
    End If
End If
'--------------------------------------------------------------------




Os códigos estão corretos, ele cálcula, exibe o tempo decorrido e tudo mais, o problema é que no geral, ao invés dele fazer todo ciclo em 60 seg, ele sempre está fazendo com o tempo a maior ou a menor.
Pode haver uma diferença de décimos e não de segundos
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2026   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página