Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

Postado

Senhores , eu tenho andado as voltas com uma rotina de balança para uso em um self-service, a balança uma Toledo Prix 3 , baixei a lib de testes, aqui no meu ambiente não tenho a balança fisica e por isso usei o emulador , estou usando a linguagem Visual FoxPro , carreguei a DLL ( olhei os exemplos )  e  consigo ler o peso porém uma única vez , na segunda já vem um erro e simplesmente um erro sem dizer nada mais... 
pensei ser porque estou usando um emulador e enviei o programa para quem tem a balança mais lá também ocorre o mesmo erro 
os passos que eu utilizei foram 
ativar 
#solicitarPeso ( não sei se isso funciona quanto tentei não deu certo então comentei )
lerpesoStr
se eu tento novamente lerpesoStr
aqui eu já recebo o retorno -10  

Postado

oLÁ Boa tarde !
Prezado obrigado já de antemão pela iteração , 
Então eu nunca fiz uso de nada relacionado a balança , para não dizer isso a unica coisa que já fiz foi relacionado ao código de barra destes dispositivos que começa com 2 mais que não é o caso aqui ... 
Você pergunta se eu estou usando Monitoramento de peso...  olha ... sinceramente eu vou te responder interpretando o termo "monitoramento" que suponho ser algo que monitora a porta por meio de algum evento se eu interpretei certo não não é isso o meu intuito é usar um timer e ficar consultando de tempos em tempos se existe algum algo ( se retornou um peso )  por enquanto na faze de testes eu estou usando um botão mesmo embora eu já tenha o componente timer no form para este fim 

form balanca.jpg

Postado (editado)

o que ocorre ao ler pela segunda vez em diante é o retorno -10 que segundo o manual que diz Indica que houve erro ao ler o peso da Balança no aCBrBal, mais qual o erro? e porque leu a primeira vez e na segunda em diante não?  
estou usando um código muito simples ... que obtive nos exemplos 

 

Procedure LePesoStr()
      local hResult, buffer, bufferLen, oErr

      bufferLen = STR_LEN
      buffer = Space(bufferLen)
    
      hResult = BAL_LePesoStr(2000, @buffer )
      ? hResult  && aqui já retorna -10 na segunda tentativa 
      Return This.TratarResultado(hResult, @buffer, @bufferLen)
   EndProc

 

agora eu notei algo... embora o retorno da função retorne -10 no log mostra uma informação do ultimo peso lido como se houvesse um equivoco ai, e outro detalhe se eu uso antes de pedir o peso o comando para solicitar peso ( que eu até removi porque não entendi o seu proposito pratico ... porque pelo nome da função esta claro sim )  segue imagem do log o que esta em amarelo foi quando usei antes de ler o peso a função solicitar peso
em azul esta informação que esta vindo no log esta vindo mesmo o retorno da função retornando -10

log balanca.jpg

Editado por rlira
mais informações
Postado

Cara olha realmente a pouca experiência com este tipo de dispositivo me deixa com todo tipo de duvida 
mais o código para isso é no mínimo monossilábico ... estar fechando algo impossível o código que chama a o método da DLL eu postei acima BAL_LePesoStr
já o código do botão é mínimo mais como disse nenhuma experiência com balança me deixa realmente numa posição desfavorável 

mais vou colocar aqui imagens que são muito simples .. e que acho que é como deve ser no entanto vou colocar uma outra imagem que é como eu obtenho o peso que é obtido no método TratarResultado que faz uso do BAL_UltimoRetorno

que joga o retorno na propriedade  This.Mensagem = Strconv(buffer, UTF8_TO_STR)

Resumindo... não vejo como eu esteja fechando algo... e uma vez que o log ele registra o peso porém o que ocorre é que ao chamar o peso retorna -10

 

Balanca btnLePeso.jpg

Balanca trataResultado.jpg

Postado

Prezados boa noite

 

Será que após eu obter o peso eu precise fazer algo... ( na verdade nem sei o que dizer )  tipo limpar algo para poder fazer a próxima leitura?  na verdade nem sei mais o que fazer ... andei olhando o código de exemplo feito em Harbour que se parece um pouco com o VFP e olhei também em Pyton mais nada me deu a entender que eu esteja fazendo algo errado

Postado

Olá bom dia Juliomar!!!!

Prezado obrigado pelo retorno, eu também compreendo que devido a eu nunca ter trabalhado com estes dispositivos isso dificulta um pouco o meu progresso mais ....

deixa ver se eu entendi.. hoje eu estou usando a função da DLL  BAL_Le_PesoStr  vc mencionou ai o termo "pegar a ultima leitura"  

Então eu passaria a não fazer desta forma mais...

primeiro

   mudar a configuração para MonitorarBalanca=1

segundo 
   usar uma outra função  BAL_UltimoPesoLidoStr  ou  BAL_UltimoPesoLido  

Postado


Sim , sim eu sei da documentação até porque além dos exemplos eu as utilizei mais a documentação ela não instrui a nível de negócio e o que vc me disse a pouco ai é negócio ,  vc  me  deu uma dica e eu aqui "preso" no le_peso, le_peso ... mais dai o que vc me disse a pouco agora abriu a minha mente pois se eu entendi bem o que vc quis dizer a documentação ela não da esta "dica"  pode até ser para os mais experientes 

Postado

Olá boa tarde

Eu tentei agora fazer o que vc sugeriu , a lib esta configurada para MonitorarBalanca = 1  
eu entendo isso como que isso disparasse um Evento , um OnPeso da vida... não existe na documentação na parte da Balança que descreva evento, apenas Métodos 

com isso eu Não mais passei a utilizar o comando Le_Peso ou Le_PesoStr  entendendo que com o monitoramento eu precisaria substituir estes comandos por outro dai tentei  

BAL_UltimoRetorno
BAL_SolicitarPeso
BAL_UltimoPesoLidoStr

Nenhum me retornou nada , inclusive o ultimo da erro, já que há um monitoramento ativado, o arquivo de log tem vários conteúdos como 
UltimoPesoLido: 1,233 - Resposta: 01233 - Protocolo: Protocolo B.   

vendo este log então eu pensei porque não trocar o BAL_UltimoPesoLidoStr  por  BAL_UltimoPesoLido    é   um  chute já que a documentação não diz muito sobre isso alias a documentação ela trata da função ou método apenas seria bom que ela desse uma ajuda no emprego ou uso em que momento..... porque usar ... se repete sempre se é uma unica vez.... 

Resultado com o monitoramento BAL_UltimoPesoLidoStr não funciona mais   BAL_UltimoPesoLido  sim 

dai agora eu voltei ao jogo

 

 

 

Postado (editado)

Olá !!!!
Sim, sim deu certo meu caro e muito obrigado 

Eu só acredito que um passo a passo ou um fluxo de como se deve usar a DLL para esta finalidade poderia figurar nos tutoriais , como eu disse a documentação existe mais ela é direta e simplesmente diz:
"- Este comando faz isso!" e só 
dai o fluxo que eu construi foi meio que baseado na martelada vc viu ai que eu tive que expermentar BAL_UltimoRetorno depois BAL_SolicitarPeso depois BAL_UltimoPesoLidoStr
e o comando BAL_UltimoPesoLidoStr  deu erro e por fim BAL_UltimoPesoLido e deu certo mais porque eu vi no log que isso estava ecoando lá  então experimentei ... deu certo não sei se eu fiz corretamente os passos mais suponho que sim 

Editado por rlira
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...