Je joue avec le code de http://www.codeproject.com/kb /dotnet/twaindotnet.aspx
J'ai un problème car Twain renvoie le contrôle uniquement après numérisation de tous les documents de l'alimentation. Cela conduit à une utilisation élevée de la mémoire si je numérise 20 documents ou plus. P>
J'ai pensé à numériser un seul document à la fois du chargeur et de sauvegarder l'image et d'appeler l'API à nouveau dans une boucle. P >
Je limite CAP_XFERCOUNT à 1 mais cela ne semble pas aider: P>
TwCapability cap = new TwCapability(TwCap.XferCount, 1); rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, cap);
3 Réponses :
Ceci est un problème de chargeur. Avez-vous essayé de définir la capacité d'alimentation activée à FALSE? P>
EDIT: P>
ressemble à CAP_Autofeed est la voie à suivre. Selon le Twain 2.0 Spécification : P>
cap_autofeed La description Si tel est vrai, la source alimentera automatiquement la page suivante à partir du chargeur de documents après que le nombre de cadres négociés pour la capture à partir de chaque page soit acquis. CAP_FEEDERENABLED doit être vrai pour utiliser cette capacité. Application Définissez la capacité à true pour activer le processus d'alimentation automatique de la source, ou false de le désactiver. Em> b> Après l'achèvement de chaque transfert, vérifiez tw_pendingxfers. Compter pour déterminer si le Source a plus d'images à transférer. A -1 signifie qu'il y a plus d'images pour transférer mais exactement le numéro n'est pas connu. CAP_FEELLOWROWLOW indique si le chargeur de la source est chargé. (L'alimentation automatique processus continue chaque fois que cette capacité est vraie.) P>
Oui, j'ai fait et ça tente de numériser de plateaux
Je n'arrive pas à éteindre le cap-automatique, peut-être que cette fonctionnalité n'est pas prise en charge par le scanner? J'ai essayé Cap = nouvelle twcapabilité (twcap.cap_autofeed, 0); RC = DSCAP (Appid, SRCDS, TWDG.CONTROL, TWDAT.CAPPABILITÉ, TWMSG.SET, CAP); RC contient 'échec'
Hmm. Il y a beaucoup de capacités à essayer. CAP_AUTOSCAN = FALSE pourrait le faire. Si cela ne fonctionne pas, j'ai bien peur que je sois frais d'idées.
L'ordre des cabillabilités est important, voir ce doc www.twain.org/docs/ CaporderWeb .
Edit: p>
Ce sont des fragments de code d'une solution P>
Configuration de l'alimentation automatique p>
rc = DSpxfer(_applicationId, _sourceId, TwDG.Control, TwDAT.PendingXfers, TwMSG.Reset, pxfr);
Je suis désolé de ne pas connaître le projet TwaindotNet, mais j'ai beaucoup d'expérience avec la numérisation de documents via Twain. P>
Première A REMARQUE: Tous les mangeoires de documents ne peuvent pas se nourrir en mode mono-page; Certaines familles importantes scanners numérisent toujours tout dans le chargeur une fois commencé. Et, pas mal de conducteurs Twain n'honoreront pas à XFerCount = 1, quel que soit la norme dit. P>
Si vous essayez de résoudre le problème en forçant le scanner pour analyser "un emploi d'une page", vous serez limité à l'ensemble (indéterminé) de scanners qui accompagnent cela. La norme TWAIN ne nécessite que cette fonctionnalité. (Mais oui - cap_autoscens = faux et xfercount = 1 serait le combo à essayer.) P>
Il y a une meilleure solution (temps et patience permettant) - il ressemble à ce que vous voulez faire est de traiter et de disposer de chaque image à l'arrivée, au lieu de les collecter tous en mémoire. Déterminez comment obtenir votre bibliothèque Twain vous remettre chaque image (ou écrivez-le dans un fichier) car il arrive au lieu de les empiler en mémoire et vous aurez une solution qui fonctionne avec tous les scanners d'alimentation de documents. Et cela scannera un peu plus vite avec la plupart des scanners, aussi ... P>
Vous devriez consulter code.google.com/p/twaindotnet aussi; c'est basé sur le code de codeProject.