Skip to content

Commit

Permalink
Implementado evento de peso instável
Browse files Browse the repository at this point in the history
  • Loading branch information
mazinsw committed Nov 16, 2019
1 parent b11acb2 commit 6c56bc7
Show file tree
Hide file tree
Showing 9 changed files with 86 additions and 46 deletions.
10 changes: 6 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,18 @@ script:
make clean static64 &&
make clean static32'

after_success:
- cd build && zip -qr PesoLib.zip x64 x86 && cd ..
before_deploy:
- cd build
- zip -qr PesoLib.zip x64 x86
- cd ..

deploy:
provider: releases
api_key:
secure: np2ozI0W3NUBhwyfFfEMoT+s6ZTFTGsE8oB4a1x/TwVvTHioAUPFv8DwEDlBiSBaDpY00aug+/Mc3cZaxnU2WyK7aTgv+bWpD+tamFLnXzNUfS5riLboRZkArKVC2NPm1fn8hMRMFSooli853wrzu7jaPtnTB8eCQJ6Kj92PYK0mFbzG1YnoMdnlFsnUt5SusLocOfCUBYEtmxMh5f0xfJAvMIQUGWItzUHiIqy9aX/XwguGopeI77TSBYvPKraauzHqkdhb9Hr5RGTwVIlHImLNhZELvAOpQitQ/5sle6u1FdwmnFCTtd8AWy0Y+LL2RhSjgIUBOvyo13zfs3PIeG7ivqToPg/trqPKRy/4B0ngd+jQ+wW41U9eIZ2fNKXHF9p7zRvMtd3wfhFSr9S8xl6vhwYrevI6bbICDHEWV6kRX+FCdk1HJbzhQmuCxgiG6gqV5b3dxygcIlf0opqHhj76xZtSErpL402fhLk+9br9bqe01Tz7nIPmtata60b2gtPHmQT+fbTHN/rPzJ5JPrn4rB6iSf50Ms1UM9jGGTU3JEaSt8jEcroSxXd493FVpdPq0w4Mtpd6CttgFAHe3Vvc2Krqtp1ENhe1ovxsXmi0/TU2JRr5235/grA7sFP7Hngcrhw3LsMrAQZ2be7+lLlcX1/5Vk/JDctf6UKlKX0=

file:
- build/PesoLib.zip
file: build/PesoLib.zip
skip_cleanup: true

on:
tags: true
Expand Down
9 changes: 5 additions & 4 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
{
"files.autoGuessEncoding": true,
"files.associations": {
"*.h": "c"
},
"[c]": {
"files.encoding": "windows1252"
},
"files.associations": {
"deviceprivate.h": "c",
"device.h": "c"
"[cpp]": {
"files.encoding": "windows1252"
}
}
50 changes: 33 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,44 @@
Biblioteca para obtenção de peso de itens sobre balanças
========================================================
[![GitHub tag](https://img.shields.io/github/release/mazinsw/PesoLib.svg)](https://github.com/mazinsw/PesoLib/releases)

PesoLib é uma biblioteca capaz de detectar e conectar-se
à uma balança plugada no computador, os pesos podem ser recebidos
sem a necessidade de solicitação, ou seja quando um item for colocado sobre
a balança a biblioteca enviará o peso automaticamente para sua aplicação.
Biblioteca para obtenção de peso sobre balanças
=

com ela é possível também informar o preço do item, e mostrar o total no visor da
balança(apenas para balanças que o suportam).
PesoLib é uma biblioteca capaz de detectar e conectar-se
à uma balança plugada no computador, os pesos podem ser recebidos
sem a necessidade de solicitação, ou seja quando um item for colocado sobre
a balança a biblioteca enviará o peso automaticamente para sua aplicação.

com ela é possível também informar o preço do item, e mostrar o total no visor da
balança(apenas para balanças que o suportam).

possui exemplos nas linguagens Java, Delphi e C, para 32 e 64 bit
e encontram-se na pasta "wrapper"

Atualmente suporta vários modelos das marcas Toledo, Filizola, Magna, Urano, Elgin e Alfa
Atualmente suporta vários modelos das marcas Toledo, Filizola, Magna, Urano, Elgin e Alfa

Algumas balanças precisam que suas configurações sejam alteradas para o envio automatico do peso
verifique o manual e faça o teste!
Se mesmo assim você não conseguiu conectar à sua balança
envie um email para desenvolvimento@grandchef.com.br
com o título: Biblioteca para balanças
informando a marca, modelo da balança e a conexão usada(Serial, Paralela ou USB)

sugestões e agradecimentos são sempre bem vindos,
então não deixe de enviar um "Valeu!" para desenvolvimento@grandchef.com.br

### Compilando

Para compilar e criar as dll e executáveis, você precisará do docker instalado em sua máquina

Algumas balanças precisam que suas configurações sejam alteradas para o envio automatico do peso
verifique o manual e faça o teste!
Se mesmo assim você não conseguiu conectar à sua balança
envie um email para desenvolvimento@mzsw.com.br
com o título: Biblioteca para balanças
informando a marca, modelo da balança e a conexão usada(Serial, Paralela ou USB)
- Windows
```cmd
docker run -ti -v %cd%:/mnt mazinsw/mingw-w64:4.0.4 /bin/sh -c "cd /mnt && make clean shared64 && make clean shared32 && make clean static64 && make clean static32"
```

sugestões e agradecimentos são sempre bem vindos,
então não deixe de enviar um "Valeu!" para desenvolvimento@mzsw.com.br
- Linux
```cmd
docker run -ti -v `pwd`:/mnt -u `id -u $USER`:`id -g $USER` mazinsw/mingw-w64:4.0.4 /bin/sh -c 'cd /mnt && make clean shared64 && make clean && make static64 && make clean static32'
```

![Alt text](/res/img/teste.png?raw=true "Programa de teste")

Expand Down
15 changes: 0 additions & 15 deletions create_source.bat

This file was deleted.

Binary file added docs/Micheletti/Manual-Brisa-site.pdf
Binary file not shown.
4 changes: 3 additions & 1 deletion include/PesoLib.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ typedef enum PesoLibEvento
/** A balança foi desconectada */
Evento_Desconectado,
/** A balança enviou o peso para o computador */
Evento_PesoRecebido
Evento_PesoRecebido,
/** A balança está com peso instável */
Evento_PesoInstavel
} PesoLibEvento;

typedef struct PesoLib PesoLib;
Expand Down
7 changes: 3 additions & 4 deletions src/PesoLib.c
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,7 @@ static int _PesoLib_dataReceived(PesoLib * lib, const unsigned char * buffer,
#ifdef DEBUGLIB
printf("Checking stable %s = %d\n", Device_getName(dev), Device_isStable(dev));
#endif
if(!Device_isStable(dev))
break;
lib->stable = Device_isStable(dev);
lib->weight = Device_getWeight(dev);
Event_post(lib->evReceive);
break;
Expand Down Expand Up @@ -649,9 +648,9 @@ LIBEXPORT int LIBCALL PesoLib_aguardaEvento(PesoLib * lib)
return Evento_Desconectado;
}
#ifdef DEBUGLIB
printf("Event weight received\n");
printf(lib->stable ? "Event weight received\n" : "Unstable weight\n");
#endif
return Evento_PesoRecebido;
return lib->stable ? Evento_PesoRecebido : Evento_PesoInstavel;
}

LIBEXPORT int LIBCALL PesoLib_getUltimoPeso(PesoLib * lib)
Expand Down
4 changes: 4 additions & 0 deletions src/win/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,10 @@ int main(int argc, char** argv)
startTick = GetTickCount();
Sleep(5000);
continue;
case Evento_PesoInstavel:
gramas = PesoLib_getUltimoPeso(lib);
printf("Peso instavel: %.3f Kg\n", gramas / 1000.0);
continue;
}
gramas = PesoLib_getUltimoPeso(lib);
printf("Peso recebido: %.3f Kg\n", gramas / 1000.0);
Expand Down
33 changes: 32 additions & 1 deletion wrapper/delphi/Balanca.pas
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,13 @@ interface
pesolib = 'PesoLib.dll';

type
TPesoEvento = (peCancelado, peConectado, peDesconectado, pePesoRecebido);
TPesoEvento = (
peCancelado,
peConectado,
peDesconectado,
pePesoRecebido,
pePesoInstavel
);
TPesoRecebidoEvent = procedure(Sender: TObject; Gramas: Integer) of object;
TPesoLib = Pointer;
TPesoLib_criaFunc = function(const configuracao: PAnsiChar): TPesoLib; stdcall;
Expand All @@ -38,6 +44,7 @@ TBalancaWrapper = class
FOnPesoRecebido: TPesoRecebidoEvent;
FOnConectado: TNotifyEvent;
FOnDesconectado: TNotifyEvent;
FOnPesoInstavel: TNotifyEvent;
FPesoLib_cria: TPesoLib_criaFunc;
FPesoLib_isConectado: TPesoLib_isConectadoFunc;
FPesoLib_setConfiguracao: TPesoLib_setConfiguracaoFunc;
Expand All @@ -54,6 +61,7 @@ TBalancaWrapper = class
procedure DoPesoRecebido;
procedure DoConectado;
procedure DoDesconectado;
procedure DoPesoInstavel;
function GetConectado: Boolean;
function GetConfiguracao: string;
function GetVersao: string;
Expand All @@ -75,6 +83,7 @@ TBalancaWrapper = class
property OnConectado: TNotifyEvent read FOnConectado write FOnConectado;
property OnDesconectado: TNotifyEvent read FOnDesconectado write FOnDesconectado;
property OnPesoRecebido: TPesoRecebidoEvent read FOnPesoRecebido write FOnPesoRecebido;
property OnPesoInstavel: TNotifyEvent read FOnPesoInstavel write FOnPesoInstavel;
end;

TBalanca = class(TComponent)
Expand All @@ -89,13 +98,16 @@ TBalanca = class(TComponent)
FOnConectado: TNotifyEvent;
FOnDesconectado: TNotifyEvent;
FNomeDriver: string;
FInstavel: Boolean;
FOnPesoInstavel: TNotifyEvent;
procedure SetPreco(const Value: Currency);
procedure RequerAtivo;
procedure SetAtivo(const Value: Boolean);
procedure SetNomeDriver(const Value: string);
function GetConfiguracao: string;
procedure SetConfiguracao(const Value: string);
function GetVersao: string;
procedure DoPesoInstavel(Sender: TObject);
protected
{ Protected declarations }
procedure DoPesoRecebido(Sender: TObject; Gramas: Integer);
Expand All @@ -113,12 +125,14 @@ TBalanca = class(TComponent)
property Versao: string read GetVersao;
property Configuracao: string read GetConfiguracao write SetConfiguracao;
published
property Instavel: Boolean read FInstavel;
property UltimoPeso: Integer read FPeso;
property Ativo: Boolean read FAtivo write SetAtivo default False;
property NomeDriver: string read FNomeDriver write SetNomeDriver;
property OnConectado: TNotifyEvent read FOnConectado write FOnConectado;
property OnDesconectado: TNotifyEvent read FOnDesconectado write FOnDesconectado;
property OnPesoRecebido: TPesoRecebidoEvent read FOnPesoRecebido write FOnPesoRecebido;
property OnPesoInstavel: TNotifyEvent read FOnPesoInstavel write FOnPesoInstavel;
end;

TThreadEvento = class(TThread)
Expand Down Expand Up @@ -177,8 +191,16 @@ procedure TBalanca.DoDesconectado(Sender: TObject);
FOnDesconectado(Self);
end;

procedure TBalanca.DoPesoInstavel(Sender: TObject);
begin
FInstavel := True;
if Assigned(FOnPesoInstavel) then
FOnPesoInstavel(Self);
end;

procedure TBalanca.DoPesoRecebido(Sender: TObject; Gramas: Integer);
begin
FInstavel := False;
FPeso := Gramas;
if Assigned(FOnPesoRecebido) then
FOnPesoRecebido(Self, Gramas);
Expand Down Expand Up @@ -233,6 +255,7 @@ procedure TBalanca.SetAtivo(const Value: Boolean);
FWrapper.OnConectado := DoConectado;
FWrapper.OnDesconectado := DoDesconectado;
FWrapper.OnPesoRecebido := DoPesoRecebido;
FWrapper.OnPesoInstavel := DoPesoInstavel;
FWrapper.Start;
except
on E: Exception do
Expand Down Expand Up @@ -289,6 +312,7 @@ function TBalancaWrapper.AguardaEvento: TPesoEvento;
0: Result := peCancelado;
1: Result := peConectado;
2: Result := peDesconectado;
4: Result := pePesoInstavel;
else
Result := pePesoRecebido;
end;
Expand Down Expand Up @@ -395,6 +419,12 @@ procedure TBalancaWrapper.DoDesconectado;
FOnDesconectado(Self);
end;

procedure TBalancaWrapper.DoPesoInstavel;
begin
if Assigned(FOnPesoInstavel) then
FOnPesoInstavel(Self);
end;

procedure TBalancaWrapper.DoPesoRecebido;
begin
if Assigned(FOnPesoRecebido) then
Expand Down Expand Up @@ -422,6 +452,7 @@ procedure TThreadEvento.Execute;
peCancelado: Break;
peConectado: Synchronize(FWrapper.DoConectado);
peDesconectado: Synchronize(FWrapper.DoDesconectado);
pePesoInstavel: Synchronize(FWrapper.DoPesoInstavel);
else
FWrapper.FPeso := FWrapper.UltimoPeso;
Synchronize(FWrapper.DoPesoRecebido);
Expand Down

0 comments on commit 6c56bc7

Please sign in to comment.