Biblioteca de comunicação com balanças seriais para Node.js.
yarn add felps-dev/nodebal
import { BalancaPadraoKilo } from "nodebal";
// No Windows, o caminho da porta serial é algo como "COM1"
const balanca = new BalancaPadraoKilo("/dev/tty.usbserial-2130");
balanca
.lerPeso(300) // 300 é o valor do preço enviado a balança
.then((peso) => {
console.log(`Peso lido: ${peso}`);
})
.catch((err) => {
console.error(err);
});
porta
: string - Caminho da porta serialserialConfig
: object - Configurações da porta serialbaudRate
: number - Taxa de transmissão (em bauds)dataBits
: number - Número de bits de dadosstopBits
: number - Número de bits de paradaparity
: string - Paridade
timeout
: number - Tempo limite para leitura da porta serial (em milissegundos)
preco
: number - Valor do preço enviado a balança
- Urano US 31/2 POP-S (Testada usando BalancaPadraoKilo)
- Toledo Prix 3/16 (Testada usando BalancaPadraoGrama)
- Urano POP-Z (Testada usando BalancaPadraoGrama com protocolo PRT1)
- Toledo Prix 3 fit (Testada usando BalancaPadraoGrama com protocolo PRT1)
Para adicionar uma nova balança, crie uma nova classe que estenda a classe BalancaBase
e implementeos metodos escreverPreco
e processaPeso
, e alimente a variável enqCommand
.
É opicional também alimentar a variável defaultConfig
com as configurações padrões da balança.
Sendo:
escreverPreco
: Método que escreve o preço na balança, deve retornar umBuffer
com o comando a ser enviado a balança.processaPeso
: Método que processa o peso retornado pela balança, recebe umBuffer
com o peso retornado pela balança e deve retornar umnumber
com o peso processado.enqCommand
:Buffer
com o comando de requisição de peso.defaultConfig
: Objeto com as configurações padrões da balança.
import { BalancaBase } from "./base";
export class BalancaPadraoKilo extends BalancaBase {
defaultConfig = {
baudRate: 9600 as const,
dataBits: 8 as const,
stopBits: 1 as const,
parity: "none" as const
};
enqCommand = Buffer.from([0x05]);
escreverPreco(preco: number): Buffer {
// Escrever o preço na balança
return Buffer.from([0x02, 0x50, 0x03]);
}
processaPeso(data: Buffer): number {
// Processar o peso retornado pela balança
return 0;
}
}
Feito isso basta adicionar o export dela no arquivo index.ts
e pronto, sua balança já está suportada.