2016-05-27 1 views
2

Je souhaite numériser un document à l'aide de Twain Library pour le scanner Epson DS-510 à l'aide de l'application C#, mais il ne numérise qu'un seul côté. Le scanner prend en charge les deux numérisations latérales d'une page et il est testé à l'aide de la fonction de numérisation du scanner, mais il n'effectue pas de numérisation avec l'application.Échec de la numérisation recto verso à l'aide de l'API Twain pour Epson DS-510

En outre, j'ai un autre scanner qui est Canon-2510C TWAIN, mais il scanne les deux côtés avec succès. Dernièrement, j'ai installé TWAIN Sample App pour voir la configuration Twain pour se connecter à la source de données. Images ajoutées en tant que pièce jointe ci-dessous.

CAP_DublexEnabled est false par défaut. Lorsque je veux définir CAP_DublexEnabled sur TRUE, il le fait mais quand il est toujours le même après avoir fermé l'application exemple et rouvrir à nouveau. Est-ce qu'il supporte réellement les deux balayages latéraux avec Twain ou dois-je changer le code pour la méthode Acquire pour la classe TwainLib?

Acquire Méthode de classe TwainLib:

public void Acquire() 
    { 
     TwRC rc; 
     CloseSrc(); 
     if (appid.Id == IntPtr.Zero) 
     { 
      Init(hwnd); 
      if (appid.Id == IntPtr.Zero) 
       return; 
     } 
     rc = DSMident(appid, IntPtr.Zero, TwDG.Control, TwDAT.Identity, TwMSG.OpenDS, srcds); 
     if (rc != TwRC.Success) 
      return; 

     TwCapability cap = new TwCapability(TwCap.XferCount, 50); 
     //TwCapability cap = new TwCapability(TwCap.DuplexEnabled, 50); 
     rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, cap); 
     if (rc != TwRC.Success) 
     { 
      CloseSrc(); 

      return; 
     } 

     TwUserInterface guif = new TwUserInterface(); 
     guif.ShowUI = 0; 
     guif.ModalUI = 1; 
     guif.ParentHand = hwnd; 
     rc = DSuserif(appid, srcds, TwDG.Control, TwDAT.UserInterface, TwMSG.EnableDS, guif); 
     if (rc != TwRC.Success) 
     { 

      //TwainGui.PicForm.arsivOK = false; 

      CloseSrc(); 
      return; 
     } 
    } 

Picture01

Picture02

+0

Le code ci-dessus ne prend en charge que la version des spécifications de Twain 1.9, Ainsi, des versions Twain 2.0/2.1 ou supérieures sont nécessaires pour jouer avec les fonctionnalités Twain. –

Répondre

0

Après une copule de jours avec les combats, les essais et seaching sur le net, a finalement trouvé la solution sur.

Tout d'abord, je mis DuplexEnabled capacité à true en utilisant le code ci-dessous:

TwCapability capDuplex = new TwCapability(TwCap.DuplexEnabled, true); 
rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, capDuplex); 

Ensuite, la valeur TW_RC est RÉUSSITE ce qui signifie la mise en valeur est réussi. Ensuite, nous pouvons numériser les deux côtés sans problème. Mais le point de vue ici est le type de capacité, après avoir défini comme ci-dessus, vous devez concevoir des méthodes de classe TwCapability en fonction de vos besoins et vous devez utiliser le type Twain qui est bool dans ces méthodes aussi. Passez une bonne journée tous les gars!