Ir para conteúdo
  • Cadastre-se

johnbh3

Membros
  • Total de ítens

    686
  • Registro em

  • Última visita

Tudo que johnbh3 postou

  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.
  14. Resolvido aqui senhores!
  15. johnbh3

    ACBRPostPrinter

    Ola Pessoal eu já tentei de tudo que vcs imanagem com Delphi alexandria. 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, {$IFDEF ANDROID} Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNI.Os, FMX.ListBox, ACBrUtil.FilesIO, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo {$ENDIF} ; type TfrmImpressora = class(TForm) Label1: TLabel; ACBrPosPrinter1: TACBrPosPrinter; cbxImpressorasBth: TComboBox; btnBuscarDispositivos: TButton; chbTodasBth: TCheckBox; Memo1: TMemo; procedure FormActivate(Sender: TObject); procedure btnBuscarDispositivosClick(Sender: TObject); private function PedirPermissoes: Boolean; { Private declarations } public { Public declarations } end; var frmImpressora: TfrmImpressora; implementation {$R *.fmx} function TfrmImpressora.PedirPermissoes: Boolean; begin Result := ACBrPosPrinter1.Device.PedirPermissoesBlueTooth; end; procedure TfrmImpressora.btnBuscarDispositivosClick(Sender: TObject); var sl: TStringList; begin Memo1.Lines.Clear; Memo1.Lines.Add('Iniciando...'); if not PedirPermissoes then begin Memo1.Lines.Add('Sem permissão : not PedirPermissoes'); exit; end else begin Memo1.Lines.Add('OK permissão : PedirPermissoes'); end; cbxImpressorasBth.Items.Clear; try Memo1.Lines.Add('Iniciando...[AcharPortasBlueTooth]'); ACBrPosPrinter1.Device.AcharPortasBlueTooth( cbxImpressorasBth.Items, chbTodasBth.IsChecked ); cbxImpressorasBth.Items.Add('NULL'); Memo1.Lines.Add('Finalzando...[FIM]'); except on E:Exception do Memo1.Lines.Add('AcharPortasBlueTooth...[ERRO] '+E.Message); end; Memo1.Lines.Add('Iniciando...[FilesIO]'); sl := TStringList.Create; try ACBrUtil.FilesIO.FindFiles('/dev/tty*', sl, True ); cbxImpressorasBth.Items.AddStrings(sl); finally Memo1.Lines.Add('Iniciando...[FilesIO]'); sl.Free; end; end; procedure TfrmImpressora.FormActivate(Sender: TObject); var PermissionBLUETOOTH : String; begin PedirPermissoes(); Label1.Text := '1.5'; PermissionBLUETOOTH := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH); PermissionsService.RequestPermissions([PermissionBLUETOOTH], (nil)); PermissionBLUETOOTH := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_ADMIN); PermissionsService.RequestPermissions([PermissionBLUETOOTH], (nil)) end; end. No OnActive eu coloquei PermissionBLUETOOTH := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH); PermissionsService.RequestPermissions([PermissionBLUETOOTH], (nil)); PermissionBLUETOOTH := JStringToString(TJManifest_permission.JavaClass.BLUETOOTH_ADMIN); PermissionsService.RequestPermissions([PermissionBLUETOOTH], (nil)) Mas era só teste ta. Na teoria o ACBR na parte de pedirPermissão faria isto. NA IDEI em todos ambientes de desenvolvimento marquei as duas opções de .BLUETOOTH. Testei também desmarcado. Fora do ACBR tentei tb este tutorial porém eu sei que e muito antigo https://github.com/adrianosantostreina/impressora-bluetooth Da erro external. Tudo que tento da errado. Nem o demo do Acbr da certo. Mesmo porque no meu exemplo iria fazer aos poucos. O codigo compartilhado acima e justamente do ACBR, e consiste incialmente somente em jogar os dispositivos no COMBO. Eu estou a 2 dias com isso e tudo que tenho não funciona. Ah no codigo acima eu coloquei um memo pra saber se deu certo permissão então aconteceu em if not PedirPermissoes then e que passa em function TACBrDeviceBlueTooth.PedirPermissoes: Boolean; tem directiva de {$IfDef DELPHI28_UP} normal ne? n e isso problema, na teoria isto era pra simplesmente funcionar e não funciona.
  16. johnbh3

    ACBrBal

    Ocorre que neste caso não posso instalar o Acbr! rs
  17. johnbh3

    ACBrBal

    Ola Pessoal Eu tava precisando so do ACBrBAL, isto não seria possivel de forma simples ne. Pq ele acaba dependendo de outras units. Alguém já teve necessidade deste tipo?
  18. Entrei no demo Quando vou compilar, quase na etapa final de gerar o APK da erro. [PAClient Error] Error: E7688 Unable to execute '"C:\Program Files\Java\jdk1.8.0_60\bin\java.exe" -cp "c:\program files (x86)\embarcadero\studio\22.0\bin\Android\r8-3.3.28.jar" com.android.tools.r8.D8 --release --min-api 23 --output "C:\Delphi\ACbr\Exemplos\ACBrSerial\ACBrPosPrinter\Android\Android64\Release\ACBrPosPrinterAndroid.classes" @"C:\Delphi\ACbr\Exemplos\ACBrSerial\ACBrPosPrinter\Android\Android64\Release\dex_list.txt"' (Error 1) [PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\android-support-v4.dex.jar: [PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\android-support-v4.dex.jar [PAClient Error] Error: E7688 Error in c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads-base.17.2.0.dex.jar: [PAClient Error] Error: E7688 java.nio.file.NoSuchFileException: c:\program files (x86)\embarcadero\studio\22.0\lib\android\Release\com-google-android-gms.play-services-ads-base.17.2.0.dex.jar Se eu crio aplicativo novo não da o erro. Certamente porque o demo foi feito em outro SDK algo assim ne. Sabem o que preciso ajusar?
  19. Então mas eu penso em fazer back mesmo. Mas a parte de pagamento posso chamar do próprio equipamento ? Este equipamento é frágil? "Ligeiramente fragil" nunca vi ele em lugar algum em em.lojas de bh
  20. Então. Este elgin aprova o documento ? E só curiosidade mesmo. Eu também penso assim que é melhor ter o back próprio e usar o acbr pra assinar e aprovar e ele devolve pro aplicativo a resposta apenas. Só fico na dúvida sobre o pagamento se não seria um requisito obrigatório aprovar pela própria elgin pra pra pagamento Ou se posso aprovar pelo back a nfce e chamo a rotina de pagamento passado o XML transmitido.
  21. Olá E bem usado este pdv mini 10 da elgin Android? Eu fiquei na dúvida. Eu preciso ter um back certo? Pra gravar no banco as informação? Ou é recomendável gravad em sqlite local? Ele aceitaria requisição rest ? Como tem.sido a aplicação de informação com este pdv da elgin pela comunidade? Outra coisa sobre aprovar o documento fiscal assinatura etc. Eu que preciso no back fazer ? Ou eu gero com acbr o XML e elgin que envia os documentos fiscais(minha dúvida de isto seria obrigatório ) me preocupa caso surja atualização ou erro e não ter como saber. Achei o produto bem legal só não sei o quanto ele é usado e se vale a pena é esta parte técnica de aprovação do nfce e guardar os dados. Mas sobre gravar os dados nem é maior dos problemas ou dúvida Mas é mais questão de aprovação da nfce. Como nunca mechi com Android e nfce se for tudo no próprio Android e usar acbr pra gerar o XML evidentemente preciso assinar o arquivo com certificado a1 que vai ficar no Android? Não sei se estou viajando nesta parte ou se coloco o a1 no dispositivo e quem trata de assinar é autorizar e elgin (que seria estranho). Não sendo elgin. Back não me parece alternativa ruim embora eu obrigue o usuário ter pdv Android e outro Windows pra ser servidor, ou uso acbr pra assinar e aprovar direito no Android (nem sei se isto é possível devido às dll de assinar XML) seria outras formas no Android certo se isso ? Ao mesmo tempo ter um back e Android mini10 falar com back e se houver processo de homologação junto a elgin seria estranho e custoso pra eles.
  22. Olá E bem usado este pdv mini 10 da elgin Android? Eu fiquei na dúvida. Eu preciso ter um back certo? Pra gravar no banco as informação? Ou é recomendável gravad em sqlite local? Ele aceitaria requisição rest ? Como tem.sido a aplicação de informação com este pdv da elgin pela comunidade? Outra coisa sobre aprovar o documento fiscal assinatura etc. Eu que preciso no back fazer ? Ou eu gero com acbr o XML e elgin que envia os documentos fiscais(minha dúvida de isto seria obrigatório ) me preocupa caso surja atualização ou erro e não ter como saber. Achei o produto bem legal só não sei o quanto ele é usado e se vale a pena é esta parte técnica de aprovação do nfce e guardar os dados.
×
×
  • 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.