1

Pourquoi la lecture des touches x y z et t est plus rapide que les autres touches avec la foctions _rowread?
Comment la changer pour la rendre identique aux autre touches?

2

parce qu'x, y z et t sont directement accessibles tandis que pour les autres lettres il faut passer par une touche violette sur Ti-89 tongue

3

Non mais meme quand on passe pas par alpha ca fait la meme chose pour = par exemple

4

Comment ça la lecture est plus lente confus ?
PS: tu devrais utiliser keytest qui utilise les mêmes mécanismes que _rowread mais qui est plus simple d'utilisation.
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

5

Je ne sais pas ou tu as vu ça !
Cyril Mottier [Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
Tuto sur l'utilisation de Vertel3 : Cliquez ici

6

Vu que rowread lit directement la matrice clavier je ne vois pas pourquoi il serait plus lent pour xyz que pour les autre touches.

Tu est sur de ce que tu avances Calculator?
avatar

7

Oui c sur si vous voulez je vous pass la source:
#define USE_TI89 
#include <tigcclib.h>

void _main(void)
{
	void tempo(void);
	clrscr();
	//Sauve auto int + désactivation
	INT_HANDLER save_int_1;
	save_int_1=GetIntVec(AUTO_INT_1);
	SetIntVec(AUTO_INT_1,DUMMY_HANDLER);
	//Déclaration des variables
	char c=0,exit=0,chaine[24],k=0;
	for(k=0;k<24;k++)chaine[k]=0;
	k=0;
	
	//Boucle de lecture des touches
	do
	{
		if(_rowread(0x5F)&0x10)c='a';
		if(_rowread(0x6F)&0x10)c='b';
		if(_rowread(0x77)&0x10)c='c';
		if(_rowread(0x7B)&0x10)c='d';
		if(_rowread(0x7D)&0x10)c='e';
		if(_rowread(0x5F)&0x08)c='f';
		if(_rowread(0x6F)&0x08)c='g';
		if(_rowread(0x77)&0x08)c='h';
		if(_rowread(0x7B)&0x08)c='i';
		if(_rowread(0x7D)&0x08)c='j';
		if(_rowread(0x5F)&0x04)c='k';
		if(_rowread(0x6F)&0x04)c='l';
		if(_rowread(0x77)&0x04)c='m';
		if(_rowread(0x7B)&0x04)c='n';
		if(_rowread(0x7D)&0x04)c='o';
		if(_rowread(0x5F)&0x02)c='p';
		if(_rowread(0x6F)&0x02)c='q';
		if(_rowread(0x77)&0x02)c='r';
		if(_rowread(0x7B)&0x02)c='s';
		if(_rowread(0x7D)&0x02)c='u';
		if(_rowread(0x6F)&0x01)c='v';
		if(_rowread(0x77)&0x01)c='w';
		if(_rowread(0x7B)&0x01)c=' ';
		if(_rowread(0x5F)&0x20)c='x';
		if(_rowread(0x6F)&0x20)c='y';
		if(_rowread(0x77)&0x20)c='z';
		if(_rowread(0x7B)&0x20)c='t';
		if((_rowread(0x7B)&0x40)&&k>0)//backspace
		{
			k--;chaine[k]=0;
			clrscr();
			printf("%s",chaine);
			tempo();
		}
		if(_rowread(0x7D)&0x40)//Clear
		{
			for(k=0;k<24;k++)chaine[k]=0;
			k=0;
			clrscr();
		}
		if(c!=0 && k<24)//affichage caractère
		{
			chaine[k]=c;
			clrscr();
			printf("%s",chaine);
			tempo();
			c=0;
			k++;
		}
		if(_rowread(0x3F)&0x1)exit=1;
	}while(exit==0);
	SetIntVec(AUTO_INT_1,save_int_1);

}

void tempo()
{
	long a;
	for(a=0;a<40000;a++);
}

8

Et alors?
Là tout dépend de ta boucle de temporisation de toutes façons.
Et pourquoi ici ne pas utiliser ngetchx() tout simplement?

Pour de nombreuses raisons il vaut mieux utiliser des timers (ils sont là pour ça).

Au lieu d'utiliser _rowread directement utilises la macro _keytest avec les pseudo-constantes en RR_xxx.
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

9

et puis les ifs c'est pas glop tu connais switch(machin) case blabl: ... ?

10

Ouai, et on peut utiliser scanf aussi?
Pour lé switch javoue sa serai bocou mieu que des ifs
Merci

11

Par contre si tu utilises des pseudo-constantes (cad des objets qui ne sont pas fixes a priori) tu ne peux pas utiliser de switch (qui s'attend à des vraies constantes).
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

12

essaie aussi d'utiliser _rowread_optimized (je te donne le nom de mémoire je ne pense pas que ça soit exactement ça, regarde dans l'index pour trouver la bonne orthographe^^), ça sera *beaucoup* plus efficace

napo> un switch n'est pas utilisable dans ce cas là car le truc que tu teste change tout le temps
avatar

13

Twindruff :
Et pourquoi ici ne pas utiliser ngetchx() tout simplement?


oui, pourquoi ?
c'est de loin la meilleure solution, tu économiserais énormément de place et tu pourrais gérer pleins d'autres charactères comme les lettres en majuscules, le underscore, etc...

14

Ouais même les lettres grecques et puis il y aurait pas cette sale boucle de temporisation tongue
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

15

Et il n'aurait pas à rediriger les intérruptions tongue

16

( au fait il faut rediriger l'ai1 et l'ai5 , pas seulement la 1 smile )
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/

17

Ouais en plus. cheeky Il se fait démonter : |, le pauvre
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

18

ok maerci