EDN Admin
Well-known member
Hello !<br/>
<br/>
Im the ultimate beginner in programming. I have some experience in php and vba, doing my own scripts as I need them, especially in excel.<br/>
<br/>
Recently, for a project, I need to be able to scan AUTOMATICALLY
(say every 2 minutes) from multiple scanners (say 2 for starters) **both connected to the same computer**. <br/>
I decided to use this project as a start point for me to get a feeling of Visual Basic.<br/>
So here we go, I installed visual studio express 2010 and started writing my script trying to find here and there bits of codes that could help me. I found that WIA could help with that (Twain could as well but it seems much more obscure to the newbie I am)<br/>
<br/>
Anyway, I finally came up with an app that is able to automatically scan at the set interval when only one scanner is connected. The trouble arrives when I connect more than one scanner. then, the first scan occurs correctly (Scanner 1 scans, then scanner 2
scans), but when the second scan is supposed to start, nothing happens and the scanners become inaccessible (busy).<br/>
I though maybe I forgot to "release" or "disconnect" the last scanner used. Or maybe, something remains in the scanners buffer memory ?<br/>
<br/>
I have been stuck on this issue for the last 3 days and dont know how to make it work.<br/>
<br/>
here is the function that scans : (i dont past the rest as it is the UI and folder management)<br/>
<pre class="prettyprint lang-vb" style=" Public Sub scannerloop()
format constants
Const wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"
Const wiaFormatPNG = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"
Const wiaFormatGIF = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}"
Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
Const wiaFormatTIFF = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}"
file format
Dim fileformat As String
If Me.FileExt.SelectedItem = "TIF" Then fileformat = wiaFormatTIFF
If Me.FileExt.SelectedItem = "JPEG" Then fileformat = wiaFormatJPEG
If Me.FileExt.SelectedItem = "BMP" Then fileformat = wiaFormatBMP
If Me.FileExt.SelectedItem = "PNG" Then fileformat = wiaFormatPNG
If Me.FileExt.SelectedItem = "GIF" Then fileformat = wiaFormatGIF
colors
Dim colorcode As Integer
If Me.Colorbox.SelectedItem = "Black and white" Then colorcode = 4
If Me.Colorbox.SelectedItem = "Greyscale" Then colorcode = 2
If Me.Colorbox.SelectedItem = "Colour" Then colorcode = 1
Resolution
Dim dpi As Integer
dpi = Me.dpiBox.SelectedItem
Dim horizextent = dpi * 8.2
Dim vertextent = dpi * 11.6
Dim j As String = 1
Dim DeviceManager1 = CreateObject("WIA.DeviceManager") wia device manager
For i = 1 To DeviceManager1.DeviceInfos.Count loop through all devices
If DeviceManager1.DeviceInfos(i).Type = 1 Then Select only scanners, not webcams etc...
startpoint to calculate how long it is to scan
Dim ScanStart = DateAndTime.Second(Now) + (DateAndTime.Minute(Now) * 60) + (DateAndTime.Hour(Now) * 3600)
Directory + file
Dim targetdir = Me.ProjectFolderBox.Text & "scansScanner" & j & "S" & j & "_" & Me.FilePrefix.Text & Me.CurrFileIndex & "." & Me.FileExt.SelectedItem
Form2.CurrentActionLabel.Text = "Scanning from scanner #" & j
Dim Scanner As WIA.Device = DeviceManager1.DeviceInfos(i).connect
If IsNothing(Scanner) Then
Log(Me.logfilename, Now & " | Scanner #" & j & " not found")
Else
Try
Dim Img As WIA.ImageFile
With Scanner.Items(1)
.Properties("6146").Value = colorcode 4 is Black-white,gray is 2, color 1 (Color Intent)
.Properties("6147").Value = dpi dots per inch/horizontal
.Properties("6148").Value = dpi dots per inch/vertical
.Properties("6149").Value = 0 x point where to start scan
.Properties("6150").Value = 0 y-point where to start scan
Following is A4 paper size. (Not 100% accurate because real A4 Ht errors)
.Properties("6151").Value = horizextent horizontal exent DPI x inches wide
.Properties("6152").Value = vertextent vertical extent DPI x inches tall
.Properties("4104").Value = 8 bits per pixel
End With
transfer image
Img = Scanner.Items(1).Transfer(fileformat) scans the image.
kill previous file if exists to avoid errors
If System.IO.File.Exists(targetdir) = True Then
Kill(targetdir)
End If
Img.SaveFile(targetdir)
last scan
Form2.LastFileLabel.Text = "Scanner" & j & "S" & j & "_" & Me.FilePrefix.Text & Me.CurrFileIndex & "." & Me.FileExt.SelectedItem
Form2.LastScanLabel.Text = Now
Catch ex As Exception
MsgBox(ex.Message)
Finally
Scanner = Nothing
End Try
End If
End time for the scan
Dim ScanEnd = DateAndTime.Second(Now) + (DateAndTime.Minute(Now) * 60) + (DateAndTime.Hour(Now) * 3600)
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | Scanned " & targetdir & " | duration: " & (ScanEnd - ScanStart))
j = j + 1
Next
DeviceManager1 = Nothing
Me.CurrFileIndex = Me.CurrFileIndex + 1
Me.ScanCount = Me.ScanCount + 1
Me.NextScan = DateAdd("n", Me.IntervalBox.Value, Now)
Form2.ScanCountLabel.Text = Me.ScanCount
Form2.NextScanLabel.Text = Me.NextScan
Form2.CurrentActionLabel.Text = "Waiting..."
Increment next file index and update in config file
Me.FileIndexBox.Value = Me.CurrFileIndex
SaveCfg()
End Sub[/code]
<br/>
<br/>
<br/>
Please be indulgent with me, I am aware that the code is probably a nightmare for programming pros with lots of bad stuff, but it is literally my first VB program, and I am eager to learn.<br/>
<br/>
<br/>
<br/>
So basically, the rest of the program is a form where I enter the target directory for the scan, the filenames, resolution etc, and when I click on start scanning, it<br/>
- runs scannerloop one first time<br/>
- starts a scantimer which launches scannerloop each time it ticks.<br/>
<br/>
As I said, it works perfectly with 1 scanner (files created as expected, logfile updated, etc) but as soon as I have 2 scanners, only the first scan works and then, when scanner#1 is supposed to start scanning, it doesnt and the led of scanner#2 starts blinking
(as if it was scanning, but its not scanning)<br/>
<br/>
I hope someone will be able to help me.<br/>
<br/>
Thanks in advance.<br/>
<br/>
Vince<br/>
<br/>
<br/>
----------<br/>
<br/>
<br/>
UPDATE - thing that I tried which may be of interest :<br/>
I just tried to add a for loop to make it scan from both scanners several times (so, independantly from the timer and the rest of the program basically) :<br/>
<br/>
<br/>
<br/>
<pre class="prettyprint lang-vb" style=" Dim DeviceManager1 = CreateObject("WIA.DeviceManager") wia device manager
For k = 1 To 3
Dim j As String = 1
For i = 1 To DeviceManager1.DeviceInfos.Count loop through all devices
[...]
Next i
Next k
DeviceManager1 = Nothing[/code]
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
That showed that the first occurence of the loop works (scans once from each scanner) but thats it, the scanners never scan the second time and start blinking, so basically exactly the same problem.<br/>
I also tried to include the Devicemanager declaration in the new loop :<br/>
<br/>
<pre class="prettyprint lang-vb" style=" For k = 1 To 3
Dim DeviceManager1 = CreateObject("WIA.DeviceManager") wia device manager
Dim j As String = 1
For i = 1 To DeviceManager1.DeviceInfos.Count loop through all devices
[...]
Next i
DeviceManager1 = Nothing
Next k[/code]
<br/>
<br/>
<br/>
but it did not change anything.<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
The next thing I did wat to log the events within the loop so that I can know where exactly things stop :<br/>
<br/>
<pre class="prettyprint lang-vb" style=" Dim DeviceManager1 = CreateObject("WIA.DeviceManager") wia device manager
Dim j As String = 1
For i = 1 To DeviceManager1.DeviceInfos.Count loop through all devices
If DeviceManager1.DeviceInfos(i).Type = 1 Then Select only scanners, not webcams etc...
startpoint to calculate how long it is to scan
Dim ScanStart = DateAndTime.Second(Now) + (DateAndTime.Minute(Now) * 60) + (DateAndTime.Hour(Now) * 3600)
Directory + file
Dim targetdir = Me.ProjectFolderBox.Text & "scansScanner" & j & "S" & j & "_" & Me.FilePrefix.Text & Me.CurrFileIndex & "." & Me.FileExt.SelectedItem
Form2.CurrentActionLabel.Text = "Scanning from scanner #" & j
Dim Scanner As WIA.Device = DeviceManager1.DeviceInfos(i).connect
If IsNothing(Scanner) Then
Log(Me.logfilename, Now & " | Scanner #" & j & " not found")
Else
Try
Dim Img As WIA.ImageFile
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | Img initialized")
With Scanner.Items(1)
.Properties("6146").Value = colorcode 4 is Black-white,gray is 2, color 1 (Color Intent)
.Properties("6147").Value = dpi dots per inch/horizontal
.Properties("6148").Value = dpi dots per inch/vertical
.Properties("6149").Value = 0 x point where to start scan
.Properties("6150").Value = 0 y-point where to start scan
Following is A4 paper size. (Not 100% accurate because real A4 Ht errors)
.Properties("6151").Value = horizextent horizontal exent DPI x inches wide
.Properties("6152").Value = vertextent vertical extent DPI x inches tall
.Properties("4104").Value = 8 bits per pixel
End With
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | properties initialized")
transfer image
Img = Scanner.Items(1).Transfer(fileformat) scans the image.
log
Log(Me.logfilename, Now & " | Scanner #" & j & " |Transfer done")
kill previous file if exists to avoid errors
If System.IO.File.Exists(targetdir) = True Then
Kill(targetdir)
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | deleted existing " & targetdir)
End If
Img.SaveFile(targetdir)
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | saved " & targetdir)
last scan
Form2.LastFileLabel.Text = "Scanner" & j & "S" & j & "_" & Me.FilePrefix.Text & Me.CurrFileIndex & "." & Me.FileExt.SelectedItem
Form2.LastScanLabel.Text = Now
Catch ex As Exception
MsgBox(ex.Message)
Finally
Scanner = Nothing
End Try
End If
End time for the scan
Dim ScanEnd = DateAndTime.Second(Now) + (DateAndTime.Minute(Now) * 60) + (DateAndTime.Hour(Now) * 3600)
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | Scanned " & targetdir & " | duration: " & (ScanEnd - ScanStart))
j = j + 1
End If
Next i[/code]
<br/>
<br/>
<br/>
and here is the logfile generated :<br/>
<br/>
Scan starts 29/11/2012 9:24:31 AM | Interval :Start scanning with 5 min | Res:100 DPI | <br/>
29/11/2012 9:24:31 AM | Scanner #1 | Img initialized<br/>
29/11/2012 9:24:31 AM | Scanner #1 | properties initialized<br/>
29/11/2012 9:24:49 AM | Scanner #1 |Transfer done<br/>
29/11/2012 9:24:49 AM | Scanner #1 | saved C:__2scansScanner1S1_img_1.TIF<br/>
29/11/2012 9:24:49 AM | Scanner #1 | Scanned C:__2scansScanner1S1_img_1.TIF | duration: 18<br/>
29/11/2012 9:24:49 AM | Scanner #2 | Img initialized<br/>
29/11/2012 9:24:49 AM | Scanner #2 | properties initialized<br/>
29/11/2012 9:25:08 AM | Scanner #2 |Transfer done<br/>
29/11/2012 9:25:08 AM | Scanner #2 | saved C:__2scansScanner2S2_img_1.TIF<br/>
29/11/2012 9:25:08 AM | Scanner #2 | Scanned C:__2scansScanner2S2_img_1.TIF | duration: 19<br/>
29/11/2012 9:25:08 AM | Scanner #1 | Img initialized<br/>
29/11/2012 9:25:08 AM | Scanner #1 | properties initialized<br/>
<br/>
<br/>
it appears that things go wrong at this line :<br/>
<br/>
Img = Scanner.Items(1).Transfer(fileformat) scans the image.<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
It looks like WIA is happy to switch from scanner 1 to 2 but refuses to come back to scanner 1 for the next round. also, I should precise, when the second scan is supposed to occur, scanner #2 blinks (and not 1 which surprises me). <br/>
Is it possible that scanner#2 is selected as "default scanner" or something like that and if so, is there a way to revert that ?
Is there a way to disconnect, dispose or unlock a scanner ?<br/>
<br/>
thanks for your help<br/>
<br/>
<br/>
<br/>
View the full article
<br/>
Im the ultimate beginner in programming. I have some experience in php and vba, doing my own scripts as I need them, especially in excel.<br/>
<br/>
Recently, for a project, I need to be able to scan AUTOMATICALLY
(say every 2 minutes) from multiple scanners (say 2 for starters) **both connected to the same computer**. <br/>
I decided to use this project as a start point for me to get a feeling of Visual Basic.<br/>
So here we go, I installed visual studio express 2010 and started writing my script trying to find here and there bits of codes that could help me. I found that WIA could help with that (Twain could as well but it seems much more obscure to the newbie I am)<br/>
<br/>
Anyway, I finally came up with an app that is able to automatically scan at the set interval when only one scanner is connected. The trouble arrives when I connect more than one scanner. then, the first scan occurs correctly (Scanner 1 scans, then scanner 2
scans), but when the second scan is supposed to start, nothing happens and the scanners become inaccessible (busy).<br/>
I though maybe I forgot to "release" or "disconnect" the last scanner used. Or maybe, something remains in the scanners buffer memory ?<br/>
<br/>
I have been stuck on this issue for the last 3 days and dont know how to make it work.<br/>
<br/>
here is the function that scans : (i dont past the rest as it is the UI and folder management)<br/>
<pre class="prettyprint lang-vb" style=" Public Sub scannerloop()
format constants
Const wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"
Const wiaFormatPNG = "{B96B3CAF-0728-11D3-9D7B-0000F81EF32E}"
Const wiaFormatGIF = "{B96B3CB0-0728-11D3-9D7B-0000F81EF32E}"
Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
Const wiaFormatTIFF = "{B96B3CB1-0728-11D3-9D7B-0000F81EF32E}"
file format
Dim fileformat As String
If Me.FileExt.SelectedItem = "TIF" Then fileformat = wiaFormatTIFF
If Me.FileExt.SelectedItem = "JPEG" Then fileformat = wiaFormatJPEG
If Me.FileExt.SelectedItem = "BMP" Then fileformat = wiaFormatBMP
If Me.FileExt.SelectedItem = "PNG" Then fileformat = wiaFormatPNG
If Me.FileExt.SelectedItem = "GIF" Then fileformat = wiaFormatGIF
colors
Dim colorcode As Integer
If Me.Colorbox.SelectedItem = "Black and white" Then colorcode = 4
If Me.Colorbox.SelectedItem = "Greyscale" Then colorcode = 2
If Me.Colorbox.SelectedItem = "Colour" Then colorcode = 1
Resolution
Dim dpi As Integer
dpi = Me.dpiBox.SelectedItem
Dim horizextent = dpi * 8.2
Dim vertextent = dpi * 11.6
Dim j As String = 1
Dim DeviceManager1 = CreateObject("WIA.DeviceManager") wia device manager
For i = 1 To DeviceManager1.DeviceInfos.Count loop through all devices
If DeviceManager1.DeviceInfos(i).Type = 1 Then Select only scanners, not webcams etc...
startpoint to calculate how long it is to scan
Dim ScanStart = DateAndTime.Second(Now) + (DateAndTime.Minute(Now) * 60) + (DateAndTime.Hour(Now) * 3600)
Directory + file
Dim targetdir = Me.ProjectFolderBox.Text & "scansScanner" & j & "S" & j & "_" & Me.FilePrefix.Text & Me.CurrFileIndex & "." & Me.FileExt.SelectedItem
Form2.CurrentActionLabel.Text = "Scanning from scanner #" & j
Dim Scanner As WIA.Device = DeviceManager1.DeviceInfos(i).connect
If IsNothing(Scanner) Then
Log(Me.logfilename, Now & " | Scanner #" & j & " not found")
Else
Try
Dim Img As WIA.ImageFile
With Scanner.Items(1)
.Properties("6146").Value = colorcode 4 is Black-white,gray is 2, color 1 (Color Intent)
.Properties("6147").Value = dpi dots per inch/horizontal
.Properties("6148").Value = dpi dots per inch/vertical
.Properties("6149").Value = 0 x point where to start scan
.Properties("6150").Value = 0 y-point where to start scan
Following is A4 paper size. (Not 100% accurate because real A4 Ht errors)
.Properties("6151").Value = horizextent horizontal exent DPI x inches wide
.Properties("6152").Value = vertextent vertical extent DPI x inches tall
.Properties("4104").Value = 8 bits per pixel
End With
transfer image
Img = Scanner.Items(1).Transfer(fileformat) scans the image.
kill previous file if exists to avoid errors
If System.IO.File.Exists(targetdir) = True Then
Kill(targetdir)
End If
Img.SaveFile(targetdir)
last scan
Form2.LastFileLabel.Text = "Scanner" & j & "S" & j & "_" & Me.FilePrefix.Text & Me.CurrFileIndex & "." & Me.FileExt.SelectedItem
Form2.LastScanLabel.Text = Now
Catch ex As Exception
MsgBox(ex.Message)
Finally
Scanner = Nothing
End Try
End If
End time for the scan
Dim ScanEnd = DateAndTime.Second(Now) + (DateAndTime.Minute(Now) * 60) + (DateAndTime.Hour(Now) * 3600)
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | Scanned " & targetdir & " | duration: " & (ScanEnd - ScanStart))
j = j + 1
Next
DeviceManager1 = Nothing
Me.CurrFileIndex = Me.CurrFileIndex + 1
Me.ScanCount = Me.ScanCount + 1
Me.NextScan = DateAdd("n", Me.IntervalBox.Value, Now)
Form2.ScanCountLabel.Text = Me.ScanCount
Form2.NextScanLabel.Text = Me.NextScan
Form2.CurrentActionLabel.Text = "Waiting..."
Increment next file index and update in config file
Me.FileIndexBox.Value = Me.CurrFileIndex
SaveCfg()
End Sub[/code]
<br/>
<br/>
<br/>
Please be indulgent with me, I am aware that the code is probably a nightmare for programming pros with lots of bad stuff, but it is literally my first VB program, and I am eager to learn.<br/>
<br/>
<br/>
<br/>
So basically, the rest of the program is a form where I enter the target directory for the scan, the filenames, resolution etc, and when I click on start scanning, it<br/>
- runs scannerloop one first time<br/>
- starts a scantimer which launches scannerloop each time it ticks.<br/>
<br/>
As I said, it works perfectly with 1 scanner (files created as expected, logfile updated, etc) but as soon as I have 2 scanners, only the first scan works and then, when scanner#1 is supposed to start scanning, it doesnt and the led of scanner#2 starts blinking
(as if it was scanning, but its not scanning)<br/>
<br/>
I hope someone will be able to help me.<br/>
<br/>
Thanks in advance.<br/>
<br/>
Vince<br/>
<br/>
<br/>
----------<br/>
<br/>
<br/>
UPDATE - thing that I tried which may be of interest :<br/>
I just tried to add a for loop to make it scan from both scanners several times (so, independantly from the timer and the rest of the program basically) :<br/>
<br/>
<br/>
<br/>
<pre class="prettyprint lang-vb" style=" Dim DeviceManager1 = CreateObject("WIA.DeviceManager") wia device manager
For k = 1 To 3
Dim j As String = 1
For i = 1 To DeviceManager1.DeviceInfos.Count loop through all devices
[...]
Next i
Next k
DeviceManager1 = Nothing[/code]
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
That showed that the first occurence of the loop works (scans once from each scanner) but thats it, the scanners never scan the second time and start blinking, so basically exactly the same problem.<br/>
I also tried to include the Devicemanager declaration in the new loop :<br/>
<br/>
<pre class="prettyprint lang-vb" style=" For k = 1 To 3
Dim DeviceManager1 = CreateObject("WIA.DeviceManager") wia device manager
Dim j As String = 1
For i = 1 To DeviceManager1.DeviceInfos.Count loop through all devices
[...]
Next i
DeviceManager1 = Nothing
Next k[/code]
<br/>
<br/>
<br/>
but it did not change anything.<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
The next thing I did wat to log the events within the loop so that I can know where exactly things stop :<br/>
<br/>
<pre class="prettyprint lang-vb" style=" Dim DeviceManager1 = CreateObject("WIA.DeviceManager") wia device manager
Dim j As String = 1
For i = 1 To DeviceManager1.DeviceInfos.Count loop through all devices
If DeviceManager1.DeviceInfos(i).Type = 1 Then Select only scanners, not webcams etc...
startpoint to calculate how long it is to scan
Dim ScanStart = DateAndTime.Second(Now) + (DateAndTime.Minute(Now) * 60) + (DateAndTime.Hour(Now) * 3600)
Directory + file
Dim targetdir = Me.ProjectFolderBox.Text & "scansScanner" & j & "S" & j & "_" & Me.FilePrefix.Text & Me.CurrFileIndex & "." & Me.FileExt.SelectedItem
Form2.CurrentActionLabel.Text = "Scanning from scanner #" & j
Dim Scanner As WIA.Device = DeviceManager1.DeviceInfos(i).connect
If IsNothing(Scanner) Then
Log(Me.logfilename, Now & " | Scanner #" & j & " not found")
Else
Try
Dim Img As WIA.ImageFile
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | Img initialized")
With Scanner.Items(1)
.Properties("6146").Value = colorcode 4 is Black-white,gray is 2, color 1 (Color Intent)
.Properties("6147").Value = dpi dots per inch/horizontal
.Properties("6148").Value = dpi dots per inch/vertical
.Properties("6149").Value = 0 x point where to start scan
.Properties("6150").Value = 0 y-point where to start scan
Following is A4 paper size. (Not 100% accurate because real A4 Ht errors)
.Properties("6151").Value = horizextent horizontal exent DPI x inches wide
.Properties("6152").Value = vertextent vertical extent DPI x inches tall
.Properties("4104").Value = 8 bits per pixel
End With
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | properties initialized")
transfer image
Img = Scanner.Items(1).Transfer(fileformat) scans the image.
log
Log(Me.logfilename, Now & " | Scanner #" & j & " |Transfer done")
kill previous file if exists to avoid errors
If System.IO.File.Exists(targetdir) = True Then
Kill(targetdir)
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | deleted existing " & targetdir)
End If
Img.SaveFile(targetdir)
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | saved " & targetdir)
last scan
Form2.LastFileLabel.Text = "Scanner" & j & "S" & j & "_" & Me.FilePrefix.Text & Me.CurrFileIndex & "." & Me.FileExt.SelectedItem
Form2.LastScanLabel.Text = Now
Catch ex As Exception
MsgBox(ex.Message)
Finally
Scanner = Nothing
End Try
End If
End time for the scan
Dim ScanEnd = DateAndTime.Second(Now) + (DateAndTime.Minute(Now) * 60) + (DateAndTime.Hour(Now) * 3600)
log
Log(Me.logfilename, Now & " | Scanner #" & j & " | Scanned " & targetdir & " | duration: " & (ScanEnd - ScanStart))
j = j + 1
End If
Next i[/code]
<br/>
<br/>
<br/>
and here is the logfile generated :<br/>
<br/>
Scan starts 29/11/2012 9:24:31 AM | Interval :Start scanning with 5 min | Res:100 DPI | <br/>
29/11/2012 9:24:31 AM | Scanner #1 | Img initialized<br/>
29/11/2012 9:24:31 AM | Scanner #1 | properties initialized<br/>
29/11/2012 9:24:49 AM | Scanner #1 |Transfer done<br/>
29/11/2012 9:24:49 AM | Scanner #1 | saved C:__2scansScanner1S1_img_1.TIF<br/>
29/11/2012 9:24:49 AM | Scanner #1 | Scanned C:__2scansScanner1S1_img_1.TIF | duration: 18<br/>
29/11/2012 9:24:49 AM | Scanner #2 | Img initialized<br/>
29/11/2012 9:24:49 AM | Scanner #2 | properties initialized<br/>
29/11/2012 9:25:08 AM | Scanner #2 |Transfer done<br/>
29/11/2012 9:25:08 AM | Scanner #2 | saved C:__2scansScanner2S2_img_1.TIF<br/>
29/11/2012 9:25:08 AM | Scanner #2 | Scanned C:__2scansScanner2S2_img_1.TIF | duration: 19<br/>
29/11/2012 9:25:08 AM | Scanner #1 | Img initialized<br/>
29/11/2012 9:25:08 AM | Scanner #1 | properties initialized<br/>
<br/>
<br/>
it appears that things go wrong at this line :<br/>
<br/>
Img = Scanner.Items(1).Transfer(fileformat) scans the image.<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
It looks like WIA is happy to switch from scanner 1 to 2 but refuses to come back to scanner 1 for the next round. also, I should precise, when the second scan is supposed to occur, scanner #2 blinks (and not 1 which surprises me). <br/>
Is it possible that scanner#2 is selected as "default scanner" or something like that and if so, is there a way to revert that ?
Is there a way to disconnect, dispose or unlock a scanner ?<br/>
<br/>
thanks for your help<br/>
<br/>
<br/>
<br/>
View the full article