Posté le 18/09/2019 17:33
. En voici un exemple sur la famille des fx9860g :
Il faut noter également que la librairie peut être installée simultanément pour les deux plateformes, il suffit juste de l'installer 2 fois, une fois par plateforme.
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2025 | Il y a 133 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 21/09/2019 11:01 | #
Tu peux essayer
Elle marche avec le scrolling sur ma g35+E.
Elle marche sur l'émulateur du sdk, à l'exception du panic mais cela est du au sdk qui a un comportement différent en cas de crash
Ajouté le 21/09/2019 à 12:51 :
Bon, j'ai ajouté la fonction ll_pause() qui permet de suspendre l’exécution du programme, avoir la possibilité d'inspecter le log et reprendre l’exécution ensuite
De plus, à la suite d'une suggestion de @Kirafi, Il est possible d'envoyer plusieurs messages sur une seule ligne, et pour finir une ligne, on ajoute '\n'
Citer : Posté le 23/09/2019 18:39 | #
C'est formidable ta lib !
Pour le debug c'est vraiment top !!
Si on utilise des timers, est ce que cela met en pause les timers aussi quand on fait ll_pause() ?
Citer : Posté le 23/09/2019 19:08 | #
Ah, non, pas encore
Mais pour cela il faudrait également qu'elle restaure l'état des timers à la fin, ce qui doit être possible mais plus compliqué. En tous cas, je le mets sur ma TODO list
Citer : Posté le 23/09/2019 20:31 | #
C'est peut-être quelque chose à faire dans gint ça.
Citer : Posté le 29/09/2019 19:22 | #
J'ai un bug vraiment étrange
Alors voici une fonction d'affichage classique :
static void show_line(const log_line* l, int y)
{
dtext(1, y, &l->text[0], C_BLACK, C_NONE);
}
void ll_display_custom(log_line* line)
{
dfont(NULL);
dclear(C_WHITE);
for (int i=0; i<8; i++)
{
#ifdef FX9860G
show_line(line, 63 - 8*(i+1));
#endif
#ifdef FXCG50
show_line(line, 224 - 13*(i+1));
#endif
line=line->previous;
if (!line)
break;
}
dupdate();
}
void ll_pause()
{
dclear(C_WHITE);
log_line* line=current_line;
while (1)
{
ll_display_custom(line);
int key = getkey().key;
if (key==KEY_UP)
{
log_line* linet=line->previous;
if (linet)
line=linet;
}
if (key==KEY_DOWN)
{
log_line* linet=line->next;
if (linet)
line=linet;
}
if (key==KEY_EXIT)
break;
}
}
Donc normalement la fonction ll_pause affiche le contenu du log à l'écran, et laisse ensuite l'utilisateur scroller jusqu'à ce qu'il presse <EXIT>
Cette fonction marche parfaitement dans le cas de figure suivant :
ll_pause();
// d'autres actions
Mais par contre n'affiche qu'un écran blanc dans le cas suivant :
if (event.key==KEY_F1 && event.type==KEYEV_DOWN)
{
ll_pause();
}
Cependant, le clavier est géré de la même façon, il faut appuyer sur <EXIT> pour sortir de la fonction, ce qui prouve qu'elle est bien lancée
Avez vous des pistes ? Je n'y comprends strictement rien, surtout au niveau de l'affichage
Citer : Posté le 29/09/2019 19:26 | #
Est-ce que tu exécuterais pas ll_pause() dans une interruption dans le second cas ? La fonction dupdate() a besoin d'interruptions pour fonctionner correctement. Si c'est le cas, essaie dupdate_noint() qui est une gourouterie prévue pour ce cas précis.
Citer : Posté le 29/09/2019 19:35 | #
L'exécuter dans une interruption ? c'est à dire en cas d'exception ?
Je ne comprends pas, je fais les tests dans le même thread de calcul, c'est juste que avec le if rien ne s'affiche
Ajouté le 29/09/2019 à 20:00 :
Ah j'ai une autre piste, c'est la surutilisation de ram
Quand on envoie au delà d'un certain seuil de données, plus rien ne s'affiche
Citer : Posté le 29/09/2019 20:17 | #
Ça ou dans le callback d'un timer.
Citer : Posté le 04/04/2020 14:51 | #
En ces temps de confinement, j'ai remanié la lib
J'y ai ajouté:
- Un système de priorité complètement fonctionnel
- La fonction d'envoi supporte les arguments variable : En gros, si avant vous faisiez
sprintf(str, "le message %d %s", variable, "texte");
ll_send(str);
Maintenant tout se fait en une seule ligne :
- Enfin, la quantité de ram est personnalisable à l'execution
Et enfin, voici un tutoriel pratiquement complet pour l'utilisation (que j'aurais du faire depuis longtemps
> https://gitea.planet-casio.com/Milang/liblog/src/branch/master/README.md