ESCANEAR (DIGITALIZAR) EN VFP CON WIA 2.0 FUNCIONA EN CIERTOS MODELOS

425 views
Skip to first unread message

Fernando Mora

unread,
May 31, 2017, 10:07:41 AM5/31/17
to Comunidad de Visual Foxpro en Español
Puedo Escanear sin problemas con escaner FlatBed, pero con escaner Duplex tengo problemas con algunos modelos, en especial con el modelo EPSON GT-S55, con un EPSON-DS560 y un HP scanjet 5000 s2 funciona bien. ¿Alguien mas ha intentado usas WIA para escanear? El problema veo que es en la propiedad 3088, en los modelos que funciona bien tengo opción de cambiar el valor entre 1, 4 y 32, pero en el modelo EPSON GT-S55 me da solo 1 y 32. Adjunto el código fuente que estoy usando.

oDialogo=createobject("WIA.CommonDialog")
oScanner=createobject("WIA.DeviceManager")
dScanner=oDialogo.ShowSelectDevice(0, .t., .f.)

*----- Tipo de Escanner
IF dScanner.Properties.Exists("3088")=.T.
lcTipoScan="DUPLEX"
dScanner.Properties("3088").Value=33 && o 4 segun el modelo de escaner
dScanner.Properties("3096").Value=1
ELSE
lcTipoScan="FLATBED"
ENDIF

*----- Formato BMP el estandar
formatoBMP="{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"

*----- Cantidad de Hojas a Escanear (lo escribo manualmente por ahora
lnv = 2

FOR X = 1 TO lnv
*----- Escanear con la barra de progreso
Img=oDialogo.ShowTransfer(dScanner.items(1), FormatoBMP, .T.)
IF lcTipoScan="DUPLEX"
Img2=oDialogo.ShowTransfer(dScanner.items(1), FormatoBMP, .T.)
ENDIF
IF ISNULL(Img)
   MESSAGEBOX('NO SE REALIZO EL ESCANEO')
   EXIT 
ENDIF

*----- Guardamos en archivo de imagen temporal
cBMP = RIGHT(SYS(2015), 8) + ".bmp"
ERASE (cBMP)
Img.SaveFile(cBMP)
IF lcTipoScan="DUPLEX"
cBMP2 = RIGHT(SYS(2015), 8) + ".bmp"
Img2.SaveFile(cBMP2)
ENDIF

*----- Convertimos con mi clase personal a JPG y luego a Blob, Sintaxis: Archivo, Formato, Calidad.
cJPG  = THIS.Wia_imagen1.Setformato(cBMP, "JPG", 60)
cBlob = FILETOSTR(cJPG)
*----- Creamos la miniatura del JPG y pasamos a Blob
cJPG  = THIS.Wia_Imagen1.SetComprimir(cJPG, 90, 120)
mBlob = FILETOSTR(cJPG)
*----- Cargamos imagen a cursor, se crea si no existe cursor
IF !USED("CUR_TEMP")
THIS.Grilla1.Preservar()
CREATE CURSOR CUR_TEMP (PAGINA N(10), MINIATURA W, IMAGEN W)
THIS.Grilla1.Restaurar("CUR_TEMP")
ENDIF

nPagina = RECCOUNT("CUR_TEMP") + 1
INSERT INTO CUR_TEMP (PAGINA, MINIATURA, IMAGEN) VALUES (nPagina, mBlob, cBlob)
THIS.SetImagenGrande()

*------ Borramos archivos de imagenes creados al escanear
ERASE (cBMP)
ERASE (cJPG)

IF X<lnv
IF MESSAGEBOX("DESEA ESCANEAR LA SIGUIENTE PAGINA", 4+32+0, "CONTINUAR")=7
EXIT
ENDIF
ENDIF
ENDFOR



Ivan Aguirre

unread,
Jun 5, 2017, 1:00:10 PM6/5/17
to Comunidad de Visual Foxpro en Español
Yo también he subido preguntas sobre escaneo con poca respuesta, se ve que no son temas muy usados.
Te recomendaría lo que a mi
1) Probar otro modelo
2) Probar en otra máquina

Por ahí es algo local.

Yo compré este scanner portatil por ej, y lamentablemente no consigo info sobre que puertos usar, porque solo usa un programa propietario que puede leer lo que escanea, en lo demás, la única forma es usar una microsd y luego tomarlo de ahí, si tienes alguna info que permita detectar lo que esto escanea por USB por ej, te estaré agradecido.



El miércoles, 31 de mayo de 2017, 11:07:41 (UTC-3), Fernando Mora escribió:

Auto Generated Inline Image 1
Reply all
Reply to author
Forward
0 new messages