Jump to content

Promoção 25 Anos de Delphi
25% de desconto em todas as versões

Saiba mais

Ganhe o curso Tributação NF-e para Desenvolvedores

Assinando o SAC Anual este mês
botao.png

 

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba Mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Search the Community

Showing results for 'use a força, leia os fontes'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

There are no results to display.

Forums

  • Fórum Aberto - ACBr
    • ACBr News
    • Equipamentos testados
    • Base de Conhecimento
    • Dúvidas Gerais sobre o ACBr
    • ACBrSerial
    • ACBrSAT
    • ACBrNFe
    • ACBrMonitor PLUS
    • ACBrDFe
    • ACBrTEFD e Dúvidas sobre TEF
    • ACBrTXT
    • ACBrBoleto
    • ACBrDiversos
    • ACBrTCP
    • ACBrFramework
    • ACBrLIB
    • Dia do ACBr
  • Suporte Pago - SAC
    • Dúvidas gerais
    • ACBrMonitorPLUS
    • NFe/NFCe - Nota Fiscal Eletrônica
    • DFe - Documentos Fiscais Eletrônicos
    • SAT / MFE
    • TEF
    • Boleto
    • ACBrSPED
    • ACBrTXT
    • Paf-ECF
    • Requisitos Fiscais por UF
    • ACBrLIB
  • Outros Assuntos
    • ACBr's Pub
    • Legislação Fiscal e Tributária
    • Object Pascal - Delphi & Lazarus
    • Data Base
    • Classificados
    • Dúvidas não relacionadas ao ACBr

Categories

  • ACBrLib
  • Suporte Pago - SAC
    • ACBrMonitorPLUS - SAC
    • Utilitários - SAC
    • Dia do ACBr 1a edição
    • Dia do ACBr 2a edição
  • Free Download
    • Demos / Testes / Utilitários
    • Apresentações - Palestras

Calendars

  • Eventos - Palestras - Webinars
  • Prazos SEFAZ
  • Community Calendar
  • Feriados Nacionais

Blogs

  • Daniel Simoes' Blog
  • André Ferreira de Moraes
  • Moderadores ACBr
  • Teste de Blog
  • Notícias do ACBr

Categories

  • Suporte Pago - SAC
    • Curso Dominando o ACBrMonitor
    • Webinars
    • Video Aulas
    • Palestras - Dia do ACBr 2a Ediçao
  • Vídeos Abertos
    • Video Aulas
    • Comunicados
    • Dia do ACBr 2a Ediçao
    • Dia do ACBr 1a Ediçao
    • Homologação ACBr
  • Campanhas promocionais

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Skype


Localização


Interesses


CNPJ da Empresa


CPF

Found 43 results

  1. Use a força, leia os fontes... veja: procedure NotaFiscal.Assinar; var XMLStr: String; XMLUTF8: AnsiString; Leitor: TLeitor; begin with TACBrNFe(TNotasFiscais(Collection).ACBrNFe) do begin if not Assigned(SSL.AntesDeAssinar) then SSL.ValidarCNPJCertificado( NFe.Emit.CNPJCPF ); end; // Gera novamente, para processar propriedades que podem ter sido modificadas <==== AQUI XMLStr := GerarXML; .....
  2. O ACBr é código aberto... Use a força... leia os fontes... http://svn.code.sf.net/p/acbr/code/trunk2/Fontes/ACBrTCP/ACBrConsultaCNPJ.pas
  3. Use a Força, leia os fontes... Veja como está na Unit ACBrDFeReport.pas, indicada no inicio do tópico... //QRCodeBitmap.SetSize(QRCode.Rows, QRCode.Columns); QRCodeBitmap.Width := QRCode.Columns; QRCodeBitmap.Height := QRCode.Rows;
  4. O ACBr suporta impressoras USB ? Durante muito tempo, a resposta a essa pergunta foi: NÃO, você precisa usar a Porta COM, Spool do Windows (RAW), Compartilhamento de Rede ou algum outro método... Porém agora isso mudou... Agora componentes que usam o ACBrDevice, como por exemplo o ACBrPosPrinter (para Impressoras Não Fiscais) e o ACBrETQ (para Impressoras de Etiquetas), possuem suporte a portas USB de maneira nativo do Windows... Ou seja, sem a necessidade de DLLs externas... Isso significa que caso o seu equipamento esteja conectado ao PC, por uma Porta USB... Você poderá conectar os componentes do ACBr, simplesmente definindo na Propriedade Porta algo como "USB" Exemplos de uso: ACBrPosPrinter1.Porta := 'USB' - Tenta descobrir qual é a Primeira Impressora de Bobinas plugada na USB e faz uso dela, se encontrar.. ACBrPosPrinter1.Porta := 'USB:Elgin' - Tenta conexão em alguma Impressora USB, listada como sendo do Fabricante 'Elgin' ACBrPosPrinter1.Porta := 'USB:Sweda, SI-300S' - Tenta conexão na Impressora USB, do Fabricante "Sweda" e do Modelo "SI-300S". ACBrETQ1.Porta := 'USB' - Tenta descobrir qual é a Primeira Impressora de Etiquetas plugada na USB e faz uso dela, se encontrar.. ACBrETQ1.Porta := 'USB:Zebra, GC420t' - Tenta conexão com a Impressora USB do Fabricante "Zebra", e modelo "GC420t" Observe que essa nova implementação é totalmente diferente do método de Hook, onde usávamos a DLL do Fabricante, como túnel USB... Nesse novo cenário a comunicação USB é feita diretamente usando a API do Windows, ou seja, sem necessidade de DLLs externas. Para compreender um pouco mais, sobre esse método veja esse artigo O método de Hook ainda está disponível, usando o prefixo de porta, 'DLL:' Como os Equipamentos são identificados ? Todo Equipamento USB, possui um código de identificação do Fabricante, chamado de Vendor ID (VID), e também do Produto chamado de Product ID (PID). Essa numeração é controlada pela USB.ORG, e você pode encontras uma lista de Todos os "Vendors ID", nesse link A classe TACBrUSBIDDataBase, mantêm um Banco de Dados interno, chamado ACBrUSBID.ini, com o mapeamento dos principais Equipamentos do Mercado Brasileiro.. Esse Banco de Dados é um simples Arquivo do tipo INI, que é compilado como resource e adicionado ao componente... Clique aqui para ver o layout do Banco de Dados no Formato INI, observe os comentários no inicio do arquivo, com algumas instruções de como inserir novos equipamentos nele. Se você distribuir o arquivo ACBrUSBID.ini, na mesma pasta do Executável da sua aplicação, a classe TACBrUSBIDDataBase fará uso desse arquivo, ao invéz de usar o resource interno... Isso pode ser muito útil para atualizar a lista de Dispositivos conhecidos, sem necessitar compilar uma nova versão do programa, apenas atualizando o ACBrUSBID.ini Como posso listar os equipamentos identificados pelo ACBr ? Use a Força, leia os fontes... Vamos ver trechos de código, do Demo PosPrinterTeste {$IfDef MSWINDOWS} // Os métodos abaixo, somente estão disponíveis para compilação em Windows // Carrega a lista de Impressoras detectadas em: ACBrPosPrinter1.Device.WinUSB.DeviceList ACBrPosPrinter1.Device.WinUSB.FindUSBPrinters(); // Varre a lista de Impressoras USB detectadas, e adiciona as mesmas, nas opções de Porta for K := 0 to ACBrPosPrinter1.Device.WinUSB.DeviceList.Count-1 do cbxPorta.Items.Add('USB:'+ACBrPosPrinter1.Device.WinUSB.DeviceList.Items[K].DeviceName); {$EndIf} Como o ACBr nomeia os dispositivos ? O "DeviceName" será calculado, de acordo com as informações disponíveis no banco de Dados... Primeiro o ACBr usa a API do Windows para captura informações do VID (Vendor ID ou Fabricante) e o PID (Product ID ou Modelo), dos Equipamentos listados... Se o ACBr falhar nessa tarefa, o equipamento será ignorado (não será listado) Se for capturado com sucesso a descrição em FriendlyName, então ela será usada.. Caso contrário, o ACBr tentará compor o nome, baseado no VID e PID Se o VID do Fabricante for encontrado na sessão [Vendors] de ACBrUSBID.ini, então o VID será substituído pela Descrição do Fabricante... Observe que na sessão [Vendors], temos vários fabricantes que não são conhecidos no mercado Brasileiro, mas são de equipamentos OEM, de Empresas nacionais... Nós procuramos manter o nome Original do Fabricante, de acordo com a tabelas de VID da OSB.ORG Se o VID não tiver equivalência na relação de [Vendors] de ACBrUSBID.ini, então ele será listado com o próprio número VID, que são 4 algarismos em Hexadecimal... Exemplo: "0b1b" Procuramos pelo PID do Equipamento, na sessão específica do Fabricante. Se não houver uma chave com o PID, então o ACBr usará o próprio número PID, para Nomear o Modelo. O PID também é composto do 4 algarismos em Hexadecimal... Exemplo: "0001" Se encontrar uma entrada com o PID, dentro da sessão do Fabricante, então o ACBr usará a Descrição do Modelo, e poderá desprezar a descrição do Fabricante, se a Descrição do modelo possuir uma vírgula, Exemplo: 7008=Elgin, I9;1;1... Nesse caso será desprezada a descrição do Fabricante "20d1-Dascom" e será usada apenas a descrição do Modelo, "Elgin, I9". Detecção automática de Porta e Protocolo Como agora temos um Banco de Dados, que informa além da Descrição do equipamento, qual é o Tipo do mesmo e qual o protocolo que ele usa, então os componentes ACBrPosPrinter e ACBrETQ, podem fazer uso dessas informações... Ou seja, se o equipamento for detectado com sucesso, no momento da Ativação da Porta (durante a chamada ao método "Ativar"), será usado o Protocolo Definido no Banco de Dados. Se for detectado que o equipamento USB é na verdade uma porta COM virtual, então o ACBr irá preferir fazer uso da Porta COM virtual, chaveando para mesma, de forma transparente... Pois dessa forma ele tem um melhor suporte a leitura de informações do equipamento. Se for detectado que a porta USB possui um equipamento incompatível com o componente em questão, isso também será alertado... Exemplo, você tentar conectar em uma porta 'USB:Zebra, GC420t' no componente TACBrPosPrinter, então um erro será emitido, pois esse equipamento não é uma impressora de Bobinas Como a mágica funciona ? Reparem que foi adicionado ao repositório a Unit ACBrWinUSBDevice.pas, essa Unit implementa chamadas a SetupAPI do Windows, para detectar os Dispositivos USB que estão listados em uma determinada Classe de Equipamentos (Class GUID)... O estudo desse artigo, foi fundamental, para a criação dessa Unit. Uma vez capturada o nome da Interface do Equipamento USB (em TACBrUSBWinDevice.DeviceInterface), podemos acessá-lo usando funções de manipulação Arquivos da API do Windows, como: CreateFile, WriteFile, ReadFile. Nem todos os dispositivos USB implementam suporte aos métodos ReadFile ou WriteFile... ou seja, pode não funcionar em alguns dispositivos.. Se você souber qual é o nome da Interface USB do equipamento, poderá informar ela diretamente na propriedade "Porta" dos componentes... Exemplo: ACBrPosPrinter1.Porta := '\\?\usb#vid_1c8a&pid_3002#0000000000022#{28d78fad-5a12-11d1-ae5b-0000f803a8c2}'; Para dúvidas, suporte ou correções, por favor crie um novo tópico, clicando aqui Para testar, baixe uma nova versão do PosPrinterTeste.exe
  5. Estude com atenção os fontes dos Demos.. (use a força, leia os fontes) Repare que os botões do Demo já implementam muitas das funcionalidades que você está precisando..
  6. Vdd Né... Como diria um amigo "USE A FORÇA, LEIA OS FONTES", kkkkkkkk Obrigado pela informação. Problema resolvido.
  7. Use a força, leia os fontes... Veja esse trecho de pcnCFeW.pas procedure TCFeW.GerarDetProd(const i: integer); var DecQtd: TpcnTipoCampo; begin if CFe.Det[i].Prod.EhCombustivel then begin DecQtd := tcDe3; CFe.Det[i].Prod.indRegra := irTruncamento; end else begin DecQtd := tcDe2; CFe.Det[i].Prod.indRegra := irArredondamento; end; Ou seja, no momento do preenchimento do CFe, você precisa fazer: CFe.Det[i].Prod.EhCombustivel := True;
  8. show é isso ai. como diz o Daniel use a força, leia o código . os fontes estão todos ai pra ser explorado
  9. Use a força... leia os fontes... Observe que a classe TACBrWSCorreiosSIGEP, não implementa o método BuscarPorLogradouro... (provavelmente esse WebService não suporta essa funcionalidade) { TACBrWSCorreiosSIGEP } TACBrWSCorreiosSIGEP = class(TACBrCEPWSClass) private fACBrIBGE: TACBrIBGE; procedure ProcessaResposta; public constructor Create( AOwner : TACBrCEP ) ; override ; destructor Destroy; override; Procedure BuscarPorCEP(const ACEP : String ) ; override ; end; { TACBrWSCEPAberto } TACBrWSCEPAberto= class(TACBrCEPWSClass) private procedure ProcessaResposta ; public constructor Create( AOwner : TACBrCEP ) ; override ; Procedure BuscarPorCEP(const ACEP : String ) ; override ; Procedure BuscarPorLogradouro(const AMunicipio, ATipo_Logradouro,ALogradouro, AUF, ABairro : String ); override; end ;
  10. Use a força, leia aos fontes... Veja como fizemos no DANFCE, em EscPos http://svn.code.sf.net/p/acbr/code/trunk2/Fontes/ACBrDFe/ACBrNFe/DANFE/NFCe/EscPos/ACBrNFeDANFeESCPOS.pas Ou no Extrato do SAT http://svn.code.sf.net/p/acbr/code/trunk2/Fontes/ACBrSAT/Extrato/EscPos/ACBrSATExtratoESCPOS.pas
  11. Use a força... leia os fontes function TACBrSAT.CancelarUltimaVenda: String ; var dadosCancelamento : string; begin CFe2CFeCanc; // Atualiza para chave carregada para o cancelamento dadosCancelamento := CFeCanc.GerarXML( true ); // True = Gera apenas as TAGs da aplicação Result := CancelarUltimaVenda( CFeCanc.infCFe.chCanc, dadosCancelamento); end ; ACBrSAT1.CFeCanc é o Objeto que contêm as informações de envio e recebimento do XML de Cancelamento O travamento pode ser algo errado na configuração da DLL... No Emulador do Sefaz, realmente ele trava quando em modo Debug... mas basta mandar continuar
  12. O que é o ACBrPosPrinter e Esc/Pos ? Para quem ainda não conhece, o ACBrPosPrinter é o nosso componente para acesso a Impressoras de Bobinas, Não fiscais... Essas impressoras, denominadas Impressoras POS (Point of Sale), contemplam uma linguagem de impressão de linha, interna, onde podemos realizar tarefas como: Modificar os atributos de impressão Imprimir códigos de barras 1D e 2D (QRCode) Acionar dispositivos ligados a Impressora, como Gaveta de Dinheiro, Guilhotina Ler status da Impressora (Tampa aberta, pouco ou sem papel, etc) No mercado brasileiro, há vários modelos, que contemplam várias linguagens, como por exemplo: EscPos, EscBema, EscDaruma, etc... As linguagens são chamadas de "Esc", pois os comandos geralmente iniciam com o caractere não imprimível, ESC ou #27... Exemplo: se enviarmos para a Impressora a String: chr(27) + 'E' + chr(01), ligaremos o modo Negrito A grande maioria dos fabricantes, procurou seguir o padrão Epson, que é a marca mundialmente líder nesse segmento, e a sua linguagem Epson Esc/Pos... O componente ACBrPosPrinter suporta a grande maioria das linguagens e modelos existentes no mercado brasileiro... mas nem todos os recursos, estão disponíveis em todas as linguagens... Usar o ACBrPosPrinter é extremamente simples, e não requer o conhecimento de Esc/Pos... Através de suas Tags, você pode construir ricos relatórios, com várias formatações de fontes, alinhamento, Imagens, códigos de barra e QRCode... A título de Exemplo, usamos o próprio componente ACBrPosPrinter, para criar o Extrato do SAT, Unit ACBrSATExtratoESCPOS.pas e o DANFCe, unit ACBrNFeDANFeESCPOS.pas Se você usa o ACBrMonitorPLUS, poderá acessar o ACBrPosPrinter pelo objeto ESCPOS... Veja no manual: https://acbr.sourceforge.io/ACBrMonitor/ESCPOSImprimirTags.html Você pode baixar um Demo compilado do ACBrPosPrinter em: Você pode baixar uma Apresentação sobre o ACBrPosPrinter em: Se você não programa em ObjectPascal (Delphi/Lazarus), pode baixar a biblioteca (DLL) ACBrLibPosPrinter em: https://www.projetoacbr.com.br/forum/files/category/35-acbrlibposprinter/ Sobre a Impressão de Imagens no ACBrPosPrinter A muito tempo eu sentia falta dos seguintes recursos, no componente ACBrPosPrinter Impressão de Imagens Gravação e manipulação de Logos na memória da Impressora... Agora isso já é possível... Após muita pesquisa, e com a ajuda de vários outros artigos que encontrei na Internet (veja referência nos fontes), consegui implementar a Impressão de Imagens no modo "Raster Image"... Devido a característica desses equipamentos, apenas a impressão de Imagens monocromáticas é suportada. Existem vários sites de conversão de Imagem, para BMP Monocromático, on-line, como por exemplo: https://online-converting.com/image/convert2bmp/ Novos métodos no componente ACBrPosPrinter procedure ImprimirImagemStream(ABMPStream: TStream); // Permite Imprimir uma Imagem, no formato BMP Monocromático, de um Stream procedure ImprimirImagemArquivo(ArquivoBMP: String); // Carrega e imprime uma Imagem de um Arquivo. Em aplicações visuais (não console) será usado o Objeto TPicture, que permite carregar vários formatos de Imagem, podendo ser Colorida ou em Escala de cinza. A Imagem será convertida para BMP Monocromática. Entretanto, procure sempre usar Imagens BMP Moncromáticas, para evitar processamento desnecessário procedure ImprimirImagemRasterStr(const ARasterStr: AnsiString; AWidth, AHeight: Integer); // Imprime uma Imagem a partir de uma String no formato "Raster Image" (veja abaixo) procedure ImprimirLogo(AKC1: Integer = -1; AKC2: Integer = -1; AFatorX: Integer = -1; AFatorY: Integer = -1); // Imprime um Logo préviamente gravado na memória da Impressora. Se os parâmetros não foram informados, serão usados os valores de ACBrPosPrinter.ConfigLogo procedure GravarLogoStream(ABMPStream: TStream; AKC1: Integer = -1; AKC2: Integer = -1); // Grava uma Imagem de Logo, no formato BMP Monocromático, a partir de um Stream, nas posições informadas. Se os parâmetros não foram informados, serão usados os valores de ACBrPosPrinter.ConfigLogo procedure GravarLogoArquivo(ArquivoBMP: String; AKC1: Integer = -1; AKC2: Integer = -1); // Grava uma Imagem de Logo, a partir de um arquivo em Disco, nas posições informadas. Se os parâmetros não foram informados, serão usados os valores de ACBrPosPrinter.ConfigLogo procedure ApagarLogo(AKC1: Integer = -1; AKC2: Integer = -1); // Remove um Logo da memória da Impressora. Se os parâmetros não foram informados, serão usados os valores de ACBrPosPrinter.ConfigLogo Nova Tag de Bloco <bmp> - Imprime Imagem BMP monocromática. Conteúdo pode ser: Path da Imagem, Stream em Base64 ou AscII Art (0 e 1) Veja alguns exemplos de uso: Inicializa </zera>, define o alinhamento no centro </ce>, e efetua a impressão da Imagem em disco, no Path "C:\temp\acbrmono.bmp" </zera></ce><bmp>C:\temp\acbrmono.bmp</bmp> Imprimir uma Imagem de BMP Mono, codificada em Base64 <bmp> Qk3eDQAAAAAAAD4AAAAoAAAA+gAAAG0AAAABAAEAAAAAAKANAAAAAAAAAAAAAAIAAAAAAAAAAAAAAP///wD/////////////////////////////////////////wP/////////////////////////////////////////A/////////////////////////////////////////8D/////////////////////////////////////////wP4AAAAAAAAAAAAAAA8A8AAAAAAAAAAAAAAAAAAAAD/A/AAAAAAAAAAAAAAADwD4AAAAAAAAAAAAAAAAAAAAD8D4AAAAAAAAAAAAAAAPAHwAAAAAAAAAAAAAAAAAAAAHwOAAAAAAAAAAAAAAAA8APgAAAAAAAAAgAAAAAAAAAAHAwAAAAAAAAAAAAAAADwAfAAAAAAAAAcAAAAAAAAAAAcDAAAAAAAAAAAAAAAAPAA+AAAAAAAAfgAAAAAAAAAAAwIAAAAAAAAAAAAADgAQAB8AAAAAAAH+AAAAAAAAAAABAgAAAAAAAAAAAAACAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAADDvjnnNn489ngHw4zM+cPM/MD8w7PO4AAAAAAAAAAAAMN+e/c2fn7+/A/nzMz9x+z8wP7Hd27gAAAAAAAAAAAA/2ZnNzZ2YO7ODGxszf3ODOzAxsdx7uAAAAAAAAAAAABmZmc3Nj7gfs4cDGzN/c4MfMDO4ffu4AAAAAAAAAAAAH5mYzd2BmYOzBwObuzNzmxMwPzgdg7gAAAAAAAAAAAAfGb55+5+fHx4HAfP/Pn3zHzAzvvz7uAAAAAAAAAAAAA8AGAAAAAAAAAO4AAAAAAAAMDOAAAA4AAAAAAIAAAAADwAIAAAAAB4AA/AAAMAAAwAwPwAAA7gAAAABAgAAAAAAAAAAAAAAADwA4A+H/4AADwAAAAAAAAAAAAEDAAAAAAAAAAAAAAAAPAAAB//4AAAfAAAAAAAAAAAAAwOAAAAAAAAAAAAAAAA8AAAD/8AAAB4AAAAAAAAAAAAHA8AAAAAAAAAAAAAAADwAAAH/AAAAHAAAAAAAAAAAAA8D4AAAAAAAAAAAAAAAPAAAAPAAAAA4AAAAAAAAAAAAHwP4AAAAAAAAAAAAAAA8AAAAAAAAAHgAAAAAAAAAAAB/A/////////////////////////////////////////8D/////////////////////////////////////////wP/////////////////////////////////////////A/////////////////////////////////////////8D///////gAP///Af////gA//////+Af//4B///////wP///+AAeAB4AB4D+AAB/ADwAAAAf+B4AHgH///////A////4AA4AHgAHgfgAAB+APAAAAAH8HgAeAf//////8D////wADgAeAAeD4AAAB8A8AAAAAHweAB4B///////wP////AAPABwABw+AAAAB4DwAAAAAHx4AHgH///////A////+AA///AAPD4AAAAHwPAAAAAAPHgAeAf//////8D////4AB//8AA4eAAAAAHg8AAAAAAeeAB4B///////wP////wAH//wAHj4AAAAAeDwAAAAAB54AHgH///////A/////AAf/+AAePAAAAAA8PAAAAAADngAeAf//////8D////8AAAAAADx4AAAAAD48AAAAAAPeAB4D///////wP////wAAAAAAPHAAAAAAHjwAAAAAA94AHgP///////A/////gAAAAAA48AAP8AAOPAAP/gAB3gAeA///////8D////+AAAAAADjwAB/4AA48AA//AAH+AB4D///////wP////8AAAAAAe+AAP/wADzwAD/+AAf4AHgf///////A/////wAAAAAB/4AB8PgAPPAAOf4AB/gAeB///////8D/////AAAAAAP/AAHgfAAc8AA7zgAH+AB4H///////wP////+AAAAAA/8AA8A8AP7wAD/+AAd4AHg////////A/////4AAAAAD5wADgBwH/vAAP/4AD3gAeD///////8D/////wAH/AAePAAOAHB/+8AA//AAPeAA4P///////wP/////AAf8ABw8AA4Af/8DwAD/gAA54ADg////////A/////8AB/gAPDwAHgB//APAAAAAAHngAPH///////8D/////4AH+AA8PAAeAD+AA8AAAAAA+eAAf////////wP/////gAf4ADw8AB4APgADwAAAAAHx4AB/////////A/////+AA/gAf7wAHgAwAAPAAAAAA+HgAH////////8D/////8AD8AB//AAeAAAAA8AAAAAfweAAHP///////wP/////wAHwAH/8AB4AAAADwAAAAB+B4AAAf///////A//////gAfAA8fwAHgA4AAPAAAAAB8HgAAA///////8D/////+AB4ADwPAAOAH+AA8AAAAADweAAAD///////wP/////4ADgAeA8AA4Af/gDwAAAAAHh4AAAP///////A//////wAMAB4BwADgB//+PAAP/AAPHgAgAf//////8D//////AAwAHAHAAPAHP/+8AA/+AA8eACAB///////wP/////+ADAA8AcAAfx8A/7wAD/4ADx4AMAD///////A//////4AEADgB4AB//gAPPAAODgAHHgA4AP//////8D//////gAQAOAHgAD/+AA88AA8+AAeeADwB///////wP//////AAAB4AOAAH/gADjwAD/4AB5////////////A//////8AAAHgA8AAP8AAOPAAP/gAHn///////////8D//////wAAA8ABwAAAAAB48AA/wAAef///////////wP//////gAADwAHgAAAAAPDwAAAAABwAAH/////////A//////+AAAOAAOAAAAAA8PAAAAAAPAAAf////////8D//////8AAB4AA+AAAAAHg8AAAAAA8AAD/////////wP//////wAAHgAB4AAAAA8DwAAAAADgAAf/////////A///////AAA8AAD4AAAAHwPAAAAAA/AAD/////////8D//////8AADwAAPgAAAA+A8AAAAAD+AAP/////////wP//////4AAPAAAfgAAAHwDwAAAAAf4AB//////////A///////gAA4AAAfgAAB+APAAAAAHzwAP/////////8D///////AAHgAAA/gAAfwA8AAAAD/PgA//////////wP/////////8AAAB////8AD//////wfAH//////////A//////////wAAAB////gAP//////88A//////////8D//////////gAAAB///4AB////////4H//////////wP//////////AAAAAP/wAAHgAAAAB//w///////////A//////////+AAAAAAHAAA8AAAAAAf/n//////////8D//////////8AAAAAAcAAHwAAAAAAB////////////wP//////////4AAAAABwAAeAAAAAAAAf///////////A///////////wAAAAAHAADwAAAAAAAA///////////8D///////////gAAAAAcAAeAAAAAAAAH///////////wP///////////AAAAABwAD4AAAAAAAA////////////A////////////AAAAAHAAeAAAAAAAAH///////////8D///////////8AAAAAeAD4AAAAAAAA////////////wP///////////4AAAAB4APAAAAAAAAH////////////A////////////4AAAAHgB4AAAAAAAB////////////8D////////////wAAAAeAPAAAAAAAAP////////////wP////////////wAAAB4B8AAAAAAAD/////////////A/////////////gAAAHgHgAAAAAAAf////////////8D/////////////AAAAOA8AAAAAAAD/////////////wP/////////////AAAA4HwAAAAAAA//////////////A//////////////AAADgeAAAAAAAP/////////////8D//////////////AAAPHwAAAAAAD//////////////wP//////////////AAA8eAAAAAAA///////////////A///////////////AADz4AAAAAAH//////////////8D///////////////AAPeAAAAAAD///////////////wP///////////////gA/4AAAAAA////////////////A////////////////wD/AAAAAA////////////////8D////////////////wH4AAAAAP////////////////wP////////////////4fAAAAAH/////////////////A//////////////////8AAAAP/////////////////8D//////////////////8AAA///////////////////wP/////////////////////////////////////////A/////////////////////////////////////////8D/////////////////////////////////////////wA== </bmp> Imprimir uma Imagem, baseado em ASCII ART Na Unit ACBrImage.pas, do pacote ACBrComum, é onde a mágica acontece... essa Unit implementa os seguintes métodos function IsPCX(S: TStream; CheckIsMono: Boolean = True): Boolean; // Retorna True se o Stream contém uma Imagem em PCX function IsBMP(S: TStream; CheckIsMono: Boolean = True): Boolean; // Retorna True se o Stream contém uma Imagem em BMP procedure RasterStrToAscII(const ARasterStr: AnsiString; AWidth: Integer; InvertImg: Boolean; AscIIArtLines: TStrings); // Converte uma String codificada em "Raster Image", para ASCII ART procedure AscIIToRasterStr(AscIIArtLines: TStrings; out AWidth: Integer; out AHeight: Integer; out ARasterStr: AnsiString); // Converte uma String codificada em ASCII ART para "Raster Image" procedure BMPMonoToRasterStr(ABMPStream: TStream; InvertImg: Boolean; out AWidth: Integer; out AHeight: Integer; out ARasterStr: AnsiString); // Converte uma Imagem no formato BMP Monocromático, gravada em um Stream, para uma String codificada em "Raster Image" procedure RasterStrToBMPMono(ARasterStr: AnsiString; AWidth: Integer; InvertImg: Boolean; ABMPStream: TStream); // Converte uma String codificada e "Raster Image", para uma Imagem no formato BMP Monocromático, gravando-a em um Stream {$IfNDef NOGUI} procedure BitmapToRasterStr(ABmpSrc: TBitmap; InvertImg: Boolean; out AWidth: Integer; out AHeight: Integer; out ARasterStr: AnsiString; LuminosityThreshold: Byte = C_LUMINOSITY_THRESHOLD); // Apenas disponível se a aplicação não for console. converte uma Imagem de um TBitMap, para uma String codificada e "Raster Image" {$EndIf} Use a força, leia os fontes Não deixe de estudar os fontes do Projeto Demo, PosPrinterTeste, na pasta: \ACBr\Exemplos\ACBrSerial\ACBrPosPrinter\Delphi Nesse projeto há vários exemplos de como Imprimir Imagens, e manipular Logotipos, usando as Tags e Métodos do componente ACBrPosPrinter O que é o modo "Raster Image" ? O Modo Raster é um fluxo de Bytes que representam os Pixels da Imagem... https://pt.wikipedia.org/wiki/Raster Exemplo: Imagine a Seguinte imagem, de 16 x 16 Pixels... Se fôssemos representá-la em ASCII ART, teríamos: 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 1010101010101010 Para transformá-la em Raster, agrupamos os Bits, em Bytes (8 bits)... portanto a primeira linha ficaria: Em Binário: 10101010 + 10101010 Em Hexa: AA + AA Em Decimal: 170 + 170 Então a String em Raster Image, da Imagem acima seria o equivalente a: #170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170+#170 Para imprimir uma String em Raster, é fundamental sabermos qual a largura em Pixels, da imagem A Epson disponibiliza utilitário, para converter imagens para o formato Raster: Epson BmpToRaster (o estudo do conteúdo do arquivo gerado por esse Utilitário, foi essencial na implementação dos métodos de ACBrImage)
  13. Acho que você procura um manual dos componentes... Realmente eles não existem... Atualmente temos o manual do ACBrMonitorPLUS, que pode sanar algumas dúvidas, pois tem vários pontos em comum com o componente https://acbr.sourceforge.io/ACBrMonitor/ComandosdoObjetoNFENFCe.html Porém a melhor maneira de aprender como usar os componentes, é estudando o código fonte dos Demos... (use a força, leia os fontes) você pode achar os demos do ACBrNFe em: \ACBr\Exemplos\ACBrDFe\ACBrNFe
  14. Veja atualizou os fontes mas recompilou os componentes. siga a sugestão do Daniel leia os fontes use a força
  15. Você pode consultar os fontes também. Como o nosso mestre Daniel Simoes sempre fala: "Use a força...Leia os fontes..."?.
  16. Use ACBrPosPrinter1.Buffer Use a força, leia os fontes... Veja o código do botão Imprimir, do Demo PosPrinterTeste ACBrPosPrinter1.Buffer.Text := mImp.Lines.Text; ACBrPosPrinter1.Imprimir;
  17. Você já conhece o ACBrMTer ? Ele é um componente do pacote ACBrTCP, que permite construir de maneira fácil, rápida e segura, uma aplicação comercial para gerenciar uma rede de Micros Terminais. Mas afinal, o que são os Micro Terminais ? São equipamentos de baixo custo, e muito robustos.. Eles não são um computador, e não permitem a instalação de software em sua memória. Eles atuam na verdade como "coletores de dados", e transmitem por TCP/IP, as informações coletadas a um Servidor, que as processa, e se necessário, envia comandos de volta ao Micro Terminal. Os Micro terminais, são ótimos para aplicações que implementam um atendimento no balcão, geralmente com auxílio de uma comanda. Os Micro Terminais, normalmente possuem duas portas Seriais, para ligação de equipamentos externos, como: Leitores de Código de Barras Impressoras Balanças Como funciona o componente ACBrMTer ? O componente ACBrMTer, é um Servidor TCP/IP. Ele abre uma porta TCP, normalmente 6550 ou outra, conforme a sua configuração. Após ativado, o ACBrMTer aguarda as conexões dos Micro Terminais, e dispara eventos para a sua aplicação, sempre que um novo Micro Terminal se conectar ou desconectar a ele. O ACBrMTer mantém de forma automática, uma lista de Micro Terminais conectados, e você pode se referenciar a cada um deles, pelo numero do IP da conexão. Todas as informações que o Micro Terminal transmitir, serão recepcionadas pelo componente ACBrMTer, que após tratá-las de acordo com o Protocolo do Micro Terminal, as transmitirá para a sua aplicação, através do evento OnRecebeDados. Como você provavelmente terá vários Micro Terminais na sua rede, o ACBrMTER envia no evento OnRecebeDados, o IP do Micro Terminal que as transmitiu... Um Micro Terminal irá transmitir dados, quando o usuário teclar algo no Equipamento, ou ainda quando o mesmo receber informações pela serial, como por exemplo de um Leitor de Código de Barras, ou Balança. Através do ACBrMTer, você pode enviar Comandos para o Micro Terminal, para realizar tarefas como por exemplo: Apagar ou Definir o texto no Display Movimentar o cursor Emitir Beep Comandar equipamentos, ligados a ele, como: Impressoras ou Balanças O ACBrMTer suporta os seguintes protocolos: mtrVT100: Protocolo simples, e usado em equipamentos antigos, esse protocolo não prevê respostas do Micro Terminal aos comandos a ele enviados. Esse protocolo é geralmente aceito por vários modelos de Micro Terminais, (por motivos de compatibilidade) mtrStxEtx: Mais completo que o VT100, e com controle de Recepção (ACK) de alguns comandos, esse protocolo é provavelmente o mais usado nos diversos Micro Terminais disponíveis no mercado. mtrPMTG: Protocolo bastante completo, e proprietário da Gertec mtrSB100: Protocolo nativo dos Micro Terminais da Bematech, e criado como uma melhoria do protocolo StxEtx Assim como os demais componentes do ACBr, o ACBrMTer irá abstrair a diferença entre os diversos protocolos suportados, de maneira que você não precise se preocupar com eles. É comum os Micro Terminais suportarem mais de um protocolo, o que pode ser definido em sua configuração Você poderá encontrar a documentação que usamos para o desenvolvimento do componente, em: http://svn.code.sf.net/p/acbr/code/tools/MicroTeminal/ Para que o ACBrMTer saiba se comunicar com as Balanças, e enviar comandos para leitura de Peso, e interpretar a resposta da Balança, é necessário conectar o componente ACBrMter em um componente ACBrBAL, e configurar no ACBrBAL, o Modelo ou protocolo, da Balança Como posso ver na prática ? Alguns fabricantes, como a Gertec e WillTech, fornecem emuladores, o que pode ser muito útil para conhecer o conceito desses equipamentos... Mas penso que é fundamental um equipamento real, se você deseja realmente construir aplicações para esse tipo de equipamento. Demo do ACBrMTer rodando em conjunto com o Emulador da Gertec Use a Força, leia os Fontes... Estude os fontes do Demo, que estão na pasta: \ACBr\Exemplos\ACBrTCP\ACBrMTer, essa é a melhor maneira de compreender o funcionamento do componente... Observe que fizemos uma "mini aplicação", que simula o Fluxo de uma Venda com comandas Para dúvidas e suporte ao ACBrMTer, por favor crie um Novo Tópico no sub-fórum do ACBrTCP https://www.projetoacbr.com.br/forum/forum/11-acbrtcp/
  18. Use a força, leia os fontes... Se você usar Ctrl+click no método Create, verá que o parâmetro Owner foi removido
  19. Por favor poste um exemplo de código... Há como reproduzir o problema, com o Demo do MTER ? Use a Força, leia os fontes... Observe que após o OnRecebeDados ser invocado, o código continua, e efetua o "echo" do caractere recebido procedure TACBrMTer.DoRecebeDados(const TCPBlockSocket: TTCPBlockSocket; const Recebido: AnsiString; var Enviar: AnsiString); var wIP, wRecebido: AnsiString; wConexao: TACBrMTerConexao; wEchoMode: TACBrMTerEchoMode; wLendoPeso: Boolean; begin wIP := TCPBlockSocket.GetRemoteSinIP; wConexao := fConexoes.Conexao[wIP]; wEchoMode := EchoMode; wRecebido := fMTer.InterpretarResposta(Recebido); if (wRecebido = EmptyStr) or (not Assigned(wConexao)) then Exit; wLendoPeso := wConexao.LendoPeso; GravaLog('Terminal: ' + wIP + ' - LendoPeso: ' + BoolToStr(wLendoPeso, True) + ' - RecebeDados: ' + Recebido); wConexao.UltimoDadoRecebido := MTer.LimparConteudoParaEnviar(wRecebido); if wLendoPeso then Exit; if Assigned(fOnRecebeDados) then // <---- AQUI O SEU CÓDIGO DO EVENTO SERÁ CHAMADO OnRecebeDados(wIP, wRecebido, wEchoMode); case wEchoMode of mdeNormal : Enviar := fMTer.ComandoEco(wRecebido); mdePassword: Enviar := fMTer.ComandoEco(PadCenter('', Length(wRecebido), PasswordChar)); end; end;
  20. No caso de comunicação direta por USB dependemos de DLL do fabricante, que deve ter um método generico de entrada e saída de dados.. Use a força, leia os fontes... Abra a Unit ACBrECFEpson.pas e veja um exemplo de implementação de "Hook" da ACBrDevice
  21. Use a força, leia os fontes... Veja como foi implementado no programa Demo, ECFTese ACBrECF1.ProgramaComprovanteNaoFiscal(cDescricao,cTipo,Posicao);
  22. Use a força.. leia os fontes... RLLayout.UnlimitedHeight := True; // ****** ATENÇÃO ****** // Se você recebeu um erro de compilação na linha ACIMA // Voce DEVE atualizar os fontes do seu Fortes Report CE // https://github.com/fortesinformatica/fortesreport-ce
  23. Use a força... leia os fontes... Ligue o seu Debug e analise...
  24. Use a força... leia os fontes... ACBrNFe1.SSL.SSLXmlSignLib := xsLibXml2; Enviei para o SVN...
  25. Não é o mesmo erro... Use a força, leia os fontes... veja que nesse exato ponto do erro de compilação tem um comentário informando a necessidade de atualizar o Fortes Report CE
×
×
  • Create New...