astuces

Quelques astuces

Associer une action à une touche du clavier
automappe
Débuger
entrer des textes depuis plusieurs fenêtres
Écrire rapidement un programme simple
Fichier
History
Comment générer de la musique à partir d´ images animées.
Sockets

Associer une action à une touche t du clavier

1) Écrire une fonction ACTION() réalisant cette action.
2) Écrire dans la fonction F0 du 1er call-back de interaction func(0,F0):
       interaction ascii("t")func("ACTION");
Exemple:
Pour inhiber les affichages de textes ainsi que la mouse si on enfonce la touche : (deux points):
Écrire la fonction:
DEUX_POINTS()
{
       inv status scale menu message mouse;
}

2) Écrire dans la fonction F0:
       interaction ascii(":")func("DEUX_POINTS");

Débuger

Trouver une erreur de compilation

Le nom de la fonction et la ligne incriminée sont en général édités. On peut toujours faire edit func, seuls les noms des fonctions correctement compilées sont édités (l´erreur a donc eu lieu dans la fonction suivante).

Trouver une erreur d´exécution

Utiliser la fonction bug1.func qui offre un cadre général d´écriture d´un programme interactif. Il suffit de placer du code entre les balises:

    /***************/
    /* AJOUTER ... */
    /***************/

et
    /*******************/
    /* FIN AJOUTER ... */
    /*******************/


On peut déclarer autant de variables et de fonctions que nécessaire.

On peut aussi modifuer une fonction (avec l´éditeur interne) quand le programme tourne.

Utiliser anyflo_video.js

Si la fonction à débuger est lancée par un fichier .js, celui-ci est relancé indéfiniement en cas d´erreur. Il est alors préférable de lancer cette fonction depuis anyflo_video.js, pour celà:
1) Cliquer sur anyflo_video.js
2) lire la fonction f.func.
3) La lancer: f()
4) On a alors la main pour consulter les variables.

Débugger du code

Utiliser la commande debug.

Variables de débugage

Utiliser la commande interaction debug qui permet de modifier et/ou de visualiser des variables sur des échelles.

Débuger du code anyflo

Quand on possède les sources d´anyflo et l´environnement de VisualC++.

Écrire rapidement un programme simple

Construire un fichier source xxx.func

1) Copier le fichier modele_menu_simple.func en Copie de modele_menu_simple.func
2) Renommer Copie de modele_menu_simple.func en xxx.func
3) Éditer le fichier xxx.func et changer modele_menu_simple() en xxx()
4) Écrire du code dans les fonctions AAA() BBB() et CCC()
5) Ajouter des directives, des variables, des fonctions, etc...
6) Exécuter xxx(): le mode interaction est automatiquement invoqué et un menu contenant les noms des fonctions à exécuter apparait.
7) Pour lancer automatiquement cette fonction:
       7-1) Copier modele_menu_simple.js en Copie de modele_menu_simple.js.
       7-2) Renommer Copie de modele_menu_simple.js en xxx.js
       7-3) Éditer le fichier xxx.js et remplacer modele_menu_simple() par xxx().
       7-4) Cliquer sur xxx.js: la fonction xxx() est automatiquement exécutée.

Quelques recommendations

1) Pour faciliter le débugage il est utile de donner le même nom à une case XXX du menu et à la fonction XXX() qui lui est associée, et de donner des noms du type XXX_YYY() aux fonctions dépendant de XXX.
2) Pour éviter toute confusion entre un nom xxx de variable et une commande (il y en a plusieurs centaines ...):
status(xxx); imprime: dim (taille de xxx), type (FLOAT ou CHAR), np (nombre de vecteurs), dimp (taille des vecteurs) et la valeur de xxx.
status(com); n´imprime rien si com est une commande, mais retourne le status de la commande.
Par exemple:
1)x=[1,12];status(x); imprime:
dim = 6 type = FLOAT np = 12 dimp = 3
1 2 3 4 5 6 7 8 9 10 11 12
2) status screen; n´imprime rien.
mais $status screen; imprime 1 si yes screen est actif, sinon imprime 0.

Fichier

Lire un fichier ascii

Pour connaître le contenu d´un fichier ascii de nom nn, faire:
$read("nn");
Pour récupérer le contenu d´un fichier ascii de nom nn dans une variable v faire:
v=read("nn");

History

Exemples d´utilisation.

Socket

Socket UDP

Pour éviter des attentes (qui peuvent être très longues...) n´envoyer, par le client, que des informations pertinentes. Pratiquement il suffit de ne pas envoyer 2 fois de suite la même information.















































Í