Page 1 of 1

Problema con Tscan32 de Rafa (Thefull).- Solucionado

Posted: Tue Nov 30, 2010 1:03 pm
by JoseLuis
Buenos dias

Estoy peleándome con ésta magnífica libreria, junto con la eztwain en un scanner fujitsu fi-5120C (éste escanner no lleva tapa, lleva un feeder que carga automáticamente los documentos).

Mi problema es que cuando escanea el último documento, no sé que instrucción poner para que detecte ésto, que no nay más documentos que escanear, ya que tengo activado el multitransfer (tw_SetMultiTransfer(1)). He optado por la "CHAPUZA" de poner como último documento uno que tenga un código de barras que contenga la cadena "9999999", y en el código correspondientes le indico que si se encuentra ésta cadena, entonces _:end(), ya que si no pongo ésto, no sé como parar el multitranfer.

Codigo:

Code: Select all

Function escanea()
local cBarValue,hdib,nombre,hora,minu,segu,dia,camino,cFile,sigue
local nCntPage:=0, cVar,oIni,escaneo,errores,conta:=0,contae:=0
INI oIni FILE ".\GESPAQ.INI"
  GET escaneo     SECTION "JPG"       ENTRY "Ruta Imagenes provisio"    OF oIni DEFAULT curdrive()+":\"+curdir()
  GET errores     SECTION "JPG"       ENTRY "Ruta Imagenes entrada" OF oIni DEFAULT curdrive()+":\"+curdir()
ENDINI
    cFile:="provi"
    camino:=curdrive()+":\"+curdir()+"\"
    tw_SetMultiTransfer(1)
    _ := TScan32():New(cfile)
*    _:SelectFeeder(.t.)
*    _:SetAutoFedd(1)
    _:SetRes( 300 ) && 150dpi
*    _:PixelType( TWAIN_BW )
    _:PixelType( TWPT_RGB )
    _:SetHide( .T. )
    _:RegionSet(0,0,8.40,4)     
      Do while .t.
        dia :=alltrim(padr(str(year(date())),"0",4))+alltrim(padr(str(month(date())),"0",2))+alltrim(padr(str(day(date())),"0",2))
        hora:=SUBSTR(TIME(), 1, 2)
        minu:=SUBSTR(TIME(), 4, 2) 
        segu:=SUBSTR(TIME(), 7, 2) 
        cFile:=dia+hora+minu+segu+".jpg"
        nombre:=_:Digitofile( cFile,_ )
                do case
        case nombre<>"0" .and. nombre <>'9999999'
                   movefile(camino+cFile,escaneo+'0'+nombre+'.jpg' ) 
           conta+=1
        case nombre='0'
                   movefile(camino+cFile,errores+cFile ) 
           contae+=1
        case nombre='9999999'
                   delete file &nombre
        end case
        if Publicas:cFin=1
           exit
        endif
       enddo
*     TW_CloseSource()
    if .not. _:BC_available()
        msgalert("No esta registrada la aplicacion","Atencion")
    endif
    _:End()
  msginfo('Resumen del Escaneo'+chr(10)+chr(10)+'Albaranes con codigo de barras  '+alltrim(str(conta))+chr(10)+'Albaranes sin codigo de barras  '+alltrim(str(contae)),'HEMOS ACABADO')
    return (sigue)
Y este es el codigo de la clase que se encarga del escaneo

Code: Select all

METHOD DigiToFile( cFile,_ )
  local cBarValue:=""
       if EMPTY( cFile )
          cFile := ::cFile
       endif

       IF !::lError
      ::hDib := ::Acquire()         // Importar
      if _:BC_Recognize(::hDib,1,-1)>0
            cBarValue:=_:BC_Text(0)
            cBarValue:=alltrim(cBarValue)    
           else
        cBarValue:="0"
       endif
       ENDIF
       IF cBarValue='9999999'
          Publicas:cFin:=1
       endif
       IF ::hDib <> 0
          IF ::lBmp                      // Format bmp
             ::DibToBmp( cFile )       // Si no hacemos uso de BMP
          ELSE
             IF TW_IsJpg()              // Si puede hacer uso del JPG
                ::DibToJpeg( cFile )
             ELSE
                ::DibToBmp( cFile )       // Si no hacemos uso de BMP
             ENDIF
          ENDIF
       else
       Publicas:cFin:=1
       ENDIF
Return (cBarValue)
 
A ver si me ayuda alguien

Saludos

Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado

Posted: Tue Dec 07, 2010 12:36 pm
by JoseLuis
Pues eso, que está solucionado.

Para hacer lo que hyo quería, había que modificar la librería de Rafa.

Saludos

Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado

Posted: Thu Dec 09, 2010 5:44 am
by AIDA
Hola

y que le hiciste para que te funcionara si no es mucha molestia :mrgreen:

soy muy curiosa :oops: sorry

Saluditos :wink:

Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado

Posted: Thu Dec 09, 2010 7:33 am
by JoseLuis
molestia ninguna guapetona.

La alimentación de éste escaner es automática, y el problema está al colocar en la bandeja más de un documento.
hay que poner:

Code: Select all

    tw_SetMultiTransfer(1)
y en el bucle que se encarga de escanear continuamente:

Code: Select all

   Do while tw_waitforImage(_)=1
el problema era que ésta orden no la reconocía la librería.

Había que hacer ésto en la libreria de Rafa:

Code: Select all

 HB_FUNC( TW_WAITFORIMAGE )  // hWnd
 {
  hb_retni( TWAIN_WaitForImage( ( HWND ) hb_parnl( 1 ) ) );
 }
 
y ya éstá.

Esto lo que hace es comprobar que en el alimentador hay algún documento.

Saludos

Jose luis

Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado

Posted: Thu Dec 16, 2010 6:17 am
by AIDA
Que lindo muchas gracias veré si me queda tu consejo :mrgreen:

Muchos tenquius :D


Saluditos... :wink:

Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado

Posted: Mon Dec 16, 2019 3:21 pm
by Ladinilson
Bom dia José Luis

Estava precisando da rotina de scanner também que atribuísse ao nome do arquivo em BMP os números de um código de barras que está no documento a ser escaneado.

Por exemplo ele lê o código de barras do documento e nomeia o mesmo quando gravado 00034128.BMP

Esta rotina é possível?

Obrigado