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
Extrair Codigo de Barra via Serial (COM1)
Moderador: Moderadores
-
Valnegocios
- Usuário Nível 1

- Mensagens: 5
- Registrado em: 07 Dez 2008 23:37
- Localização: PI-Teresina
Re: Extrair Codigo de Barra via Serial (COM1)
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.
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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
Valnegocios
- Usuário Nível 1

- Mensagens: 5
- Registrado em: 07 Dez 2008 23:37
- Localização: PI-Teresina
Re: Extrair Codigo de Barra via Serial (COM1)
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.
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)
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
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-
Valnegocios
- Usuário Nível 1

- Mensagens: 5
- Registrado em: 07 Dez 2008 23:37
- Localização: PI-Teresina
Re: Extrair Codigo de Barra via Serial (COM1)
Frazato,
Legal, estou grato pela resposta irei tentar substituir os comandos do exemplo para clipper.
Abraços.
Legal, estou grato pela resposta irei tentar substituir os comandos do exemplo para clipper.
Abraços.
-
Valnegocios
- Usuário Nível 1

- Mensagens: 5
- Registrado em: 07 Dez 2008 23:37
- Localização: PI-Teresina
Re: Extrair Codigo de Barra via Serial (COM1)
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.
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)
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
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

