Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Horloge
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Horloge

Posté le 01/05/2014 21:07

Bonjour,
Je sais pas si je suis au bon endroit mais je me demandai comment ce programme pouvait marcher...
Parce qu'il faut que l'add-in tourne toujours quand la calto est éteinte ou que la calto ai quelque chose en Hard qui lui permette de savoir le temps écoulé depuis la dernière extinction ...
Donc voila ça m’intéresse beaucoup et si quelqu'un pouvait m’éclairer sur le sujet


Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 18:30 | #


J'ai du mal a faire un fonction qui renvoie un int depuis du BCD...
En fait, je comprend pas comment isoler les 4 bits
Lephenixnoir En ligne Administrateur Points: 24554 Défis: 170 Message

Citer : Posté le 07/07/2014 18:33 | #


Tu veux isoler 4 bits sur un int ?
(entier&(7<<4*n))>>(4*n)

Si je ne me trompe pas, ça te renverra un chiffre. Ensuite, plus qu'à multiplier par 10.
Mais sinon, tu as plus simple.
while(BCD)
{
  entier += BCD&15;
  BCD >> =4;
  entier *=10;
}

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 18:35 | #


non en fait, le tableau "temps" d'unsigned char qui stocke le temps, ben il le stocke en BCD
Et mon problème c'est pour passer du BCD au int. En gros le proto qu'il faudrait:
int BCD2int(unsigned char *temps, unsigned char num_case);

Lephenixnoir En ligne Administrateur Points: 24554 Défis: 170 Message

Citer : Posté le 07/07/2014 19:02 | #


int BDC2int(unsigned char *temps, int bytes)
{
  /* 2* plus de chiffres que bytes */
  int i, j, n;
  for(j=0;j<bytes;j++,temps++) for(i=2;i;i--,n*=10)
    n+=*temps&(7<<(i<<2));
  return n;
}

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 19:27 | #


Ca fonctionne pas...
J'arrive pas trop a comprendre ce que ca fait ...

Lephenixnoir En ligne Administrateur Points: 24554 Défis: 170 Message

Citer : Posté le 07/07/2014 19:28 | #


Oups ! J'ai oublié un truc important...
  int i, j, n=0;

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 19:33 | #


Ca marche toujours pas...

void test_temps()
{
    unsigned long temps, buf_temps;
    unsigned char time[8]={0};
    unsigned char buffer[40];
    
    RTC_GetDateTime(time);
    sprintf(buffer, "%d - %x/%x/%x%x  %x:%x:%x",BDC2int(time, 0), time[3], time[2], time[0], time[1], time[4], time[5], time[6]);
    PrintMini(1,1,buffer,0);
    while(1);
    temps = 1;
    
}

La chaine "time" est nickelle mais la conversion ne marche pas. Par exemple la il revoit 32160 pour time[0]=0x20;
Lephenixnoir En ligne Administrateur Points: 24554 Défis: 170 Message

Citer : Posté le 07/07/2014 19:34 | #


Le pire c'est que je trouve des erreurs quand je cherche... j'espère que t'es patient.
int BDC2int(unsigned char *temps, int bytes)
{
  /* 2* plus de chiffres que bytes */
  int i, j, n=0;
  for(j=0;j<bytes;j++,temps++) for(i=1;i+1;i--,n*=10)
    n+=*temps&(7<<(i<<2));
  return n;
}

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 19:37 | #


il manque le n=0 non ?
T'es deja patient avec moi
Lephenixnoir En ligne Administrateur Points: 24554 Défis: 170 Message

Citer : Posté le 07/07/2014 19:39 | #


Repris le mauvais code. x)
Maintenant que je l'ai édité, fonctionne-t-il ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 19:44 | #


Non Non toujours le même problème, enfin c'est bizarre. Ça me renvoie 0 mais j'ai plutôt l'impression que c'est aléatoire.
Lephenixnoir En ligne Administrateur Points: 24554 Défis: 170 Message

Citer : Posté le 07/07/2014 19:46 | #


Quel idiot, c'est pas 7 c'est 15.
int BDC2int(unsigned char *temps, int bytes)
{
  /* 2* plus de chiffres que bytes */
  int i, j, n=0;
  for(j=0;j<bytes;j++,temps++) for(i=1;i+1;i--,n*=10)
    n+=*temps&(15<<(i<<2));
  return n;
}

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 19:59 | #


ça me renvoit 0
La machine serait-elle plus forte que Lephenixnoir ?
Lephenixnoir En ligne Administrateur Points: 24554 Défis: 170 Message

Citer : Posté le 07/07/2014 21:13 | #


Pas pour longtemps.

Ajouté le 07/07/2014 à 21:30 :
int BDC2int(unsigned char *BCD, int b)
{
  int i,n;
  for(i=0,n=0;i<b;i++)
  {
      n+=*(BCD+(i>>1)) & (i&1?15:240);
      if(i ! = b-1) n*=10;
  }
  return n;
}

b est maintenant le nombre de chiffres.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 21:36 | #


On est d'accord que BCD est un tableau et que le deuxième argument est la case de ce tableau ?
Les cases du tableau contiennent deux chiffres ?

Je vais quand même poser l'utilité finale de cette fonction . Le but c'est de tout convertir en minutes pour comparer l'heure actuelle et l'heure enregistrée dans un fichier. Le problème c'est que en BCD, je peux pas faire de calculs...

Sinon,
(7) : C2500 (E) Illegal token "!"
(7) : C2500 (E) Illegal token "="
Lephenixnoir En ligne Administrateur Points: 24554 Défis: 170 Message

Citer : Posté le 07/07/2014 21:44 | #


Ben oui, tu peux pas séparer le '!' et le '=', mais si je les réunis ça fait '!='.
Sinon, je suis en train de tester et ça fonctionne, à un rien près... j'ai juste un chiffre de trop. Désolé, je t'avais dit qu'il te faudrait être un peu patient.

Ajouté le 07/07/2014 à 21:53 :
Bon, c'est terminé. Fini la fonction rebelle.
int BDC2int(unsigned char *BCD, int bytes)
{
  int i,n;
  for(i=0,n=0;i<bytes;i++)
  {
      n += (*(BCD+i)&240)>>4;
      n *= 10;
      n += *(BCD+i) & 15;
      if(i != bytes-1) n*=10;
  }
  return n;
}

Elle s'appelle comme suit :
unsigned char ch[2] = { 0x24, 0x09 };
BDC2int(ch,2);

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 21:58 | #


ok merci,
J'avais pas compris le "! =" je me suis dit, rhoo encore un nouvel operateur
et sans vouloir te souler ca serait possible de le faire juste pour une case du tableau, genre:
BDC2int(0x23);
Lephenixnoir En ligne Administrateur Points: 24554 Défis: 170 Message

Citer : Posté le 07/07/2014 22:00 | #


BCD2int(0x23,1);

Tu es obligé de mettre le nombre d'octets, mais sinon ça roule tout seul.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 07/07/2014 22:02 | #


ok oui question stupide
merci :kiss:
Breizh_craft En ligne Modérateur Points: 1171 Défis: 7 Message

Citer : Posté le 10/07/2014 12:17 | #


Moi j'aimerais savoir pourquoi ce programme ne marche pas >< sur une Graph35+ SH4 tweakée 75...
J'ai un écran d'accueil et impossible de faire quoi que ce soit :/
Breizh.pm – Un adminsys qui aime les galettes.
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 10/07/2014 12:18 | #


moi sur la mienne ca marche impec

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 162 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd