Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3058 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado (editado)

Estou tentando imprimir QRCode por comunicação direta em uma Daruma DR700, mas não estou obtendo sucesso.

Estou utilizando java, fiz assim:


 

String s = "StringParaImpressaoQRCode";

int iQtdBytes = s.length();
int bMenos = iQtdBytes >> 8;
int bMais = (iQtdBytes & 255) + 2

byte[] qrCode = {(byte) 27,
    (byte) 129,
    (byte) bMais,
    (byte) bMenos,
    (byte) 0, // largura modulo
    (byte) 0}; //nivel correcao

String qrCodeFinal = new String(qrCode) + s;

Mas é impresso a String do QRCode e não a imagem dele.

Não é problema com a impressora, pois pela DLL da daruma o QRCode imprime normalmente.

Também não é problema a forma que faço a comunicação direta, pois consigo imprimir negrito, expandido, código de barras...

Por exemplo, código de barras imprimo assim pela comunicação direta, e sai perfeitamente:
 

String s = "StringParaCodBarra";

int largura = 3;
int altura = 70;
int mostrarCod = 0;

byte[] codBarra = {27,
    98,
    5,
    (byte) largura,
    (byte) altura,
    (byte) mostrarCod};

byte[] fimCodBarra = {00};

String stringCodBarra = new String(codBarra) + s + new String(fimCodBarra);

O que estou fazendo de errado na impressão do QRCode?

 

Editado por Rodrigo1895
  • Fundadores
Postado

Veja como foi feito em Pascal... pode lhe ajudar em uma tradução para Java

https://svn.code.sf.net/p/acbr/code/trunk2/Fontes/ACBrSerial/ACBrEscDaruma.pas

procure por: "function TACBrEscDaruma.ComandoQrCode"

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado (editado)

Daniel Simoes e Juliomar Marchetti

Já olhei este exemplo e um em C# também.

Fiz assim em java:
 

String s = "StringdoQRCode";

int iQtdBytes = s.length();
int bMenos = iQtdBytes >> 8;
int bMais = (iQtdBytes & 255) + 2;

try {
   FileWriter out = new FileWriter("COM3");
   out.write(27); //0x1B
   out.write(129); //0x81
   out.write(bMais);
   out.write(bMenos);
   out.write(5); //0x005
   out.write(0); //0x000
   out.write(s);
    out.close();
} catch (IOException e) {
   e.printStackTrace();
}

// Tentei assim também:

try {
   FileWriter out = new FileWriter("COM3");
   out.write(0x1B);
   out.write(0x81);
   out.write(bMais);
   out.write(bMenos);
   out.write(0x005);
   out.write(0x000);
   out.write(s);
    out.close();
} catch (IOException e) {
   e.printStackTrace();
}

// E assim:

char[] qrCode = {27,
         (char) 129,
         (char) bMais,
         (char) bMenos,
         (char) 5,
         (char) 0};

String qrCodeFinal = new String(qrCode) + s 

Mas o QRCode não é impresso, o que sai impresso é a String do QRCode.

Pela DLL o QRCode funciona, então não é problema na impressora.

E pela comunicação direta consigo imprimir negrito, expandido, código de barras, etc. Só QRCode que não deu certo.

Entrei em contato com o suporte da Daruma.

Disseram que eles só tem exemplo em Delphi e C#, não conseguiram me ajudar.

 

 

Editado por Rodrigo1895
Postado
16 minutos atrás, Daniel Simoes disse:

tente declarar os tipos como "byte" e não "int"

Tentei fazer assim:
 

byte iQtdBytes = (byte) qrCodeString.length();
byte bMenos = (byte) (iQtdBytes >> 8);
byte bMais = (byte) ((iQtdBytes & 255) + 2);

byte[] qrCode = {27,
   (byte) 129,
   (byte) bMais,
   (byte) bMenos,
   (byte) 5,
   (byte) 0};

return new String(qrCode) + qrCodeString;

 

Mas não deu...

Postado
1 hora atrás, Daniel Simoes disse:

Rode o demo em Pascal, e veja no Log os  bytes enviados... compare com o resultado dos  seus fontes...

Nunca trabalhei com Pascal... Não sei como posso fazer isso com Pascal, mas vou tentar aqui.

Obrigado!

  • Este tópico foi criado há 3058 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

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

Criar uma conta

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

Crie uma nova conta

Entrar

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

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

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

The popup will be closed in 10 segundos...