Estou tentando imprimir em uma impressora portátil Zebra QL320 Plus, porém não está funcionando.
Estou gerando o script da impressão através do programa Label Vista, que parece que é compatível com a linguagem CPCL, algo
que ela entende.
Pego esse script, coloco em uma string e envio via bluetooth.
Código:
public void Imprimir(){
String printerURL = "btspp://00037A4F4771:1";
String s;
s = "! 0 200 200 240 1" + "\n";
s = s.concat("LABEL" + "\n");
s = s.concat("CONTRAST 0" + "\n");
s = s.concat("TONE 0" + "\n");
s = s.concat("SPEED 3" + "\n");
s = s.concat("PAGE-WIDTH 380" + "\n");
s = s.concat("BAR-SENSE" + "\n");
s = s.concat(";// PAGE 0000000003800240" + "\n");
s = s.concat("T 0 0 93 46 Contrato de Locação" + "\n");
s = s.concat("FORM" + "\n");
s = s.concat("PRINT" + "\n");
try {
StreamConnection printerConnection = (StreamConnection) Connector.open(printerURL, Connector.WRITE);
OutputStreamWriter writer = new OutputStreamWriter(printerConnection.openOutputStream());
writer.write(s);
writer.close();
printerConnection.close();
midlet.getLista().append("Enviou a impressão", null);
} catch (IOException e) {
e.printStackTrace();
midlet.getLista().append("Ocorreu um erro:" + e.getMessage(), null);
}
}
Já fiz teste, enviando a impressão do Label Vista, através da conexão USB, e a mesma imprime.
Porém através da código acima, não acontece nada.
Alguém poderia me dar uma dica, ou me dizer porquê não está funcionando?
Ao pesquisar através do startInquiry, estou obtendo o device.
Na primeira vez foi necessário parear os dois dispositivos.
Tendo que digitar no meu blackberry o mesmo código setado em PIN nas configurações Bluetooth da impressora, definindo no LabelVista Authentication como SETPIN.
E estou obtendo(listando) o serviço do device através:
que me retornou : btspp://00037A4F4771:1;autheticate=false;encrypt=false;master=false
Com isso posso entender que ele está respondendo, certo Ricoldi?
Porém, nada acontece.
Sim, é a primeira vez que estou montando algo pra trabalhar com bluetooth.
Baixei o exemplo citado, bem bacana o exemplo.
Alterei o meu código para usar DataOutputStream conforme o exemplo.
Meu código ficou assim:
public void Imprimir(){
String bluetoothURL = "btspp://00037A4F4771:1;authenticate=true;encrypt=false;master=false";
String s;
s = "! 0 200 200 210 1" + "\r\n";
s = s.concat("TEXT 4 0 30 40 Hello World" + "\r\n");
s = s.concat("FORM" + "\r\n");
s = s.concat("PRINT" + "\r\n");
try {
StreamConnection con = (StreamConnection) Connector.open(bluetoothURL);
DataOutputStream output = con.openDataOutputStream();
output.writeUTF(s);
output.flush();
output.close();
con.close();
midlet.getLista().append("Enviou a impressão", null);
} catch (IOException e) {
e.printStackTrace();
midlet.getLista().append("Ocorreu um erro:" + e.getMessage(), null);
}
}
Porém ainda não imprimiu.
Quando estou transferido os dados através do código acima, o indicador de conexão bluetooth e o de transferência de dados são exibidos no visor da impressora.
O código que estou enviando gerei da seguinte forma. Criei no LabelVista e salvei o arquivo LBL.
Em seguida abri o arquivo no notepad e copiei o código.
A única coisa que acrescentei na string foram os “\r\n” para as quebras de linhas.
Copiando o conteúdo do arquivo LBL e enviando via String, esta seria a forma adequada para impressora imprimir?