Le langage SMS est exclu sur les forums ProgBoards, tout message ne respectant pas la charte sera déplacé, modifié, ou supprimé par nos modérateurs.

Forum Langages » C & Cie. » Rendre le contrôle au bios en sortie de programme

Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 09/11/2007 à 21:39
mmmmwai.... et donc pour que la température retombe à 0 uniquement à 48 je devrais faire quoi ? J'avoue ne pas tout comprendre...

Parce que la, fanLimits[1] = 52 > 51. Donc on entre bien dans la boucle... Le problème viendrait alors de la détermination de previousLimit ?
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
Francesco
Modérateur
RemonterCiter Linux Mozilla 5 - Posté le 09/11/2007 à 22:09
En gros, remplace :


if (fanLimits[count] > currentTemp) {
if (currentTemp < previousLimit) {
fanSpeed = fanLevels[count];
break;
}
else if (currentTemp > previousLimit) {
fanSpeed = fanLevels[count - 1];
break;
}



par


if (fanLimits[count] > currentTemp)
{
fanSpeed = fanLevels[count - 1];
break;
}


J'ai viré le previousLimit, car je n'ai pas du tout compris à quoi il servait.
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 10/11/2007 à 12:44
Mwaii. mais non en fait ça n'a rien changé... Le previousLimit se met à 48 si je repasse à 51. En fait, il doit rester à 52 jusqu'à ce que je j'arrive à 48... Et la je je le passe à 48... Enfin je pense. Ca permet de vérifier quelle était la dernière limite, et tant que la limite ne change pas, on reste à la vitesse de cette limite...

Le problème viendrait donc de la détermination du previousLimit d'après moi... Mais je ne vois pas ou...
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
Francesco
Modérateur
RemonterCiter Linux Mozilla 5 - Posté le 10/11/2007 à 12:48
Le previousLimit doit-t-il garder sa valeur d'un appel de la fonction à l'autre ?
Si oui, change la déclaration de previousLimit en rajoutant le mot clé static.
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 10/11/2007 à 14:12
Oui il doit garder sa valeur... Il faut qu'a l'appel suivant, la valeur reste la même que celle définie à l'appel précédent.... J'essaie ça tout de suite !

(triste) fancontrol.c:131: error: initializer element is not constant

Voila ce qu'il me renvoit... Pourquoi veut il une constante ?

Edité par Amwus ( 10/11/2007 14:15:31 )
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
Francesco
Modérateur
RemonterCiter Linux Mozilla 5 - Posté le 10/11/2007 à 14:32
Serait-il possible que tu mettes une archives de ton projet sur un site (si tu en as un), ou que tu me l'envoie par mail. Car je ne sais pas où se trouve la ligne 131, puisque tu n'as mis qu'une partie du fichier...

[edit]
Si l'erreur est bien là où je pense, c'est à dire ici


static int previousLimit = fanLimits[0];


c'est normal qu'il mette une erreur. Toutes variables statiques est initialisée avant même l'appel à la fonction main. Donc, comme tu utilises une variable pour initialiser previousLimit, le compilo ne peut pas savoir, a priori, si la variable qu'il va utiliser pour initialiser previousLimit est initialisée ou non.

Pour contourner le problème, change un petit peu le code :


static int isInit = 0;
static int previousLimit;

if (!isInit)
{
previousLimit = fanLimit[0];
isInit = 1;
}


[/edit]

Edité par Francesco ( 10/11/2007 14:36:37 )
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 10/11/2007 à 15:45
Roalal oui oki là ça compile mais le code ne fonctionne pas... Toujours le meme probleme... previousLimit ne change tout de suite... Je t'envois l'archive...

Merci...
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
Francesco
Modérateur
RemonterCiter Linux Mozilla 5 - Posté le 10/11/2007 à 18:16
Je pense que j'ai trouvé. A la fin, remplace


previousLimit = fanLimits[count - 1];



par


previousLimit = fanLimits[count];



Je pense que cela fait le comportement que tu attends...
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 10/11/2007 à 21:38
On dirait bien que ça marche effectivement ! Je vais mettre le programme à l'essai avec différentes températures définies ! On va bien voir mais jusqu'à présent, on dirait que ça fonctionne même très bien...

Merci beaucoup (exclamation)
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
Francesco
Modérateur
RemonterCiter Linux Mozilla 5 - Posté le 10/11/2007 à 22:21
De rien ^^
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Poster une réponse

STOP aux fautes volontaires !
Message
Formatage
Note: pour partager du code source, merci d'utiliser le wall !
Smileys (sourire) (yekyek) (clein d'oeil) (désapprouve) (triste) (cool) (langue) (confus) (gêné) (neutre) (eek) (surpris) (diable) (flèche) (exclamation) (question) (diable) (idée) (méchant)
Pseudonyme
Recopiez le code
v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,122 s - Crédits - Stats
1 connecté