Page tree

Homologação Balança Toledo 9091

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Varejo

Módulo:

Controle de Lojas

Rotina:

Rotina

Nome Técnico

LOJA121

Cadastro de Estação

Requisitos do Hardware:

  • Placa da balança: Unidirecional On-Board
  • Kit de instalação: 9091733, compatível com a DLL P05.dll

País(es):

Brasil

Sistema(s) Operacional(is):

Windows

Fontes do Pacote:

LOJA121.PRW 30/09/2016 15:22:36 07

LOJA1305.PRW 25/07/2016 10:51:30 07

STFECFCONTROL.PRW 27/09/2016 19:31:12 07

STFSTRATEGYECF.PRW 18/07/2016 17:15:27 07

STWECFCONTROL.PRW 23/08/2016 13:57:01 07

LOJXECF.PRX 30/09/2016 15:24:50 07

SIGALOJA.DLL (ID 0.3.140.5)

AUTOCOM.DLL (ID 3.4.1.5)

TOTVSAPI.DLL (ID 1.0.16.9)

P05.dll

borlndmm.dll

cp3240mt.dll

Testebalancatoledo.exe

Pacote:TWEJHT.zip

Descrição

Implementação no Cadastro de Estação (LOJA121) para seleção e uso da Balança Toledo 9091. 

Importante

. Para utilização desse modelo de balança é necessário que a placa da balança seja Unidirecional On-Board (conforme informado em resquisitos de Hardware ) para que a comunicação com a DLL do protheus seja realizada com sucesso

. Utilize as DLLs da balança que estão no pacote desta ficha: P05.dll, Borlndmm.dll e cp3240.dll ; estas devem estar na pasta 'SmartClient' do ambiente

Versão da DLL Fiscal SIGALOJA.DLL: 0.3.140.5; deve estar na pasta 'SmartClient' do ambiente

Será possível via user function a comunicação com a balança , apenas utilizando a DLL SIGALOJA sem utilizar o módulo Controle de Lojas

. Para teste de comunicação e verificação do retorno do peso entre Windows e DLL P05.dll, utilize o executável TesteBalancaToledo.exe (em anexo no pacote desta ficha)

Configurar o arquivo SIGALOJA.INI:

[TOLEDO]

BaudRate= ____ ( Configurar aqui a velocidade de comunicação da porta de comunicação)
DataBits= __  ( Configurar aqui a quantidade de bits de paridade da porta de comunicação)
Parity= _ ( Configurar a paridade ) 

ATENÇÃO: Esta configuração é primordial para a comunicação com a balança.

Nome dos modelos presentes ( para customização ):

Toledo 9091
Toledo 9094
Toledo 8217

Sugestão de Configuração dos modelos (de acordo com os modelos testados em ambiente de desenvolvimento):

Modelo Toledo 9091

BaudRate= 9600
DataBits= 7
Parity= 2

Modelo Toledo 9094

BaudRate= 9600
DataBits=
 
Parity=
0

Possíveis tratativas para uso da balança:

1 - Emissão de Mensagem de "Peso Instavel". Como resolver?

Verifique a configuração do arquivo SIGALOJA.INI ( acima ), verificando se a velocidade, a paridade e a quantidade de bits.

Pode efetuar o teste utilizando o executável de teste para a balança. Em anexo nesse chamado : TesteBalancaToledo.exe

 

Procedimento para Utilização

Exemplo:

       1.           Insira as dlls desse pacote P05.dll, Borlndmm.dll,cp3240.dl e sigaloja.dll na pasta 'SmartClient' do ambiente

       2.           No Controle de Lojas (SIGALOJA), acesse Atualizações / Ponto de Venda / Estação (LOJA121).

       3.           Selecione o modelo de balança Toledo 9091.

       4.            Efetue venda pela rotina Venda Assistida (LOJA701) dos produtos que usem balança ou use de forma customizada.

       5.            Verifique que o peso do produto é capturado.

 

Comunicação Via User Function ( customização )

Atenção! 

  • Caso utilize o módulo Controle de Lojas e a balança estiver setada no cadastro de Estação (LOJA121) não utilize o trecho da customização que faz a abertura da porta pois ao acessar o Loja a abertura de comunicação com a balança é efetuada. 
  • Caso utilize o módulo seja diferente de Controle de Lojas ou Frente de Lojas , o parâmetro MV_AUTOCOM deve estar igual a zero ( 0 ).
  • Não é necessário efetuar a abertura de comunicação a todo momento, efetua-se uma vez e assim chama-se somente a função de leitura do peso quantas vezes forem necessárias ( exemplo 2 )

Exemplo 1:

#include "protheus.ch"

User Function UsaBalanca()
Local aBalanca := {}
Local cPorta := "COM7"
Local cModelo := "Toledo 9091" //deve ser mandado exatamente este nome
Local cPeso := Space(8)           //contem o peso que retorna da balança
Local lUsaBalan := .F.
Local lLeBalan := .T.
Local nRet := -1
Local nTentativa:= 1

Private nHdlBalan := -1

aBalanca := {cModelo,cPorta}

If !Empty(aBalanca[1]).AND. !Empty(aBalanca[2]) .AND. nHdlBalan == -1
      //Abertura de comunicação com o equipamento
      nHdlBalan := BalancaAbr(aBalanca[1],aBalanca[2])
      lUsaBalan := nHdlBalan > 0
EndIf

If !lUsaBalan
   Alert("Sem comunicação com a balanca " + aBalanca[1])
Else
  Alert("Comunicação efetuada com sucesso")

 While lLeBalan
         nRet := BalancaPegaPeso(nHdlBalan,@cPeso)

        If nRet <> 0
            lLeBalan := .F.
       EndIf

       If lLeBalan
           lLeBalan := NoRound(Val(cPeso),3 ) <> 0
      EndIf

      If !lLeBalan
           If nTentativa > 3
                Alert("Tentativas de leitura de peso excedidas")
          Else
               lLeBalan := .T.
              nTentativa += 1
          EndIf
      EndIf
 End
EndIf

If lUsaBalan
   //Encerra a comunicação com o equipamento
   BalancaFec(nHdlBalan,aBalanca[2])
   nHdlBalan := -1
EndIf

Return lUsaBalan

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Exemplo 2:

#include "protheus.ch"

//Efetua a abertura de comunicação com o equipamento
User Function AbreComunicacao()
Local aBalanca := {}
Local cPorta := "COM7"
Local cModelo := "Toledo 9094" //deve ser mandado exatamente este nome
Local lUsaBalan := .F.
Local nHdlBalan := -1

PutMV("MV_AUTOCOM",0)

aBalanca := {cModelo,cPorta}

If !Empty(aBalanca[1]).AND. !Empty(aBalanca[2]) .AND. nHdlBalan == -1
  //Abertura de comunicação com o equipamento
  nHdlBalan := BalancaAbr(aBalanca[1],aBalanca[2])
  lUsaBalan := nHdlBalan > 0
  WritePProString("TOLEDO", "Conectado", AllTrim(Str(nHdlBalan)), GetClientDir()+"SIGALOJA.INI")
EndIf

If !lUsaBalan
  Alert("Sem comunicação com a balanca " + aBalanca[1])
Else
  Alert("Comunicação efetuada com sucesso")
EndIf

Return lUsaBalan

//Efetua a captura do peso na balança
User Function CapturaPeso()
Local lLeBalan := .T.
Local nRet := -1
Local nTentativa:= 1
Local cPeso := "" //contem o peso que retorna da balança
Local nPeso := 0
Local nHdlBalan := 0

While lLeBalan
  nHdlBalan := Val(GetPvProfString("TOLEDO","Conectado", "-1", GetClientDir()+"SIGALOJA.INI"))
  nRet := BalancaPegaPeso(nHdlBalan,@cPeso)

  If nRet <> 0
    lLeBalan := .F.
  EndIf

  If lLeBalan
    lLeBalan := NoRound(Val(cPeso),3 ) <> 0
  EndIf

  If !lLeBalan
    If nTentativa > 3
      Alert("Tentativas de leitura de peso excedidas")
      cPeso := "0"
    Else
      lLeBalan := .T.
      nTentativa += 1
    EndIf
   EndIf
End

Alert("Peso capturado: " + cPeso)
nPeso := Val(cPeso)

Return nPeso


//Efetua o fechamento de comunicação com a balança
User Function FechaComunicacao()
Local nHdlBalan := 0
Local nRet := 0
Local aBalanca := {}
Local cPorta := "COM7"
Local cModelo := "Toledo 9094" //deve ser mandado exatamente este nome

aBalanca := {cModelo,cPorta}

//Encerra a comunicação com o equipamento
nHdlBalan := Val(GetPvProfString("TOLEDO","Conectado", "-1", GetClientDir()+"SIGALOJA.INI"))
nRet := BalancaFec(nHdlBalan,aBalanca[2])
lUsaBalan := nRet > 0
nRet := -1

Return lUsaBalan

Teste realizado em ambiente de desenvolvimento