Formel für Datum -> mjd gesucht

Zusatz-Programme für Receiver der 5000er und 6000er Serie.

Hier geht's um alles, was mit den TAP Anwendungen für den PVR5x00/6000 zu tun hat.
Benutzeravatar
Erdnussnase
TAP-Guru
TAP-Guru
Beiträge: 7067
Registriert: Fr 9. Dez 2005, 12:01

Formel für Datum -> mjd gesucht

#1

Beitrag von Erdnussnase » Do 13. Jul 2006, 12:55

Hat jemand eine Formel bzw. ein Stückchen Code wie ich von einem gegeben Datum auf die Topf eigene mjd Darstellung komme ?
Würde mir das Leben unter der IDE erleichtern.
:type: ->.....
Kein Support oder Fragen zur Registrierung per PN !
http://www.iTiNa.de
?Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit,
aber bei dem Universum bin ich mir noch nicht ganz sicher.?
Albert Einstein

Benutzeravatar
Jetson
Vielantworter
Vielantworter
Beiträge: 763
Registriert: Fr 9. Dez 2005, 19:29
Receivertyp: TF5200PVRc
Receiverfirmware: TF-NCPCd 2.75

#2

Beitrag von Jetson » Do 13. Jul 2006, 13:10

Was spricht dagegen TAP_MakeMjd() zu benutzen? (API-Doku S.19)
Gruß,
Jetson

Benutzeravatar
Erdnussnase
TAP-Guru
TAP-Guru
Beiträge: 7067
Registriert: Fr 9. Dez 2005, 12:01

#3

Beitrag von Erdnussnase » Do 13. Jul 2006, 13:24

Das ich das nicht auf dem Topf brauche, sondern unter IDE (Windoof).
:type: ->.....
Kein Support oder Fragen zur Registrierung per PN !
http://www.iTiNa.de
?Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit,
aber bei dem Universum bin ich mir noch nicht ganz sicher.?
Albert Einstein

Benutzeravatar
Miq
Topfield-Freak
Topfield-Freak
Beiträge: 3330
Registriert: Fr 9. Dez 2005, 08:16

#4

Beitrag von Miq » Do 13. Jul 2006, 13:36

Wie sind denn die Formate vorher/nachher? Ich hätte da ein paar Minuten frei :D
Miq.

Benutzeravatar
ibbi
Moderierter Ignorator Bitteschöööön!
Moderierter Ignorator  <font color=#E9E9E9>Bitteschöööön!</font>
Beiträge: 7110
Registriert: Fr 9. Dez 2005, 12:49
Receivertyp: TF5000PVR • SRP-2401CI+ Eco
Receiverfirmware: Sep 2005 PHTF • Jan 2015

#5

Beitrag von ibbi » Do 13. Jul 2006, 13:41

Hier sollte es die gewünschten Algorithmen geben.

Benutzeravatar
jkIT
TFtool-Guru
TFtool-Guru
Beiträge: 3225
Registriert: Sa 10. Dez 2005, 18:26
Receivertyp: TF4000 & TF5000MP & SRP-2410

#6

Beitrag von jkIT » Do 13. Jul 2006, 13:48

Versuch mal das, ist Pascal, aber bestimmt nicht schwehr in eine andere Programmiersprache zu übesetzen.

Code: Alles auswählen

type
  TTFdatetime = packed record
    swMJD : WORD;
    hour  : Byte;
    min   : Byte;
  end;

function convert_date_time(year, month, day, hour, minute :integer; var date : TTFdatetime): boolean;
// EN 300 468 Annex C - Conversion between time and date conventions
// from www.ETSI.ch
const
  month_to_days : array[1..13] of integer = (0,31,59,90,120,151,181,212,243,273,304,334,365);
var
  day_in_year : integer;
  iMJD : integer;
  y, m, d, hr, min : integer;
begin
  day_in_year := day + month_to_days[month];
  if ((month > 2) and (year mod 4 = 0) and ((year mod 100 <> 0) or (year mod 400 = 0))) then
    inc(day_in_year);
  iMJD := (year - 1901) * 365 + ((year - 1901) div 4) -
         ((year - 1901) div 100) + ((year - 1601) div 400) +
         day_in_year + 15384;
  date.swMJD := swapWord(word(iMJD)); // change Endian for PowerPC and Mips
  date.hour := hour;
  date.min := minute;
  // check_date_time
  result := convert_date_time(date, y, m, d, hr, min) and
            (y = year) and
            (m = month) and
            (d = day);
end;
Gruß jkIT

CRP-2401; SRP-2410 (aD); TF5000MP (aD); TF4000PVR (aD); TFtool, aTMSremote (Autor)

Benutzeravatar
Aldarin
Software-Guru
Software-Guru
Beiträge: 2447
Registriert: Fr 9. Dez 2005, 12:07
Wohnort: Wien
Kontaktdaten:

#7

Beitrag von Aldarin » Do 13. Jul 2006, 14:08

oder die tfdll.dll Funktionen verwenden:

Code: Alles auswählen

extern "C" __declspec(dllimport) byte	ExtractMjd(word mjd, word *year, byte *month, byte *day, byte *weekDay);
extern "C" __declspec(dllimport) word	MakeMjd(word year, byte month, byte day);
Gruß
Aldarin

Benutzeravatar
Harvey
iTina-Promoter und Kuhinteressent
iTina-Promoter und Kuhinteressent
Beiträge: 3894
Registriert: So 11. Dez 2005, 22:34
Receivertyp: 0x1388 PVR
Receiverfirmware: 13.09.2005
Wohnort: Planet Erde, Milchstraße

#8

Beitrag von Harvey » Do 13. Jul 2006, 19:49

An der Pascal-Routine stimmt was nicht (oder ich kann nicht Rechnen).

Für den 12.11.2006 soll 54051 rauskommen, ich errechne aber 54084.

Topfield hat's so implementiert (etliche maschinencodes zusammengefasst):

Code: Alles auswählen

if (Month==1 || Month==2) S4=1 else s4=0;

t9 = Year - s4;
t9 = t9 * 36525;
t9 = t9 + 36525 - 1901*36525;
t9 = t9 / 100 + Day;

t7 = s4 * 12 + Month + 1;
t7 = (t7 * 306001) / 10000;
return t9 + t7 + 14956;
Gruss
Harvey

Benutzeravatar
Erdnussnase
TAP-Guru
TAP-Guru
Beiträge: 7067
Registriert: Fr 9. Dez 2005, 12:01

#9

Beitrag von Erdnussnase » Fr 14. Jul 2006, 14:55

Besten Dank,

Da kann ich mir ja jetzt das beste raussuchen :rolleyes:
:type: ->.....
Kein Support oder Fragen zur Registrierung per PN !
http://www.iTiNa.de
?Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit,
aber bei dem Universum bin ich mir noch nicht ganz sicher.?
Albert Einstein

Benutzeravatar
jkIT
TFtool-Guru
TFtool-Guru
Beiträge: 3225
Registriert: Sa 10. Dez 2005, 18:26
Receivertyp: TF4000 & TF5000MP & SRP-2410

#10

Beitrag von jkIT » Fr 14. Jul 2006, 16:03

Harvey hat geschrieben:An der Pascal-Routine stimmt was nicht (oder ich kann nicht Rechnen :wink: ).
Für den 12.11.2006 soll 54051 rauskommen, ich errechne aber 54084
Da hast Du Dich tatsächlich verrechnet, da kommt schon 54051 raus.
Gruß jkIT

CRP-2401; SRP-2410 (aD); TF5000MP (aD); TF4000PVR (aD); TFtool, aTMSremote (Autor)

Benutzeravatar
Harvey
iTina-Promoter und Kuhinteressent
iTina-Promoter und Kuhinteressent
Beiträge: 3894
Registriert: So 11. Dez 2005, 22:34
Receivertyp: 0x1388 PVR
Receiverfirmware: 13.09.2005
Wohnort: Planet Erde, Milchstraße

#11

Beitrag von Harvey » Fr 14. Jul 2006, 16:23

Ich habe übersehen, dass das Array bei 1 anfängt :oops:
Gruss
Harvey

Antworten

Zurück zu „TF 5x00/6000 PVR TAP“