Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/03/2014, à 16:16

pursang

Impression 3D

Bonjour,
J'ai fabriqué mon imprimante 3D en exploitant la solution électronique ARDUINO. Cet équipement nécessite l'installation des outils ARDUINO intégré à Ubuntu 13.10, version de la distribution d'Ubuntu qui équipe la machine avec laquelle j'imprime.
J'utilise le logiciel "printrun" pour imprimer à partir de fichier GCode, produits sur une autre machine avec Slic3r. Tout comme les outils ARDUINO, ce logiciel fait partie de la bibliothèque intégrée d'Ubuntu.
Tout c'est parfaitement passé à l'installation, il ne manque aucune dépendance, et le logiciel fonctionne. Il voit bien l'imprimante, s'y connecte, et je peux imprimer sans aucun problème.
Cependant, je n'ai pas d'autre choix que de lancer le logiciel en tant que super-utilisateur pour que ce dernier puisse se connecter à l'imprimante, qui dans ce cas, bien qu'elle soit reliée en USB est vue comme un périphérique série connecté à un port COM ?!...
Ce n'est pas que ce soit gênant, mais j'ai en parallèle entrepris de créer mon propre logiciel d'impression en Java, il fonctionne sous Windows, mais je ne voudrai pas qu'il subisse la même contrainte que printrun.
Voilà ma question :
Est-ce qu'il existe un moyen de faire fonctionner printrun sans être obligé de le lancer via gksu ?
Est-ce que je me trompes en pensant que c'est l'accès au port COM qui impose cette restriction administrative ?

Merci à vous.

Hors ligne

#2 Le 25/03/2014, à 21:54

J5012

Re : Impression 3D

http://www.freesoftwaremagazine.com/art … vers_linux by ggl

les pilotes d'impression sont lances par le service d'impression, qui a donc acces aux droits d'execution...

dans linux, c'est le moyen utilise par le peripherique qui definit sa categorie en serial ou non, et non son connecteur com ou usb / autres ... si ton pilote communique en mode caracteres, il est categorise comme serial; par comparaison, presque tous les supports de stockage sont en mode blocs.

Dernière modification par J5012 (Le 25/03/2014, à 21:55)

Hors ligne

#3 Le 27/03/2014, à 16:19

pursang

Re : Impression 3D

Bonjour J5012,
Merci pour votre contribution à ce Forum, et merci pour votre réponse.
Cependant, je penses m'être mal exprimé. J'ai probablement fait un mauvais choix en intitulant mon post "Impression 3D".
Ce type "d'impression" n'est pas à considéré comme une impression classique qui consiste à préparer un "document" que l'on confie ensuite au services d'impression du système hôte.
En fait, une imprimante 3D est un périphérique USB qui dispose de son propre Driver. Ce driver monte dynamiquement l'imprimante lors de sa connexion USB, et la rend disponible à travers un port COM. Ce port COM est ajouté au système par le driver lorsque l'imprimante est raccordée. Si on débranche l'imprimante, le port COM n'existe pas. Ensuite, on ne crée pas un travail d'impression que l'on confie aux services d'impression local puisque l'imprimante 3D n'est pas vue comme une imprimante, mais comme un simple périphérique de communication. Le logiciel PrintRun qui permet d'exploiter l'imprimante 3D établi directement une connexion avec le port COM représentant l'imprimante. Une fois cette connexion établie, le dialogue entre la machine et l'imprimante se fait par messages textes. Ces messages sont écrits dans un langage spécifique nommé GCODE. Ce langage permet de décrire les mouvements que la tête d'impression doit faire, et pilote l'extrusion (dépose du plastique en fusion sur un plateau).
Donc, mon constat est que lorsque le logiciel tente d'établir la connexion avec le port COM représentant l'imprimante, il a besoin de droits ?!
En effet, si je lance le logiciel "normalement", en double-cliquant sur son icône dans ma session de travail, il se lance sans problème. Mais lorsque je clique sur le bouton [Connecter], ce dernier lève une erreur de Timeout car l'imprimante ne lui répond pas...
Par contre, si je prends soin de lancer le logiciel via gksu, alors, lorsque je clique sur le bouton [Connecter], la connexion s’établit immédiatement et au bout de quelques secondes, le logiciel indique l'imprimante comme étant prête, et affiche les relevés de températures. Bref, fonctionne correctement.
Je ne comprends pas pourquoi ?
Et j'aimerai que ce logiciel se comporte comme n'importe quel logiciel pouvant être utilisé par n'importe quel utilisateur du système. Est-ce possible ? et comment...

En tout cas, j'ai apprécié que vous vous donniez la peine de répondre. Je vais de mon côté continuer à chercher et évidement, si je trouve la réponse je ne manquerai pas de la préciser ici et reste attentif à toute autre réponse pouvant me permettre de comprendre.

Merci à vous tous.

Hors ligne

#4 Le 27/03/2014, à 20:48

J5012

Re : Impression 3D

ce tu dis s'inscrit bien dans ce que j'ai resume ...

pour les droits d'execution, il n'y aura pas de solutions tant que le programmeur n'aura pas utiliser les ressources systemes de linux : qui sont de separer le programme executant les donnees utilisateurs de l'acces aux ressources (imprimante, terminal, modem, cdrom, dd, etc...)

que ton periph imprime ou communique ... si ton executeur traite les donnees et accede au periph sans utiliser les ressources du systeme, il est tout a fait logique que son programme n'ait que les droits de l'utilisateur ...

Hors ligne

#5 Le 28/03/2014, à 21:05

pursang

Re : Impression 3D

Ok, merci, j'ai enfin compris ce que vous essayez de m'expliquer.
Donc, si j'ai bien tout compris, le logiciel que j'écris moi en Java, un langage indépendant de la plateforme sous-entend que les fonctionnalité du système seront forcément sollicitées. Donc, ça devrait fonctionner. Je vais contrôler tout cela de plus près.
Merci pour votre patience.

Note :
Si mes tests sont concluant, je positionnerai ce post en [Résolu], dans le cas contraire, je me permettrai de le compléter et de continuer de chercher.

Bonne journée.

Hors ligne

#6 Le 30/03/2014, à 06:13

J5012

Re : Impression 3D

dit autrement :
- un programme de gestion de ton periph doit se lancer au boot comme un demon (un service), le cas du programme cups par ex pour les imprimantes
- un programme client y accede dans l'espace utilisateur pour imprimer

http://www.unixgarden.com/index.php/lin … -ou-deamon

Hors ligne

#7 Le 31/03/2014, à 15:38

pursang

Re : Impression 3D

Ok, je viens de faire mes premiers essais avec mon logiciel écrit en Java. Après avoir compris ce que vous m'avez expliquez, comme je le craignais, là aussi je n'arrive à me connecter que si le logiciel est lancé en super-utilisateur.
Donc, quelque part ça tombe bien, puisque mon idée de base est développer un logiciel permettant de partager mon imprimante 3D sur mon réseau pour que toute la famille puisse en profiter.
Je vais donc créer un logiciel en deux partie, type client/serveur. La partie serveur représentera une file d'impression et fonctionnera sur le poste auquel l'imprimante est raccordée. Cette partie sera donc du type service système, avec une petite interface graphique permettant de visualiser la file d'attente. Elle écoutera un port réseau pour réceptionner du GCode à imprimer. Ensuite, c'est le service système que représentera ce logiciel qui se connectera à l'imprimante pour envoyer le GCode. Si j'ai bien tout compris, ma seule difficulté sera de rendre ce programme écrit en java exécutable par le système au démarrage de ce dernier.
J'ai donc suivi avec attention le lien que vous avez fourni dans votre dernier message, je crois que j'ai compris comment faire.
Je vais donc m'y atteler, et dés que j'aurai un résultat, je donnerai tous les détails.

Dernière modification par pursang (Le 31/03/2014, à 16:14)

Hors ligne