Page 1 sur 1

[Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 08 Oct 2018, 21:20
de axel stefanini
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 Kio) Vu 4894 fois


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!!

Re: [Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 09 Oct 2018, 06:13
de Adriweb
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 ?

Re: [Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 09 Oct 2018, 18:01
de axel stefanini
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!

Re: [Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 09 Oct 2018, 18:15
de Hamza.S
inspire toi de ça : https://github.com/nathanfarlow/Symboli ... tor/main.c

Code: Tout sélectionner
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à

Re: [Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 09 Oct 2018, 18:29
de axel stefanini
Hamza.S a écrit:inspire toi de ça : https://github.com/nathanfarlow/Symboli ... tor/main.c

Code: Tout sélectionner
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...

Re: [Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 09 Oct 2018, 18:49
de Hamza.S
Ç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

Re: [Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 09 Oct 2018, 19:53
de axel stefanini
Alors actuellement j'arrive à ouvrir la virable y1 mais pas à recupéré ce qu'il y a dedans ;

Code: Tout sélectionner

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é ;
Show/Hide spoilerAfficher/Masquer le spoiler
Code: Tout sélectionner
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: Tout sélectionner
­2→X
1→I
While I<10
Y₁→L₁(I)
I+1→I
X+0.5→X
End


Merci!

Re: [Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 10 Oct 2018, 02:36
de Adriweb
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...

Re: [Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 10 Oct 2018, 19:47
de axel stefanini
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: Tout sélectionner
/* 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: Tout sélectionner
_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 ;
Show/Hide spoilerAfficher/Masquer le spoiler
Ans.PNG
Ans.PNG (7.11 Kio) Vu 4748 fois

Ans2.PNG



Merci!

Re: [Ti 83 premium CE] Lire une OS_variables

Message non luPosté: 10 Oct 2018, 20:36
de axel stefanini
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: Tout sélectionner
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: Tout sélectionner
#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!