2016-01-22 1 views
0

Я переписал программу, которая сканирует документ и считывает штрих-код из документа, написанного на vb6, и работал на windows xp.Код Wia не работает с сканером сканера kodak scanmate i1120

Эта новая программа отлично работает на Windows 10 со старым сканером fujitsu fi-4129c2, но я не могу заставить ее работать с новым сканером scanmate i1120.

Я получаю ошибку на следующей строке:

MyImage = DirectCast(ConnectedScanner.Items(1).Transfer(WIA.FormatID.wiaFormatBMP), WIA.ImageFile) 

и ошибка, я получаю:

Scan Error

Я знаю, что код работает, как у меня он работает с сканер fujitsu, но я не могу понять, какое значение дает мне сообщение об ошибке.

Я просто попытался его со следующими тремя линиями только кода, и это все еще дает мне ту же ошибку:

Dim CD As New CommonDialog 
Dim F As ImageFile = CD.ShowAcquireImage(WiaDeviceType.ScannerDeviceType) 
F.SaveFile("C:\Temp\WIA." + F.FileExtension) 
+0

Что говорит вам отладчик? - Является ли 'ConnectedScanner.Items (1)' действительным объектом? Поддерживает ли сканер этот формат передачи? –

+0

ConnectedScanner показывает как действительный объект. знаете ли вы, как я узнаю, поддерживает ли сканер данный формат передачи. – Gazza

+0

Работает ли OLD-программа с новым сканером? Если нет, он поддерживает только twain, а не wia. Обычно спецификации сообщают вам о поддерживаемых интерфейсах. – Steve

ответ

0

Оказывается, это было WIA_DPS_PAGES настройки для сканера.

Я попытался изменить его, используя следующий код:

With ConnectedScanner.Items(1) 
     .Properties("3096").Value = 1 
     .Properties("6146").Value = 2 
     .Properties("6147").Value = 300 'dots per inch/horizontal 
     .Properties("6148").Value = 300 'dots per inch/vertical 
     .Properties("6154").Value = -50 'brightness 
     .Properties("6155").Value = -50 ' contrast 
    End With 

Но это не было `работы, так что после взгляда на WIA Scanning via Feeder

Я преобразованный код на этой странице, чтобы Vb и использовал следующую Sub :

Public Sub SetDeviceProperty(device As Device, propertyId As Integer, value As Object) 
    Dim [property] As [Property] = FindProperty(device.Properties, propertyId) 
    If [property] IsNot Nothing Then 
     [property].let_Value(value) 
    End If 
End Sub 

и изменили настройки с помощью:

SetDeviceProperty(ConnectedScanner, 3096, 1) 
SetDeviceProperty(ConnectedScanner, 6146, 2) 
SetDeviceProperty(ConnectedScanner, 6147, 300) 
SetDeviceProperty(ConnectedScanner, 6148, 300) 
SetDeviceProperty(ConnectedScanner, 6154, -50) 
SetDeviceProperty(ConnectedScanner, 6155, -50) 
Смежные вопросы