Indicador Líder DLL

A Líder Balanças apresenta a sua API (Application Programming Interface ou Interface de Programação para Aplicações), a qual é composta de um arquivo indicador.dll (Dynamic Link Library ou Biblioteca dinâmica).

A aplicação se destina a desenvolvedores de software, para que possam vir a realizar aplicações em diversas linguagens de programação, como por exemplo Delphi, C, C++, Java e outras e que através destas, consigam se comunicar com os produtos da Líder Balanças através da chamada a API indicador.dll em seus softwares.

O arquivo de API nada mais é do que um conjunto de rotinas e padrões de programação para acesso por um software.

As principais funções para as quais a API foi desenvolvida e se aplica são:

COMUNICAÇÃO

      
int openSerial ( const char* port, int baudRate, int dataBits, int stopBits, int parity ); // Abre comunicação Serial int openTcp ( const char* ip , int port ); // Abre comunicação TCP int isOpen ( ); // Verifica se a comunicação está aberta int close ( ); // Fecha a comunicação Serial ou TCP

COMANDOS BÁSICOS

      
int zerar ( ); // Zera o indicador int tarar ( ); // Tara Semiautomatica int tararManual ( int tara ); // Tara Manual int imprimir_calcularMedia( ); // Imprimir ou calcula a média (caso o calculo do peso médio estiver ativado) int perguntarPeso ( ); // Pergunta o peso manualmente (quando F303 = 0)

INFORMAÇÕES DA BALANÇA

      
double getPesoLiquido ( ); // Obtem o peso liquido double getPesoBruto ( ); // Obtem o peso bruto double getTara ( ); // Obtem a tara int getStatusBalanca ( ); // Obtem o status da balanca int getUnidadeMedida ( ); // Obtem a unidade do indicador int isModoContadoraDePecas ( ); // Verifica se o indicador esta no modo contadora de pecas int getProtocolo ( ); // Obtem o protocolo do indicador int getStatusBateriaIndicador ( ); // Obtem o status da bateria do indicador int getNivelBateriaIndicador ( ); // Obtem o nivel da bateria do indicador int getNivelBateriaTransmissorTx1 ( ); // Obtem o nivel da bateria do TransmissorTx1 int getNivelBateriaTransmissorTx2 ( ); // Obtem o nivel da bateria do TransmissorTx2

CÓDIGO E PRODUTO

      
// Função para iniciar cadastro na tabela de produtos int ERF_tabelaProduto ( ); // Esta função deve ser chamada para de evitar lacunas // na memória e mau funcionamento int cadastrarProduto ( char* codigo, char* descricao ); int alterarProduto ( char* codigo, char* descricao ); int deletarProduto ( char* codigo ); // Função para iniciar tabela nova (sobrescreve tabela do indicador) int EXC_iniciarTabelaProduto ( ); int EXC_cadastrarProduto ( char* codigo, char* descricao ); int EXC_finalizarTabelaProduto( int quantidadeProdutosTabelaEXC ); char* getTabelaProduto ( ); // Retorna uma string com a tabela do indicador int deletarTabelaProduto ( ); // Exclui/limpa a tabela do indicador

CONFIGURAÇÃO DO INDICADOR

      
char* setConfiguracaoIndicador ( int funcao, char* input ); // funcao = codigo do comando char* getConfiguracaoIndicador ( int funcao ); // retorna o valor atual da configuração int saveConfiguracaoIndicador ( ); // Salva todas as configurações feitas

RELATÓRIO DO INDICADOR

      
char* gerarRelatorio ( int tipo, char* input );

CONFIGURAÇÃO DE USUÁRIO

      
char* getUsuarioById ( int id ); // Retorna o nome do usuário do ID especificado char* setUsuario ( char* senhaMenu, int idUsuario, char* senhaUsuario, char* nomeUsuario ); // Salva usuário

GUIA DE UTILIZAÇÃO

Obs.: Todas as funções correm o risco de demorarem para terem um retorno (por isso possuem o retorno de TIMEOUT), com exceção das funções isOpen() e todas as funções da categoria INFORMAÇÕES DA BALANÇA que retornam quase que imediatamente seus valores, já que elas não dependem diretamente da velocidade de comunicação com o indicador. Dessa forma, recomendo realizar as chamadas de algumas das funções de forma assíncrona para evitar uma lentidão em sua aplicação, de qualquer forma, realize alguns testes das funções em sua aplicação e verifique se há realmente a necessidade de chamá-las de forma assíncrona em uma nova thread.

Comunicação

Para que a DLL seja usada corretamente, é necessário que uma comunicação com um Indicador 2051 sejá estabelecida corretamente por meio das funções openSerial ou openTcp. Dessas duas funções de abertura de comunicação, na primeira (Serial), deve-se atentar aos parâmetros passados a função, pois, mesmo que ela tenha um retorno 1, não significa necessariamente que a conexão foi estabelecida corretamente, tanto os parâmetros da função quanto da comunicação serial configurada no Indicador devem estar iguais(baudrate, databits, stopbits e paridade).

No momento em que a comunicação é iniciada, uma thread é utilizada para monitorar e coletar constantemente os dados enviados pelo Indicador. Para encerrar a comunicação, tanto serial quanto TCP, basta chamar a função close, que encerrará a thread de monitoramento e fechrá a comunicação.

FUNÇÃO PARÂMETROS RETORNO
openSerial port [char*] : porta serial
baudRate [int] : baudRate da comunicação
dataBits [int] : bits de dados, 7 ou 8
stopBits [int] : bits de parada, 1 ou 2
parity [int] : 1 = odd; 2 = even; 0 = none
int:
1 : Ok, Sucesso
0 : Erro/falha
-1 : Erro, Timeout
-2 : Erro, algum dos parâmetros é inválido
-3 : Erro, falha na alocação de memória
-4 : Erro, operação impedida, pois a comunicação já está aberta
openTcp ip [char*] : endereço IP
port [int] : número da porta TCP
close void int:
1 : Ok, Sucesso
0 : Erro/falha
-1 : Erro, Timeout
-5 : Erro, operação impedida, pois a comunicação já está fechada
isOpen void int:
2 : True - TCP
1 : True - Serial
0 : False

Comandos Básicos

FUNÇÃO PARÂMETROS RETORNO
zerar void int:
200 : Ok, Sucesso
-200 : Erro/falha
-1 : Erro, Timeout
-5 : Erro, operação impedida, pois a comunicação está fechada
tarar void int:
1 : Ok, Sucesso
100 : Ok, Tara Semiautomática
101 : Ok, Limpeza de tara manual
102 : Ok, Tara sucessiva
103 : Ok, Limpeza de tara
104 : Ok, Tara manual
0 : Erro/falha
-100 : Erro de Tara, peso maior do que a capacidade
-101 : Erro de Tara, há tara ativa
-102 : Erro de Tara, há tara automática ativa
-103 : Erro de Tara, tara manual sendo realizada com peso na célula
-104 : Erro de Tara, peso de pico ativo
-105 : Erro de Tara, tara com peso nulo
-106 : Erro de Tara, tara sucessiva sem peso
-107 : Erro de Tara, tara com peso negativo
-1 : Erro, Timeout
-2 : Erro, algum dos parâmetros é inválido
-5 : Erro, operação impedida, pois a comunicação está fechada
tararManual tara [int] : valor da tara(em gramas)
imprimir_calcularMedia void int:
301 : Ok, Sucesso para a solicitação do cálculo da média
300 : Ok, Sucesso para a solicitação de impressão
-300 : Erro/falha
-1 : Erro, Timeout
-5 : Erro, operação impedida, pois a comunicação está fechada
perguntarPeso void int:
1 : Ok, Sucesso
0 : Erro/falha
-1 : Erro, Timeout
-5 : Erro, operação impedida, pois a comunicação está fechada

Informações da Balança

Os valores do pesoLiquido, pesoBruto e tara devem ser utilizados juntos de outros 2 valores: o statusBalanca e o protocolo.

FUNÇÃO PARÂMETROS RETORNO
getPesoLiquido void double: Valor como número de ponto flutuante.
getPesoBruto void
getTara void
getStatusBalanca void int:
-3 : Peso em Excesso Positivo
-2 : Peso em Excesso Negativo
-1 : Estado da balança Desconhecido
0 : Peso Estável
1 : Peso Instável
2 : Valor de Pico
3 : Peso Médio
4 : Aguardando
5 : Perda de Comunicação
6 : Imprimindo
getUnidadeMedida void int:
-1 : Desconhecido
0 : kN
1 : lb
2 : kg
isModoContadoraDePecas void int:
0 : False
1 : True
getProtocolo void int:
-1 : Protocolo desconhecido
0 : Protocolo Líder 1
1 : Protocolo Líder 2
2 : Protocolo Líder 3
3 : Protocolo Líder 4
getStatusBateriaIndicador void int:
-1 : Desconhecido
0 : Carregando
1 : Em bateria
2 : Carga Completa
getNivelBateriaIndicador void int:
-1 : Desconhecido
0 : Baixa
1 : Regular
2 : Boa
3 : Completa
getNivelBateriaTransmissorTx1/td> void
getNivelBateriaTransmissorTx2 void

Código e Produto

Para cadastrar Código e Produto na tabela do Indicador temos 2 conjuntos de funções para fins diferentes:

FUNÇÃO PARÂMETROS RETORNO
ERF_tabelaProduto void int:
1 : Ok, Sucesso
0 : Erro/falha
-1 : Erro, Timeout
-5 : Erro, operação impedida, pois a comunicação está fechada
EXC_iniciarTabelaProduto void
cadastrarProduto codigo [char*]: código de até 14 dígitos.
descricao [char*]: descrição do produto de até 21 caracteres
int:
1 : Ok, Sucesso
0 : Erro/falha
-1 : Erro, Timeout
-2 : Erro, algum dos parâmetros é inválido
-5 : Erro, operação impedida, pois a comunicação está fechada
alterarProduto codigo [char*]: código de até 14 dígitos do produto a ser alterado.
descricao [char*]: nova descrição do produto de até 21 caracteres
deletarProduto codigo [char*]: código de até 14 dígitos do produto a ser deletado
EXC_cadastrarProduto codigo [char*]: código de até 14 dígitos do produto a ser alterado.
descricao [char*]: nova descrição do produto de até 21 caracteres
EXC_finalizarTabelaProduto quantidadeProdutosTabelaEXC [int]: Quantidade de produtos inseridos desde o inicio da tabela nova.
deletarTabelaProduto void
getTabelaProduto void char*: String contendo todos os produtos cadastrados, no formato:
Sendo N = total de produtos cadastrados
"#ACKRWCP,{N}\n
#RWCP,{codigoProduto1},{descricaoProduto1}\n
#RWCP,{codigoProduto2},{descricaoProduto2}\n
...
#RWCP,{codigoProdutoN-1},{descricaoProdutoN-1}\n
#RWCP,{codigoProdutoN},{descricaoProdutoN}"

--------------------------------------------------
Ou uma String contendo o erro, no formato:
"#ERRO: {codigoErro}"
codigoErro = 0: Erro/falha
codigoErro = -1: Erro, Timeout
codigoErro = -3: Erro, falha na alocação de memória
codigoErro = -5: Erro, operação impedida, pois a comunicação está fechada

Configuração do Indicador

Ao chamar a função setConfiguracaoIndicador() alterando alguma configuração do Indicador, esta alteração é confirmada pelo próprio retorno da função, porém, ela só entra em vigência para o Indicador ao salvá-la com a função saveConfiguracaoIndicador(), antes disso, a alteração permanece na memória temporária do Indicador aguardando o comando de salvar. Dessa forma, essas alterações podem ser perdidas se a memória temporária do Indicador for apagada (normalmente ocorre quando o Indicador é reiniciado ou resetado) antes dela passar as alterações para a memória permanente.

FUNÇÃO PARÂMETROS RETORNO
setConfiguracaoIndicador funcao [int]: número da configuração
input [char*]: novo valor da configuração:
(confira a tabela de CONFIGURAÇÃO DO INDICADOR PELA DLL para mais detalhes)
char*: String contendo o valor da configuração, no formato:
"#F{funcao}: {valor}"
(confira a tabela de CONFIGURAÇÃO DO INDICADOR PELA DLL para mais detalhes)
--------------------------------------------------
Ou uma String contendo o erro, no formato:
"#ERRO: {codigoErro}"
codigoErro = 0: Erro/falha
codigoErro = -1: Erro, Timeout
codigoErro = -3: Erro, falha na alocação de memória
codigoErro = -5: Erro, operação impedida, pois a comunicação está fechada
getConfiguracaoIndicador funcao [int]: número da configuração
(confira a tabela de CONFIGURAÇÃO DO INDICADOR PELA DLL para mais detalhes)
saveConfiguracaoIndicador void int:
1 : Ok, Sucesso
0 : Erro/falha
-1 : Erro, Timeout
-5 : Erro, operação impedida, pois a comunicação está fechada


CONFIGURAÇÃO DO INDICADOR PELA DLL
NÚMERO DA FUNÇÃO DESCRIÇÃO STRING DE INPUT STRING DE RETORNO
100 Nível de filtragem digital "1" => Nível 1 => Cargas estáticas sem variação
"2" => Nível 2 => Cargas estáticas com pouca variação
"3" => Nível 3 => Cargas estáticas ou oscilantes com pouca variação (Padrão)
"4" => Nível 4 => Cargas oscilantes com variação
"5" => Nível 5 => Cargas oscilantes ou líquidas com muita variação
"#F100, {valorInt}"
102 Auto Zero ao Ligar "0" => Desligado (Mantem último zero antes de desligar)
"1" => Ligado (Padrão)
"#F102, {valorInt}"
103 Manutenção automática de Zero "0" => Desligado (O zero irá variar com oscilações da célula de carga)
"1" => Ligado
"#F103, {valorInt}"
104 Indicação de Peso "0" => kN (Quilo newton)
"1" => lb (Libras)
"2" => kg (Quilogramas) (Padrão)
"#F104, {valorInt}"
105 Tara Sucessiva "0" => Desligado (Padrão)
"1" => Ligado
"#F105, {valorInt}"
106 Tara automática "0" => Desligado (Padrão)
"1" => Ligado
"#F106, {valorInt}"
107 Limpeza automática de Tara ao ficar em zero por 1 segundo "0" => Desligado
"1" => Ligado (Padrão)
"#F107, {valorInt}"
108 Limpeza de tara manual "0" => Desligado (Padrão)
"1" => Ligado
"#F108, {valorInt}"
110 Modo de funcionamento "0" => Pesagem Continua (Padrão)
"1" => Retém Valor Pico
"2" => Pressiona Imprimir para calcular a média
"#F110, {valorInt}"
112 Troca de senha do Menu "{senhaMenuAtual},{senhaMenuNova}" => senha atual e senha nova do Menu de Configurações do Indicador separadas por vírgula "#F112, OK"
ou
"#F112, ERRO"
114 Número de dígitos do código do produto "0" => 6 dígitos (Padrão)
"1" => 14 dígitos
"#F114, {valorInt}"
115 Tempo para calcular média de peso (quando F110 = 2) "1" => 1 segundo
"2" => 1.5 segundos
"3" => 2 segundos
"4" => 2.5 segundos
"5" => 3 segundos (Padrão)
"6" => 3.5 segundos
"7" => 4 segundos
"8" => 4.5 segundos
"9" => 5 segundos
"#F115, {valorInt}"
117 Modo Pesagem Reversa "0" => Desligado (Padrão)
"1" => Ligado
"#F117, {valorInt}"
118 Habilitar Senha Para Usuários "0" => Desligado (Padrão)
"1" => Ligado
"#F118, {valorInt}"
120 Corrigir Zero Negativo "0" => Desligado (Padrão)
"1" => Ligado
"#F120, {valorInt}"
200 Tipo de impressora "0" => Sem impressora (Padrão)
"1" => LX300
"2" => P40
"3" => Argox
"4" => P232
"5" => EPSON (Sem cortar etiqueta ao imprimir)
"6" => EPSON (Cortar etiqueta ao imprimir)
"7" => ZEBRA GC420t
"8" => P560
"9" => P580
"#F200, {valorInt}"
201 Modelo de impressão "1" => Modelo 1 (Padrão)
"2" => Modelo 2
"#F201, {valorInt}"
202 Imprimir data e hora "0" => Desligado
"1" => Ligado (Padrão)
"#F202, {valorInt}"
203 Impressão de peso "0" => Liquido
"1" => Bruto/Tara/Liquido (Padrão)
"#F203, {valorInt}"
204 Imprime nome da empresa "0" => Desligado
"1" => Ligado (Padrão)
"#F204, {valorInt}"
205 Impressão sequencial de pesagem "0" => Desligado (Padrão)
"1" => Ligado
"#F205, {valorInt}"
206 Impressão de código de barras "0" => Desligado (Padrão)
"1" => EAN-13
"1" => GS1-128
"#F206, {valorInt}"
207 Impressão do usuário "0" => Desligado (Padrão)
"1" => Ligado
"#F207, {valorInt}"
208 Imprimir descrição do produto (Opcional) "0" => Desligado (Padrão)
"1" => Ligado
"#F208, {valorInt}"
209 Quantidade de impressão "1" => 1 Etiqueta por impressão (Padrão)
"2" => 2 Etiqueta por impressão
"3" => 3 Etiqueta por impressão
"4" => 4 Etiqueta por impressão
"5" => 5 Etiqueta por impressão
"6" => 6 Etiqueta por impressão
"7" => 7 Etiqueta por impressão
"8" => 8 Etiqueta por impressão
"9" => 9 Etiqueta por impressão
"#F209, {valorInt}"
210 Imprimir código do produto "0" => Desligado
"1" => Ligado (Padrão)
"#F210, {valorInt}"
211 Baud Rate Impressora "0" => 2400
"1" => 4800
"2" => 9600 (Padrão)
"3" => 14400
"4" => 19200
"5" => 38400
"6" => 57600
"7" => 115200
"#F211, {valorInt}"
212 Cadastrar nome da empresa "{nomeEmpresa}" "#F212, {nomeEmpresa}"
213 Impressão automática "0" => Desligado (Padrão)
"1" => Ligado
"#F213, {valorInt}"
215 Paridade e Bits de Transmissão "0" => Paridade None, Data Bits 8 (Padrão)
"1" => Paridade Even, Data Bits 8
"2" => Paridade Even, Data Bits 7
"3" => Paridade Odd, Data Bits 8
"4" => Paridade Odd, Data Bits 7
"#F215, {valorInt}"
216 Stop Bits de Impressão "1" => 1 Stop Bit (Padrão)
"2" => 2 Stop Bits
"#F216, {valorInt}"
217 Tipo de Usuário "0" => Usuário (Padrão)
"1" => Fornecedor
"2" => Cliente
"3" => Colhedor
"#F217, {valorInt}"
219 Impressão com Bobina de Papel ou Etiqueta "0" => Impressão utilizando etiqueta (Padrão)
"1" => Impressão utilizando bobina de papel
"#F219, {valorInt}"
300 Protocolo "0" => Líder 1 (Padrão)
"1" => Líder 2
"2" => Líder 3
"3" => Líder 4
"4" => Modbus RTU
"5" => Modbus ASCI
"10" => Protocolo com código do produto
"11" => Protocolo Modbus TCP
"13" => Protocolo para 2 Transmissores RF
Obs.:A DLL consegue comunicar somente com os protocolos Líder 1, Líder 2, Líder 3 e Líder 4
"#F300, {valorInt}"
301 Baud Rate "0" => 2400
"1" => 4800
"2" => 9600 (Padrão)
"3" => 14400
"4" => 19200
"5" => 38400
"6" => 57600
"7" => 115200
"#F301, {valorInt}"
302 Endereço de 1 a 255 "{valorInt}" => valorInt é um valor inteiro de 1 a 255 "#F302, {valorInt}"
303 Frequência de transmissão "0" => Sobre demanda
"1" => Continua (Padrão)
"#F303, {valorInt}"
304 Baud Rate RS485 e RS422 "0" => 2400
"1" => 4800
"2" => 9600 (Padrão)
"3" => 14400
"4" => 19200
"5" => 28800
"6" => 57600
"7" => 115200
"#F304, {valorInt}"
305 Tempo de transmissão (quando F303 = 1) "0" => 1000 ms (Padrão)
"1" => 100 ms
"2" => 200 ms
"3" => 300 ms
"4" => 400 ms
"5" => 500 ms
"6" => 600 ms
"7" => 700 ms
"8" => 800 ms
"9" => 900 ms
"#F305, {valorInt}"
307 Checksum "0" => Protocolos Líder 3 e Líder 4 sem Checksum (Padrão)
"1" => Protocolos Líder 3, Líder 4 e Líder 10 com cálculo Checksum (8 bit Checksum 2's Complement)
"#F307, {valorInt}"
308 Paridade e Bits de Transmissão "0" => Paridade None, Data Bits 8 (Padrão)
"1" => Paridade Even, Data Bits 8
"2" => Paridade Even, Data Bits 7
"3" => Paridade Odd, Data Bits 8
"4" => Paridade Odd, Data Bits 7
"#F308, {valorInt}"
309 Stop Bits de Transmissão "1" => 1 Stop Bit (Padrão)
"2" => 2 Stop Bits
"#F309, {valorInt}"
310 Nível da Bateria do Indicador "0" => Protocolos Líder 3 e Líder 4 sem o nível da bateria (Padrão)
"1" => Protocolos Líder 3 e Líder 4 com o nível da bateria
"#F310, {valorInt}"
311 Nível da Bateria do Transmissor remoto "0" => Protocolos Líder 3 e Líder 4 sem o nível da bateria (Padrão)
"1" => Protocolos Líder 3 e Líder 4 com o nível da bateria
"#F311, {valorInt}"
312 Enviar Unidade de Medida do Peso nos Protocolos Líder 3 e Líder 4 "0" => Desligado (Padrão)
"1" => Ligado
"#F312, {valorInt}"
400 Quantidade de Setpoint "{valorInt}" => valorInt é um valor inteiro de 0 a 6 "#F400, {valorInt}"
401 Valor do Setpoint Nível 1 (gramas) "{valorInt}" => valorInt é um valor inteiro "#F401, {valorInt}"
402 Valor do Setpoint Nível 2 (gramas) "{valorInt}" => valorInt é um valor inteiro "#F402, {valorInt}"
403 Valor do Setpoint Nível 3 (gramas) "{valorInt}" => valorInt é um valor inteiro "#F403, {valorInt}"
404 Valor do Setpoint Nível 4 (gramas) "{valorInt}" => valorInt é um valor inteiro "#F404, {valorInt}"
405 Valor do Setpoint Nível 5 (gramas) "{valorInt}" => valorInt é um valor inteiro "#F405, {valorInt}"
406 Valor do Setpoint Nível 6 (gramas) "{valorInt}" => valorInt é um valor inteiro "#F406, {valorInt}"
407 Trava para setpoint "0" => Desligado (Padrão)
"1" => Ligado
"#F407, {valorInt}"
408 Alarme sonoro de setpoint "0" => Desligado
"1" => Ligado (Padrão)
"#F408, {valorInt}"
409 Valor de Histerese (valor padrão = 10) "{valorInt}" => valorInt é um valor inteiro "#F409, {valorInt}"
410 Tempo 1 em décimos de segundo para o Nível 1 "{valorInt}" => valorInt é um valor inteiro "#F410, {valorInt}"
411 Tempo 2 em décimos de segundo para o Nível 2 "{valorInt}" => valorInt é um valor inteiro "#F411, {valorInt}"
412 Tempo 3 em décimos de segundo para o Nível 3 "{valorInt}" => valorInt é um valor inteiro "#F412, {valorInt}"
413 Tempo 4 em décimos de segundo para o Nível 4 "{valorInt}" => valorInt é um valor inteiro "#F413, {valorInt}"
414 Tempo 5 em décimos de segundo para o Nível 5 "{valorInt}" => valorInt é um valor inteiro "#F414, {valorInt}"
415 Tempo 6 em décimos de segundo para o Nível 6 "{valorInt}" => valorInt é um valor inteiro "#F415, {valorInt}"
416 Saída do Rele "0" => NA (Normalmente aberto) (Padrão)
"1" => NF (Normalmente fechado)
"#F416, {valorInt}"
417 Modo prioritário "0" => Mantem o estado de todas as saídas (Padrão)
"1" => Mantem somente o estado da última saída desativando as anteriores
"2" => Mantem somente o estado da última saída desativando as anteriores. A diferença desta opção para a opção 2 é que na opção 3 a última saída ativa se dá na subida e descida de peso
"#F417, {valorInt}"
418 Dosadora "0" => Desativa modo dosadora (Padrão)
"1" => Ativa modo dosadora
"#F418, {valorInt}"
419 Ativar saídas de Setpoint somente com o peso estável "0" => Desligado (Padrão)
"1" => Ligado
"#F419, {valorInt}"
450 Modo Peso Alvo "0" => Desligado (Padrão)
"1" => Ligado
"#F450, {valorInt}"
451 Tipo de Tolerância para o Peso Alvo "0" => Tolerância percentual (Padrão)
"1" => Tolerância numérica
"#F451, {valorInt}"
452 Tolerância Percentual "0" => 0.25%
"1" => 0.50% (Padrão)
"2" => 0.75%
"3" => 1.00%
"4" => 1.25%
"5" => 1.50%
"6" => 1.75%
"7" => 2.00%
"8" => 2.25%
"9" => 2.50%
"10" => 2.75%
"11" => 3.00%
"12" => 3.25%
"13" => 3.50%
"14" => 3.75%
"15" => 4.00%
"16" => 4.25%
"17" => 4.50%
"18" => 4.75%
"19" => 5.00%
"#F452, {valorInt}"
453 Tolerância Numérica (Não pode ser maior que 9% do peso alvo) (gramas) "{valorInt}" => valorInt é um valor inteiro "#F453, {valorInt}"
454 Valor do Peso Alvo (gramas) "{valorInt}" => valorInt é um valor inteiro "#F454, {valorInt}"
500 Data do Indicador "dd.MM.yyyy" => dia (dd), mês (MM) e ano (yyyy) "#F500, dd/MM/yyyy"
501 Hora do Indicador "HH.mm.ss" => horas (HH), minutos (mm) e segundos (ss) "#F501, HH:mm:ss"
502 Som de tecla "0" => Desligado
"1" => Ligado (Padrão)
"#F502, {valorInt}"
503 Redução do Brilho do display (tempo em minutos) "{valorInt}" => valorInt é um valor inteiro de 0 a 300 (sendo 0 Desativado) "#F503, {valorInt}"
504 Auto desligar (tempo em minutos) "{valorInt}" => valorInt é um valor inteiro de 0 a 900 (sendo 0 Desativado) "#F504, {valorInt}"
600 Modo Rádio "0" => Desativado (Padrão)
"1" => Receptor
"#F600, {valorInt}"
601 Canal de comunicação "{valorInt}" => valorInt é um valor inteiro de 1 a 15 "#F601, {valorInt}"
602 Endereço Rádio "1"
ou
"2"
"#F602, {valorInt}"
604 Quantidade de transmissores de peso "1" => 1 transmissor (Padrão)
"2" => 2 transmissores
"#F604, {valorInt}"
605 Tipo de Receptor "1" => Receptor principal
"2" => Receptor secundário
"#F605, {valorInt}"
700 Configuração para saída de tensão e corrente range = 16 bits "0" => Sem saída de tensão e corrente
"1" => 0V a 5V
"2" => 0V a 10V
"3" => 4mA a 20mA (Padrão)
"4" => 0mA a 20mA
"5" => 0mA a 24mA
"#F700, {valorInt}"

Relatório do Indicador

FUNÇÃO PARÂMETROS RETORNO
gerarRelatorio tipo[int]: Tipo de relatórios a ser gerado:
0 - Relatório por número de impressões;
1 - Relatório por data;
2 - Relatório por código de produto;
3 - Relatório por usuário;
4 - Relatório por data e código de produto;
5 - Relatório por data e usuário.

input[char*]: Argumento de acordo com o relatório desejado:
[tipo = 0] -> input =
"{numImpressoes}"
a string deve ter um número inteiro,
Exemplo: "100"

[tipo = 1] -> input =
"{dataInicial},{dataFinal}"
com as datas no formato dd/MM/yyyy
Exemplo: "01/01/2000,02/02/2024"

[tipo = 2] -> input =
"{codigoProduto}"
Exemplo: "123456"

[tipo = 3] -> input =
"{usuarioID}"
a string deve ter um inteiro entre 1 e 50
Exemplo: "32"

[tipo = 4] -> input =
"{dataInicial},{dataFinal},{codigoProduto}"
Exemplo: "01/01/2000,02/02/2024,123456"

[tipo = 5] -> input =
"{dataInicial},{dataFinal},{usuarioID}"
Exemplo: "01/01/2000,02/02/2024,32"
char* : Uma String contendo o relatório, que será composta por:
Linha de Inicio de Relatório:
Se tipo = 0
"#SNDRL,ACK,{nomeEmpresa}\n"
Se tipo = 1
"#SNDDT,ACK,{nomeEmpresa}\n"
Se tipo = 2
"#SNDRCP,ACK,{nomeEmpresa}\n"
Se tipo = 3
"#SNDRUSER,ACK,{nomeEmpresa}\n"
Se tipo = 4
"#SNDDTCOD,ACK,{nomeEmpresa}\n"
Se tipo = 5
"#SNDDTUSR,ACK,{nomeEmpresa}\n"

Linhas de Conteúdo/Meio do relatório:
Registro de Pesagem:
"#SPS,{data(dd/MM/yyyy)},{hora(HH:mm:ss)},{codigoProduto},{descricaoProduto},{pesoLiquido},{tara},{sequencia},{tipoUsuario} {usuarioID},{nomeUsuario},{unidadeMedida},{cancelado}\n"
Registro de Contagem de Peças:
"#SPC,{data(dd/MM/yyyy)},{hora(HH:mm:ss)},{codigoProduto},{descricaoProduto},{pesoLiquido},{tara},{sequencia},{quantidadePecas},{PesoMedioPorPeca},{tipoUsuario} {usuarioID},{nomeUsuario},{unidadeMedida},{cancelado}\n"
Registro do Total de Pesagens de uma sequência:
"#STLP,{totalPesado}\n"
Registro do Total de Contagem de Peças de uma sequência:
"#STLC,{totalDePecasContadas}"

--------------------------------------------------
Ou uma String contendo o erro, no formato:
"#ERRO: {codigoErro}"

codigoErro = 0: Erro/falha
codigoErro = -1: Erro, Timeout
codigoErro = -3: Erro, falha na alocação de memória
codigoErro = -5: Erro, operação impedida, pois a comunicação está fechada

Configuração de Usuário

A função setUsuario() irá alterar o nome e a senha (esta pode ser uma string vazia "", caso a senha do usuário esteja configurada como não habilitada no Indicador) do usuário do Id especificado, mas para a alteração ser realizada, a senha do Menu do Indicador deve ser apresentada para autorizar a operação. Se a senha do Menu estiver incorreta, o Indicador irá ignorar a operação e não responderá nada, fazendo com que a função retorne "#ERRO: -1", TIMEOUT.
FUNÇÃO PARÂMETROS RETORNO
getUsuarioById id [int] : número do usuário cadastrado no indicador.
char* : Uma String contendo o nome do usuário cadastrado, no formato:
"#F113, {nomeUsuario}"

--------------------------------------------------
Ou uma String contendo o erro, no formato:
"#ERRO: {codigoErro}"

codigoErro = 0: Erro/falha
codigoErro = -1: Erro, Timeout
codigoErro = -3: Erro, falha na alocação de memória
codigoErro = -5: Erro, operação impedida, pois a comunicação está fechada
setUsuario senhaMenu [char*] : string com a senha do Menu do Indicador.
idUsuario [int] : inteiro com o ID do usuário(1 a 50).
senhaUsuario [char*] : string com a nova senha do usuário.
nomeUsuario [char*] : string com o novo nome do usuário.

FUNÇÕES EXTRAS/OPCIONAIS

Há uma função de otimização da DLL, as funções getConfiguracaoIndicador(), setConfiguracaoIndicador(), getUsuarioById(), getTabelaProduto() e gerarRelatorio(), utilizam alocação dinâmica de memória para armazenar a string de retorno e esta memória só é desalocada em dois momentos: quando a função é chamada novamente, pois, a string é desalocada para se alocar uma nova string; e quando a comunicação é fechada, pois, todos os recursos utilizados são liberados. Porém, se houver o desejo ou a necessidade de liberar a memória antecipadamente para otimizar recursos, há a função freeStringMemory().

          
void freeStringMemory ( );

O uso desta função deve ter cautela para não liberar a memória que esteja sendo utilizada, dessa forma, certifique-se de que a string retornada não esteja sendo utilizada (caso a linguagem optada utilize a string retornada diretamente) ou que nenhuma das funções que alocam string dinamicamente estejam em funcionamento para que não haja estouro ou corrupção de memória.