Página 1 de 1

Extrair Codigo de Barra via Serial (COM1)

Enviado: 04 Jan 2009 00:49
por Valnegocios
Ola,

Colegas tenho uma aplicação feita em clipper 5.2, e estou tendo dificuldade como ler um codigo de barra de um LEITOR FIXO (DATALOG) via serial (COMx). Sera que alguem pode me ajudar como fazer isso funcionar.

Obrigado :-O

Re: Extrair Codigo de Barra via Serial (COM1)

Enviado: 04 Jan 2009 01:08
por Maligno
Olá
Seja bem-vindo ao fórum. :)

Você apenas disse que está tendo problema. Além do óbvio (não consegue ler), você precisa informar mais alguma coisa. Se lê lixo ou não lê nada, qual biblioteca você está usando para fazer essa leitura, se há algum programa residente que use o teclado como meio de entrada, etc. Com mais dados, seria mais fácil opinar a respeito e propor alguma alternativa.

Re: Extrair Codigo de Barra via Serial (COM1)

Enviado: 04 Jan 2009 10:09
por Valnegocios
Ola,

Obrigado pela atenção.

Desculpas se não expressei bem. Bom, na verdade esse leitor nao é via teclado como outros e sim via serial, e nunca fiz coisa assim, entao para ser mais justo no que falei é que não sei colocar isso para funcionar. Colega trabalho com clipper 5.2 a um bom tempo mas como tudo tem a primeira vez, estou pedindo ajuda como começa que biblioteca usar para resolver esse problema. Se tem algum exemplo ou rotinas para isso peço ajuda.

Extrair Codigo de Barra via Serial (COM1)

Enviado: 05 Jan 2009 08:01
por frazato
Bom dia!
Utilizo esta rotina para leitura direto na porta serial usando Hbcom com xharbour é bem simples e funciona inclusive em portas maiores que 2 (Usei em PCI).

Para uso direto em clipper você terá que substituir os comando da lib por outra compatível com o clipper ou gravar os dados do xharbour direto em no teclado como se fosse ou leitor teclado onde você carregaria o sistema feito em xharbour que faz a leitura da porta e grava em um teclado ou arquivo txt.


Frazato

Código: Selecionar todos

  *   Leitor_R232()
/* 
   Leitor de Codigo de Barras Serial
*/

cPort       := cScan_Porta//'COM5 '
nBaudrate   := nScan_Veloc//9600
nDatabits   := nScan_Bists//8
nParity     := nScan_Parid//0
nStopbits   := nScan_BStop// 1


If ! Empty(cPort)
     Set key -38 to LerPorScaner()
     keysec(-38,0.1,-0.1,.t.)  // Programa F10 a cada TEMPO segundos,
Endif

If ! Empty(cPort)
        Public cScanRS232:= Init_Port( cPort, nBaudrate, nDatabits, nParity, nStopbits, 1000 )
        If cScanRS232 <= 0
           Alerta("Erro ao iniciar a porta de comunicacao !")
        Endif

        If IsWorking( cScanRS232 )== .F.
           Alerta("Favor configurar a porta serial !")
        Endif
Endif

//------------------------------------------------------
Function Leitor_R232(cPor)
Local nBuffersize := 1000
Local nTentativa  := 0
Local cString     := ''
Local x           := 0
Local nChar       := 1
Local cBuff       := Space(100) //14

If InBufSize(cPor) <= 0
   Return 
Endif
//OutBufClr( cPor )

While ( x++ <= 50 ) //50
  InChr( cPor,nChar,@cBuff )
  If Asc(cBuff)==13 .or. Asc(cBuff)==10
     Exit
  Else
     cString+= Alltrim(cBuff)
  Endif
  If LastKey()==27
     Exit
  Endif
End While
If Len(cString) > 0
   KeyBoard cString+Chr(13)
Endif
Return .t.

//---------------------------------------------------------
Function LerPorScaner()
         Leitor_R232(@cScanRS232)
Return Nil

Re: Extrair Codigo de Barra via Serial (COM1)

Enviado: 05 Jan 2009 12:39
por Valnegocios
Frazato,

Legal, estou grato pela resposta irei tentar substituir os comandos do exemplo para clipper.

Abraços.

Re: Extrair Codigo de Barra via Serial (COM1)

Enviado: 05 Jan 2009 14:24
por Valnegocios
Frazato,

ehehehe...

Agradeço muito pelo exemplo mas, agora queria perdir para vc se possivel pudesse me ajudar como colocar isso em um Get. Fazendo um teste observei que a rotina mudada para clipper fez beleza a leitura mas, se eu precisar digitar um numero no Get já não dar certo, pois, preciso colocar no sistema a onde não ler, DIGITAR o codigo de barra do produto e não digitando com o ENTER uma janela é exibida para procurar o produto.

O exemplo como estou fazendo está anexado a leitura. ??

*
DO WHILE .T.

VcodBarra:=Space(13)

@ 12,00 say "Codigo -> "

VcodBarra = LerLeitor()

@ 12,00 say "Codigo -> " Get VcodBarra // -> Se não digitar o codigo dar o Enter .
Read

@ 15,00 say VcodBarra

IF Lastkey()=27
Clear
Exit
ENDIF

ENDDO

*


Obrigado.

Re: Extrair Codigo de Barra via Serial (COM1)

Enviado: 05 Jan 2009 16:56
por frazato
No caso eu faço uma simulação de um tecla sendo apertada chamando a rotina que fica lendo a porta serial e quando identifica algo aciona a rotina de leitura que envia para o teclado, desta forma a rotina funciona em qualquer GET o chato e que quando se tem que usar uma tela tem que fica ligando e desligando,mais poderia ser colocada no VALID ou When de um GET sando com um enter que veem pela leitura ou ESC.


Faço este processo para leitura de peso na balança que neste caso o usuario tem que digitar o codigo e o sistema faz a captura do pelo automatico.


Frazato



@ 29, 58 get mquant picture "@E 9999.999" ;
When LerBalanca(mQuant,xProdePesado)== .t. .or. xPodeMultiplicar== .t.;
Valid LerBalanca(mQuant,xPodeMultiplicar)==.t. .and. mQuant > 0