Preciso fazer a impressão do QRCode em uma Daruma DR700 utilizando comunicação direta
achei este tutorial em Delphi:
http://www.desenvolvedoresdaruma.com.br/sddn/ebits/ddc_ebits_13.html
Precisa-se achar os bytes menos e mais significativo, em Delphi é assim:
iQtdBytes := Length(qrCode);
bMenos := iQtdBytes shr 8;
bMais := iQtdBytes AND 255 + 2;
Em java estou fazendo assim, não sei se está certo:
int iQtdBytes = qrCodeString.length();
int bMenos = iQtdBytes >> 8;
int bMais = iQtdBytes & 255 + 2;
Meu método completo:
public String gerarQrCode(String qrCodeString, int larguraModulo) {
int iQtdBytes = qrCodeString.length();
int bMenos = iQtdBytes >> 8;
int bMais = iQtdBytes & 255 + 2;
int largura = larguraModulo == 0 ? 5 : max(min(larguraModulo, 7), 3);
byte[] qrCode = {(byte) 27,
(byte) 129,
(byte) bMais,
(byte) bMenos,
(byte) largura,
(byte) 77}; // M
return new String(qrCode) + qrCodeString;
}
private int min(int num1, int num2) {
if (num1 < num2) {
return num1;
} else {
return num2;
}
}
private int max(int num1, int num2) {
if (num1 > num2) {
return num1;
} else {
return num2;
}
}
Este método ao invés de imprimir o desenho do QRCode, está imprimindo a String do QRCode…
Não é problema com a impressora, pois usando a DLL da Daruma o QRCode é impresso.
Também não é problema na comunicação direta, pois consigo imprimir negrito, expandido, código de barras.Só o QRCode que não está dando certo.
Alguém já fez isso em java para dar uma ajuda?