Numerisation des données (TWAIN) !!
bonsoir,
voila je voudrais bien faire une application concernant l'archivage numerique des données a partir du scanner, pour faire cela j'ai installer mon scaner (hp) ensuite j'ai recuperer un composant TWAINCTRL (activX)
mais je n'ai aucune information sur son mode d'emploi (son fonctionnement).
j'ai trouvé egalement sur le net un autre composant le TWAIN (http://delphipage.free.fr/twain.html) mais j'ai du mal a istaller ce composant sur delphi7 et delphi6.
si vous avez la moindre idee, ou bien une autre methode pour faire l'archivage numerique n'hesitez pas a me la filer merci d'avance.
NB:le lien qui existe dans developpez.com n'existe pas ca concerne le composant twainy qui fait le meme travail que twain (archivage numerique) voici le lien http://atlantis.developpez.com/twain/.
DelphiTwain en core boggé
Bonjour.
Attention. Le composant TDelphiTwain semble encore boggé.
Il s'ajit de la propriété Language. Sur un machine avec WINDOWS 2000 Pro, cette propriété est tout simplement inopérente. Sur une autre machine que ce soit sous WINDOWS 98 ou XP, la simple pose du composant sur une fiche plante avec le message "erreur de vérification d'étendue". J'ai tenté de mettre des sécurités, rien à faire.
Finallement, j'ai supprimé cette propriété et le composant fonctionne parfaitement.
Pour ce qui est de scanner plusieurs images par lot comme certains programmes, j'y travaille justement depuis quelque temps pour un de mes programme de traitement d'image. Dès que ce sera fait je communiquerais le source.
TDelphiTawain modification
Bon! J'ai cherché. Suprimmer la propriété Language est une erreur. Seul la prévisualisation fonctionne.
Il semble que sur certaine versions de WINDOWS (patch pas à jour ??)
le tlUserLocale dans le constructeur de l'objetTTWainIdentity.
Je l'ai donc forcé à tlFrench.
Pour pouvoir faire plusieurs acquisitions en évitant que le pilote du scanner TWain32 ne se ferme, il faut ajouter une propriété et sa gestion.
Ca marche Nickel.
Voici les codes à modifier.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
// Modification de TDelphiTwain
implementation
{Units used bellow}
uses
Messages;
Var
FCloseAfterAquir : Boolean;
{ TTwainIdentity object implementation }
{Object being created}
{$IFNDEF DONTUSEVCL} constructor TTwainIdentity.Create(AOwner: TComponent);
{$ELSE} constructor TTwainIdentity.Create(AOwner: TObject); {$ENDIF}
begin
{Allows ancestor to work}
inherited Create;
{Set initial properties}
FillChar(Structure, sizeof(Structure), #0);
//Language := tlUserLocale;
Language := tlFrench;
CountryCode := 1;
MajorVersion := 1;
VersionInfo := 'Application name';
Structure.ProtocolMajor := TWON_PROTOCOLMAJOR;
Structure.ProtocolMinor := TWON_PROTOCOLMINOR;
Groups := [tgImage, tgControl];
Manufacturer := 'Application manufacturer';
ProductFamily := 'App product family';
ProductName := 'App product name';
fOwner := AOwner; {Copy owner pointer}
end;
// Objet TDelphiTwain à modifier ainsi
protected
{Returns the default source}
function GetDefaultSource: Integer;
{Creates the virtual window}
procedure CreateVirtualWindow();
{Clears the list of sources}
procedure ClearDeviceList();
Procedure SetCloseAfterAquir(Value : Boolean);
private
{Event pointer holders}
fOnSourceDisable: TOnSourceNotify;
fOnAcquireCancel: TOnSourceNotify;
fOnTwainAcquire: TOnTwainAcquire;
fOnSourceSetupFileXfer: TOnSourceNotify;
fOnSourceFileTransfer: TOnSourceFileTransfer;
fOnAcquireError: TOnTwainError;
fOnAcquireProgress: TOnAcquireProgress;
FCloseAquir : Boolean;
published
{Default transfer mode to be used with sources}
property CloseAfterAquir : Boolean read FCloseAquir write SetCloseAfterAquir;
// Ajouter la procedure
Procedure TDelphiTwain.SetCloseAfterAquir(Value : Boolean);
begin
FCloseAquir := Value;
FCloseAfterAquir := Value;
end;
// Modifier le constructeur donner une valeur par défaut à FCloseAfterAquir
{Object being created}
constructor TDelphiTwain.Create{$IFNDEF DONTUSEVCL}(AOwner: TComponent){$ENDIF};
begin
{Let the ancestor class also handle the call}
inherited;
{Create source list}
DeviceList := TPointerList.Create;
{Clear variables}
fSourcesLoaded := 0;
fHandle := 0;
@fTwainProc := nil;
SelectDialogDisplayed := FALSE;
fSourceManagerLoaded := FALSE;
fHasEnumerated := FALSE;
fTransferMode := ttmMemory;
{Creates the virtual window which will intercept messages}
{from Twain}
CreateVirtualWindow();
{Creates the object to allow the user to set the application}
{information to inform twain source manager and sources}
fInfo := TTwainIdentity.Create(Self);
AppInfo := @fInfo.Structure;
FCloseAfterAquir := True;
end;
// Modifier la procedure TransfertImage à la fin
{Method to transfer the images}
procedure TTwainSource.TransferImages();
var
{To test if the image transfer is done}
Cancel, Done : Boolean;
{Return code from Twain method}
rc : TW_UINT16;
{Handle to the native Device independent Image (DIB)}
hNative: TW_UINT32;
{Pending transfers structure}
PendingXfers: TW_PENDINGXFERS;
{File transfer info}
Info: TW_SETUPFILEXFER;
{Image handle and pointer}
ImageHandle: HBitmap;
PixelType : TW_INT16;
begin
{Set the transfer mode}
.
.
.
.
.
{Disable source}
//Enabled := False;
Enabled := Not FCloseAfterAquir;
end; |
Merci de vérifier de votre coté et de me tenir au courant.