Jump to content
Fivewin Brasil

Ler código de barras de balança (Resolvido)


betovsp

Recommended Posts

Olá, bom dia nos nossos sistema temos algo assim para evitar problemas quando se mudar de marca, modelo, ou seja configuramos conforme a balança do cliente

Veja a imagem 

 

balan%C3%A7a.jpg?1608631761

Seria isso meus amigos

Quanto ao Código, seria assim, algumas funcoes de exibição de msg não estão no exemplo, mas basta trocar por alert(), ou comentar
Tipo 
MOSTRAR_INCONSISTENCIA(..........)       
AGUARDE_PROCESSANDO_TRES_LINHAS(......)
Segue abaixo, bom proveito

*===============================================================================
* LER_PESO_

* Funcao que faz o peso da balança
*===============================================================================
FUNCTION LER_PESO_BALANCA(o_numero_tentativa)
	*----------------------------------------------------------------------------
	ERROS_INCONSISTENCIA		:= 0
	aInconsistencias			:= {}
	*----------------------------------------------------------------------------
	IF SELECT("parametros") != 0
		parametros->(DbCloseArea())
	ENDIF		
	cQuery:=	' select * from parametros ORDER BY ID '
	use sql cQuery alias "parametros" new via 'MYSQL'
	parametros->(DbGoTop())
	*----------------------------------------------------------------------------
	IF parametros->ID == 0
		MsgStop('Arquivo de Parâmetro Inválido !',SISTEMA)
		RETURN .F.
	ENDIF
	*----------------------------------------------------------------------------
	T_BALANACA_PORTA									:= ALLTRIM(parametros->BALANACA_PORTA)
	T_BALANACA_VELOCIDADE_PORTA					:= VAL(ALLTRIM(parametros->BALANACA_VELOCIDADE_PORTA))
	T_BALANACA_BITS_PORTA							:= VAL(ALLTRIM(parametros->BALANACA_BITS_PORTA))
	T_BALANACA_PARIDADE_PORTA						:= VAL(ALLTRIM(parametros->BALANACA_PARIDADE_PORTA))
	T_BALANACA_TEMPO_PORTA							:= VAL(ALLTRIM(parametros->BALANACA_TEMPO_PORTA))
	T_BALANACA_BUFFERS_PORTA						:= VAL(ALLTRIM(parametros->BALANACA_BUFFERS_PORTA))
	*----------------------------------------------------------------------------
	AGUARDE_PROCESSANDO_TRES_LINHAS("Aguarde, "+ alltrim(parametros->BALANACA_MODELO),"Lendo Peso da Balança "+alltrim(T_BALANACA_PORTA),"Tentativa.: "+alltrim(str(o_numero_tentativa,10,0))+'/50' )
	*----------------------------------------------------------------------------
	IF ALLTRIM(parametros->BALANACA_INTEGRADA) != 'S'
		ERROS_INCONSISTENCIA	:= ERROS_INCONSISTENCIA	+ 1
   	aAdd(  aInconsistencias, { 'E',;
   										ALLTRIM(STRZERO(ERROS_INCONSISTENCIA,06,0)),;
											'Sistema Não está Configurado para Integração Com Balança',;
   										'',;
   										'',;
   										'',;
   										'',;
											''} )
	ENDIF
	*----------------------------------------------------------------------------
	IF EMPTY(ALLTRIM(T_BALANACA_PORTA))
		ERROS_INCONSISTENCIA	:= ERROS_INCONSISTENCIA	+ 1
   	aAdd(  aInconsistencias, { 'E',;
   										ALLTRIM(STRZERO(ERROS_INCONSISTENCIA,06,0)),;
											'Porta de Comunicação Não Está Preenchida em Parâmetros',;
   										'',;
   										'',;
   										'',;
   										'',;
											''} )
	ENDIF
	*----------------------------------------------------------------------------
	IF T_BALANACA_VELOCIDADE_PORTA = 0
		ERROS_INCONSISTENCIA	:= ERROS_INCONSISTENCIA	+ 1
   	aAdd(  aInconsistencias, { 'E',;
   										ALLTRIM(STRZERO(ERROS_INCONSISTENCIA,06,0)),;
											'Velocidade da Porta de Comunicação Não Está Preenchida em Parâmetros',;
   										'',;
   										'',;
   										'',;
   										'',;
											''} )
	ENDIF
	*----------------------------------------------------------------------------
	IF T_BALANACA_BITS_PORTA = 0
		ERROS_INCONSISTENCIA	:= ERROS_INCONSISTENCIA	+ 1
   	aAdd(  aInconsistencias, { 'E',;
   										ALLTRIM(STRZERO(ERROS_INCONSISTENCIA,06,0)),;
											'Bits da Porta de Comunicação Não Está Preenchida em Parâmetros',;
   										'',;
   										'',;
   										'',;
   										'',;
											''} )
	ENDIF
	*----------------------------------------------------------------------------
	IF ERROS_INCONSISTENCIA != 0
		MOSTRAR_INCONSISTENCIA(aInconsistencias,'Problemas Com a Configuração da Balança','Tipo|Num|Descricao|Informação|*|*|*|*')
	ENDIF
	*----------------------------------------------------------------------------
	*NHANDLE:=Init_Port("COM3",9600,8,0,1,8000) // conf da porta serial
	NHANDLE:=Init_Port( (T_BALANACA_PORTA) , (T_BALANACA_VELOCIDADE_PORTA) , (T_BALANACA_BITS_PORTA) , (T_BALANACA_PARIDADE_PORTA) , (T_BALANACA_TEMPO_PORTA) , (T_BALANACA_BUFFERS_PORTA) )    &&&// conf da porta serial
	OutBufClr(NHANDLE) // Limpa o Buffer de Saida
	OUTCHR(NHANDLE,CHR(5))
	SysWait(0.3)
 	Bytes 	:= InbufSize(NHANDLE)
	DADOS		:= SPACE(20)
	Buffer 	:= InChr( NHANDLE, Bytes, @DADOS) //LER BUFFER DE ENTRADA DA BALANCA
	UnInt_Port(nHandle)
	dados		:= alltrim(dados)   
	* A comando abaixo pega a quantidade lida da balança 
	Q=val(substr(dados,2,5))/1000
	IF Q=0
		PU=1
		VLU:=TRANSFORM(PU,"@E 9999.99")
	ENDIF
	odlgwait:end()
RETURN Q //retorna a quantidade para ser manipulada pelo programa

 

 

Link to comment
Share on other sites

Amiguinhos,

O codigo da balança vem mais ou menos assim 2xxxxxxnnnnn onde 2 indica que o codigo precisa ser tratado, xxxxxx indica o código do produto no estoque(com zeros a esquerda) e nnnnn indica o valor R$ pesado. Bastará destrinchar, recalcular o que for necessário e trabalhar a inserção no pedido.

Link to comment
Share on other sites

  • 2 weeks later...
Em 24/12/2020 at 13:42, rochinha disse:

Amiguinhos,

O codigo da balança vem mais ou menos assim 2xxxxxxnnnnn onde 2 indica que o codigo precisa ser tratado, xxxxxx indica o código do produto no estoque(com zeros a esquerda) e nnnnn indica o valor R$ pesado. Bastará destrinchar, recalcular o que for necessário e trabalhar a inserção no pedido.

Isso mesmo rochinha, essa explicação bateu com o que ela a balança imprime. Deu certo. Obrigado.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...