Aller au contenu

GO Print

[Dev] AlfaWise U20x-U30 : Marlin 2.x (firmware alternatif)


CacaoTor

Messages recommandés

Il faudrait faire un fichier cpp par ecran, car la, avec tout dans extui_lvgl.cpp, ca devient vite le bordel. On peut gerer les etats dans ce fichier ,et coder les ecrans dans un fichier separe....

Bref, c'est juste un "proof of concept" jusque la, mais ca a le merite de marcher. 

 

Bon code! 

 

@sinseman44 @Epsylon3

Je vous ai envoye le lien egalement. 

 

A+

Lien vers le commentaire
Partager sur d’autres sites

@boleofr Auriez vous, cher monsieur, une adresse Github??? Je serai enchanté de pouvoir partager mes travaux avec vous. 

En PJ, le zip des icônes du moment. 50x50 semble la bonne taille. on peut faire varier la taille en X, mais en Y, cela n'est pas joli, car le texte place en dessous des icones n'est alors plus aligne. 

Longer3D_images.zip

Lien vers le commentaire
Partager sur d’autres sites

@sensei73

Je precise, dans le GIT, c'est configure pour booter en direct, sans le boorloader, en utilisant le ST Link. 

si tu veux charger le  code par la SD card, il faut decommenter la ligne suivante dans platformio

 

#extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103VE_longer.py
Lien vers le commentaire
Partager sur d’autres sites

@Hobi Oki super taf!  Je vais me regarder au calme! Car la je me demande si je ne vais créer une VM sous windows avec VS dessus tellement l'émulateur bug sous osx avec eclipse...

Modifié (le) par sensei73
Lien vers le commentaire
Partager sur d’autres sites

Tu peux même charger visual studio version gratuite.... tu n auras même plus besoin de vm sauf si ton pc est celui du bureau ! 

edit : ok tu as un mac... bon courage!

Modifié (le) par Hobi
Lien vers le commentaire
Partager sur d’autres sites

@Hobi Tu peux regarder de ton coté, j'essaye désespérément de convertir cette icône, et je n'obtiens qu'une image noire de mon coté... voir si c'est mon simulateur qui bug, le convertisseur online...

 

nozzle.png

Modifié (le) par sensei73
Lien vers le commentaire
Partager sur d’autres sites

@sensei73

Normal, la conversion de couleur a plante, comme chez moi. Je suis parti du png, que j'ai charge direct dans le convertisseur online. 

Dans le fichier .C en sortie, il y a les deux couleurs définies comme noir... 

Change donc avec ca :

#include "lvgl/lvgl.h"

#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif

#ifndef LV_ATTRIBUTE_IMG_HOTEND
#define LV_ATTRIBUTE_IMG_HOTEND
#endif

const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_HOTEND uint8_t hotend_map[] = {
  0xFF, 0xFF, 0xFF, 0xFF,     /*Color of index 0*/
  0x00, 0x00, 0x00, 0xff,     /*Color of index 1*/

 

Couleur 0 > blanc. Et la tu verras ton icone. Je n'ai charge dans le convertisseur que des BMP, avec 2 , 4 ou 256 couleurs. 4 pose problème avec des erreurs. 

Essaie donc de convertir ton icone avec windows paint d'abord ( ou n'importe quel editeur graphique de base sous macos). et tu verras aussi que la qualité de l'icone est pas terrible. Peut être aussi un peu trop grande. 

 

A+

Modifié (le) par Hobi
Lien vers le commentaire
Partager sur d’autres sites

en 256 couleurs, c'est normal...icone 50x50. Ça prend 3500 bytes. on peut bien sur optimiser, et contourner le bug du convertisseur. 

il faut faire attention lors de la réduction de l'espace colorimétrique . Je passe par paint, sous windows, qui permet de constater les dégâts avant la conversion. 

hotend5050.c

Modifié (le) par Hobi
Lien vers le commentaire
Partager sur d’autres sites

@Hobi Merci, t'es un chef! Je vais essayer de refaire l'interface de la U30 Pro, je la trouve plutôt agréable. Qu'en penses-tu? Du coup j'ai télécharger leurs fichiers images! Ils se sont pas fait chier!!!! Tout en bmp avec des zones cliquables! 

Je ne pense pas partir sur le même chemin, mais pfiouu c'est du boulot!!! littlevgl c'est puissant, mais c'est compliqué!! Rien que pour faire un rond ou une barre...! 

001_menu_home.bmp

Lien vers le commentaire
Partager sur d’autres sites

Yes les icônes sont sympa. J ai pris des icônes sur Google mais celles là sont sympa.

 

littlelvg compliqué? Pas trop et surtout le code du poc tourne déjà... tu l as flashe sur ton imprimante? 
autre avantage : c est très compact et rapide.

en gros, a part creer des icones, et faire un cut and paste du code pour creer le boutons/images/icones, y'a plus grand chose a faire. 

je vais finir le poc avec deux pages : print et move. J ai commencé à réorganiser les menus pour les mettre dans un répertoire. 

Modifié (le) par Hobi
Lien vers le commentaire
Partager sur d’autres sites

@sensei73 tu as trouvé les fichiers images ou? Je vais tout charger

 

Edit : ok, github en direct...

https://github.com/LONGER3D/Alfawise_U30_Pro_Screen_FW

Modifié (le) par Hobi
Lien vers le commentaire
Partager sur d’autres sites

Non pas flashé sur l'imprimante, pour l'instant je me contente de jouer avec l'interface pour voir ce que je peux faire, après je vais coder tout sur le simulateur, et seulement après je ferai le lien avec l'imprimante!  Mais je vois qu'on peux faire des trucs sympa, avec des themes etc... Pour l'instant, j'expérimente !

Lien vers le commentaire
Partager sur d’autres sites

ok. Ce que je voulais dire c'est que toute la base fonctionne deja, au niveau refresh ecran, touch, etc, et que tu peux naviguer un tout petit peu. Pas si dur que ca de finir. 😉

Je viens de cloner le git de Longer U30 Pro. Allez, je vais changer mes icones pas belles. 

Lien vers le commentaire
Partager sur d’autres sites

@sensei73 

Images chargees. Pour les ronds, tu as besoin de cercles... comme des Arcs. Et des gauges... 🙂 

 

Tu veux quelle page portee? choisis!

Modifié (le) par Hobi
Lien vers le commentaire
Partager sur d’autres sites

@Hobi Pour les ronds et les barres c'est fait, mais comprendre comment cela marche....il faut du temps!!! 

 

Il en faut du code pour un rond et une barre!

Ex: 

	static lv_style_t style_new;
    lv_style_copy(&style_new, &lv_style_pretty);
    style_new.body.radius = LV_RADIUS_CIRCLE;
    style_new.body.main_color = LV_COLOR_WHITE;
    style_new.body.border.color = LV_COLOR_BLACK;
    style_new.body.border.opa = 255;
    style_new.body.border.width = 2;
    style_new.body.opa = 0;
    style_new.text.color = LV_COLOR_RED;
    style_new.text.letter_space = 10;
    style_new.body.main_color = LV_COLOR_BLACK;

	lv_obj_t * obj1;
    obj1 = lv_obj_create(scr, NULL);
    lv_obj_set_size(obj1, 65, 65);
    lv_obj_set_style(obj1, &style_new);
    lv_obj_align(obj1, scr, LV_ALIGN_IN_TOP_LEFT, 70, 35);

	static const lv_point_t point_on_line[] = {{1, 0}, {50, 0}};
    lv_obj_t * line;
    line = lv_line_create(obj1,NULL);
    lv_line_set_points(line,point_on_line,2);
    lv_obj_align(line, obj1, LV_ALIGN_CENTER, 0, 2);
Modifié (le) par sensei73
Lien vers le commentaire
Partager sur d’autres sites

yes, mais ensuite, tu peux déplacer / highlights, etc, sans problèmes! scroll... et tuti quanti. 

Je suis en train de merdouiller pour faire un .cpp par menu avec les redéfinitions de variables. Je vais poster ça ce soir. 

J'ai déjà une petite icone Alfawise de maison dans le code. Il en faut une seule en noir et blanc. Pour la couleur.... LittleVGL gère! 

Modifié (le) par Hobi
Lien vers le commentaire
Partager sur d’autres sites

Bhein c'est l’idée! Apres, faut faire gaffe à la place mémoire. Des que tu change de page, faut faire un clean. Pour les flèches, il faut les définir en transparent et blanc ( 1 bit /pixel). Choisir la couleur, et la rotation au moment de la création. Pareil pour le home button. si tu prends l'icone Alfawise, sans la redéfinir, tu te retrouves avec des images en indexe 256 couleurs, et c'est 8 fois plus gros, et tu peux pas changer la couleur. 

Ton icone d'extrudeur est bien trop grosse ( cf / mémoire). Tu as du noir, du blanc, et différents niveaux de gris. Faut éviter ça.

J'ai 300Kb de code maintenant....

J'ai l'impression que tu commences à aimer.... Et en plus, tu peux très facilement faire du drag / drop. 

Edit : Tu peux définir ton icone d'extrudeur comme déplaçable , et en cliquant dessus avec ton doigt, ou ta souris... elle se déplace. Bon, sur l'imprimante, pas sur qu'il faille faire cela. le CPU est pas une bête de course. 

Modifié (le) par Hobi
Lien vers le commentaire
Partager sur d’autres sites

@sensei73

Je viens de poster mon dernier comit dans ma branch de dev, mais je merdouille dans les pointeurs de structures... si tu peux regarder.. je suis un noob en C... 

https://github.com/hobiseven/Marlin-2.0.5.3-l3D_lvgl/commit/b092ae024b36ae391c40e55a94060f7aba421fa2

Le code plante à cet endroit :

void onStartup() { 
 
     LCD_init();
 
    /*initialize the GUI state machine */
    (*lvgl_GUI).current_page = BOOT;
    (*lvgl_GUI).next_page = BOOT;
    lvgl_GUI->printing_status = false;

j'ai mélangé les pointeurs, et je vois pas ou. 

Lien vers le commentaire
Partager sur d’autres sites

Bon, je commence a comprendre mon probleme. C'est une subtilite entre les structures et pointeurs en C et en C++... dammned. 

Lien vers le commentaire
Partager sur d’autres sites

@sensei73

Ca avance doucement. J'ai corrigé l'erreur, et je travaille maintenant sur les icônes. Je vais reproduire le move de la U30 pro, et faire une page fonctionnelle. J'ai pushé. 

A+

Lien vers le commentaire
Partager sur d’autres sites

Question coloriage, je suis pas encore bien au point... 

J'ai decoupe le code, et il y a un fichier cpp par page. Ca compile....

Je dois faire encore 2 choses pour valider le concept :

1 : Une boide de dialogue pour choisir un fichier a imprimer, et mettre un bouton "Print" pour imprimer le fichier selectionne

2 : Connecter les fleches dans le menu move avec le code Marlin. 

 

Si tout ca ca marche, alors on pourra se lacher sur les dessins d'icones. Je ne sais pas encore si pour les fleches, il vaut mieux en avoir une en noir et blanc, et la placer dans un canvas, pour la faire tourner, et lui donner la bonne couleur, ou bien si il faut directement stocker les fleches avec la bonne orientation, et la bonne couleur ( orange, vert, bleu). 

Le code en mode release fait pour l'instant environ 30/40Kb de plus que le code de base avec l'interface LCD que tu connais. on a donc encore 240Kb de libre. En mode debug c'est + 50Kb.. 

Pour creer les Canvas, qui doivent allouer un buffer ( on recopie l'icone dans un buffer avec la bonne couleur, et la bonne orientation par exemple pour les fleches), il y a 24Kb de SRAM dispo. 

Allez, zou, je pars sur la mer!

Edit : avec une petite photo! 

IMG_1702.jpg

Modifié (le) par Hobi
  • +1 1
Lien vers le commentaire
Partager sur d’autres sites

@Hobi Bravo! Je viens de terminer le Layout du menu! Pfiouu pas simple de se mettre au C !!!

Qu'est ce que tu en pense? D'ailleurs comment je peux savoir combien de Ko prends mon projet et la mémoire nécessaire pour le faire tourner? @ noob inside!

Modifié (le) par sensei73
Lien vers le commentaire
Partager sur d’autres sites

Bhein c est simple, on va mettre tout ton code dans une branche de test et on compile ! Mets donc un zip ici avec ton code lvgl stp!

je vais tout mettre dans la branche sensei73_test

edit : c est très joli et les écrans qui défilent youpiiii mais je dois comprendre la structure pour effacer ce qui peut l être quand ça ne sert pas.

une indication: la taille allouée en ram par un canevas c est grossi modo la taille du dessin dans ton canevas

Modifié (le) par Hobi
Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • There was an error loading the RSS feed. Please check your settings and try again.
×
×
  • Créer...