Funcao para ler peso

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Carlos Alberto
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 02 Out 2012 16:46
Localização: Espirito Santo

Funcao para ler peso

Mensagem por Carlos Alberto »

Boa tarde amigos!
Preciso de ajuda !!
Trabalho numa empresa que utiliza uma balança com plataforma para pesar caminhões, essa balança tem um aparelho digital onde aparece o peso, o modelo dele é o 8132 da Toledo. Pois bem, minha difculdade é ler esse peso para gravar num arquivo.
Já copiei alguns exemplos deste mesmo forum, porem não obtive êxito, gostaria muito se alguém pudesse me ajudar. Segue um exemplo:
Como Sistema Operacional utilizo o Win 98 e Win XP.

Código: Selecionar todos

Function Ler_Peso()
   Local nPorta := 1
   Local cTrans := "N"
   Local nBits  := 8
   Local nParad := 1
   Local nVeloc := 4800
   Local cInicia:= Chr(5)
   Local Erro   := .F.
   Local VlrPeso:= 0
   Local nRetorn:= .T.
   nConta := 0
   Com_Close(nPorta)
   If Com_Open(nPorta,1000,1000) == .t.
      nConf := Com_Init(nPorta,nVeloc,cTrans,nBits,nParad)
      Com_Send(nPorta,cInicia)
      Inkey(0.10)
      Com_Count(nPorta)
      Inkey(0.10)
      nLeitura := Com_Read(nPorta,10)
      nLeitura := Subs(nLeitura,6,5)
      If Substr(nLeitura,1,1) == Chr(02) .and. Right(AllTrim(nLeitura),1) == Chr(03)
         Alert(nLeitura)
      End
      Com_Close(nPorta)
   End
Return(.t.)
Editado pela última vez por Toledo em 11 Jun 2014 14:01, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

Funcao para ler peso

Mensagem por Maurício Elias »

Olá colega, boa noite.
Tempos atrás eu lia o peso direto da balança no caixa. Nunca mais usei, mas o cód segue. Espero que te alude em alguma coisa.

Código: Selecionar todos

*------------------
Function Busca_Peso (nCom)
*------------------
Local nBuffer := 2400, nPar   := "N", nDados := 8, nStop := 1
Local nIOn := "", nIRQ := "", Inicia := "", nCont := 0, cInput := ""
Local nPeso := "", nTenta := 1

*** Inicializacao da porta ***
if nCom = 1          &&  Buscar em: Gerenciador de Disp - Porta COM(x) - Recursos
  nIO  := "03F8"     &&  -> Intervalo de ES
  nIRQ := 04         &&  -> Pedido de Interrup
elseif nCom = 2
  nIO  := "02F8"
  nIRQ := 03
elseif nCom = 3
  nIO  := "02F8"     && ???
  nIRQ := 03         && ???
elseif nCom = 4
  nIO  := "9000"     
  nIRQ := 19         
endif

do while nTenta <= 3
  Com_Close(nCom)
  Com_SetIO(nCom,nIO)
  Com_SetIRQ(nCom,nIRQ)
  Com_Open(nCom,1000)
  nInicia:=Com_Init(nCom,nBuffer,nPar,nDados,nStop)

  nCont=0
  do while nCont < 7          // * aguarda 7 bytes na porta
     inkey()
     if l()
       Return 0
     endif
     Com_Send(nCom,5)         // * Envia ENQ
     nCont = Com_Count(nCOM)
  enddo

  cInput := Com_Read(nCom)    //* lˆ a porta
  nPeso = Subst(cInput,2,5)
  nPeso = round( val(nPeso)/1000 ,3)
  if nPeso > 0
    exit
  endif
    
  nTenta++
enddo
Return (nPeso)
Editado pela última vez por Toledo em 13 Jun 2014 22:51, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Abraços.
_______
Maurício
Carlos Alberto
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 02 Out 2012 16:46
Localização: Espirito Santo

Funcao para ler peso

Mensagem por Carlos Alberto »

Bom dia amigo !
Muricio antes de mais nada obrigado por me responder.
Copiei o seu código, e ja estou trabalhando nele, tenho uma duvida na linha que tem o codigo:
do while ncont < 7
inkey()
If 1() // NAO ENTENDI BEM ESSE ^IF" É UM NUMERO OU LETRA?
Return 0
Endif
Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

Funcao para ler peso

Mensagem por Maurício Elias »

Olá, boa tarde grande, fico feliz que tenha te ajudado.
É uma função minha... rs não lembrei em explicá-la...
Function L // testando o Esc.
if Lastkey() = 27
return .T.
endif
return .F.
Abraços.
_______
Maurício
Responder