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
// 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