π
<-
[^]

[Ti 83 premium CE] Lire une OS_variables

Assembleur, Axe, ICE, BBC Basic...

[Ti 83 premium CE] Lire une OS_variables

Unread postby axel stefanini » 08 Oct 2018, 21:20

Bonjour;
J'aimerais pouvoir accéder depuis mon programme en C, à une variable très spécifique ; en effet lorsqu'on définit une équation, on peut faire une manipulation très simple par la suite, on peut changer la valeur de X en Ti basique, puis taper Y1 en entrée, et on obtient le résultat de la fonction avec la valeur de X demandé.
Lorsque l'équation Y1 équivaut à X², on peut obtenir le résultat de la fonction... J'aimerais en C pouvoir y accéder cependant, je n'y arrive pas,

screenshot_CPRGMCE.png
screenshot_CPRGMCE.png (3.45 KiB) Viewed 810 times


Je vous donne le lien de mon projet builder ; https://tiplanet.org/pb/?id=108416_1538 ... 8b7cf60fa6
J'ai déjà jeter un coup d'oeil au toolchaine sans succès ; https://ce-programming.github.io/toolch ... 27c94b6892

En utilisant le logiciel CEme la variable est "ans" ;

cemu Emulator.PNG


Merci beaucoup!!
User avatar
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 53.5%
 
Posts: 18
Joined: 19 Sep 2016, 17:48
Gender: Not specified

Re: [Ti 83 premium CE] Lire une OS_variables

Unread postby Adriweb » 09 Oct 2018, 06:13

Mateo m'a contacté pour en savoir plus (il n'etait pas sur de ta demande), mais il a pu finir par repondre entre temps si j'ai bien suivi :)

Bref, en effet ca se fait avec les fonctions de la lib fileioc, il y a des exemples sur https://github.com/CE-Programming/toolc ... src/main.c
En prenant ca en consideration, vu qu'on peut lire et ecrire des variables TI-Basic, quel serait le probleme desormais ?
User avatar
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 50.2%
 
Posts: 12384
Images: 1079
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: [Ti 83 premium CE] Lire une OS_variables

Unread postby axel stefanini » 09 Oct 2018, 18:01

Bonsoir!

Alors oui il m'a répondu, et cela m'a beaucoup aidé à comprendre certaine chose autour des variables dans la calculatrice.
Cependant, j'ai malheureusement compris que l'histoire de la variables "Ans" au final ne m'étais pas utile...

Je cherche à faire calculé l'OS à ma place, j'aimerais non pas récuper la variable "Ans" qui est juste la dernière variable calculé, mais j'aimerais obtenir la valeur de la donnée Y1 que calcul l'OS et stock ensuite dans la var Ans.
Et j'ai déjà regardé plusieurs fois les nombreux exemples proposé, et la variables Y1 existe en equation et non pas en résultat, cependant en Ti basic on peut obtenir le résultat juste en tapant Y1 dans les entrées...

Voila mon le problème qui persiste ^^
Merci!
User avatar
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 53.5%
 
Posts: 18
Joined: 19 Sep 2016, 17:48
Gender: Not specified

Re: [Ti 83 premium CE] Lire une OS_variables

Unread postby Hamza.S » 09 Oct 2018, 18:15

inspire toi de ça : https://github.com/nathanfarlow/Symboli ... tor/main.c

Code: Select all
ti_var_t y1, y2;
...
y1 = ti_OpenVar(ti_Y1, "r", TI_EQU_TYPE);

après je ne sais pas s'il y a autre chose à faire pour en arriver là
Image
User avatar
Hamza.SAdmin.
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 5.7%
 
Posts: 3437
Images: 17
Joined: 07 Nov 2014, 00:43
Gender: Male
Calculator(s):

Re: [Ti 83 premium CE] Lire une OS_variables

Unread postby axel stefanini » 09 Oct 2018, 18:29

Hamza.S wrote:inspire toi de ça : https://github.com/nathanfarlow/Symboli ... tor/main.c

Code: Select all
ti_var_t y1, y2;
...
y1 = ti_OpenVar(ti_Y1, "r", TI_EQU_TYPE);

après je ne sais pas s'il y a autre chose à faire pour en arriver là


J'ai déjà regardé plusieurs fois ce code en effet, il est très instructif, cependant il traite non pas un résultat mais une sorte de tableau dans lequel est stocké la l'équation purement en écriture formel.
Et je pense que créer un systeme capable de calculer un résultat à partir de cela est assez compliqué. En effet il faudrait créer tout un système capable de calculer la fonction en respesctant les règles de calcul formel. Ce qui reviendrait alors, à surchargé la calculatrice...

J'ai également déjà essayé de stocker la variables Y1 dans un real_t après l'avoir récupéré via la commande que tu as cité ici en esperant que l'OS allait me la calculer toute seule, mais sans résultat...
User avatar
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 53.5%
 
Posts: 18
Joined: 19 Sep 2016, 17:48
Gender: Not specified

Re: [Ti 83 premium CE] Lire une OS_variables

Unread postby Hamza.S » 09 Oct 2018, 18:49

Ça a recopié Y1 tel qu'elle est écrite. C'est comme la fonction équ>string( donc essaie de comprendre comment ça fonctionne. Possible qu'il fait aussi ce qui tu veux
Image
User avatar
Hamza.SAdmin.
Niveau 17: GM (Grand Maître des calculatrices)
Niveau 17: GM (Grand Maître des calculatrices)
Level up: 5.7%
 
Posts: 3437
Images: 17
Joined: 07 Nov 2014, 00:43
Gender: Male
Calculator(s):

Re: [Ti 83 premium CE] Lire une OS_variables

Unread postby axel stefanini » 09 Oct 2018, 19:53

Alors actuellement j'arrive à ouvrir la virable y1 mais pas à recupéré ce qu'il y a dedans ;

Code: Select all

ti_var_t y1;
equ_t    *my_equ;

y1 = ti_OpenVar(ti_Y1, "r", TI_EQU_TYPE);


Ainsi il est impossible de cast une ti_var_t en une equ_t voilà quelques trucs que j'ai déjà essayé ;
Code: Select all
my_real = (real_t)y1; //erreur
my_real = os_FloatToReal((float)ti_GetDataPtr(y1)); //erreur
   
result = (int)y1; //Donne 0 pour n'importe quelle fonction Y1 et valeur de X.
result = (int)ti_GetDataPtr(y1); //Donne 211 pour n'importe quelle[..]

    txt[0] = (char)y1; //Vide completement

etc...



Je rappel que l'equation en tant que tel ne m'interesse pas, car elle ne me servirait à rien, il me faudrait le résultat que la calculatrice calcul.

En faite, ce que j'ai besoin de faire en C, cela ce fait super facilement en Ti-Basic ;
Code: Select all
­2→X
1→I
While I<10
Y₁→L₁(I)
I+1→I
X+0.5→X
End


Merci!
User avatar
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 53.5%
 
Posts: 18
Joined: 19 Sep 2016, 17:48
Gender: Not specified

Re: [Ti 83 premium CE] Lire une OS_variables

Unread postby Adriweb » 10 Oct 2018, 02:36

En fait, Y1 est une equation/"expression", donc tu n'auras pas de resultat de call en la demandant - mieux vaut stocker au prealable Y1(2) (par exemple, X=2 dans ce cas) dans une variable, puis la recuperer cote C. Il y a possblement mieux a faire...
User avatar
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 50.2%
 
Posts: 12384
Images: 1079
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: [Ti 83 premium CE] Lire une OS_variables

Unread postby axel stefanini » 10 Oct 2018, 19:47

Le problème c'est que mélanger des programmes en Ti basic et C va être vite problématique...
En soit j'aimerais calculé un grand nombre d'image de la fonction Y1 pour des valeurs de X et Y donnée.

J'ai beaucoup réflechi, et je me suis demandé,
Lorsque on entre Y1 et qu'on obtient le résultat, l'OS réalise le calcul à notre place et le stock dans la variables "Ans", grâce au désassemblage de l'émulateur CEmu, serait-il possible de récupérer en Assembleur la fonction qui se charge de faire le boulot ?
En effet, dans la documentation du fichier "fileioc.h File Reference" nous pouvons voir que ;
Code: Select all
/* Some more definitions using Ans */
#define TI_ANS_TYPE (0x00)
#define ti_Ans      ("\x72\0")


Grâce à ces informations, serait-il possible de retrouver quelle(s) fonction(s) stock(ent) le résultat de Y1 dans la cellule de mémoire correspondant à la variables "Ans" ?
Ainsi il """suffirait""" de rappelle cette/ces même(s) fonction(s) via ;
Code: Select all
_OS()
void _OS   (   void(*)(void)    function   )   
Use this function to call assembly functions in the OS and Bootcode i.e. _OS( asm_ArcChk );


Voici ce que j'ai sur CEmu après quelques recherche ;
Ans.PNG
Ans.PNG (7.11 KiB) Viewed 664 times

Ans2.PNG



Merci!
User avatar
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 53.5%
 
Posts: 18
Joined: 19 Sep 2016, 17:48
Gender: Not specified

Re: [Ti 83 premium CE] Lire une OS_variables

Unread postby axel stefanini » 10 Oct 2018, 20:36

Après avoir passé beaucoup de temps dans la documentation j'ai trouvé une commande très intéréssante ;

En effet il existe une fonction appellé ;

Code: Select all
os_StrToReal()
real_t os_StrToReal   (   const char *    string,
char **    end
)   
This converts a ti-ascii string to a ti-float.


J'ai donc combiné cette fonction avec un Os_input.

Voici mon code ;

Code: Select all
#define INPUT_SIZE  10
#define RESP_SIZE   20

/* Main Function */
void main(void) {

    /* Declare some variables */
    real_t    real_value;
    char inputBuffer[INPUT_SIZE];
    char *str = malloc(10*sizeof(char));
    char** pointer = NULL;

    /* Clear the homescreen */
    os_ClrHome();

    /* Ask the user to type a string, which gets stored in `inputBuf` */
    os_GetStringInput("What is f? ", inputBuffer, INPUT_SIZE);



    strcpy(str, inputBuffer); // copy the contents of inputBuffer to str

    pointer = &str;

    real_value = os_StrToReal(str,&str+8);

    ti_SetVar(TI_REAL_TYPE, ti_A, &real_value);

    while( !os_GetCSC() );

}


Comment puis-je faire pour que dans la partie os_StrToReal(char *,char**); Je puisse avoir une commande parfaitement fonctionnel ? Car avec mon code elle ne copie que le premier caractère intégré.

Merci!
User avatar
axel stefanini
Niveau 8: ER (Espèce Rare: nerd)
Niveau 8: ER (Espèce Rare: nerd)
Level up: 53.5%
 
Posts: 18
Joined: 19 Sep 2016, 17:48
Gender: Not specified


Return to Langages alternatifs

Who is online

Users browsing this forum: No registered users and 1 guest

-
Search
-
Featured topics
Avantages VIP et goodies pour les donateurs !
Offre TI-Planet/Jarrety pour avoir la TI-83 Premium CE avec son chargeur pour 79,79€ port inclus !
Offre TI-Planet/Jarrety pour avoir la TI-Nspire CX CAS à seulement 130€ TTC port inclus!
Jailbreake ta TI-Nspire avec Ndless et profite des meilleurs jeux et applications !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

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 
-
Stats.
3332 utilisateurs:
>3205 invités
>123 membres
>4 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)