π
<-

question sdk graph 90+e/ portage CAS

Programmation et implémentation d'algorithmes.

Re: question sdk graph 90+e/ portage CAS

Unread postby parisse » 17 Jun 2018, 09:32

Premiere adaptation de l'interface d'eigenmath, affichage 1-d pour le moment
https://www-fourier.ujf-grenoble.fr/~parisse/casio/test.g3a
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 88.1%
 
Posts: 3699
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Unread postby parisse » 17 Jun 2018, 13:53

Peut-on tester qu'une touche est appuyee sans bloquer le programme? Je voudrais permettre a l'utilisateur de pouvoir interrompre un calcul trop long.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 88.1%
 
Posts: 3699
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Unread postby Lephe » 17 Jun 2018, 18:46

Tu peux utiliser la fonction suivante (probablement attribuable à SimLo si on remonte la chaîne) :

Code: Select all
int IsKeyDown(int basic_keycode)
{
    volatile const unsigned short *keyboard_register = (void *)0xA44B0000;
    int row, col, word, bit;
    row = basic_keycode%10;
    col = basic_keycode/10-1;
    word = row>>1;
    bit = col + 8*(row&1);
    return (0 != (keyboard_register[word] & 1<<bit));
}

C'est pas super joli donc autant privilégier GetKey(). Le keycode à envoyer est un keycode Basic et AC/ON a la valeur 32.
User avatar
LephePartenaire
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 16.8%
 
Posts: 387
Images: 42
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Unread postby parisse » 17 Jun 2018, 19:02

Merci pour l'indication, mais je ne la comprends pas. Est-ce que je dois faire IsKeyDown(32) pour tester si AC/ON est enfoncé?
Comment fonctionne GetKey() si je veux utiliser quelque chose de plus propre? Le prototype que j'ai est le suivant
int GetKey(int*key);
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 88.1%
 
Posts: 3699
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Unread postby Lephe » 17 Jun 2018, 19:54

C'est ça. IsKeyDown(32) renvoie zéro si la touche AC/ON n'est pas pressée et un nombre non nul sinon (1 en l'occurrence). Ça marche pour toutes les touches, mais une seule à la fois.

Quant à GetKey(), on ne peut pas l'utiliser pour le problème spécifique de savoir si une touche est pressée sans arrêter le programme, mais le reste du temps, il faut la préférer à cette fonction IsKeyDown() pour plusieurs raisons :

- GetKey() contient plusieurs fonctions spécifiques à l'OS (catalogue, réglage du contraste, extinction de la machine)
- GetKey() endort le processeur pendant l'attente, alors que IsKeyDown() est typiquement utilisé dans une boucle

Après je ne sais pas comment tu comptes implémenter l'interruption du calcul avec cette procédure parce que ton programme ne sera pas averti tout seul si l'utilisateur appuie sur AC/ON (il faut le vérifier manuellement). Un timer serait peut-être une solution intéressante.
User avatar
LephePartenaire
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 16.8%
 
Posts: 387
Images: 42
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Unread postby parisse » 17 Jun 2018, 20:10

Il y a dans giac une fonction appelee control_c() qui est executee souvent (a chaque operation arithmetique ou lors des instructions de programmation de giac), c'est la que je voudrais tester que ON a ete activee. En fait ce n'est pas le fait qu'elle soit enfoncee qui m'interesse, mais qu'on a appuyé dessus.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 88.1%
 
Posts: 3699
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Unread postby Lephe » 17 Jun 2018, 20:16

Ça semble honnête comme méthode. Par curiosité, ça représente quelle fréquence d'exécution à peu près ?

Pour détecter que la touche a été enfoncée puis relâchée c'est plus compliqué (il faut au moins deux exécutions de control_c() en tout cas, pour une méthode simple). À voir ce qui est le plus pratique à utiliser ; en tous cas l'interpréteur Basic s'arrête dès qu'on appuie sur AC/ON, sans attendre le relâchement, donc en première approche ça semble suffisant.
User avatar
LephePartenaire
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 16.8%
 
Posts: 387
Images: 42
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Unread postby parisse » 17 Jun 2018, 20:56

La frequence d'appel de control_c depend de ce qu'on fait, si les calculs sont simples c'est tres frequent, du coup il vaudrait mieux pre-calculer les variables dans IsKeyDown, sinon ca risque de ralentir. Sauf erreur de ma part, word vaut 1 et bit vaut 2 pour le test
(0 != (keyboard_register[word] & 1<<bit));
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 88.1%
 
Posts: 3699
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Unread postby Lephe » 17 Jun 2018, 21:12

C'est ça. On obtient (sauf erreur à mon tour) un test simple :

Code: Select all
(*(volatile uint16_t *)0xa44b0002 & 0x4)

Cette expression vaut autre chose que zéro quand la touche AC/ON est pressée.
User avatar
LephePartenaire
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Level up: 16.8%
 
Posts: 387
Images: 42
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Unread postby parisse » 19 Jun 2018, 09:33

Mise a jour de https://www-fourier.ujf-grenoble.fr/~parisse/casio/test.g3a.
J'ai corrige un bug fort genant qui provoquait un reboot au lancement (sauf si Eigenmath avait ete utilisee auparavant, c'est pour ca que je ne l'avais pas vu!).
Les fonctions de calcul formel courantes (celles du catalogue) devraient fonctionner (y compris tabvar mais l'affichage n'est pas convaincant). C'est le moment de tester pour me faire remonter des problemes que je puisse les corriger a temps, si certains lyceens envisagent de l'utiliser pour le bac!
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 88.1%
 
Posts: 3699
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

PreviousNext

Return to Programmation

Who is online

Users browsing this forum: ClaudeBot [spider] and 5 guests

-
Search
-
Social TI-Planet
-
Featured topics
Grand Concours 2024-2025 - Programmation Python
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
904 utilisateurs:
>892 invités
>5 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)