FORUM Tom's Hardware » Programmation » C / C++ / Java » [RESOLU] générer une fonction à partir d'une chaine ?
 

[RESOLU] générer une fonction à partir d'une chaine ?

Il y a 407 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : [RESOLU] générer une fonction à partir d'une chaine ?
 
Plus d'informations

Hello !

Voila, je cherche à générer une fonction à partir d'une chaine de caractères... Est ce possible ?

Exemple : On veux lancer la commande porta.f0, mais en incrémentant le 0 en 1 puis 2 etc. dans une boucle.
Je pensais donc générer la fonction à partir de l'addiciton d'une chaine de caractère ("porta.f" ) et d'un int qui s'incrémente et que je convertis en char...
Y aurait il une solution dans le coin ?

Merci d'avance
FB


Message édité par 187bundy le 05-03-2007 à 19:20:05

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Hmmmm un tableau de pointeurs vers ces fonctions ?


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Plus d'informations

Oui... Mais alorsje suis obligé de rentrer toutes les formes de ma fonction dans mon tableau ? Genre porta.f0,porta.f1,porta.f2 etc. Je peux pas la générer directement à partir d'un texte ?

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Pourrais tu préciser l'usage, et surtout le pourquoi du numéro.

Si c'est juste un paramètres c'est plus simple de le passer à une fonction générique.


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
zeb
Profil : Modérateur libre
Plus d'informations

Hum, difficile avec un langage compilé.
Tu peux nous en dire plus ?


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Non ca se fait bien en assembleur par exemple :o
(ou en C aussi mais c'est pas du tout portable vu que dependant du compilo)

Mais oui plus d'info sur le pourquoi du comment serais hautement appreciées :D


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Plus d'informations

Oui désolé... Et merci pour vos réponses !

Alors voila en fait je programme une puce de type PIC et ses entrées sorties se commandent en C comme suit :
porta.f0=1; // on force la sortie A0 à 1.
portb.f2=0; // on force la sortie B2 à 0.

Vous voyez l'idée ? Docn la fonction n'est pas vraiment paramétrable du genre fonction(paramètre1,paramètre2)... Donc je sais pas trop comment faire si j'ai des séries...

Quelqu'un a une idée ?

FB

G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Ce ne sont donc pas des FONCTIONS mais des VARIABLES ... qui correspondent à une sortie du dit pic.

Pourrais tu nous donner le pseudo code de ce que tu veux faire ainsi que la ref du pic employé ? ;)


---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
zeb
Profil : Modérateur libre
Plus d'informations

Ah bah ce sont mêmes des variables de type record je suppose.
On devrait même pouvoir faire une structure de type enum là dessus !

Hum, combien de "pattes" dois-tu gérer comme ça ?

Si c'est juste du confort d'écriture que tu cherches, tu peux aussi regarder du côté des macros (#define)

Qu'en pense boub ?


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
G.M.G.V.S.O.
Profil : Modo matériel
Plus d'informations

Je pense meme qu'on peut les voir comme des struct de BOOL sur 1 bit ;)

sans en savoir plus je partirais sur le postulat qu'on a 2 ports (A et B) ayant chacun 8 bits (0..7).

le problème avec l'usage du C sur microcontrolleur c'est qu'on perd le controlle du détail a mon avis tout ça c'est fortement optimisable en asm en incrementant les adresses correspondantes à la main directement (enfin vu qu'il s'agit qd même d'un C adapté c'est peut etre faisable comme ça qd meme)


edit: bon solution "simple" pour decaller le numéro à chaque iteration un bon petit

Code :
  1. num = num<<2;

en initialisant

Code :
  1. unsigned char num=1;

au tout début, selectionnerais le bit correspondant de manière "rotative" ...


Message édité par boub popsy team le 04-03-2007 à 19:34:43

---------------
SPAM & WAREZ = Ban!
Ultimate Boot CD | Memtest+
Mon bar préféré à Lyon ! | Bijoux Fantaisie de Créateur !
Plus d'informations

Alors alors... En fait oui ce sont des variables, si on veut, mais qui répondent directement à une fonction à laquelle je n'ai pas accès. Donc pour répondre à vos questions :
- Il y a 4 ports A,B,C,D comprenant chacun 8bits (0 à 7).
- Le PIC est un 16F877A.
- Pour un exemple, on pourrait prendre un chenillard qui allume alternativement les 32 diodes (4ports * 8bits). bien sûr je peux faire une structure en if (des tonnes de lignes de prog ;)) ou alors un tableaux avec les 32 variables... Mais je rêvais d'une possibilité de "générer" la variable à partir d'une chaine... Du coup ma fonction ne ferait que quelques lignes. Mais peut être est ce impossible ?

FB


Message édité par 187bundy le 05-03-2007 à 15:50:07
pourquoi faire cent fois la même chose ?
Plus d'informations

ou au pire, un tableau de pointeur vers les pattes ?

zeb
Profil : Modérateur libre
Plus d'informations

Avec une structure enum, tu peux mettre un tableau "par dessus" tes bits !

Plus d'informations

Ouais je vais opter pour un bon vieux tableau...

Merci à tous.
FB

Profil : Pointeur
Plus d'informations

le coup de la macro me semble pas mal ...


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » C / C++ / Java » [RESOLU] générer une fonction à partir d'une chaine ?
 

Annonces Google
Publicité