mehrere Seiten Scannen - erkennen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Then
Beiträge: 284
Registriert: 06.09.2004 13:26
Wohnort: Siegen

mehrere Seiten Scannen - erkennen

Beitrag von Then »

MorGÄHN !!!

Ich möchte gerne etwas einscannen... klappt ja auch, aber ich möchte mit dem Einzugsscanner mehrere Blätter hintereinander scannen, aber ich bekomme nur das Bild der ersten Seite... wo sind die anderen ??

Auszug aus dem Code :

Code: Alles auswählen

 woLib.l=LoadLibraryM(?dll) 
 If woLib
  *out = GetProcAddressM(woLib,"ScanToClip") 
  CallFunctionFast(*out,1) 
 EndIf
FreeLibraryM(woLib)

CreateImage(149,2100,2970)
 UseImage(149)

StartDrawing(ImageOutput())
 DrawImage(GetClipboardData(#CF_BITMAP),0,0,2100,2970) 
StopDrawing()
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
Then
Beiträge: 284
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: mehrere Seiten Scannen - erkennen

Beitrag von Then »

Weiß denn keiner Rat ?? Ich scanne 2 Seiten ein und die müssten doch im Clipboard sein, ich bekomme aber immer nur 1 Seite ausgegeben.... wieso ist das so ??
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: mehrere Seiten Scannen - erkennen

Beitrag von ts-soft »

Then hat geschrieben:Weiß denn keiner Rat ??
Hellseher gesucht? Kein Mensch weiß welche DLL Du nutzt und welche Funktionalität diese hat.
In das Clipboard geht definitiv nur ein Bild zur selben Zeit, aber das ist nicht der Fehler, weil
es ja das letzte wäre und nicht das erste.

Deinem Code kann ich nur entnehmen, das es sich um 32-Bit Windows handelt, mehr Infos sehe
ich dort nicht.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Then
Beiträge: 284
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: mehrere Seiten Scannen - erkennen

Beitrag von Then »

Jo... also es ist die bekannte TwScann.dll, die glaube ich jeder nimmt. Betriebssystem ist Windows XP 32 Bit (was genau spielt das für ne Rolle)

Sendet denn der Scanner ein Bit um zu signalisieren, daß ein neues Bild da ist ?? Wie machen es andere Einzugsscanner Programme ? Irgendwie müssen die doch erkennen, dass eine neue seite da ist...
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: mehrere Seiten Scannen - erkennen

Beitrag von ts-soft »

Ich denke mal, die von Dir genannte DLL wird das nicht unterstützen.
Die Funktionalität die Du benötigst wird wohl nur mit der zum Scanner
gelieferten Software zur Verfügung stehen, bin mir da aber nicht Sicher.

PB scheint ja auch noch eine 3-er Version zu sein /:->

Ich kann Dir leider nicht helfen und allzu große Hoffnungen, das es jemand
anders kann, würde ich mir auch nicht machen.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Then
Beiträge: 284
Registriert: 06.09.2004 13:26
Wohnort: Siegen

Re: mehrere Seiten Scannen - erkennen

Beitrag von Then »

Ja, ist leider noch die 3.93er Version.... das Programm ist so umfangreich mit 14000 Zeilen, da las ich den Code lieber. Bisher hat es auch immer gereicht mit 1 Seite, jedoch ist nun das ganze so "gewachsen" dass ich mehrere Seiten benötige. Gibts da nicht ein Tool dass ich per Shell unsichtbar starten kann ?? Ich frag mal Herrn Google ! Dennoch danke !
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch

... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: mehrere Seiten Scannen - erkennen

Beitrag von ts-soft »

Kannst Du denn über ein Grafik-Programm mehrere Seiten Scannen?
Wenn das der Fall ist, sollte es auch eine entsprechende Windows-API
geben. Wenn das nicht geht, vergiß das ganze am besten.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
pureuwe
Beiträge: 4
Registriert: 18.11.2011 13:33
Wohnort: Essen

Re: mehrere Seiten Scannen - erkennen

Beitrag von pureuwe »

Hallo,

vielleicht über Kommandozeilenparameter von irfanview die Seiten wieder zu einem Dokument zusammenfügen.

Gruß
Uwe
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: mehrere Seiten Scannen - erkennen

Beitrag von Derren »

Ähm.
Dein Code scannt eine Seite dann wird die library wieder geschlossen.

Code: Alles auswählen


SeitenAnzahl.l = 4

woLib.l=LoadLibraryM(?dll)
If woLib
  *out = GetProcAddressM(woLib,"ScanToClip")


For n = 1 To SeitenAnzahl

CallFunctionFast(*out,1)
CreateImage(n,2100,2970)
UseImage(n)
StartDrawing(ImageOutput())
DrawImage(GetClipboardData(#CF_BITMAP),0,0,2100,2970)
StopDrawing()

EndIf
FreeLibraryM(woLib)

So. Keine Ahnung, wie man erkennt, ob noch ein Blatt im Einzug ist, oder nicht.
Ich nehme mal an, dass ScanToClip() 0 oder eine Fehlerkonstante zurückgibt, die du als Abbruch verwenden kannst.

Also hau einfach mal Debug vor das CallFunctionFast() und lass den Code so stehen, leg aber nur 2 Seiten rein.
Dann sollte der Debugger-Output etwas so aussehen.

Große Zahl
Große Zahl
0
0

oder
Große Zahl
Große Zahl
-1
-1

oder
Große Zahl
Große Zahl
negative Große Zahl
negative Große Zahl

Auf jeden Fall sollten die beiden letzten Einträge identisch sein.
Signatur und so
Benutzeravatar
Stuhli
Beiträge: 75
Registriert: 18.10.2004 10:05

Re: mehrere Seiten Scannen - erkennen

Beitrag von Stuhli »

So...jetzt komme auch ich an das Problem. 1 Seite scannen klappt wunderbar, jedoch wenn 2 Seiten drin liegen, meldet das Programm nur zurück, daß es fertig ist mit scannen und holt die letzte Seite aus dem Speicher. Vorher habe ich gar keine Möglichkeit den Speicher abzufragen. Wie kann man erkennen, daß die erste Seite fertig ist und eine 2. folgt...?

Code: Alles auswählen

 woLib.l=LoadLibraryM(?dll) 
 If woLib
  *out = GetProcAddressM(woLib,"ScanToClip") 
  CallFunctionFast(*out,1) 
 EndIf
 FreeLibraryM(woLib)
 CreateImage(149,2100,9000)
  StartDrawing(ImageOutput())
   DrawImage(GetClipboardData(#PB_ClipboardImage),0,0);#CF_BITMAP),0,0)
  StopDrawing()
 SaveImage(149,"H:\Test.bmp")
 FreeLibraryM(woLib)
 End

;- includes
dll:
IncludeBinary "EZTwain.dll"
enDll:
Ja... ist auch ein PB3.9 Code... aber auch unter 4.6 gehts nicht....
SYNTAX ERROR IN 30! TYPE MISMATCH
Antworten