π
<-
Chat plein-écran
[^]

question sdk graph 90+e/ portage CAS

Programmation et implémentation d'algorithmes.

Re: question sdk graph 90+e/ portage CAS

Message non lude parisse » 17 Juin 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
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3502
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Message non lude parisse » 17 Juin 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.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3502
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Message non lude Lephe » 17 Juin 2018, 18:46

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

Code: Tout sélectionner
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.
Avatar de l’utilisateur
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 67.7%
 
Messages: 386
Inscription: 15 Juin 2018, 19:53
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Message non lude parisse » 17 Juin 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);
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3502
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Message non lude Lephe » 17 Juin 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.
Avatar de l’utilisateur
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 67.7%
 
Messages: 386
Inscription: 15 Juin 2018, 19:53
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Message non lude parisse » 17 Juin 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.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3502
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Message non lude Lephe » 17 Juin 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.
Avatar de l’utilisateur
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 67.7%
 
Messages: 386
Inscription: 15 Juin 2018, 19:53
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Message non lude parisse » 17 Juin 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));
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3502
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Message non lude Lephe » 17 Juin 2018, 21:12

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

Code: Tout sélectionner
(*(volatile uint16_t *)0xa44b0002 & 0x4)

Cette expression vaut autre chose que zéro quand la touche AC/ON est pressée.
Avatar de l’utilisateur
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 67.7%
 
Messages: 386
Inscription: 15 Juin 2018, 19:53
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: question sdk graph 90+e/ portage CAS

Message non lude parisse » 19 Juin 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!
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.2%
 
Messages: 3502
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

PrécédenteSuivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 9 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2626 utilisateurs:
>2616 invités
>6 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)