Bonjour à tous,
En ce moment je développe un logiciel pour scanner des feuilles avec une imprimante Epson sous QtCreator.
Pour lister les scanners, je tape la commande "scanimage -L".
Je ne sais pas dans quell fichier s'écrit la liste des scanners par contre!
La commande suivante lance depuis un terminal fonctionne :
scanimage --device=epson2:net:192.168.1.90 --format=tiff >~/doc.tiff --color=gray
L'inconvéniant est que lorsque j'essaie de lancer cette ligne de code dans un QProcess, rien ne se passe.
Je pense que le QProcess ne voit pas le lien vers l'imprimante, si vous avez une idée !?
J'aimerais également savoir si il est possible de surveiller l'état d'avancement du process ou j'ai lance un scan d'une feuille.
Merci d'avance et bonne journée.
# Sortie standard et redirection
Posté par jihele . Évalué à 2.
Ben dans la sortie standard.
Si tu veux écrire dans un fichier, tu fais une redirection, comme tu as fait dans l'autre commande, avec l'opérateur ">" :
Mais dans ton cas il vaudrait mieux rattraper la sortie directement dans ton logiciel.scanimage -L > ~/monfichier
[^] # Re: Sortie standard et redirection
Posté par electro575 . Évalué à 1.
Oui c'est une bonne manière aussi.
Je récupère sur la sortie standard déjà oui mais on m'a suggéré ceci :
/bin/bash /chemindescanimage/scanimage --device=epson2:net:192.168.1.90 --format=tiff >~/doc.tiff --color=gray
Je ne sais plus ce que fais /bin/bash par contre !
[^] # Re: Sortie standard et redirection
Posté par jihele . Évalué à 2.
/bin/bash, c'est l'interpréteur de script.
scanimage doit être un script. En général, tu l'utilises directement :
Pour que ça marche, il faut que le fichier scanimage soit exécutable et qu'il commence par une ligne indiquant l'interpréteur (qui peut être bash, sh, voire python)./chemin/vers/mon_script --options > fichier_resultat
A défaut, et pour pas se compliquer, tu peux appeler bash explicitement comme dans ton exemple et tu es sûr que ça marche, même si c'est redondant.
Tu as peut-être copié cette ligne sur une page d'aide ou de tuto qui utilise la méthode explicite pour être sûr que ça fonctionne sans devoir ajouter les droits en exécution (chmod +x).
# Utilise libsane
Posté par Bernez . Évalué à 4.
Dans la mesure où tu écris un programme en Qt et non juste un petit script shell, à mon avis tu ferais mieux d'utiliser directement l'API de SANE plutôt que lancer des processus externes et traiter leur sortie.
[^] # Re: Utilise libsane
Posté par electro575 . Évalué à 1.
On peut utiliser l'API de SANE dans un programme Qt?
Je me suis un peu planté avec mon scanimage alors.
[^] # Re: Utilise libsane
Posté par jihele . Évalué à 2. Dernière modification le 17 novembre 2016 à 12:46.
C'est possible et il se peut même que ça existe déjà : https://sourceforge.net/projects/quiteinsane/
Je partage le commentaire de Bernez. Avant de lancer des commandes et de parser les sorties, c'est toujours bien de chercher s'il y a pas une API, une bibliothèque qui propose les fonctionnalités directement dans le langage qu'on utilise.
J'utilise plutôt Python, donc je connais pas l'écosystème C++, c'est pour ça que je ne suis pas entré là-dedans dans ma réponse, mais mon premier réflexe serait de chercher une bibliothèque en C++ (ou avec des bindings en C++) qui englobe scanimage ou propose quelque chose d'équivalent.
L'API SANE est une bonne piste.
Et quiteinsane est peut-être exactement ce que tu veux réaliser, ou au moins un exemple dont t'inspirer.
[^] # Re: Utilise libsane
Posté par electro575 . Évalué à 1.
Merci pour vos réponses.
J'essaie d'installer quiteinsane mais j'ai toujours cette erreur au moment du configure :
J'ai pourtant mis un export QTDIR=/opt/Qt5.7.0/5.7/gcc_64/lib
Je ne sais pas si c'est le bon chemin mais la, … je suis bloqué.
[^] # Re: Utilise libsane
Posté par NeoX . Évalué à 2.
j'ai pas souvenir qu'on fasse un export d'une variable pour qu'il trouve un chemin contenant les libs,
de memoire il faut :
ldconfig
pour que les dossiers soient reactualisésen ca c'etait à l'epoque ou j'aimais recompilé moi meme mes programmes,
depuis j'ai arreté
[^] # Re: Utilise libsane
Posté par Bernez . Évalué à 1.
Installer QuiteInsane ne sert à rien. C'était juste un exemple de logiciel prouvant qu'il est possible d'interfacer Qt avec SANE. Mais ce logiciel est n'est visiblement plus maintenu et n'est pas utile en soi (même en tant qu'exemple, puisqu'il est obsolète).
Ce qu'il faut faire, c'est installer le paquet de ta distribution qui contient les fichiers de développement de libsane (un truc genre "libsane-dev"). L'API native de SANE est en C, qui ne devrait poser aucune difficulté à être utilisée dans un programme C++ Qt.
[^] # Re: Utilise libsane
Posté par electro575 . Évalué à 1. Dernière modification le 17 novembre 2016 à 21:14.
Okey, j'ai réussi à l'intégrer dans mon programme mais l'API SANE, il y a juste cette page?
http://sane.alioth.debian.org/html/
Je ne sais pas ce que vaut ce projet mais il n'est pas officiel :
https://fossies.org/dox/sane-backends-1.0.25/index.html
[^] # Re: Utilise libsane
Posté par NeoX . Évalué à 2.
ben en meme temps une API qui ne change pas tous les 6 mois, c'est plutot bien pour developper des programmes.
à toi ensuite de faire le reste
[^] # Re: Utilise libsane
Posté par electro575 . Évalué à 1.
Oui c'est vrai aussi, il n'y a plus qu'à faire le reste oui.
Et après, comment sont faite les API pour celle-ci par exemple?
On peut aller plus loin, est-ce qu'il existe une API particulière pour EPSON ou autre marque sous Linux.
SANE si je ne me trompe pas c'est un driver generic.
Mon but est de faire tourner aussi le programme Qt sous windows et de pourquoi pas ajouter des fonctionnalitées comme celle qui existent déjà sous le logiciel Epson ayant pour cible windows.
[^] # Re: Utilise libsane
Posté par NeoX . Évalué à 2.
oui, surement, enfin si le constructeur le veut bien.
sinon il me semble que le but d'un projet comme SANE c'est justement de s'affranchir des problemes de marques.
=> ton programme parle avec SANE qui, lui, parle à 'imprimante/scanner
[^] # Re: Utilise libsane
Posté par Bernez . Évalué à 1.
As-tu regardé le lien que j'ai dans mon tout premier message ? À ta place je lirais les chapitres 1 à 3, puis le 4.4, puis commencerais à expérimenter en lisant le 4.3.
Non. SANE est une ensemble de drivers pour tout un tas de marques de scanners (dont Epson), et surtout une interface permettant à des logiciels de communiquer de façon transparente et uniforme avec tout type de scanner.
A priori utiliser SANE sous windows est quasiment impossible. Tu ferais mieux d'utiliser TWAIN sous windows et de créer une couche d'abstraction pour interfacer ton programme avec les deux environnements (à moins qu'une telle bibliothèque de gestion multiplateforme de scanners n'existe déjà). Mais ça risque d'être un très gros boulot.
[^] # Re: Utilise libsane
Posté par electro575 . Évalué à 1.
Effectivement, j'ai trouvé xsane comme GUI, ça me sauve pas mal ouai, … !!
Merci pour vos réponses.
Bon dimanche à tous
[^] # Re: Utilise libsane
Posté par guppy . Évalué à 2.
En fait, Twain a été porté sous linux depuis sa version 2.0 je crois.
Il y a 6 mois à titre professionnel j'ai du réalisé un soft (Qt) de pilotage de scanner via Twain. Mais sous windows. Ce n'est pas trivial. Voici la doc de la version 2.3 : http://www.twain.org/docs/530fe0da85f7511c510004ff/TWAIN-2.3-Spec.pdf
D'après tes questions tu sembles débutant. Je ne veux pas te décourager mais ça me semble assez délicat pour un débutant (pas d'offense, tout le monde est passé par là). Peut-être devrais-tu commencer par essayer de piloter ton scanner via sane + bash + zenity ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.