Introduction :

Depuis pas mal de temps, j’utilise un écran Nextion, de chez Itead, une startup chinoise. Vous le connaissez peut-être, Philippe DEMERLIAC en a déjà parlé. Il me sert pour un projet en électronique que je vous dévoilerais bientôt. J’en étais ravi, la documentation est bien fournie, l’écran est facile à programmer et il a des bonnes performances comparés aux autres écrans pour arduino. Néanmoins quelques limitations qui peuvent être handicapantes, comme impossibilité de déplacer des objets, cet écran restait jusqu’ici, un bon achat.

Problème :

Cependant, hier en voulant lancer une compilation, le code d’erreur “Compiled code is too many” m’empêchait de terminer la compilation. L’erreur étant assez explicite, sans pour autant être très précise, j’ai alors supprimé certains éléments temporairement. L’erreur alors disparaissait. Cela pourtant me paraissait étrange car le fichier généré pesait 0.5 Mo ce qui rentre largement dans les 16 Mo annoncés par le constructeur.

J’ai alors décidé de contacter le support pour obtenir de l’aide, voici la réponse que j’ai eu :

Original :

Editor Guide Part 1
Section 9 Attributes Pane and Section 10 User Event Code
states:

There is a hard limit for a combined tally of attributes and user code of 65534.

It is neither caused by the amount of storage (16MB) Flash nor a lack of SRAM (3584 Bytes), it would be caused as a combined tally of all Attributes used added with all User Event Code. As clearly stated, this is a hard limit of word range (0..65535, 65535 excluded) for an allowed total 65534. As such:

Your total tally of attributes and user code of 72088 exceeds the hard limit.

You can purchase Enhanced Support if you wish for us to look at your code and suggest changes to help streamline your code. Or you can choose to streamline your code.

https://www.itead.cc/enhanced-support-tickets.html

Let us know how you wish to proceed.

Patrick de chez Itead

Traduit :

Guide de l’éditeur Partie 1
Volet Attributs Section 9 et Code d’événement utilisateur Section 10
États:

Il existe une limite stricte d’attributs et de code utilisateur combinés de 65534.

Il n’est ni causé par la quantité de mémoire Flash (16 Mo) ni par le manque de mémoire SRAM (3584 octets), mais par une limite stricte d’attributs et de code utilisateur combinés de 65534. Comme indiqué clairement, il s’agit d’une limite stricte de la plage de mots (0..65535, 65535 exclue) pour un total autorisé de 65534. En tant que tel:

Le nombre total de vos d’attributs et de votre code est de 72088 et donc dépasse la limite stricte.


Vous pouvez faire appel au support technique amélioré si vous souhaitez, afin que nous examinions votre code et suggérons des modifications pour le réduire. Ou vous pouvez choisir d’optimiser votre code vous-même.

https://www.itead.cc/enhanced-support-tickets.html

Dites-nous comment vous souhaitez procéder.

Patrick de chez Itead

Traduit :

Donc en gros, d’après sa réponse, le soucis ne vient pas de la mémoire mais d’une sorte d’une limite logicielle qui est fixée a 65535 (je n’ai pas tout compris).

Solutions :

Quatre solutions s’offrent alors à moi :

La première solution, et la plus chère, comme le support m’a proposé, est de faire appel au support amélioré. Cependant cela à un cout, il me frauda débourser 215.13 € pour bénéficier d’une aide qui n’est même pas garantie. Cela ne vaut pas la peine pour la taille de mon projet.

J’ai remarqué sur le guide du Nextion Editor, que l’IDE est basé sur une sorte de “template” appelé “Bianyi”. Après quelques recherches sur Google, je suis tombé sur la page GitHub du projet. Cette template à été réalisé avec Visual C++ ce qui me permettrait de modifier le code source et éventuellement repousser cette limite logicielle. Cependant cette solution me semble trop ambitieuse, de plus le code est commenté en chinois, ce qu’il m’oblige à utiliser Google Translate tout le temps. Bref je laisse tomber cette option.

Ma troisième solution est de recommencer toute la partie graphique sur un autre type d’écran. Mais cela est extrêmement frustrant après tant de temps de travail.

La quatrième et dernière option est de faire de l’optimisation et si besoin et de découper mon code sous forme de « packs» qui comprennent certaines parties de mon programme. L’utilisateur pourra alors installer seulement les modules dont il a besoin. Cela requiert, pour éviter aux utilisateurs novices de devoir faire la manipulation, la création d’un guide ou d’un programme qui se charge de tout. C’est la solution la plus viable que je trouve la plus viable.

Bref, vous l’aurez compris, c’est un véritable casse-tête…

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

%d blogueurs aiment cette page :