Condition temporelle : comparaition de date + ou - delais.

Condition temporelle : comparaition de date + ou - delais. - Algo - Programmation

Marsh Posté le 04-06-2015 à 01:15:51    

Bonjour bonsoir.
 
 Je me présente, je rigole.
 
Je dois jouer des note à heure fixes, mais passé un certain délais, je joue pas la note.
 
Voici ma condition avec Ada.
 

Code :
  1. if (Dated_Buffer(Buffer_iter).Hour +
  2.      Dated_Buffer(Buffer_iter).Date) <= Clock then
  3.      if Dated_Buffer(Buffer_iter).Hour +
  4.         Dated_Buffer(Buffer_iter).Date <= Clock - 0.1 then
  5.  
  6.          Driver.Receive(Dated_Buffer(Buffer_Iter).Message);
  7.  
  8.      else
  9.        Lost_Count := Lost_Count + 1;
  10.    end if;
  11. end if;


 
Je ne parvien pas à determiner si je dois placer un + ou un moins et ou pour pas jouer les note passé depuis ? il faudrait même zéro.
 
En tout cas j'ai un problème.
Je vais tester autre chose en attendant votre réponse.
 
 
Et je suis en train de tester ceci :
 

Code :
  1. if (Dated_Buffer(Buffer_iter).Hour +
  2.     Dated_Buffer(Buffer_iter).Date) <= Clock + 0.1 then
  3.    if Dated_Buffer(Buffer_iter).Hour +
  4.       Dated_Buffer(Buffer_iter).Date >= Clock - 0.01 then


Message édité par par l'anneau de l'ia le 04-06-2015 à 01:22:04

---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.
Reply

Marsh Posté le 04-06-2015 à 01:15:51   

Reply

Marsh Posté le 04-06-2015 à 01:29:31    

Comme ça c'est pas mal a priori :
 

Code :
  1. if (Dated_Buffer(Buffer_iter).Hour +
  2.     Dated_Buffer(Buffer_iter).Date) <= Clock + 0.1 then
  3.   if Dated_Buffer(Buffer_iter).Hour +
  4.      Dated_Buffer(Buffer_iter).Date >= Clock + 0.01 then


 
Mais j'ai encode des messages qui remplissent pas les conditions.
 
 


---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.
Reply

Marsh Posté le 04-06-2015 à 08:36:04    

Bon ! Là j'ai mit ça :
 

Code :
  1. if (Dated_Buffer(Buffer_iter).Hour +
  2.     Dated_Buffer(Buffer_iter).Date) <= Clock - 2.0 then
  3.      if Dated_Buffer(Buffer_iter).Hour +
  4.         Dated_Buffer(Buffer_iter).Date >= Clock - 2.5 then


 
Pendant un moment c'était mieux.
Puis avec le temps ça c'est dégrader, j'arrive encore en retard après 5 minutes. j'ai un problème de timing.


---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.
Reply

Marsh Posté le 04-06-2015 à 16:52:59    

J'ai fait différemment finalement, j'ai créé un type tache avec une attente active qui découle sur le message à envoyer.

Code :
  1. type Dated_Message_Type;
  2.      task type Event_Type(Dated_Message : access Dated_Message_Type) is
  3.         entry Initialize(Message : in Long; Date : in Time; Hour : in Duration);
  4.         entry Exhausted;
  5.      end Event_Type;
  6.  
  7.  
  8.      type Dated_Message_Type is limited
  9.         record
  10.            Message : Interfaces.C.Long := 0;
  11.            Hour    : Duration := 0.0;
  12.            Date    : Time := Clock;
  13.            Event   : Event_Type(Dated_Message_Type'Access);
  14.         end record;
  15.  
  16.      type Dated_Messages_Set is array (Positive range <> ) of access Dated_Message_Type;
  17.  
  18.      task body Event_Type is
  19.      begin
  20.         accept Initialize(Message : in Long; Date : in Time; Hour : in Duration) do
  21.            Dated_Message.Message := Message;
  22.            Dated_Message.Date := Date;
  23.            Dated_Message.Hour := Hour;
  24.         end Initialize;
  25.         delay until Dated_Message.Date + Dated_Message.Hour;
  26.         Driver.Receive(Dated_Message.Message);
  27.         accept Exhausted;
  28.      end Event_Type;


 
C'est à peu près ce que j'avais fait au départ mais je n'y arrivais pas alors j'ai pris le problème autrement, pour finalement intégrer la solution de départ.


Message édité par par l'anneau de l'ia le 04-06-2015 à 16:53:11

---------------
Toute expression prend un sens spirituel qui nous influence dans notre quête de l'Homme.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed