CriPpLe
Messages postés78Date d'inscriptionlundi 26 juillet 2004StatutMembreDernière intervention26 avril 2005 10 janv. 2005 à 18:24
Oula mais qu'est ce que tu nous fait là
Un tableau est censé regrouper des variables de même type, alors que là tu y mets des fonctions et en plus qui ne renverrons peut être pas le même type d'élement.
Je n'ai jamais utilisé ce type de code, donc je ne suis pas certain si ça marche ou pas mais logiquement c'est completement absurde.
De plus ça t'allonge le code pour rien, pourquoi tu veux faire ça ?
cs_trapic
Messages postés3Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention23 février 2005 23 févr. 2005 à 13:30
Merci Yves!
Excuse moi pour ma réponse très tardive... mais ta réponse est très pertinente!
La finalité, un séquenceur en C pour l'embarqué.
Le tableau des séquences:
const rom s_sequenceur st_sequenceur_test[39]=
{
//{"Message","Message Erreur",Fonction,{Paramètres},Nxt,Jmp,Exe,Lim-,Lim+,Comp,ErrPce},
{"T0:Inserer carte","Def tempo",Delai,{1000},1,38,1,0,0,0,0},
{"T0:Inserer carte","",DigitalInput,{SWITCH_CAPOT},2,38,1,1,1,1,0},
etc...
L'appel de la fonction:
// == ===========================================================================
//APPEL LA FONCTION
if ( st_sequenceur[u8_index_sequenceur].f() == TX_ERROR )
{
//erreur lors de l'exécution de la fonction
u8_erreur_systeme = 1;
}
else
{
u8_erreur_systeme = 0;
}
Une fonction:
int Delai(void)
{
//lecture des paramètres de la séquence en cours
u16_cpt_delai = (u16) st_sequenceur[u8_index_sequenceur].flt_parametres[0] / BASE_TEMPS;
while (u16_cpt_delai > 0)
{
//watchdog(); //rafraichissement du watchdog (indispensable en cas de delai supérieur au temps du watchdog!)
}
//u16_cpt_delai décrémenté dans l'IT 10 ms