Impressao como do supermercado
Pessoal eu sempre fico curioso quando vejo os sistemas de supermercado quando imprimem naqueles rolinhos... Como que eles fazem para visualizar daquele jeito??? sera que usam um Tmemo ou um richedit??? E que eu queria colocar no meu sistema....
Obrigado pela atençao
Obrigado pela atençao
Japa
Curtidas 0
Respostas
Edilcimar
28/04/2005
o rolinho ao qual vc se refere não é feito pela impressora fiscal?
GOSTEI 0
Japa
28/04/2005
Olha e aqueles rolinho finos... aquelas impressoras matriciais pequenas..
matricial epson lx300
matricial epson lx300
GOSTEI 0
Edilcimar
28/04/2005
a lx300 imprime em 80 colunas, a Bematech, a Daruma, etc possuem impressoras que parecem fiscais, mas não são, que imprimem em 40 colunas
GOSTEI 0
Japa
28/04/2005
Como eu vejo esse total de colunas amizade??? no quickreport???
GOSTEI 0
Flaviocont
28/04/2005
vc pode definir a largura da pagina no quickreport. vc mede a largura do papel e define essa largura la
GOSTEI 0
Sanses
28/04/2005
olha pra fazer aquele tipo de impressão, inclusive item a item, utilize a unit charprinter, que pelo que me parece foi desenvolvida por um colega do fórum. Voce pode imprimir até em bobinas de 80milimetros.
segue abaixo a unit:
Sanses
segue abaixo a unit:
unit CharPrinter;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Printers, WinSpool;
type
{ Stream para enviar caracteres à impressora atual }
TPrinterStream = class (TStream)
private
fPrinter : TPrinter;
fHandle : THandle;
fTitle : String;
procedure CreateHandle;
procedure FreeHandle;
public
constructor Create (aPrinter: TPrinter; aTitle : String);
destructor Destroy; override;
function Write (const Buffer; Count : Longint): Longint; override;
property Handle : THandle read fHandle;
end;
TCharPrinter = class(TObject)
private
{ Private declarations }
fStream : TStream;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
constructor Create; virtual;
destructor Destroy; override;
procedure OpenDoc (aTitle : String); virtual;
procedure SendData (aData : String);
procedure CloseDoc; virtual;
property PrintStream : TStream read fStream;
end;
// Definições para TAdvancedPrinter //
TprtLang = (lngEPFX,lngESCP2,lngHPPCL);
TprtFontSize = (pfs5cpi,pfs10cpi,pfs12cpi,pfs17cpi,pfs20cpi);
TprtTextStyle = (psBold,psItalic,psUnderline);
TprtTextStyles = set of TprtTextStyle;
TAdvancedPrinter = class (TCharPrinter)
private
fLang : TprtLang;
fFontSize : TprtFontSize;
fTextStyle : TprtTextStyles;
procedure SetLang (lang : TprtLang);
function GetLang : TprtLang;
procedure SetFontSize (size : TprtFontSize);
function GetFontSize : TprtFontSize;
procedure SetTextStyle (styles : TprtTextStyles);
function GetTextStyle : TprtTextStyles;
procedure UpdateStyle;
procedure Initialize;
function Convert (s : string) : string;
published
constructor Create; override;
procedure OpenDoc (aTitle : String); override;
property Language : TprtLang read GetLang write SetLang;
property FontSize : TprtFontSize read GetFontSize write SetFontSize;
property TextStyle : TprtTextStyles read GetTextStyle write SetTextStyle;
public
procedure CR;
procedure LF; overload;
procedure LF (Lines : integer); overload;
procedure CRLF;
procedure FF;
procedure Write (txt : string);
procedure WriteLeft (txt, fill : string; size : integer);
procedure WriteRight (txt, fill : string; size : integer);
procedure WriteCenter(txt, fill : string; size : integer);
procedure WriteRepeat(txt : string; quant : integer);
end;
procedure Register;
implementation
procedure Register;
begin
{ RegisterComponents(´AeF´, [TCharPrinter]);}
end;
{ =================== }
{ = TPrinterStream = }
{ =================== }
constructor TPrinterStream.Create (aPrinter : TPrinter; aTitle : String);
begin
inherited Create;
fPrinter := aPrinter;
fTitle := aTitle;
CreateHandle;
end;
destructor TPrinterStream.Destroy;
begin
FreeHandle;
inherited;
end;
procedure TPrinterStream.FreeHandle;
begin
if fHandle <> 0 then
begin
EndPagePrinter (fHandle);
EndDocPrinter (fHandle);
ClosePrinter (Handle);
fHandle := 0;
end;
end;
procedure TPrinterStream.CreateHandle;
type
DOC_INFO_1 = packed record
pDocName : PChar;
pOutputFile : PChar;
pDataType : PChar;
end;
var
aDevice,
aDriver,
aPort : array[0..255] of Char;
aMode : Cardinal;
DocInfo : DOC_INFO_1;
begin
DocInfo.pDocName := nil;
DocInfo.pOutputFile := nil;
DocInfo.pDataType := ´RAW´;
FreeHandle;
if fHandle = 0 then
begin
fPrinter.GetPrinter (aDevice, aDriver, aPort, aMode);
if OpenPrinter (aDevice, fHandle, nil)
then begin
DocInfo.pDocName := PChar(fTitle);
if StartDocPrinter (fHandle, 1, @DocInfo) = 0
then begin
ClosePrinter (fHandle);
fHandle := 0;
end else
if not StartPagePrinter (fHandle)
then begin
EndDocPrinter (fHandle);
ClosePrinter (fHandle);
fHandle := 0;
end;
end;
end;
end;
function TPrinterStream.Write (const Buffer; Count : Longint) : Longint;
var
Bytes : Cardinal;
begin
WritePrinter (Handle, @Buffer, Count, Bytes);
Result := Bytes;
end;
{ ================= }
{ = TCharPrinter = }
{ ================= }
constructor TCharPrinter.Create;
begin
inherited Create;
fStream := nil;
end;
destructor TCharPrinter.Destroy;
begin
if fStream <> nil
then fStream.Free;
inherited;
end;
procedure TCharPrinter.OpenDoc (aTitle : String);
begin
if fStream = nil
then fStream := TPrinterStream.Create (Printer, aTitle);
end;
procedure TCharPrinter.CloseDoc;
begin
if fStream <> nil
then begin
fStream.Free;
fStream := nil;
end;
end;
procedure TCharPrinter.SendData (aData : String);
var
Data : array[0..255] of char;
cnt : integer;
begin
for cnt := 0 to length(aData) - 1
do Data[cnt] := aData[cnt+1];
fStream.Write (Data, length(aData));
end;
{ ===================== }
{ = TAdvancedPrinter = }
{ ===================== }
procedure TAdvancedPrinter.SetLang (lang : TprtLang);
begin
fLang := lang;
end;
function TAdvancedPrinter.GetLang : TprtLang;
begin
result := fLang;
end;
procedure TAdvancedPrinter.SetFontSize (size : TprtFontSize);
begin
fFontSize := size;
UpdateStyle;
end;
function TAdvancedPrinter.GetFontSize : TprtFontSize;
begin
result := fFontSize;
UpdateStyle;
end;
procedure TAdvancedPrinter.SetTextStyle (styles : TprtTextStyles);
begin
fTextStyle := styles;
UpdateStyle;
end;
function TAdvancedPrinter.GetTextStyle : TprtTextStyles;
begin
result := fTextStyle;
UpdateStyle;
end;
procedure TAdvancedPrinter.UpdateStyle;
var
cmd : string;
i : byte;
begin
cmd := ´´;
case fLang of
lngESCP2, lngEPFX : begin
i := 0;
Case fFontSize of
pfs5cpi : i := 32;
pfs10cpi : i := 0;
pfs12cpi : i := 1;
pfs17cpi : i := 4;
pfs20cpi : i := 5;
end;
if psBold in fTextStyle then i := i + 8;
if psItalic in fTextStyle then i := i + 64;
if psUnderline in fTextStyle then i := i + 128;
cmd := #27´!´+chr(i);
end;
lngHPPCL : begin
Case fFontSize of
pfs5cpi : cmd := 27´(s5H´;
pfs10cpi : cmd := 27´(s10H´;
pfs12cpi : cmd := 27´(s12H´;
pfs17cpi : cmd := 27´(s17H´;
pfs20cpi : cmd := #27´(s20H´;
end;
if psBold in fTextStyle
then cmd := cmd + 27´(s3B´
else cmd := cmd + 27´(s0B´;
if psItalic in fTextStyle
then cmd := cmd + 27´(s1S´
else cmd := cmd + 27´(s0S´;
if psUnderline in fTextStyle
then cmd := cmd + 27´&d0D´
else cmd := cmd + 27´&d@´;
end;
end;
SendData(cmd);
end;
procedure TAdvancedPrinter.Initialize;
begin
case fLang of
lngEPFX : SendData (27´@´27´2´27´P´18);
lngESCP2 : SendData (27´@´27´O´27´2´27´C0´1127´!´0);
lngHPPCL : SendData (27´E´27´&l2A´27´&l0O´27´&l6D´27´(s4099T´27´(s0P´27´&k0S´27´(s0S´);
end;
end;
function TAdvancedPrinter.Convert (s : string) : string;
const
accent : string = ´ãàáäâèéëêìíïîõòóöôùúüûçÃÀÁÄÂÈÉËÊÌÍÏÎÕÒÓÖÔÙÚÜÛÇ´;
noaccent : string = ´aaaaaeeeeiiiiooooouuuucAAAAAEEEEIIIIOOOOOUUUUC´;
var
i : integer;
begin
for i := 1 to length(accent) do
While Pos(accent[i],s) > 0 do s[Pos(accent[i],s)] := noaccent[i];
result := s;
end;
constructor TAdvancedPrinter.Create;
begin
inherited Create;
fLang := lngESCP2;
fFontSize := pfs10cpi;
fTextStyle := [];
end;
procedure TAdvancedPrinter.OpenDoc (aTitle : String);
begin
inherited OpenDoc (aTitle);
Initialize;
end;
procedure TAdvancedPrinter.CR;
begin
SendData (13);
end;
procedure TAdvancedPrinter.LF;
begin
SendData (10);
end;
procedure TAdvancedPrinter.LF (Lines : integer);
begin
while lines > 0 do begin
SendData(10); dec(lines);
end;
end;
procedure TAdvancedPrinter.CRLF;
begin
SendData (#1310);
end;
procedure TAdvancedPrinter.FF;
begin
SendData(12);
end;
procedure TAdvancedPrinter.Write (txt : string);
begin
txt := Convert (txt);
SendData (txt);
end;
procedure TAdvancedPrinter.WriteLeft (txt, fill : string; size : integer);
begin
txt := Convert(txt);
while Length(txt) < size do txt := txt + fill;
SendData (Copy(txt,1,size));
end;
procedure TAdvancedPrinter.WriteRight (txt, fill : string; size : integer);
begin
txt := Convert(txt);
while Length(txt) < size do txt := fill + txt;
SendData (Copy(txt,Length(txt)-size+1,size));
end;
procedure TAdvancedPrinter.WriteCenter(txt, fill : string; size : integer);
begin
txt := Convert(txt);
while Length(txt) < size do txt := fill + txt + fill;
SendData (Copy(txt,(Length(txt)-size) div 2 + 1,size));
end;
procedure TAdvancedPrinter.WriteRepeat(txt : string; quant : integer);
var
s : string;
begin
s := ´´;
txt := Convert(txt);
while quant > 0 do begin
s := s + txt;
dec(quant);
end;
SendData (s);
end;
end.
Sanses
GOSTEI 0
Weber
28/04/2005
Tome cuidado, em supermercados e lojas as impressoras de ´rolinhos´ são ECF (Impressora Fiscal) e nesses você deve cumprimir leis estaduais e imprimir nessas impressões não é tão simples quanto parece, você deverá trabalhar com DLL´S dessas impressoras ou mesmo utilizar componentes de terceiros para isso.
Digo utilizar componentes de terceiros porque é muito trabalhoso criar sua propria rotina de impressão fiscal.
Digo utilizar componentes de terceiros porque é muito trabalhoso criar sua propria rotina de impressão fiscal.
GOSTEI 0
Sanses
28/04/2005
Olha e aqueles rolinho finos... aquelas impressoras matriciais pequenas..
matricial epson lx300
O amigo Weber tem razão, mas na lx300 vc pode usar essa unit tranquilamente, pois ela não tem valor fiscal. E se seu cliente tiver uma impressora ECF, as vezes ela também não é fiscal. Pode estar apenas sendo usada sem fins fiscais, o que também é perfeitamente possível de se fazer. E tem gente que prefere, pois quando voce coloca uma bobina de 80 mm numa lx300, é uma adaptação com um suporte, que as vezes leva o papel a intortar e imprimei fora, por isso muita gente prefere usar impressoras fiscais como não fiscal.
Sanses
GOSTEI 0
Weber
28/04/2005
...prefere usar impressoras fiscais como não fiscal...
Aqui no Estado do Paraná existe uma lei que proibe o uso de impressora não fiscais em estabelecimentos de comércio.
Toda venda emitida em loja e/ou supermercados se o mesmo for computadorizado deve ser emitido por meio de cupom fiscal ou nota fiscal.
GOSTEI 0
Madrick
28/04/2005
Só complementando, não existe ECF(Emissor de cupom fiscal) não fiscal, e sim impressoras não fiscal, e se o estabelecimento for usar operação TEF, vc terá que usar uma ECF, dai vc cai na criação de uma rotina para emissão de cupom fiscal, onde vc não tem que se preocupar com a quantidade de colunas e sim com os comandos enviados para a porta serial, tanto a daruma quanto a bematech tem otimas dll para implementação desta tarefa..
GOSTEI 0
Sanses
28/04/2005
Weber, desconheço esta lei para o meu estado. E o uso da impressora como fiscal só é feito a partir do momento que a receita registra a mesma. Um exemplo: aqui temos um shopping center e no estacionamento do mesmo tem impressoras bematech para emitir os cupons de entrada com placa e hora, etc. Este cupom NÂO É FISCAL.
Sanses
Sanses
GOSTEI 0
Gandalf.nho
28/04/2005
Vc pode usar geradores de relatórios como o QuickReport mesmo para trabalhar com essas impressoras não-fiscais. É como eu fiz no sistema que desenvolvi para a Biblioteca Pública aqui do município onde trabalho, que imprime os recibos numa Bematech não fiscal (inclusive usei o driver Genérico/Somente Texto para isso)
GOSTEI 0
Weber
28/04/2005
Sanses, uma impressora bematech não tem necessáriamente que ser fiscal pode ser apenas uma mini impressora.
Um estacionamento não é uma loja de venda, portando não tem que emitir cupom fiscal.
Em um supermercado ou loja o cupom fiscal é obrigatório pois foi a forma que o governo encontrou de impedir a sonegação fiscal já um estacionamento funciona mais ou menos como uma pestação de serviços e nesse caso o que vale são leis municipais.
Um estacionamento não é uma loja de venda, portando não tem que emitir cupom fiscal.
Em um supermercado ou loja o cupom fiscal é obrigatório pois foi a forma que o governo encontrou de impedir a sonegação fiscal já um estacionamento funciona mais ou menos como uma pestação de serviços e nesse caso o que vale são leis municipais.
GOSTEI 0
Anjinho Loiro
28/04/2005
Vc pode usar geradores de relatórios como o QuickReport mesmo para trabalhar com essas impressoras não-fiscais. É como eu fiz no sistema que desenvolvi para a Biblioteca Pública aqui do município onde trabalho, que imprime os recibos numa Bematech não fiscal (inclusive usei o driver Genérico/Somente Texto para isso)
***********************************************************
Driver genérico...??? Como é isso... Será que vc pode me ensinar...???
Desde já agradeço...
GOSTEI 0
Gandalf.nho
28/04/2005
[quote:769522c33b=´Anjinho loiro´]Driver genérico...??? Como é isso... Será que vc pode me ensinar...???[/quote:769522c33b]
Se vc olhar a lista de impressoras que já vem com o Windows, irá encontrar uma chamada de Genérica/Somente Texto que tecnicamente é compatível com qualquer impressora, mas só imprime em modo texto (tipo DOS, sem imagens). Para esse tipo de recibo funciona muito bem.
Se vc olhar a lista de impressoras que já vem com o Windows, irá encontrar uma chamada de Genérica/Somente Texto que tecnicamente é compatível com qualquer impressora, mas só imprime em modo texto (tipo DOS, sem imagens). Para esse tipo de recibo funciona muito bem.
GOSTEI 0
Vitor Rubio
28/04/2005
Estou começando agora nesse universo de impressoras fiscais e tenho algumas dúvidas:
Pelo que eu entendi, uma impressora dessas fiscais, tipo as da daruma ou bematech, também podem ser usadas como impressoras não-fiscais, caso o estabelecimento não precisar ou caso o estabelecimento precise de um relatorio ou nota ´fininha´. Mas a impressora passa a ser oficialmente um impressora fiscal no momento em que ela é homologada, registrada e lacrada pelo governo. Estou certo nessa afirmação ou estou enganado?
Outra dúvida, tenho um sistema na minha empresa desenvolvido com base na impressora Bematech, que faz chamadas à dll da impressora bematech. Só que agora, teremos de reescrever o mesmo programa pra trabalhar com a impressora Daruma. Alguém já fez isso antes? Gostaria de saber se é complicado ou se simplesmente substitui-se as funções, alguem tem um exemplo pra me passar, ou um comparativo entre as funções das duas impressoras?
Grato!
Pelo que eu entendi, uma impressora dessas fiscais, tipo as da daruma ou bematech, também podem ser usadas como impressoras não-fiscais, caso o estabelecimento não precisar ou caso o estabelecimento precise de um relatorio ou nota ´fininha´. Mas a impressora passa a ser oficialmente um impressora fiscal no momento em que ela é homologada, registrada e lacrada pelo governo. Estou certo nessa afirmação ou estou enganado?
Outra dúvida, tenho um sistema na minha empresa desenvolvido com base na impressora Bematech, que faz chamadas à dll da impressora bematech. Só que agora, teremos de reescrever o mesmo programa pra trabalhar com a impressora Daruma. Alguém já fez isso antes? Gostaria de saber se é complicado ou se simplesmente substitui-se as funções, alguem tem um exemplo pra me passar, ou um comparativo entre as funções das duas impressoras?
Grato!
GOSTEI 0
Aroldo Zanela
28/04/2005
[quote:8e6242a63b=´vitor^_^´]Estou começando agora nesse universo de impressoras fiscais e tenho algumas dúvidas:
Pelo que eu entendi, uma impressora dessas fiscais, tipo as da daruma ou bematech, também podem ser usadas como impressoras não-fiscais, caso o estabelecimento não precisar ou caso o estabelecimento precise de um relatorio ou nota ´fininha´. Mas a impressora passa a ser oficialmente um impressora fiscal no momento em que ela é homologada, registrada e lacrada pelo governo. Estou certo nessa afirmação ou estou enganado?
Outra dúvida, tenho um sistema na minha empresa desenvolvido com base na impressora Bematech, que faz chamadas à dll da impressora bematech. Só que agora, teremos de reescrever o mesmo programa pra trabalhar com a impressora Daruma. Alguém já fez isso antes? Gostaria de saber se é complicado ou se simplesmente substitui-se as funções, alguem tem um exemplo pra me passar, ou um comparativo entre as funções das duas impressoras?
Grato![/quote:8e6242a63b]
Colega,
Não se pode utilizar uma impressora ´não lacrada´, pois ela fica em modo treinamento e possui algumas limitações, bem como, não seria aceito pelo fisco local.
A migração de Bematech para Daruma é razoavelmente simples, pois até os nomes das funções são semelhantes. Entretanto, considerando o esforço, acho que vale a pena verificar o ACBr (link na assinatura) e o www.forumweb.com.br/foruns (Desenvolvimento -> Automação comercial), pois há uma forte presença dos principais players de automação comercial por lá.
Pelo que eu entendi, uma impressora dessas fiscais, tipo as da daruma ou bematech, também podem ser usadas como impressoras não-fiscais, caso o estabelecimento não precisar ou caso o estabelecimento precise de um relatorio ou nota ´fininha´. Mas a impressora passa a ser oficialmente um impressora fiscal no momento em que ela é homologada, registrada e lacrada pelo governo. Estou certo nessa afirmação ou estou enganado?
Outra dúvida, tenho um sistema na minha empresa desenvolvido com base na impressora Bematech, que faz chamadas à dll da impressora bematech. Só que agora, teremos de reescrever o mesmo programa pra trabalhar com a impressora Daruma. Alguém já fez isso antes? Gostaria de saber se é complicado ou se simplesmente substitui-se as funções, alguem tem um exemplo pra me passar, ou um comparativo entre as funções das duas impressoras?
Grato![/quote:8e6242a63b]
Colega,
Não se pode utilizar uma impressora ´não lacrada´, pois ela fica em modo treinamento e possui algumas limitações, bem como, não seria aceito pelo fisco local.
A migração de Bematech para Daruma é razoavelmente simples, pois até os nomes das funções são semelhantes. Entretanto, considerando o esforço, acho que vale a pena verificar o ACBr (link na assinatura) e o www.forumweb.com.br/foruns (Desenvolvimento -> Automação comercial), pois há uma forte presença dos principais players de automação comercial por lá.
GOSTEI 0
Vitor Rubio
28/04/2005
Então não se pode usar uma impressora fiscal como uma impressora normal?
Quanto a migração da bematech pra daruma, como tudo já funciona normalmente com a impressora da bematech, eu irei apenas fazer uma verificação num arquivo .ini que eu tenho no meu sistema, numa seção que dirá o tipo da impressora, definida por um utilitariozinho de configuração.
se eu verificar que a impressora bematech está instalada, chamo as funções da bematech, caso contrario, chamo os métodos do AcbrEcf.
Achei os componentes muito interessantes, gostaria de contribuir de alguma forma caso tivesse conhecimento técnico suficiente para tanto, por hora, contribuirei com testes.
Dúvida: no componente TacbrCalculadora, como eu faço pra imprimir o ´papelzinho´ da calculadora? pra usar igual aquelas calculadoras de mesa?
Grato!
Quanto a migração da bematech pra daruma, como tudo já funciona normalmente com a impressora da bematech, eu irei apenas fazer uma verificação num arquivo .ini que eu tenho no meu sistema, numa seção que dirá o tipo da impressora, definida por um utilitariozinho de configuração.
se eu verificar que a impressora bematech está instalada, chamo as funções da bematech, caso contrario, chamo os métodos do AcbrEcf.
Achei os componentes muito interessantes, gostaria de contribuir de alguma forma caso tivesse conhecimento técnico suficiente para tanto, por hora, contribuirei com testes.
Dúvida: no componente TacbrCalculadora, como eu faço pra imprimir o ´papelzinho´ da calculadora? pra usar igual aquelas calculadoras de mesa?
Grato!
GOSTEI 0
Weber
28/04/2005
[quote:c04680de74=´vitor^_^´]Então não se pode usar uma impressora fiscal como uma impressora normal?
[/quote:c04680de74]
Não, não pode.
[/quote:c04680de74]
Não, não pode.
GOSTEI 0
Dopi
28/04/2005
Ola Vitor,
[quote:12d13cd2ad=´vitor^_^´]Então não se pode usar uma impressora fiscal como uma impressora normal?[/quote:12d13cd2ad]
De forma alguma... ECF são parecidos com impressoras comuns, mas internamente são completamente diferentes, pois possuem um Software Básico que obedece a rigidas leis estabelecidas pelo Fisco... Em um ECF não é vc que controla o que será impresso e sim o Software Básico residente no ECF...
Legal que vc gostou do ACBr... Qualquer duvida, sugestão ou contribuição pode entrar em contato... atualmente eu estou atuando como moderador da [url=http://www.forumweb.com.br/foruns/index.php?&showforum=416]Area de Automação Comercial do ForumWeb[/url]
[quote:12d13cd2ad=´vitor^_^´]
Quanto a migração da bematech pra daruma, como tudo já funciona normalmente com a impressora da bematech, eu irei apenas fazer uma verificação num arquivo .ini que eu tenho no meu sistema, numa seção que dirá o tipo da impressora, definida por um utilitariozinho de configuração.
se eu verificar que a impressora bematech está instalada, chamo as funções da bematech, caso contrario, chamo os métodos do AcbrEcf.
[/quote:12d13cd2ad]
Acho que se vc for usar o ACBr para se comunicar com a Daruma vc pode usa-lo para se comunicar também com a Bematech... com a vantagem de já deixar o seu código compativel com todas as impressoras suportadas pelo ACBrECF (Bematech, Daruma, Schalter, Sweda, e todas as MECAFs (oem) )
Ou seja, usando o ACBrECF é só escolher o modelo e chamar o metodo aprópriado que deverá funcionar em todos os ECFs suportados... sem a necessidade de nenhuma DLL pois o ACBrECF usa a comunicação direta...
[quote:12d13cd2ad=´vitor^_^´]
Dúvida: no componente TacbrCalculadora, como eu faço pra imprimir o ´papelzinho´ da calculadora? pra usar igual aquelas calculadoras de mesa? [/quote:12d13cd2ad]
Humm... bem pensado... acho que não previ essa funcionabilidade ao componente Calculadora... poderiamos implementar um propriedade [b:12d13cd2ad]Porta[/b:12d13cd2ad] no componente e um método [b:12d13cd2ad]ImprimirBobina[/b:12d13cd2ad]... Anotado... vou tentar implementar na versão 0.8.2b
[quote:12d13cd2ad=´vitor^_^´]Então não se pode usar uma impressora fiscal como uma impressora normal?[/quote:12d13cd2ad]
De forma alguma... ECF são parecidos com impressoras comuns, mas internamente são completamente diferentes, pois possuem um Software Básico que obedece a rigidas leis estabelecidas pelo Fisco... Em um ECF não é vc que controla o que será impresso e sim o Software Básico residente no ECF...
Legal que vc gostou do ACBr... Qualquer duvida, sugestão ou contribuição pode entrar em contato... atualmente eu estou atuando como moderador da [url=http://www.forumweb.com.br/foruns/index.php?&showforum=416]Area de Automação Comercial do ForumWeb[/url]
[quote:12d13cd2ad=´vitor^_^´]
Quanto a migração da bematech pra daruma, como tudo já funciona normalmente com a impressora da bematech, eu irei apenas fazer uma verificação num arquivo .ini que eu tenho no meu sistema, numa seção que dirá o tipo da impressora, definida por um utilitariozinho de configuração.
se eu verificar que a impressora bematech está instalada, chamo as funções da bematech, caso contrario, chamo os métodos do AcbrEcf.
[/quote:12d13cd2ad]
Acho que se vc for usar o ACBr para se comunicar com a Daruma vc pode usa-lo para se comunicar também com a Bematech... com a vantagem de já deixar o seu código compativel com todas as impressoras suportadas pelo ACBrECF (Bematech, Daruma, Schalter, Sweda, e todas as MECAFs (oem) )
Ou seja, usando o ACBrECF é só escolher o modelo e chamar o metodo aprópriado que deverá funcionar em todos os ECFs suportados... sem a necessidade de nenhuma DLL pois o ACBrECF usa a comunicação direta...
[quote:12d13cd2ad=´vitor^_^´]
Dúvida: no componente TacbrCalculadora, como eu faço pra imprimir o ´papelzinho´ da calculadora? pra usar igual aquelas calculadoras de mesa? [/quote:12d13cd2ad]
Humm... bem pensado... acho que não previ essa funcionabilidade ao componente Calculadora... poderiamos implementar um propriedade [b:12d13cd2ad]Porta[/b:12d13cd2ad] no componente e um método [b:12d13cd2ad]ImprimirBobina[/b:12d13cd2ad]... Anotado... vou tentar implementar na versão 0.8.2b
GOSTEI 0
Marcosrocha
28/04/2005
Eu tenho uma .dll que controla uma impressora não-fiscal certo?
Eu estou deixando ela na pasta do aplicativo!! Mas e se eu quisesse compilar essa .dll juntamente com o meu projeto para não precisar usar??
Eu estou deixando ela na pasta do aplicativo!! Mas e se eu quisesse compilar essa .dll juntamente com o meu projeto para não precisar usar??
GOSTEI 0
Dopi
28/04/2005
Não dá... a não ser que o fabricante te envie um .OBJ
Voce poderia anexar a DLL ao EXE como se fosse um resource e extrai-lo na pasta do programa quando fosse necessário carrega-lo...
Essa técnica foi descrita pelo Nildo (aqui do Forum)... se não me engano esse artigo dele estava no site da ClubeDelphi
Voce poderia anexar a DLL ao EXE como se fosse um resource e extrai-lo na pasta do programa quando fosse necessário carrega-lo...
Essa técnica foi descrita pelo Nildo (aqui do Forum)... se não me engano esse artigo dele estava no site da ClubeDelphi
GOSTEI 0
Marcosrocha
28/04/2005
Vc sabe o link para o artigo???
GOSTEI 0
Dopi
28/04/2005
Andei procurando mas não achei... o link estava na assinatura do Nildo, mas ele mudou a assinatura... :-(
GOSTEI 0
Flacandido
28/04/2005
caro amigo Sanses, nao tem como vc postar ou me enviar um exemplo utilizando a unit que vc citou, meu e-mail é candido@powerline.com.br.
GOSTEI 0