Fazer uma integração simples entre Delphi e uma impressora fiscal depende do modelo e do protocolo da impressora fiscal (Ex: Elgin, Daruma, Epson, Bematech, etc.), mas de forma geral, as impressoras fiscais antigas utilizam comunicação via porta serial (COM) e comandos baseados no Protocolo Fiscal (ECF).
Abaixo está um guia passo a passo para uma integração simples, com exemplo usando comandos diretos via porta serial:
✅ 1. Verifique o modelo e instale o driver da impressora
Antes de tudo, instale o driver oficial da impressora fiscal e anote a porta COM que ela está utilizando (pode ver isso no Gerenciador de Dispositivos).
✅ 2. Comunique-se via porta serial (COM) com Delphi
Delphi pode usar a unit SerialPort ou componentes de terceiros como AsyncPro, mas vamos mostrar um exemplo simples com componente THandle para acesso direto à porta COM.
🧩 Exemplo simples usando CreateFile:
uses
Windows;
function EnviarComandoECF(const Porta, Comando: string): Boolean;
var
hSerial: THandle;
BytesWritten: DWORD;
begin
Result := False;
hSerial := CreateFile(PChar(Porta),
GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
0,
0);
if hSerial = INVALID_HANDLE_VALUE then
begin
ShowMessage('Erro ao abrir a porta ' + Porta);
Exit;
end;
if WriteFile(hSerial, PChar(Comando)^, Length(Comando), BytesWritten, nil) then
Result := True;
CloseHandle(hSerial);
end;
➕ Como usar:
procedure TForm1.btnImprimirClick(Sender: TObject);
begin
// Exemplo de comando fiscal (ver manual da impressora para os corretos)
if EnviarComandoECF('COM1', #27 + 'C') then
ShowMessage('Comando enviado com sucesso.')
else
ShowMessage('Erro ao enviar comando.');
end;
✅ 3. Usando DLL oficial do fabricante (recomendado)
Fabricantes como Daruma, Bematech, Elgin fornecem DLLs com funções prontas como Bematech_FI_AbreCupom, Daruma_FI_AbreCupom, etc.
Exemplo com DLL da Bematech:
function Bematech_FI_AbreCupom(CPF_CNPJ: PChar): Integer; stdcall; external 'BemaFI32.dll';
procedure TForm1.btnCupomClick(Sender: TObject);
begin
if Bematech_FI_AbreCupom('12345678901') = 1 then
ShowMessage('Cupom aberto com sucesso.')
else
ShowMessage('Erro ao abrir cupom.');
end;
✅ 4. Leia o manual da impressora fiscal
Cada fabricante possui comandos diferentes e exigências fiscais específicas. É essencial obter o manual do desenvolvedor (ECF/ACBr/DLL) da impressora que será utilizada.
✅ 5. Alternativa:
Usar o ACBr (componente gratuito e robusto)
O ACBr é um projeto open source que facilita a integração com equipamentos fiscais.
// Usando ACBrECF
procedure TForm1.btnCupomClick(Sender: TObject);
begin
ACBrECF1.Modelo := ecfBematech; // ou ecfDaruma, etc.
ACBrECF1.Porta := 'COM1';
ACBrECF1.Ativar;
ACBrECF1.AbreCupom;
ACBrECF1.VendeItem('123', 'Produto Teste', 'UN', 1, 10, 0, 'T');
ACBrECF1.SubtotalizaCupom;
ACBrECF1.EfetuaPagamento('Dinheiro', 10);
ACBrECF1.FechaCupom('Obrigado!');
end;
✅ Conclusão
Você pode escolher três caminhos:
Comunicação direta via porta COM (mais complexa e arriscada).
Usar a DLL do fabricante (mais seguro e comum).
Usar o ACBr (mais flexível, fácil e atualizado para exigências fiscais do Brasil).
Nenhum comentário:
Postar um comentário