Ir para conteúdo
  • Cadastre-se

dev botao

Ajuda com ESC/POS


Recommended Posts

Pessoal no demo do ACBrPosPrinter

Para imprimir no teste 

  mImp.Lines.Clear;
  mImp.Lines.Add('</zera>');
  mImp.Lines.Add('</linha_dupla>');
  mImp.Lines.Add('FONTE NORMAL: '+IntToStr(ACBrPosPrinter1.ColunasFonteNormal)+' Colunas');
  mImp.Lines.Add(LeftStr('....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8', ACBrPosPrinter1.ColunasFonteNormal));
  mImp.Lines.Add('<e>EXPANDIDO: '+IntToStr(ACBrPosPrinter1.ColunasFonteExpandida)+' Colunas');
  mImp.Lines.Add(LeftStr('....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8', ACBrPosPrinter1.ColunasFonteExpandida));
  mImp.Lines.Add('</e><c>CONDENSADO: '+IntToStr(ACBrPosPrinter1.ColunasFonteCondensada)+' Colunas');
  mImp.Lines.Add(LeftStr('....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8', ACBrPosPrinter1.ColunasFonteCondensada));
  mImp.Lines.Add('</c><n>FONTE NEGRITO</N>');
  mImp.Lines.Add('</corte_total>');

Eu queria imprimir algo assim
--------------------------------------------
                              RECIBO
--------------------------------------------

ID : 41 *Negrito*
ENTRADA : 08/02/2020-19:18:05
SAIDA : 08/02/2020-19:18:29
Cliente : JOAO TESTE
--------------------------------------------
                  VOLTE SEMPRE
--------------------------------------------


Consegue me formular um exemplo de como eu alimentaria o mesmo assim? 

Link para o comentário
Compartilhar em outros sites

Eu to com um modelo aqui em 

  mImp.Lines.Add('</c><n>FONTE NEGRITO</N>');

 Teoricamente imprimiria negrito. Porém não imprime, mas a impressora tem opção negrito a página de teste funciona.
Comprei dessas Mini Impressora Portatil Bluetooth Termica 58mm
Tentie com pc850 e pc852

  TUDO ISTO IMPRIMIU COM FONTE SIMPLES
  mImp.Lines.Clear;
  mImp.Lines.Add('</zera>');
  mImp.Lines.Add('</linha_dupla>');
  mImp.Lines.Add('FONTE NORMAL: '+IntToStr(ACBrPosPrinter1.ColunasFonteNormal)+' Colunas');
  mImp.Lines.Add(LeftStr('....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8', ACBrPosPrinter1.ColunasFonteNormal));
  mImp.Lines.Add('<e>EXPANDIDO: '+IntToStr(ACBrPosPrinter1.ColunasFonteExpandida)+' Colunas');
  mImp.Lines.Add(LeftStr('....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8', ACBrPosPrinter1.ColunasFonteExpandida));
  mImp.Lines.Add('</e><c>CONDENSADO: '+IntToStr(ACBrPosPrinter1.ColunasFonteCondensada)+' Colunas');
  mImp.Lines.Add(LeftStr('....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8', ACBrPosPrinter1.ColunasFonteCondensada));
  mImp.Lines.Add('</c><n>FONTE NEGRITO</N>');
  mImp.Lines.Add('</corte_total>');
Link para o comentário
Compartilhar em outros sites

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls, ACBrBase, ACBrPosPrinter, System.Permissions,
  System.TypInfo, System.StrUtils, ACBrPosPrinterElginE1Service, ACBrPosPrinterElginE1Lib,
  ACBrPosPrinterTecToySunmiLib,

  {$IFDEF ANDROID}
  Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os,
  FMX.ListBox, ACBrUtil.FilesIO, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo,
  System.ImageList, FMX.ImgList, FMX.Gestures, FMX.Edit, FMX.EditBox,
  FMX.SpinBox, FMX.Layouts, FMX.TabControl
  {$ENDIF} ;

type
  TfrmImpressora = class(TForm)
    tabsPrincipal: TTabControl;
    tabConfig: TTabItem;
    ToolBar1: TToolBar;
    lblTituloConfig: TLabel;
    ListBox1: TListBox;
    ListBoxGroupHeader1: TListBoxGroupHeader;
    ListBoxGroupHeader5: TListBoxGroupHeader;
    lbiClasse: TListBoxItem;
    GridPanelLayout6: TGridPanelLayout;
    rbClasseInterna: TRadioButton;
    rbClasseExterna: TRadioButton;
    lbModelos: TListBoxItem;
    cbxModelo: TComboBox;
    cbxPagCodigo: TComboBox;
    Layout2: TLayout;
    cbControlePorta: TCheckBox;
    cbSmartPOS: TCheckBox;
    ListBoxGroupHeader2: TListBoxGroupHeader;
    lbImpressoras: TListBoxItem;
    cbxImpressorasBth: TComboBox;
    btnProcurarBth: TCornerButton;
    chbTodasBth: TCheckBox;
    ListBoxGroupHeader3: TListBoxGroupHeader;
    lbLarguraEspacejamento: TListBoxItem;
    GridPanelLayout1: TGridPanelLayout;
    Label2: TLabel;
    Label3: TLabel;
    Label7: TLabel;
    seColunas: TSpinBox;
    seEspLinhas: TSpinBox;
    seLinhasPular: TSpinBox;
    ListBoxGroupHeader4: TListBoxGroupHeader;
    lbCodBarras: TListBoxItem;
    GridPanelLayout5: TGridPanelLayout;
    Label1: TLabel;
    Label4: TLabel;
    cbHRI: TCheckBox;
    seBarrasLargura: TSpinBox;
    seBarrasAltura: TSpinBox;
    cbSuportaBMP: TCheckBox;
    lbBotoes: TListBoxItem;
    GridPanelLayout2: TGridPanelLayout;
    btLerConfig: TCornerButton;
    btSalvarConfig: TCornerButton;
    Layout1: TLayout;
    SpeedButton1: TSpeedButton;
    btnAtivar: TCornerButton;
    tabTeste: TTabItem;
    ToolBar2: TToolBar;
    lblTituloTestes: TLabel;
    btnBack: TSpeedButton;
    GridPanelLayout3: TGridPanelLayout;
    btnTiposLetra: TButton;
    btAlinhamento: TButton;
    btnBarras: TButton;
    btQRCode: TButton;
    btAcentos: TButton;
    btnLerStatus: TButton;
    btnLerInfo: TButton;
    btBeep: TButton;
    btnAbrirGaveta: TButton;
    btnCortarPapel: TButton;
    mImp: TMemo;
    GridPanelLayout4: TGridPanelLayout;
    btnImprimir: TCornerButton;
    btnLimpar: TCornerButton;
    StyleBook1: TStyleBook;
    GestureManager1: TGestureManager;
    ImageList1: TImageList;
    ACBrPosPrinter1: TACBrPosPrinter;
    procedure FormActivate(Sender: TObject);
    procedure btnProcurarBthClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnAtivarClick(Sender: TObject);
    procedure btnTiposLetraClick(Sender: TObject);
    procedure btnImprimirClick(Sender: TObject);
    procedure btQRCodeClick(Sender: TObject);
    procedure btAlinhamentoClick(Sender: TObject);
    procedure rbClasseInternaClick(Sender: TObject);
  private
    fE1Printer: TACBrPosPrinterElginE1Service;
    {$IfDef ANDROID}
    //fGEDIPrinter: TACBrPosPrinterGEDI;
    fE1Lib: TACBrPosPrinterElginE1Lib;
    fSunmiPrinter: TACBrPosPrinterTecToySunmiLib;
    {$EndIf}
    fsTemPermissao: Boolean;
    function PedirPermissoes: Boolean;
    function PedirPermissoes2: Boolean;
    procedure ConfigurarACBrPosPrinter;
    procedure CarregarModelosExternos;
    procedure CarregarModelosInternos;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmImpressora: TfrmImpressora;

implementation

{$R *.fmx}

procedure TfrmImpressora.CarregarModelosExternos;
begin
  cbxModelo.Items.Clear;
  cbxModelo.Items.Add('Elgin E1 Service');
  cbxModelo.Items.Add('Elgin E1 Lib');
  //cbxModelo.Items.Add('Gertec GEDI');
  cbxModelo.Items.Add('TecToy Sunmi Service');
end;

function TfrmImpressora.PedirPermissoes2: Boolean;
var
  Ok: Boolean;
  LPermissions: TArray<String>;
begin
  Ok := fsTemPermissao;

  if not Ok then
  begin
    if (TOSVersion.Major < 12) then
    begin
      SetLength(LPermissions, 2);
      LPermissions[0] := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH);
      LPermissions[1] := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_ADMIN);
    end
    else
    begin
      SetLength(LPermissions, 3);
      LPermissions[0] := 'android.permission.BLUETOOTH_ADVERTISE';
      LPermissions[1] := 'android.permission.BLUETOOTH_CONNECT';
      LPermissions[2] := 'android.permission.BLUETOOTH_SCAN';
    end;
    mImp.Lines.Add('4');
    PermissionsService.RequestPermissions(LPermissions,
      procedure(const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray)
      begin
        mImp.Lines.Add('5');
        Ok := (Length(AGrantResults) = Length(LPermissions));

        if Ok then
        begin
          for var GR in AGrantResults do
          begin
            if (GR <> TPermissionStatus.Granted) then
            begin
              Ok := False;
              Break;
            end;
          end;
        end;
      end, nil);
  end;

  fsTemPermissao := Ok;
  Result := Ok;
end;

procedure TfrmImpressora.CarregarModelosInternos;
var
  m: TACBrPosPrinterModelo;
begin
  cbxModelo.Items.Clear;
  For m := Low(TACBrPosPrinterModelo) to High(TACBrPosPrinterModelo) do
     cbxModelo.Items.Add( GetEnumName(TypeInfo(TACBrPosPrinterModelo), integer(m) ) );


end;

procedure TfrmImpressora.rbClasseInternaClick(Sender: TObject);
begin
  if rbClasseInterna.IsChecked then
    CarregarModelosInternos
  else
    CarregarModelosExternos;
end;

function TfrmImpressora.PedirPermissoes: Boolean;
begin
  Result := ACBrPosPrinter1.Device.PedirPermissoesBlueTooth;
end;

procedure TfrmImpressora.ConfigurarACBrPosPrinter;
begin
  if not PedirPermissoes then
    exit;

  if rbClasseExterna.IsChecked then
  begin
    if cbSmartPOS.IsChecked then
    begin
      fE1Printer.Modelo := TElginE1Printers.prnSmartPOS;
      fE1Lib.Modelo     := TElginE1LibPrinters.prnSmartPOS;
    end
    else
    begin
      fE1Printer.Modelo := TElginE1Printers.prnM8;
      fE1Lib.Modelo     := TElginE1LibPrinters.prnM8;
    end;

    case cbxModelo.ItemIndex of
      0: ACBrPosPrinter1.ModeloExterno := fE1Printer;
      1: ACBrPosPrinter1.ModeloExterno := fE1Lib;
      //2: ACBrPosPrinter1.ModeloExterno := fGEDIPrinter;
    else
      ACBrPosPrinter1.ModeloExterno := fSunmiPrinter;
    end;

    cbxImpressorasBth.ItemIndex := cbxImpressorasBth.Items.IndexOf('NULL');
  end
  else
  begin
    if Assigned(cbxModelo.Selected) then
      ACBrPosPrinter1.Modelo := TACBrPosPrinterModelo(cbxModelo.ItemIndex)
    else
      ACBrPosPrinter1.Modelo := ppTexto;

    if Assigned(cbxImpressorasBth.Selected) then
      ACBrPosPrinter1.Porta := cbxImpressorasBth.Selected.Text
    else if cbxImpressorasBth.ItemIndex = cbxImpressorasBth.Items.IndexOf('NULL') then
      cbxImpressorasBth.ItemIndex := -1;
  end;

  if Assigned(cbxPagCodigo.Selected) then
    ACBrPosPrinter1.PaginaDeCodigo := TACBrPosPaginaCodigo(cbxPagCodigo.ItemIndex);

  ACBrPosPrinter1.ColunasFonteNormal := Trunc(seColunas.Value);
  ACBrPosPrinter1.EspacoEntreLinhas := Trunc(seEspLinhas.Value);
  ACBrPosPrinter1.LinhasEntreCupons := Trunc(seLinhasPular.Value);
  ACBrPosPrinter1.ConfigLogo.KeyCode1 := 1;
  ACBrPosPrinter1.ConfigLogo.KeyCode2 := 0;
  ACBrPosPrinter1.ControlePorta := cbControlePorta.IsChecked;
end;

procedure TfrmImpressora.btAlinhamentoClick(Sender: TObject);
//var
//  BmpMono: String;
//  HasBMP: Boolean;
begin
//  BmpMono := ApplicationPath+'acbrmono.bmp';
//  HasBMP := cbSuportaBMP.IsChecked and FileExists(BmpMono);

  mImp.Lines.Add('</zera>');
  mImp.Lines.Add('</linha_dupla>');
  mImp.Lines.Add('TEXTO NORMAL');
  mImp.Lines.Add('</ae>ALINHADO A ESQUERDA');
//  if HasBMP then
//    mImp.Lines.Add('<bmp>'+BmpMono+'</bmp>');
  mImp.Lines.Add('1 2 3 TESTANDO');
  mImp.Lines.Add('<n>FONTE NEGRITO</N>');
  mImp.Lines.Add('<e>FONTE EXPANDIDA</e>');
  mImp.Lines.Add('<a>FONTE ALT.DUPLA</a>');
  mImp.Lines.Add('<c>FONTE CONDENSADA</c>');
  mImp.Lines.Add('<in>FONTE INVERTIDA');
  mImp.Lines.Add('</in><S>FONTE SUBLINHADA</s>');
  mImp.Lines.Add('<i>FONTE ITALICO</i>');
{
  mImp.Lines.Add('</fn></ce>ALINHADO NO CENTRO');
//  if HasBMP then
//    mImp.Lines.Add('<bmp>'+BmpMono+'</bmp>');
  mImp.Lines.Add('1 2 3 TESTANDO');
  mImp.Lines.Add('<n>FONTE NEGRITO</N>');
  mImp.Lines.Add('<e>FONTE EXPANDIDA</e>');
  mImp.Lines.Add('<a>FONTE ALT.DUPLA</a>');
  mImp.Lines.Add('<c>FONTE CONDENSADA</c>');
  mImp.Lines.Add('<in>FONTE INVERTIDA');
  mImp.Lines.Add('</in><S>FONTE SUBLINHADA</s>');
  mImp.Lines.Add('<i>FONTE ITALICO</i>');

  mImp.Lines.Add('</fn></ad>ALINHADO A DIREITA');
//  if HasBMP then
//    mImp.Lines.Add('<bmp>'+BmpMono+'</bmp>');
  mImp.Lines.Add('1 2 3 TESTANDO');
  mImp.Lines.Add('<n>FONTE NEGRITO</N>');
  mImp.Lines.Add('<e>FONTE EXPANDIDA</e>');
  mImp.Lines.Add('<a>FONTE ALT.DUPLA</a>');
  mImp.Lines.Add('<c>FONTE CONDENSADA</c>');
  mImp.Lines.Add('<in>FONTE INVERTIDA');
  mImp.Lines.Add('</in><S>FONTE SUBLINHADA</s>');
  mImp.Lines.Add('<i>FONTE ITALICO</i>');

  mImp.Lines.Add('</ae></fn>TEXTO NORMAL');
}
  mImp.Lines.Add('</corte_total>');

end;

procedure TfrmImpressora.btnAtivarClick(Sender: TObject);
begin
  ConfigurarACBrPosPrinter;
  ACBrPosPrinter1.Ativar;

  lblTituloTestes.Text := 'Testes em: '+ACBrPosPrinter1.Porta;
  mImp.Lines.Clear;
  tabsPrincipal.Next;
end;

procedure TfrmImpressora.btnImprimirClick(Sender: TObject);
begin
  ACBrPosPrinter1.Buffer.Text := mImp.Lines.Text;
  ACBrPosPrinter1.Imprimir;
 // ACBrPosPrinter1.Imprimir(mImp.Lines.Text);
end;

procedure TfrmImpressora.btnProcurarBthClick(Sender: TObject);
var
  sl: TStringList;
begin
  if not PedirPermissoes then
    exit;

  cbxImpressorasBth.Items.Clear;
  try
    ACBrPosPrinter1.Device.AcharPortasBlueTooth( cbxImpressorasBth.Items, chbTodasBth.IsChecked );
    cbxImpressorasBth.Items.Add('NULL');
  except
  end;

  sl := TStringList.Create;
  try
    ACBrUtil.FilesIO.FindFiles('/dev/tty*', sl, True );
    cbxImpressorasBth.Items.AddStrings(sl);
  finally
    sl.Free;
  end;
end;

procedure TfrmImpressora.btnTiposLetraClick(Sender: TObject);
begin
  mImp.Lines.Clear;
  mImp.Lines.Add('</zera>');
  mImp.Lines.Add('</linha_dupla>');
  mImp.Lines.Add('FONTE NORMAL: '+IntToStr(ACBrPosPrinter1.ColunasFonteNormal)+' Colunas');
  mImp.Lines.Add(LeftStr('....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8', ACBrPosPrinter1.ColunasFonteNormal));
  mImp.Lines.Add('<e>EXPANDIDO: '+IntToStr(ACBrPosPrinter1.ColunasFonteExpandida)+' Colunas');
  mImp.Lines.Add(LeftStr('....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8', ACBrPosPrinter1.ColunasFonteExpandida));
  mImp.Lines.Add('</e><c>CONDENSADO: '+IntToStr(ACBrPosPrinter1.ColunasFonteCondensada)+' Colunas');
  mImp.Lines.Add(LeftStr('....+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8', ACBrPosPrinter1.ColunasFonteCondensada));
  mImp.Lines.Add('</c><n>FONTE NEGRITO</N>');
  mImp.Lines.Add('</corte_total>');
end;

procedure TfrmImpressora.btQRCodeClick(Sender: TObject);
begin
  mImp.Lines.Clear;
  mImp.Lines.Add('</zera>');
  mImp.Lines.Add('</linha_dupla>');
  mImp.Lines.Add('<qrcode_tipo>'+IntToStr(ACBrPosPrinter1.ConfigQRCode.Tipo)+'</qrcode_tipo>');
  mImp.Lines.Add('<qrcode_largura>'+IntToStr(ACBrPosPrinter1.ConfigQRCode.LarguraModulo)+'</qrcode_largura>');
  mImp.Lines.Add('<qrcode_error>'+IntToStr(ACBrPosPrinter1.ConfigQRCode.ErrorLevel)+'</qrcode_error>');
  mImp.Lines.Add('<qrcode>http://projetoacbr.com.br</qrcode>');
  mImp.Lines.Add('</ce>');
  mImp.Lines.Add('<qrcode>http://www.projetoacbr.com.br/forum/index.php?/page/SAC/sobre_o_sac.html</qrcode>');
  mImp.Lines.Add('</ad>');
  mImp.Lines.Add('<qrcode>http://www.projetoacbr.com.br/forum/index.php?/page/SAC/questoes_importantes.html</qrcode>');
  mImp.Lines.Add('</ce>');
  mImp.Lines.Add('Exemplo de QRCode para NFCe');
  mImp.Lines.Add('<qrcode_error>0</qrcode_error><qrcode>https://www.homologacao.nfce.fazenda.sp.gov.br/NFCeConsultaPublica/Paginas/ConsultaQRCode.aspx?'+
                 'chNFe=35150805481336000137650220000000711000001960&nVersao=100&tpAmb=2&dhEmi=323031352D30382D31395432323A33333A32352D30333A3030&vNF=3.00&'+
                 'vICMS=0.12&digVal=776967396F2B665861706673396878776E64594C396F61654C35493D&cIdToken=000001&cHashQRCode=9BD312D558823E1EC68CEDB338A39B6150B0480E</qrcode>');
  mImp.Lines.Add('Exemplo de QRCode para SAT');
  mImp.Lines.Add('<qrcode_error>0</qrcode_error><qrcode>35150811111111111111591234567890001672668828|20150820201736|118.72|05481336000137|'+
                 'TCbeD81ePUpMvso4VjFqRTvs4ovqmR1ZG3bwSCumzHtW8bbMedVJjVnww103v3LxKfgckAyuizcR/9pXaKay6M4Gu8kyDef+6VH5qONIZV1cB+mFfXiaCgeZ'+
                 'ALuRDCH1PRyb6hoBeRUkUk6lOdXSczRW9Y83GJMXdOFroEbzFmpf4+WOhe2BZ3mEdXKKGMfl1EB0JWnAThkGT+1Er9Jh/3En5YI4hgQP3NC2BiJVJ6oCEbKb'+
                 '85s5915DSZAw4qB/MlESWViDsDVYEnS/FQgA2kP2A9pR4+agdHmgWiz30MJYqX5Ng9XEYvvOMzl1Y6+7/frzsocOxfuQyFsnfJzogw==</qrcode>');
  mImp.Lines.Add('</corte_total>');
end;

procedure TfrmImpressora.FormActivate(Sender: TObject);
var
  PermissionBLUETOOTH : String;
begin
    if not PedirPermissoes2() then
    begin
      mImp.Lines.Add('Sem permissão onActive');
    end;

    ShowMessage('Versão 1.1');
end;


procedure TfrmImpressora.FormCreate(Sender: TObject);
var
  p: TACBrPosPaginaCodigo;
begin
  cbxPagCodigo.Items.Clear ;
  For p := Low(TACBrPosPaginaCodigo) to High(TACBrPosPaginaCodigo) do
    cbxPagCodigo.Items.Add( GetEnumName(TypeInfo(TACBrPosPaginaCodigo), integer(p) ) ) ;

end;

end.

Eu fiz uma copia do demo! Em virtude do demo estar dando erro de compilar no alexandria. Mas tudo que tinha lá, veio pra ca.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.