Hello Stack overflow !

I'm the ultimate beginner in programming. I have some experience in php and vba, doing my own scripts as I need them, especially in excel.

Recently, for a project at works, 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**.
I decided to use this project as a start point for me to get a feeling of Visual Basic.
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)

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).
I though maybe I forgot to "release" or "disconnect" the last scanner used. Or maybe, something remains in the scanner's buffer memory ?

I have been stuck on this issue for the last 3 days and don't know how to make it work.

here is the function that scans : (i don't paste the rest as it is the UI and folder management)

Code:
     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 & "\scans\Scanner" & 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
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.



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
- runs scannerloop one first time
- starts a 'scantimer' which launches scannerloop each time it ticks.
I do not want any dialog to appear to as me which scanner to select or which parameters to use as this program is supposed to run over several weeks in order to scan hundreds of images without anyone to attend it.

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 doesn't and the led of scanner#2 starts blinking (as if it was scanning, but it's not scanning)

I hope someone will be able to help me.

Thanks in advance.

Vince