[R] Ce réveil me pose un sérieux problème de calcul.

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

[R] Ce réveil me pose un sérieux problème de calcul.

#1

Message par cortx »

Bonjour;

Je suis en train de me fabriquer un système de réveil qui émet un son.
Je ne passe pas en paramètre l'heure de réveil, mais dans combien de temps il doit sonner.

Code : Tout sélectionner

$TempsAttente_Heures=InputBox("Temps d'attente","Heures","","")
$TempsAttente_Minutes=InputBox("Temps d'attente","Minutes","","")
$TempsAttente_Secondes=InputBox("Temps d'attente","Secondes","","")

$TempsAttente_Total=($TempsAttente_Secondes+($TempsAttente_Minutes*60)+($TempsAttente_Heures*3600))*1000
$TempsPasse=0
$TempsRestant=0

While $TempsPasse<>$TempsAttente_Total
    
    Sleep(1000)
    $TempsPasse=$TempsPasse+1000
    $TempsRestant=$TempsAttente_Total-$TempsPasse

    $TrayHeures_nonint=($TempsRestant/3600)/1000
    $TrayHeures=Int($TrayHeures_nonint)

    $TrayMinutes_nonint=(($TempsRestant/60)-(60*$TrayHeures))/1000
    $TrayMinutes=Int($TrayMinutes_nonint)
    
    $TraySecondes=($TempsRestant-($TrayHeures*3600)-($TrayMinutes*60)/1000)
    
    #NoTrayIcon
    TraySetState()
    TraySetToolTip("Il reste: "&$TrayHeures&"h"&$TrayMinutes&"mn"&$TraySecondes&"s")
    
WEnd

Beep(250,1000)
Beep(500,1000)
Beep(750,1000)
Beep(1000,1000)
 
Je bosse avec comme heure de réveil: dans 2h27min23sec

Je n'arrive pas à comprendre pourquoi il ne décompose pas mes calculs jusqu'au bout.

Code : Tout sélectionner

$TrayMinutes_nonint=(($TempsRestant/60)-(60*$TrayHeures))/1000
Il me fait

Code : Tout sélectionner

$TrayMinutes_nonint=(($TempsRestant/60))/1000
et s'arrète la, il passe sur toute la partie servant à retirer du temps des heures déjà comptées et me sort le résultat "147,36" (temps restant en minutes sans décompter les deux heures) au lieu de "27" attendu
Idem pour le

Code : Tout sélectionner

$TraySecondes=($TempsRestant-($TrayHeures*3600)-($TrayMinutes*60)/1000)
J'obtiens carrément pas ce que je souhaite.

Quant je fais ces mêmes calcul avec une calculatrice ca marche au poil, mais la ca merdouille.

Quelqu'un voit quelque chose que j'aurais oublié ou mal noté ?

Cordialement;
CortX

ps: Je ne vous les ai pas mises, mais je met des MSGBox pour vérifier chaque valeurs au fur et a mesure du déroulement du script.
Modifié en dernier par cortx le ven. 19 mars 2010 18:48, modifié 1 fois.
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [...] Ce réveil me pose un sérieux problème de calcul.

#2

Message par cortx »

Problème résolu.

Au lieu d'envoyer sur des msgbox j'ai envoyé directement dans du notepad, c'est beaucoup plus lisible et la ... c'est le bonheur .

Tout est décallé de trois 0.

Bah oui un sleep c'est en miliseconde, et j'avais donc oublié de multiplié mes calculs de temps par 1000.

Problème résolu.

Voici le code final.

Code : Tout sélectionner

$TempsAttente_Heures=InputBox("Temps d'attente","Heures","","")
$TempsAttente_Minutes=InputBox("Temps d'attente","Minutes","","")
$TempsAttente_Secondes=InputBox("Temps d'attente","Secondes","","")

$TempsAttente_Total=($TempsAttente_Secondes+($TempsAttente_Minutes*60)+($TempsAttente_Heures*3600))*1000
$TempsPasse=0
$TempsRestant=0

While $TempsPasse<>$TempsAttente_Total
    
    Sleep(1000)

    $TempsPasse=$TempsPasse+1000
    $TempsRestant=$TempsAttente_Total-$TempsPasse

    $TrayHeures_nonint=($TempsRestant/3600)/1000
    $TrayHeures=Int($TrayHeures_nonint)

    $TrayMinutes_nonint=(($TempsRestant/60)-(60*$TrayHeures*1000))/1000
    $TrayMinutes=Int($TrayMinutes_nonint)
    
    $TraySecondes=(($TempsRestant-($TrayHeures*3600*1000)-($TrayMinutes*60*1000))/1000)
    
    #NoTrayIcon
    TraySetState()
    TraySetToolTip("Il reste"&$TrayHeures&"h"&$TrayMinutes&"mn"&$TraySecondes&"s")

WEnd

Beep(250,1000)
Beep(500,1000)
Beep(750,1000)
Beep(1000,1000)
 
Répondre