FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problema con Tscan32 de Rafa (Thefull).- Solucionado
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Problema con Tscan32 de Rafa (Thefull).- Solucionado
Posted: Tue Nov 30, 2010 01:03 PM
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 oScan:end(), ya que si no pongo ésto, no sé como parar el multitranfer.

Codigo:

Code (fw): Select all Collapse
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)
    oScan := TScan32():New(cfile)
*    oscan:SelectFeeder(.t.)
*    oscan:SetAutoFedd(1)
    oScan:SetRes( 300 ) && 150dpi
*    oScan:PixelType( TWAIN_BW )
    oScan:PixelType( TWPT_RGB )
    oScan:SetHide( .T. )
    oscan: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:=oscan:Digitofile( cFile,oscan )
                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. oScan:BC_available()
        msgalert("No esta registrada la aplicacion","Atencion")
    endif
    oScan: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 (fw): Select all Collapse
METHOD DigiToFile( cFile,oscan )
  local cBarValue:=""
       if EMPTY( cFile )
          cFile := ::cFile
       endif

       IF !::lError
      ::hDib := ::Acquire()         // Importar
      if oScan:BC_Recognize(::hDib,1,-1)>0
            cBarValue:=oScan: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
--------------------------

Saludos



Jose Luis
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado
Posted: Tue Dec 07, 2010 12:36 PM

Pues eso, que está solucionado.

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

Saludos

--------------------------

Saludos



Jose Luis
Posts: 880
Joined: Fri Jan 12, 2007 08:35 PM
Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado
Posted: Thu Dec 09, 2010 05:44 AM

Hola

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

soy muy curiosa :oops: sorry

Saluditos :wink:

Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM
Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado
Posted: Thu Dec 09, 2010 07:33 AM
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 (fw): Select all Collapse
    tw_SetMultiTransfer(1)


y en el bucle que se encarga de escanear continuamente:

Code (fw): Select all Collapse
   Do while tw_waitforImage(oscan)=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 (fw): Select all Collapse
 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
--------------------------

Saludos



Jose Luis
Posts: 880
Joined: Fri Jan 12, 2007 08:35 PM
Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado
Posted: Thu Dec 16, 2010 06:17 AM

Que lindo muchas gracias veré si me queda tu consejo :mrgreen:

Muchos tenquius :D

Saluditos... :wink:

Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
Posts: 17
Joined: Wed Feb 04, 2009 09:38 PM
Re: Problema con Tscan32 de Rafa (Thefull).- Solucionado
Posted: Mon Dec 16, 2019 03:21 PM

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

Continue the discussion