IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Contrôle total sur son scanner?


Sujet :

Windows

  1. #1
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Contrôle total sur son scanner?
    Bonjour !

    Je sollicite votre aide, vous, passionnés et généreux programmateurs qui peuplent le web ! Je mène une étude approfondie des images obtenues à l’aide de scanners. Après diverses recherches personnelles au potentiel très engageant, il m’apparaît indispensable de rentrer dans des considérations techniques qui dépassent largement celles imposées par le pilote et l’assistant du scanner, et sans doute d’ailleurs mes propres compétences.

    A présent, j’en viens donc à rêver de pouvoir faire varier le balayage habituel du scanner (horizontal, linéaire), ou même sa traduction de l’objet scanné (jusqu’ici la plus fidèle possible). Comment faire, par exemple, pour que l’objet scanné soit automatiquement (aléatoirement, ou selon mes désirs) déformé/coupé/élidé/recomposé/recoloré par le scanner lui-même, avant même que je n’intervienne sur l’image obtenue ?

    Pour information, je précise que je suis sous Windows Vista 32 bits, et que je possède actuellement un scanner Epson Perfection 2400 Photo.

    Je remercie par avance tous ceux qui prendront le temps de m’aider, cette recherche me tenant particulièrement à cœur.

    A bientôt j’espère !


    Damien

  2. #2
    Membre du Club Avatar de Array
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 210
    Points : 55
    Points
    55
    Par défaut
    Et tu vx programmer ça en... C? ASM pur? Delphi? C#?

  3. #3
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Hem... je dois t'avouer qu'à part connaître les noms de ces langages, du fait que je m'intéresse depuis toujours (mais de loin...) à l'informatique, je ne saurais même pas faire la différence... ma réponse, en bon novice, serait donc : peu importe, pourvu que j'arrive à un semblant de solution (et que j'en sois capable ).

    Merci déjà d'avoir pris le temps de me lire, et d'essayer de m'aider!

  4. #4
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Si cela peut aider, je viens de trouver ce lien (http://www.pcinpact.com/actu/news/25...on-scanner.htm), et même si on s'éloigne de l'image, le bidouillage du scanner est en tout point ce que je recherche. Dommage que je ne saisisse pas la façon dont cet homme admirable a modifié le fameux "Scanner Control Language"...

  5. #5
    Membre du Club Avatar de Array
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 210
    Points : 55
    Points
    55
    Par défaut
    Alors je ne veux pas ruiner tes espoirs mais...
    Tu seras incapable de réaliser cela.

    À moins qu'il n'y ait un genre de solution tout en un spécifique pour ton scanner, ou un logiciel préconçu pour faire ce genre de manipulations sur des scanners - et qui supporte ton modèle -, tu devrais tout d'abord t'initier à la programmation C - même le C, c'est déjà un peu fort pour s'initier à la programmation -, puis ensuite à l'assembleur, puis finalement à la programmation de drivers sous windows.

    Pas besoin de le dire, si c'est vraiment très important, alors tu devrais être capable, en ayant quelques aptitudes mathématiques, mais ça prendra du temps, bcp de temps, au moins 1 ans.

    Donc, en bref...
    Impossible pour toi actuellement, à moins qu'il y ait déjà une solution toute faite.

  6. #6
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bon... merci pour la franchise, et d'avoir pris le temps de te pencher sur le sujet.
    En fait, sans exagérer, ce projet pourrait bien s'avérer devenir la base de l'oeuvre de toute une vie. Et il faudra bien se mettre à la programmation, si je ne veux pas rester au même point à chaque fois...

    Si j'ai dit que j'étais un novice, c'est que je n'ai jamais fait, je pense, de "vraie" programmation. Il y a 7 bonnes années malgré tout, j'avais les bases en TurboPascal et Ms-Dos, j'avais même commencé à apprendre le Python, et j'avais déjà utilisé décompileurs et assembleurs. En ce moment, dans un autre registre, j'apprends le HTML et les CSS, et je compte me mettre à Processing. Rien de bien fou certes, mais c'était juste pour dire que je ne pars pas de zéro, peut-être est-il possible d'être plus optimiste ?

    Comme je sais qu'il y a un pas conséquent dans l'apprentissage des langages que tu as évoqués, par lequel devrais-je idéalement commencer, dans l'optique d'un jour arriver à ce genre de petites manipulations? Si le C s'avère assez austère pour débuter, qu'y aurait-il de plus accessible?

    Merci encore!

  7. #7
    Membre du Club Avatar de Array
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 210
    Points : 55
    Points
    55
    Par défaut
    Si j'ai dit que j'étais un novice, c'est que je n'ai jamais fait, je pense, de "vraie" programmation. Il y a 7 bonnes années malgré tout, j'avais les bases en TurboPascal et Ms-Dos, j'avais même commencé à apprendre le Python, et j'avais déjà utilisé décompileurs et assembleurs.
    Dans ce cas là, c'est différent - tu aurais dû le dire depuis le début!
    TurboPascal, un peux de python, c'est déjà bien.
    Dans ce cas, commence par apprendre le C : 95 pour-cent du code que tu voudrais faire pourrais être en C, le reste en assembleur.
    Pour l'assembleur, c'est le langage le plus proche de la machine : qqch de puissant, un peux long à apprendre.

    Donc... commence en C.
    Moi j'ai passé directement du vulgaire script batch (.bat) en C, donc je suis sûr que tu peux y arriver.

    Pour le C, je te conseille très fortement d'acheter LE classique, un livre d'une trentaine d'euros, écris par les créateurs du C en personne.

    Titre: Le langage C, norme ANSI (2è édition)
    Auteurs: Dennis M. Ritchie, Brian W. Brian Kernighan
    280 pages, 2ème édition, septembre 2004 Editions Dunod, ISBN10 : 2100487345


    Les débuts seront peut-être un peux difficiles, je te l'avoue : tu devras apprendre à utiliser le binaire - bcp de bon tutos sur internet - et l'hexadécimal, par exemple.
    Si tu as besoin d'aide, n'hésite pas à poser des questions dans la section langage C du forum. Developpez saura t'aider.

    Au plaisir,

    Array

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Damy_1 Voir le message
    Comment faire, par exemple, pour que l’objet scanné soit automatiquement (aléatoirement, ou selon mes désirs) déformé/coupé/élidé/recomposé/recoloré par le scanner lui-même, avant même que je n’intervienne sur l’image obtenue ?
    En passant par la (seule ?) interface standard des scanners, le pilote TWAIN, ça m'étonnerait que ce soit possible. Il faudrait, pour ça, pouvoir piloter le scanner à un niveau plus bas, celui du driver, qui est en général NON documenté, hélas pour toi...

    Avant de tirer des plans sur la comète, il te faudrait trouver une datasheet / doc technique du scanner expliquant comment le piloter réellement (commandes, méthodes d'acquisition, etc.) AVANT TOUTE AUTRE CHOSE. Sans ça, point de salut. Tu devras peut-être, si tu veux absolument aller au bout de ce projet, trouver / acheter un scanner dont tu auras la documentation.

    Si tu ne peux pas trouver de documentation bas niveau sur un scanner, alors il faudra passer au reverse-engineering... Pour ça, je conseille très franchement un scanner connecté par Ethernet, car des logiciels comme Wireshark te permettront d'espionner à 100% les communications entre le PC et le scanner, chose qui sera nettement plus difficile à mettre en œuvre avec un scanner USB ou FireWire.

    Bon courage !
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  9. #9
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Array :
    "Dans ce cas là, c'est différent - tu aurais dû le dire depuis le début!"
    J'ai toujours fait ça en amateur, persuadé que ce n'était pas de la programmation de haut niveau, et qu'il n'y avait pas grand lien avec les langages tels que le C, dont je ne connais rien encore.

    "Si tu as besoin d'aide, n'hésite pas à poser des questions dans la section langage C du forum. Developpez saura t'aider."
    D'après tes conseils et ton optimisme, et puisque j'ai toujours voulu m'y mettre, je vais acheter ce fameux livre (merci beaucoup pour la référence, parmi tous les choix, en général c'est dur de se décider !).


    Mac LAK : Aaaah, un collègue Toulousain, ça fait plaisir =D!

    "il te faudrait trouver une datasheet / doc technique du scanner expliquant comment le piloter réellement (commandes, méthodes d'acquisition, etc.)".
    Je peine déjà à retrouver le manuel basique fourni avec le scanner... et comme l'Epson Perfection 2400 n'est plus tout jeune, je ne trouve rien d'autre que ce manuel de base en anglais...

    "il faudra passer au reverse-engineering... Pour ça, je conseille très franchement un scanner connecté par Ethernet, car des logiciels comme Wireshark te permettront d'espionner à 100% les communications entre le PC et le scanner".
    Super, je ne connaissais pas ce logiciel! Donc si j'apprends le C comme me l'a conseillé Array, le contenu espionné devrait être exploitable?

    Merci encore à vous deux pour vos conseils clairs, documentés, qui sont déjà des débuts de solution ! Je laisse momentanément le topic ouvert, pour suivre mes avancées, et au cas où des contributeurs auraient d'autres solutions à proposer! A bientôt, experts du net gratuit et solidaire !

  10. #10
    Membre du Club Avatar de Array
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 210
    Points : 55
    Points
    55
    Par défaut
    Je t'ai conseillé le C parce qu'il est très proche de l'assembleur.
    En fait, le C c'est de l'assembleur portatif.

    Pour le reverse, tu auras sûrement à en faire. Je ne crois pas qu'il y ait vraiment de datasheets pour un scanner, alors qu'on peine à en trouver pour une carte ethernet - expérience perso.

    Donc, oui une datasheet te serais très utilise, pcq elle contient toutes les informations sur les instructions par lesquelles communiquent le scanner avec le PC.
    Tu peux aussi tenter de reverser uniquement un driver Windows, mais encore, c'est de l'assembleur + C qu'il faudra maîtriser.
    Tu pourrais aussi juste t'initier à l'assembleur, et coder tout ton driver en asm.
    Mais ça ne saurait être portable, ou même facile à lire et à maintenir.

    Une chose est sûre : l'asm te serviras plus que le C. Mais le C te permettra de faire un soft portable.
    À moins que tu veuilles uniquement que ton driver soit pour une version de windows, et que tu ne désires pas le mettre à jour à mesure que NT progresse.

    Bonne chance,
    Array

    EDIT : Un bon livre pour coder des drivers aussi c'est...
    Undocumented Windows 2000 secrets : A programmer's cookbook

  11. #11
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Citation Envoyé par Damy_1 Voir le message
    Mac LAK : Aaaah, un collègue Toulousain, ça fait plaisir =D!


    Citation Envoyé par Damy_1 Voir le message
    Je peine déjà à retrouver le manuel basique fourni avec le scanner... et comme l'Epson Perfection 2400 n'est plus tout jeune, je ne trouve rien d'autre que ce manuel de base en anglais...
    Paradoxalement, tu auras plus de chances de trouver ce genre de documents sur un vieux scanner, datant de l'époque héroïque "chaque scanner a son propre standard", que sur un scanner récent qui aura tendance à ne s'appuyer QUE sur une interface TWAIN.
    Mais si tu ne trouves pas, le reverse-engineering est la seule solution... On peut espionner très facilement une liaison Ethernet, un port série ou un port parallèle. Par contre, espionner un bus SCSI, USB ou FireWire (sans parler des bus propriétaires !!!) sera nettement plus chaud, même si en pratique tous les bus sont espionnables... Le problème est que sur certains bus complexes et/ou rares, les analyseurs sont payants, et extrêmement chers, alors que pour Ethernet/RS-232/Port parallèle, les espions sont non seulement gratuits, mais en plus d'excellente qualité.

    Donc, privilégie un bus de connexion facile à espionner, ça sera toujours ça de pris et qui t'évitera de devoir désassembler le driver.

    Citation Envoyé par Damy_1 Voir le message
    Super, je ne connaissais pas ce logiciel! Donc si j'apprends le C comme me l'a conseillé Array, le contenu espionné devrait être exploitable?
    Avec un peu de jus de cerveau, oui : comme tu verras ce qui transite par le bus espionné (Ethernet, port série ou port parallèle). En comparant les données émises et reçues avec, notamment, des données source et destination connues (paramètres de numérisation et contenu de l'image scannée), tu pourras déduire le format de certaines commandes, et donc les "rejouer" en C tout en les modifiant.

    Ceci étant dit, c'est un boulot ardu et de longue haleine. Mais c'est tout à fait faisable. Typiquement, prends un exemple concret : tu trouves tous les paramètres permettant de faire une numérisation "normale", et tu as compris le protocole général entre le PC et le scanner.

    Exemple : Si tu as des commandes numérotées, tu peux tenter les commandes "manquantes" pour déterminer à quoi elles servent. Si par exemple tu définis les DPI via la commande "0x05" et la profondeur de couleur par la commande "0x07", et que tu n'as jamais vu la commande "0x06", ça vaut le coup de tester pour voir son effet, tu comprends ?

    Si tes commandes sont sous forme de texte (genre commandes Hayes), une fois que tu en as suffisamment, tu peux alors chercher dans le driver les chaînes de caractères "connues" de façon à voir si, à côté des connues, tu n'en aurais pas des "inconnues" qu'il pourrait être intéressant de tester.

    A force de tests (et de reboots du scanner... ), tu finiras par avoir l'intégralité des commandes de ton scanner, et leur rôle. Tu pourras alors peut-être, si le jeu de commandes est suffisamment complet, faire ce que tu voulais initialement. Hélas, il n'est pas possible de t'assurer AVANT de commencer à bosser que tu pourras faire les tests que tu souhaitais, tu ne le sauras qu'une fois les commandes connues.

    Bon courage quoi qu'il en soit !
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. [PowerShell] Donner contrôle total a un utilisateur sur un dossier
    Par Laurent-ts dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 08/07/2014, 11h13
  2. Détruire un bouton sur son OnClick
    Par Volfoni dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/06/2006, 12h00
  3. Répartir un montant total sur des mois
    Par ALLB dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 05/10/2005, 10h19
  4. [Blog] Les Blogs sur son Domaine ?
    Par Franck.H dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 23/09/2005, 10h58
  5. contrôle data sur visual basic 6.0
    Par Silent Thunder dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 29/03/2005, 19h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo