terça-feira, 22 de dezembro de 2015

Wx - Código Exemplo de Leitura do Peso da Balança Filizola e Toledo para Supermercados, Padarias e Restaurantes

Wx - Código Exemplo de Leitura do Peso da Balança Filizola e Toledo para Supermercados, Padarias e Restaurantes



http://forum.pcsoft.fr/pt-BR/pcsoft.br.windev/831-codigo-exemplo-leitura-peso-balanca-filizola-toledo-para/read.awp



// Balança de peso fixo: é a balança que somente disponibiliza o buffer quando o peso está estabilizado. por exemplo, //Toledo 9094.
// Balança de peso variável: é a balança que apresenta o peso enquanto o mesmo não está estabilizado mas disponibiliza //a leitura do buffer mesmo assim. por exemplo, Filizola BP-15


// Fixed weight scale: the scale that only provides the buffer when the weight is stabilized. for example, Toledo 9094.
// Variable weight scale: the scale that shows the weight while it is not stabilized but available reading buffer anyway. for //example, Filizola BP-15


// Échelle de poids fixe: l'échelle qui ne fournit que la mémoire tampon lorsque le poids est stabilisé. par exemple, de //Toledo 9094.
// Échelle de poids variable: l'échelle qui montre le poids alors qu'il ne se stabilise pas, mais disponible tampon de lecture //de toute façon. Par exemple, Filizola BP-15

CODE:

bufM_peso_lido_com is Buffer
// é necessário que a varável que receberá o retorno seja do tipo buffer

rM_peso_lido_com_tratado is real = 0

sM_peso_lido_verifica_1 is string = "" // armazena o valor da primeira leitura
sM_peso_lido_verifica_2 is string = "" // armazena o valor da segunda leitura
sM_peso_lido_verifica_3 is string = "" // armazena o valor da terceira leitura

bM_peso_lido_verifica_erro is boolean = False
nM_peso_lido_verifica_leitura is int = 0

sClose(gnPar_ParTermBalancaPorta)
// apenas por segurança força o fechamento da porta caso tenha sido aberta - gnPar_ParTermBalancaPorta contem número da porta: 1(com1) 2(com2) 3(com3) ...
Wait(5)
// é necessário aguardar para evitar atropelamento no próximo comando para a porta serial

VERIFICA_3_LEITURAS:
// em caso de balança com peso variável faço 3 lleituras para evitar uma possível leitura errada enquanto o peso não está estabailizado
IF sOpen(gnPar_ParTermBalancaPorta,1,16) THEN // abrindo a porta serial
Wait(gnPar_ParTermBalancaTimeOut)
// timeout para evitar atropelamento no próximo comando para a porta serial. tenho isso como parâmetro para cada terminal pois pode variar de balança para balança

IF sParameter(gnPar_ParTermBalancaPorta,gnPar_ParTermBalancaParametroBaudeRate,gnPar_ParTermBalancaParametroParity,gnpar_ParTermBalancaParametroDataBits,gnpar_ParTermBalancaParametroStopBits,gnPar_ParTermBalancaParametroDtrDsr) = True THEN
// parâmetros de configuração
Wait(gnPar_ParTermBalancaTimeOut)
// timeout para evitar atropelamento no próximo comando para a porta serial. tenho isso como parâmetro para cada terminal pois pode variar de balança para balança

IF sWrite(gnPar_ParTermBalancaPorta,Charact(5)) = True THEN // o caracter decimal 5 é o compreendido com o requisição
Wait(gnPar_ParTermBalancaTimeOut)
// timeout para evitar atropelamento no próximo comando para a porta serial. tenho isso como parâmetro para cada terminal pois pode variar de balança para balança

bufM_peso_lido_com = sRead(gnPar_ParTermBalancaPorta,16) // faz a leitura do buffer da porta

sClose(gnPar_ParTermBalancaPorta) // fecha a porta para uma próxima leitura, se necessário **** vide comentários no fim da rotina

IF NoSpace(bufM_peso_lido_com) <> "" THEN
bufM_peso_lido_com = Middle(bufM_peso_lido_com,gnPar_ParTermBalancaParametroRetornoPosIni,gnPar_ParTermBalancaParametroRetornoDigitosdoPeso)
//gnPar_ParTermBalancaParametroRetornoPosIni - parâmetros onde indica em qual posição começa a informação do peso, na leitura do buffer
//gnPar_ParTermBalancaParametroRetornoDigitosdoPeso - parâmetros onde indica em qual posição termina a informação do peso, na leitura do buffer
rM_peso_lido_com_tratado = Val(bufM_peso_lido_com) / 1000

IF gsPar_ParTermBalancaTipoRetorno = "C" THEN // parãmetro que indica quando a balança possui peso do tipo varíavel **** vide comentários no fim da rotina
GOTO FIM
// finaliza a rotina pois balanças de peso constante somente liberam o buffer após o peso estar estabilizado
END

IF gsPar_ParTermBalancaTipoRetorno = "V" THEN // parãmetro que indica quando a balança possui peso do tipo varíavel **** vide comentários no fim da rotina
nM_peso_lido_verifica_leitura++

IF nM_peso_lido_verifica_leitura = 3 THEN
IF sM_peso_lido_verifica_1 <> sM_peso_lido_verifica_2 OR sM_peso_lido_verifica_1 <> sM_peso_lido_verifica_3 THEN
bM_peso_lido_verifica_erro = True
END
IF sM_peso_lido_verifica_2 <> sM_peso_lido_verifica_1 OR sM_peso_lido_verifica_2 <> sM_peso_lido_verifica_3 THEN
bM_peso_lido_verifica_erro = True
END
IF sM_peso_lido_verifica_3 <> sM_peso_lido_verifica_1 OR sM_peso_lido_verifica_3 <> sM_peso_lido_verifica_2 THEN
bM_peso_lido_verifica_erro = True
END

IF bM_peso_lido_verifica_erro THEN
rM_peso_lido_com_tratado = 0
Error("É Necessário Que o Peso Esteja Estabilzado!")
END
ELSE
GOTO VERIFICA_3_LEITURAS
END
END
ELSE
Error("Não Foi Possível Obter o Retorno da Porta COM")
END
ELSE
Error("Não foi Possível Enviar o Comando à Porta COM.")
END
ELSE
Error("Parâmetros Inválidos Para a Porta COM.")
END
ELSE
IF p_avisa_erro_porta_com THEN
Error("Porta COM Não Acessível!")
END
END

FIM:

sClose(gnPar_ParTermBalancaPorta) // fecha a porta de comunicação








Nenhum comentário:

Postar um comentário

Teste

Teste
teste