Ir para conteúdo
  • Cadastre-se

johnbh3

Membros
  • Total de ítens

    686
  • Registro em

  • Última visita

1 Seguidor

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

johnbh3's Achievements

  1. Resolvi postei em De toda forma obrigado !
  2. resolvido Fiz isto PintarQRCodeEstatico (); var i : integer; qrCodeData: string; begin ACBrPixCD1.Recebedor.Nome := DmDados.configuracao('NOME_PIX'); ACBrPixCD1.Recebedor.CEP := DmDados.configuracao('END_CEPPIX'); ACBrPixCD1.Recebedor.Cidade := DmDados.configuracao('END_CIDADEPIX'); ACBrPixCD1.Recebedor.UF := DmDados.configuracao('END_UFPIX'); lblNomePIX.Text := 'PAGAMENTO PARA, '+ACBrPixCD1.Recebedor.Nome; if DmDados.configuracao('TIPO_CHAVEPIX') = '1' Then begin ACBrPixBradesco.ChavePIX :='+5531'+DmDados.configuracao('CHAVE_PIX') end else begin ACBrPixBradesco.ChavePIX := DmDados.configuracao('CHAVE_PIX'); end; qrCodeData := ACBrPixCD1.GerarQRCodeEstatico( precoACobrar, 'PAGAMENTO ESTACIONAMENTO', ''); {$IFDEF MSWINDOWS} QRCodeWin(imgQR, qrCodeData); {$ELSE} QRCodeMobile(imgQR, qrCodeData); {$ENDIF} end; Usei o acbr para gerar a string do qrCode Quando mobile pela directiva procedure TfrmSaidaVeiculo.QrCodeMobile(imgQRCode: TImage; texto: string); const downsizeQuality: Integer = 2; // bigger value, better quality, slower rendering var QRCode: TDelphiZXingQRCode; Row, Column: Integer; pixelColor : TAlphaColor; vBitMapData : TBitmapData; pixelCount, y, x: Integer; columnPixel, rowPixel: Integer; function GetPixelCount(AWidth, AHeight: Single): Integer; begin if QRCode.Rows > 0 then Result := Trunc(Min(AWidth, AHeight)) div QRCode.Rows else Result := 0; end; begin // Not a good idea to stretch the QR Code... if imgQRCode.WrapMode = TImageWrapMode.Stretch then imgQRCode.WrapMode := TImageWrapMode.Fit; QRCode := TDelphiZXingQRCode.Create; try QRCode.Data := ' ' + texto; QRCode.Encoding := TQRCodeEncoding.qrAuto; QRCode.QuietZone := 4; pixelCount := GetPixelCount(imgQRCode.Width, imgQRCode.Height); case imgQRCode.WrapMode of TImageWrapMode.Original, TImageWrapMode.Tile, TImageWrapMode.Center: begin if pixelCount > 0 then imgQRCode.Bitmap.SetSize(QRCode.Columns * pixelCount, QRCode.Rows * pixelCount); end; TImageWrapMode.Fit: begin if pixelCount > 0 then begin imgQRCode.Bitmap.SetSize(QRCode.Columns * pixelCount * downsizeQuality, QRCode.Rows * pixelCount * downsizeQuality); pixelCount := pixelCount * downsizeQuality; end; end; //TImageWrapMode.iwStretch: // raise Exception.Create('Not a good idea to stretch the QR Code'); end; if imgQRCode.Bitmap.Canvas.BeginScene then begin try imgQRCode.Bitmap.Canvas.Clear(TAlphaColors.White); if pixelCount > 0 then begin if imgQRCode.Bitmap.Map(TMapAccess.Write, vBitMapData) then begin try For Row := 0 to QRCode.Rows - 1 do begin for Column := 0 to QRCode.Columns - 1 do begin if (QRCode.IsBlack[Row, Column]) then pixelColor := TAlphaColors.Black else pixelColor := TAlphaColors.White; columnPixel := Column * pixelCount; rowPixel := Row * pixelCount; for x := 0 to pixelCount - 1 do for y := 0 to pixelCount - 1 do vBitMapData.SetPixel(columnPixel + x, rowPixel + y, pixelColor); end; end; finally imgQRCode.Bitmap.Unmap(vBitMapData); end; end; end; finally imgQRCode.Bitmap.Canvas.EndScene; end; end; finally QRCode.Free; end; end; Vai que sirva pra alguem funcionou todos os bancos. E qualidade ficou otima! Agora funciona desktop e mobile.
  3. Eu observei que o erro e chave celular Mesmo usando o demo ACBR - Exemplos\ACBrPIXCD\Delphi da o mesmo errado Lá tem obrigada por a chave com +55DDDNUMEROTEL Se colocar no demo apenas NUMERODOTELEFONE vai conter 11 digitos (igual CPF). Mas acredito ser um BUG quando usa o telefone, e de fato precisa por +55CHAVE mas ele gera o QrCode invalido.
  4. Em VCL simplismente funciona normal. Mesmo codigo, mesmo pq n aparenta ter erros no codigo. No mobile perde qualidade da imagem.
  5. Ola Estou usando o PIX estatico sem necessidade de confirmar pagamento. Eu gerei com chave PIX que origem e bradesco. Ai vou no banco itau e vou scnear da erro iso no meu aparelho. No inter da certo Porém fui no santander deu erro tb. O bradesco de outro aparelho com outra esposa tambem da erro. Fiz a leitura do pagseguro também não funciona. Estranho ne! To usando fmx. procedure TfrmSaidaVeiculo.PintarQRCodeEstatico (aChavePix: string); var i : integer; mQRE : TStringList; begin mQRE := TStringList.Create; try ACBrPixCD1.PSP := ACBrPixBradesco; ACBrPixBradesco.ChavePIX := aChavePix; i:= Integer(DetectarTipoChave(aChavePix)); if i = 4 then begin aChavePix := '+55'+aChavePix; end; mQRE.Text := ACBrPixCD1.GerarQRCodeEstatico( precoACobrar, 'PGTO ESTACIONAMENTO', IntToStr(Random(300))); PintarQRCode(mQRE.Text, imgQRE.Bitmap, qrUTF8BOM); finally FreeAndNil(mQRE); end; end; procedure TfrmSaidaVeiculo.btnPixClick(Sender: TObject); begin ACBrPixCD1.Recebedor.Nome := DmDados.configuracao('NOME_PIX'); ACBrPixCD1.Recebedor.CEP := DmDados.configuracao('END_CEPPIX'); ACBrPixCD1.Recebedor.Cidade := DmDados.configuracao('END_CIDADEPIX'); ACBrPixCD1.Recebedor.UF := DmDados.configuracao('END_UFPIX'); lblNomePIX.Text := ACBrPixCD1.Recebedor.Nome; PintarQRCodeEstatico(DmDados.configuracao('CHAVE_PIX')); end;
  6. Estranho, não nenhuma excepcion E qual dll por exemplo? Visto que vcl nem dll tem na pasta do exe funciona, no fmx Android idem E só pix estático n entendi o pq que seria só printar o qrCode só n exige fmx/Windows
  7. Abri com android e exibi com FMX. Só não exibe quando e FMX no windows estranho
  8. Ola Eu estou tentando gerar pix estatatico com firemonkey funciona? Seguinte eu fiz em VCL vs Firemokey VCL funciona uses ACBrDelphiZXingQRCode,ACBrImage, ACBrPIXUtil; procedure TForm1.btQREGerarClick(Sender: TObject); begin ACBrPixCD1.Recebedor.Nome := 'SOUZA'; ACBrPixCD1.Recebedor.CEP := '31950280'; ACBrPixCD1.Recebedor.Cidade := 'BELO HORIZONTE'; ACBrPixCD1.Recebedor.UF := 'MG'; PintarQRCodeEstatico('073XXXXX8641'); end; procedure TForm1.PintarQRCodeEstatico (sChave: string); var i : integer; begin ACBrPixCD1.PSP := ACBrPSPPagSeguro1; ACBrPSPPagSeguro1.ChavePIX := sChave; i:= Integer(DetectarTipoChave(sChave)); mQRE.Lines.Text := ACBrPixCD1.GerarQRCodeEstatico( StrToFloatDef('1,00', 0), '', ''); PintarQRCode(mQRE.Lines.Text, imgQRE.Picture.Bitmap, qrUTF8BOM); end; Em FMX não funciona {$R *.fmx} uses ACBrDelphiZXingQRCode,ACBrImage, ACBrPIXUtil; procedure TForm1.btQREGerarClick(Sender: TObject); begin ACBrPixCD1.Recebedor.Nome := 'JSOUZA'; ACBrPixCD1.Recebedor.CEP := '31950280'; ACBrPixCD1.Recebedor.Cidade := 'BELO HORIZONTE'; ACBrPixCD1.Recebedor.UF := 'MG'; PintarQRCodeEstatico('0SSSSS8641'); end; procedure TForm1.PintarQRCodeEstatico (sChave: string); var i : integer; begin ACBrPixCD1.PSP := ACBrPSPPagSeguro1; ACBrPSPPagSeguro1.ChavePIX := sChave; i:= Integer(DetectarTipoChave(sChave)); mQRE.Lines.Text := ACBrPixCD1.GerarQRCodeEstatico( StrToFloatDef('1,00', 0), '', ''); PintarQRCode(mQRE.Lines.Text,imgQRE.Bitmap, qrUTF8BOM); end; Debugando em procedure PintarQRCode(const QRCodeData: String; ABitMap: TBitmap; que chama no ACBrImage Quando dou ctrl+f7 no delphi pra inspecionar a variavel QRCodeBitmap e mando SaveToFile e gerou uma uma imagem bmp 47po47 tudo preto. debuguei aqui procedure PintarQRCode(const QRCodeData: String; ABitMap: TBitmap; const AEncoding: TQRCodeEncoding); var QRCode: TDelphiZXingQRCode; QRCodeBitmap: TBitmap; Row, Column: Integer; {$IfDef FMX} BitMapData: TBitmapData; {$EndIf} begin QRCode := TDelphiZXingQRCode.Create; QRCodeBitmap := TBitmap.Create; try QRCode.Encoding := AEncoding; QRCode.QuietZone := 1; QRCode.Data := widestring(QRCodeData); //QRCodeBitmap.SetSize(Q unit completa do FMX copia do VCL 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.Objects, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, ACBrPIXCD, ACBrPIXPSPPagSeguro, ACBrBase; type TForm1 = class(TForm) imgQRE: TImage; btQREGerar: TButton; mQRE: TMemo; ACBrPSPPagSeguro1: TACBrPSPPagSeguro; ACBrPixCD1: TACBrPixCD; procedure btQREGerarClick(Sender: TObject); private procedure PintarQRCodeEstatico(sChave: string); { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} uses ACBrDelphiZXingQRCode,ACBrImage, ACBrPIXUtil; procedure TForm1.btQREGerarClick(Sender: TObject); var BitMapData: TBitmapData; begin ACBrPixCD1.Recebedor.Nome := 'JOHN KENNEDY OLIVEIRA SOUZA'; ACBrPixCD1.Recebedor.CEP := '31950280'; ACBrPixCD1.Recebedor.Cidade := 'BELO HORIZONTE'; ACBrPixCD1.Recebedor.UF := 'MG'; PintarQRCodeEstatico('07342XXXX41'); end; procedure TForm1.PintarQRCodeEstatico (sChave: string); var i : integer; begin ACBrPixCD1.PSP := ACBrPSPPagSeguro1; ACBrPSPPagSeguro1.ChavePIX := sChave; i:= Integer(DetectarTipoChave(sChave)); mQRE.Lines.Text := ACBrPixCD1.GerarQRCodeEstatico( StrToFloatDef('1,00', 0), '', ''); PintarQRCode(mQRE.Lines.Text,imgQRE.Bitmap, qrUTF8BOM); end; end. DETALHE ESTOU TESTOU O fmx no proprio windows.
  9. Pessoa Onde esta meu erro? /zera> </ce> <e>SHOPPING CIDADE</e> Rua General , 12 Bairro: centro Belo Horizonte - MG <n>Tel: (31) 3488-1234</n> </linha_simples> <n>COMPPROVANTE DE ENTRADA</n></fn> </linha_simples> PLACA: HOJ-XXXX Marca: PATIO Cor: Cinza Tipo: Horista </linha_simples> <n>Tel: R$ 10,00</n> </corte_total> Até comprovante de entrada fica como espero (Centralizado e COMPPROVANTE DE ENTRADA em negrito). Porém o resto abaixo também fica ao centro. Queria que fique a direita o resto PLACA: HOJ-XXXX Marca: PATIO Cor: Cinza Tipo: Horista </linha_simples> <n>Tel: R$ 10,00</n> </corte_total> Esta saindo assim ------------------------------------- TESTE Rua General , 12 Bairro: centro ------------------------------------- PLACA: HOJ-XXXX Marca: PATIO Cor: Cinza Tipo: Horista Queria que ficasse assim ------------------------------------- TESTE Rua General , 12 Bairro: centro ------------------------------------- PLACA: HOJ-XXXX Marca: PATIO Cor: Cinza Tipo: Horista
  10. 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.
  11. 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>');
  12. johnbh3

    Ajuda com ESC/POS

    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?
  13. Claro eu marquei além das duas permissões na IDE de BLUETOOTH e marquei também dangerous (rum time use aproval) adverse, connet e scan. O Acbr já faz isto em LPermissions[0] := 'android.permission.BLUETOOTH_ADVERTISE'; LPermissions[1] := 'android.permission.BLUETOOTH_CONNECT'; LPermissions[2] := 'android.permission.BLUETOOTH_SCAN'; Por algum motivo da erro. Eu marquei tamném da IDE. E passei o ACBrPosPrinter1.Device.PedirPermissoesBlueTooth para onAcative do form. Eu refiz o demo, só com que precisava. 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, {$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); private fsTemPermissao: Boolean; function PedirPermissoes: Boolean; function PedirPermissoes2: Boolean; procedure ConfigurarACBrPosPrinter; { Private declarations } public { Public declarations } end; var frmImpressora: TfrmImpressora; implementation {$R *.fmx} 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; 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.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.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.
×
×
  • 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.