Autor Tema: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970  (Leído 8936 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970
« Respuesta #15 en: 19 de Agosto de 2010, 11:11:22 »
Suky, muy bueno lo que presentas, no se si necesitaré algo así en algún momento pero es buenosaber que esta por aquí.

Con respecto a los años bisiestos, creo que tienen razón lo que te comentan del año 1970.
Fijate con este ejemplo a la fecha actual,

Elapsed_Years_Leap=(2010-1970)/4;  // Resultado 40/4=10

Luego en la siguiente instrucción tomas como que esos son los años bisiestos que has tenido y los consideras de 366 días, cuando en realidad como el año 1970 no fue bisiesto, si no que fue el 1972, has tenido solo 9,5 años bisiestos por lo que tomarias 9 años.

Es lo que he entendido leyendo el código que escribiste, al menos esa parte, puede que en otra sección hagas otro arreglo que no logro ver.
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970
« Respuesta #16 en: 19 de Agosto de 2010, 11:41:52 »
Hola Suky, disculpa la pregunta, ¿para qué sirve recibir esa cantidad en ms y convertirla a una fecha?

Si el PIC estuviera recibiendo tal cantidad, mejor que la PC ya se la mande completa en vez de atarearlo más. En todo lenguaje actual ya hay librerías para esas conversiones, por ejemplo:

http://dotnetperls.com/datetime-1

Y si el cálculo se hace en la PC pues estaría de sobra.

Hola Santiago! Tu tienes toda la razón, cuando estaba estudiando el protocolo pensaba ver los datos de la manera que comentas, pero me di la grata sorpresa que se envia de esa manera  :shock: O sea es un estándar establecido que no puede modificarse  :? El protocolo es DNP3, del cual estoy haciendo el Stack, no completo, pero con muchas implementaciones. Este protocolo tiene esta estructura:

Y además los datos son empaquetados de la siguiente forma:


Suky, muy bueno lo que presentas, no se si necesitaré algo así en algún momento pero es buenosaber que esta por aquí.

Con respecto a los años bisiestos, creo que tienen razón lo que te comentan del año 1970.
Fijate con este ejemplo a la fecha actual,

Elapsed_Years_Leap=(2010-1970)/4;  // Resultado 40/4=10

Luego en la siguiente instrucción tomas como que esos son los años bisiestos que has tenido y los consideras de 366 días, cuando en realidad como el año 1970 no fue bisiesto, si no que fue el 1972, has tenido solo 9,5 años bisiestos por lo que tomarias 9 años.

Es lo que he entendido leyendo el código que escribiste, al menos esa parte, puede que en otra sección hagas otro arreglo que no logro ver.

Es cierto!  :oops: No lo había analizado correctamente... Solucionando...


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970
« Respuesta #17 en: 19 de Agosto de 2010, 13:42:48 »
Sip, en C30 se utiliza esa cabecera... :roll:
Y de donde recibe los parametros argc y argv? En la compu los carga el sistema operativo con los parametros que uno ponga al ejecutar el programa, pero en un pic?? O.o

Por lo que pude ver en la documentación del C30 estos argumentos son para control del Preprocesador.
La diferencia que le veo a un programa que se ejecuta en una computadora es que en estos (los de la PC) los argumentos (parametros) se pasan al momento de ejecutar el programa.
Y para el caso del microcontrolador estos argumentos se pasan al momento de compilar el programa. Luego al momento de ejecutar es siempre el mismo programa.

Alguien mas entendido en el tema creo puede aportar mas.
De todas formas si no son necesarios se usa
int main(void)
como indicaba Suky
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970
« Respuesta #18 en: 19 de Agosto de 2010, 13:45:03 »
Será más que nada para cumplir con lo que exíge ANSI C?
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado jansuini

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 566
Re: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970
« Respuesta #19 en: 15 de Noviembre de 2010, 14:40:44 »
Suky:
Como anda la implementación del DNP? imagino que es un esclavo. Con que pensás probarlo como master?
Sds.
Jorge

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970
« Respuesta #20 en: 15 de Noviembre de 2010, 14:54:46 »
Suky:
Como anda la implementación del DNP? imagino que es un esclavo. Con que pensás probarlo como master?
Sds.
Jorge

Es un esclavo. Ya está implementado, o por lo menos la parte del protocolo, ya está para ser presentado  :mrgreen:


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado jansuini

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 566
Re: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970
« Respuesta #21 en: 15 de Noviembre de 2010, 15:55:31 »
ok,pero donde lo presentarás?
Jorge

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970
« Respuesta #22 en: 15 de Noviembre de 2010, 16:19:01 »
ok,pero donde lo presentarás?
Jorge

Parte de la librería la compartimos en el segundo congreso virtual de microcontroladores. Implementar este protocolo es una parte de mi tesis de grado.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado IngRandall

  • PIC18
  • ****
  • Mensajes: 383
Re: Algoritmo para determinar Fecha y hora según mili-segundos pasados desde 1970
« Respuesta #23 en: 04 de Agosto de 2011, 17:36:31 »
Hola, he estado trabajando con este algoritmo, y me parece muy bueno, pero ahora los estoy haciendo de forma contraria y no me esta resultando, aquí porgo el ejemplo:

    ano_rtu=11;
    mes_rtu=8;
    dia_rtu=4;
    horas_rtu=10;
    minutos_rtu=50;
    segundos_rtu=40;


   
   
   
    ano_rtu_dnp3=ano_rtu+30;

    mes_rtu_dnp3=mes_rtu;

    anos_bisiestos=((ano_rtu/4)+8);

    dias_rtu_dnp3=dia_rtu+anos_bisiestos;

    horas_rtu_dnp3=horas_rtu;

    minutos_rtu_dnp3=minutos_rtu;

    segundos_rtu_dnp3=segundos_rtu;


    Elapsed_Milliseconds=0;


    Elapsed_Milliseconds=ano_rtu_dnp3*31557600000;

    Elapsed_Milliseconds=Elapsed_Milliseconds+mes_rtu*2629800000;

    Elapsed_Milliseconds=Elapsed_Milliseconds+dias_rtu_dnp3*86400000;

    Elapsed_Milliseconds=Elapsed_Milliseconds+horas_rtu_dnp3*3600000;

    Elapsed_Milliseconds=Elapsed_Milliseconds+minutos_rtu_dnp3*60000;

    Elapsed_Milliseconds=Elapsed_Milliseconds+segundos_rtu_dnp3*1000;

    tp6=tp5=tp4=tp3=tp2=tp1=0;


    tp1=Elapsed_Milliseconds&0b11111111;
    Elapsed_Milliseconds=Elapsed_Milliseconds>>8;
    tp2=Elapsed_Milliseconds&0b11111111;
    Elapsed_Milliseconds=Elapsed_Milliseconds>>8;
    tp3=Elapsed_Milliseconds&0b11111111;
    Elapsed_Milliseconds=Elapsed_Milliseconds>>8;
    tp4=Elapsed_Milliseconds&0b11111111;
    Elapsed_Milliseconds=Elapsed_Milliseconds>>8;
    tp5=Elapsed_Milliseconds&0b11111111;
    Elapsed_Milliseconds=Elapsed_Milliseconds>>8;
    tp6=Elapsed_Milliseconds&0b11111111;



pero no me esta dando.