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

Francesco
Modérateur
RemonterCiter Linux Mozilla 5 - Posté le 04/11/2007 à 20:07
Suffit de regarder le lien que j'ai donné. Les deux questions du dessous aident beaucoup...
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 04/11/2007 à 20:32
YES ! Controle du ventilo opérationel ! Bon pas encore fait la gestion du control C mais mon algorithme de controle est presque bon...

Par exemple à 52° il lance le ventilo a puissance 2. Y a juste que pour le moment, dès qu'il retombe à 51 il s'arrete. Je vais faire en sorte qu'il s'arrete dès qu'il retombe à la limité en dessous (définie par l'utilisateur), par exemple qd il retombe à 48. Ca devrait pas être trop compliqué !

Merci de votre aide en tout cas... (cool)

C'est moi ou je suis bloqué à 523 posts ? depuis tout à l'heure, mon nombre de messages n'augmente plus...

Edité par Amwus ( 04/11/2007 20:33:13 )
"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 04/11/2007 à 21:26
De rien.

Pour le nombre de post, je ne sais pas. Avant ce message, je suis au 507ème. Donc normalement, maintenant, 508ème

[edit]
Bonne remarque. Compteur bloqué. Neliger averti
[/edit]

[edit bis]
J'ai regardé la norme C99, kbhit n'apparait pas. Ce n'est donc pas standard. Le standard dont il est question sur le site de Mirosoft doir être un de leur standard dont personne ne veut.

Par exemple, je sais qu'il dise que l'utilisation de strcpy est déprécié, et qu'il faut mieux utiliser _strncpy (et non strncpy), comme ça, on perd la portabilité, et on est emprisoné chez M$)
[/edit bis]

Edité par Francesco ( 04/11/2007 21:32:05 )
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 04/11/2007 à 22:28
Je ne me laisserai pas avoir ... C99 ou rien .. et surtout pas du MS... c'est pas très honnete de leur part je trouve.. Mais on ne va pas commencer à troller sur ce sujet...
"Engl Amps are the best i've ever used... Not only are they powerfull, but they have charachter too..." R. Blackmore
Freem
Modérateur
RemonterCiter Windows NT Firefox 2 - Posté le 04/11/2007 à 22:32
Bah... pour troller, il faudrait que quelqu'un ne soit pas d'accord avec ce qui à été dis, mais concernant les "standards" microsoft, je pense qu'on est d'accord.
Perso, j'essaye de coder portable au maximum, et je n'utiliserai plus kbhit, même si je pensais qu'il était portable.
De toute façon, je n'en ai plus besoin, maintenant, je ne fait plus d'applis console depuis pas mal de temps (sourire)
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends. - Benjamin Franklin
Francesco
Modérateur
RemonterCiter Linux Mozilla 5 - Posté le 04/11/2007 à 23:09
[HS]
Parlant des standards, Microsoft semble vouloir faire passer un format XML utiliser pour sa suite office comme standard alors qu'il existe déjà la norme OpenDocument.

De plus, il semblerait que leur standard soit bourré de fautes, alors à de simples problèmes de définitions à du code XML non valide ! Pour faire un standard, c'est pas top, il faut l'avouer. De plus, cela ne rime à rien de faire un autre standard pour une chose qui existe déjà. Multiplier les standard revient à déstandardiser le standard existant...
[/HS]
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 08/11/2007 à 09:11
Dites les gars, pour revenir au sujet principal... Mon programme fonctionne presque au poil. Mon algorithme fonctionne, mais je ne sais pas ce que j'ai fait, dès que je passe en dessous d'une température limite il se coupe.

Je veux dire, a 47° le ventilo se coupe. A 52° il se lance mais il ne doit se couper qu'à 47°. Or la, a 51° il se coupe... Pas bon...

Pourtant j'avais réussi à le faire fonctionner mais là je sèche....

Voila le code... Si qqun à le temps... Merci...

/*-------------------- getLevelPos function --------------------*/


int getFanSpeed(void) {
const int numElems = 4;

auto int previousLimit = fanLimits[0];

bool interval = true;
int currentTemp = maxTemp();

int fanSpeed = 0;

if (currentTemp < fanLimits[0]) {
fanSpeed = fanLevels[0];
previousLimit = fanLimits[0];
interval = false;
}
else if (currentTemp > fanLimits[numElems]) {
fanSpeed = fanLevels[numElems];
previousLimit = fanLimits[numElems];
interval = false;
}
else {
for (int counter = 0; counter <= numElems; counter++) {
if (currentTemp == fanLimits[counter]) {
fanSpeed = fanLevels[counter];
previousLimit = fanLimits[counter];
interval = false;
break;
}
}

if (interval) {
int count = 1;

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

previousLimit = fanLimits[count - 1];
}
}

return fanSpeed;
}



10000000000000 mercis....

Edité par Amwus ( 08/11/2007 09:11:37 )
"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 à 17:47
J'ai regardé ton code, et il ne me semble pas avoir vu d'erreur. Le mieux, fait un log de ce qui se passe, avec notamment la température relevée, et la vitesse retourné par la fonction. Comme ça, tu pourra voir si le problème vient bien de ton algo ici présent, ou d'ailleur.

[cite]
10000000000000 mercis....
[/cite]
buffer overflow
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
Amwus
ProgBoarder
RemonterCiter Linux Firefox 2 - Posté le 09/11/2007 à 19:24
Salut !

Merci d'avoir jeté un coup d'oeil... Je viens de réanalyser le code je comprend pas... J'ai fais quelques tests en affichant previousLimit.

Si mes tableaux fanLimits (limites de températuree) et fanLevels (vitesses correspondantes) sont comme suit :
fanLimits = [48 52 58 65 75]
fanLevels = [0 2 4 7 -1]

J'ai le comportement suivant :
si je passe à 52° => previousLimit = 52 et setFanSpeed(2);
si je repasse à 51° ==> previousLimit = 48 et setFanSpeed(0);

Or justement, il ne devrait pas poser previousLimit à 48, mais le laisser à 52 et ce jusqu'à ce que je repasse à 48... Je ne comprend, normalement il devrait le faire...
"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 à 21:13
pour moi, avec les données que tu donnes, c'est normal.
Supposons que la température soit de 51°C. Donc, on peut ignorer les deux premiers if, puisque les tests sont faux.

Dans le 3ème, dans la boucle for, aucune température contenu dans le tableau fanLimits n'est égale à la température courante. Donc interval = true et on entre dans le if suivant.

Maintenant, je fais itération par itération dans la boucle for.
count = 1.
fanLimits[count] = fanLimits[1] = 52
hors, 52 > 51, donc le test dans le 1er if est faux, on va dans le else.
Dans le else, autre if, avec, cette fois-ci, la condition qui est vrai. On rentre donc dans le if. Tu initialises fanSpeed avec fanLevels[count - 1] = fanLevels[0] = 0.

Le break sort de la boucle for.
Tu retournes le fanSpeed trouvé, c'est à dire 0. Le ventilo s'arrete. C'est donc normal. L'erreur vient de ton algo.

[edit]
Je te ferais d'ailleur remarqué que le dernier if juste apres le else n'est pas nécessaire.
[/edit]

Edité par Francesco ( 09/11/2007 21:16:05 )
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,062 s - Crédits - Stats
1 connecté