Pessoal, estou tendo muita dificuldade em comunicação via porta paralela em java. Ocorre o seguinte eu tenho uma impressora de etiquetas da marca Argox, e preciso enviar dados via porta paralela para ela. Eu tenho um programinha que manda através de java 2d uma string para a impressora. Este programinha abre a tela de impressão e envia a string. Acontece que eu estou utilizando o manual da impressora e tentando enviar uma string em decimal para a impressora que imprime um código de barras e alguns caracteres, só que com este programa que tenho, a string sai bem diferente na impressora. Gostaria de ver com vocês se alguém teria algum exemplo de programa que utiliza a porta paralela para enviar algo para a impressora. Agradeço se puderem me dar uma ajuda.
Imprimir pela porta paralela
8 Respostas
[color=“darkblue”]
Olá! Bem vindo ao Portal Java!
Olha, eu não tenho a minima idéia de como isso funciona!
Mas tô percebendo uma coisa!!
Será que ela não está conseguindo se comunicar com a tabela de caracteres de seu SO??
Muito estranho isso!
Procure ver também os códigos da tabela ASCII, isso deve te ajudar!
Espero ter te ajudado!!
[]'s[/color]
Valeu a dica riqueneil, mas acontece que eu estou utilizando a tabela ASCII para verificar o que estou digitando no programa. Agradeço se alguém tiver um exemplo de programa que envie uma string ou uma imagem para a impressora via porta paralela “LPT1”.
[color=“darkblue”]Vc está gerando um arquivo??
Se estiver então redirecione ele para a saída da impressora normalmente, se estiver usando rWindows o comando é: arquivo > LPT1
Caso esteja usando Linux é: arquivo > LP0
Lembre-se que tem fazer isso no Shell.
OK??
[]'s[/color]
Não riqueneil, o que estou enviando para a impressora é uma string. Segue o código do programinha:
package Impressora_Atual;
import java.awt.*;
public class Imprime_PPLA {
public Imprime_PPLA() {
super();
}
public static void main(String[] args) {
Frame f = new Frame();
f.pack();
String frame_="";
StringBuffer cabecalho = new StringBuffer("31333030303030303131303030303042415220434F4445204F203A0D");
String cabecalhoHexToString = new String("");
for(int i = 0; i < cabecalho.length(); i += 2){
String cabecalhoTemp = cabecalho.substring(i, i + 2);
cabecalhoHexToString += new Character((char)(Integer.valueOf(cabecalhoTemp,16).intValue())).toString();
frame_=cabecalhoHexToString;
}
StringBuffer frase = new StringBuffer("313330303030303030393030303030434F44452039330D");
String fraseHexToString = new String("");
for(int i = 0; i < frase.length(); i += 2){
String fraseTemp = frase.substring(i, i + 2);
fraseHexToString += new Character((char)(Integer.valueOf(fraseTemp,16).intValue())).toString();
frame_=fraseHexToString;
}
StringBuffer frase1 = new StringBuffer("3130303030303030383030313230434F4445203933204F4B0D");
String frase1HexToString = new String("");
for(int i = 0; i < frase1.length(); i += 2){
String frase1Temp = frase1.substring(i, i + 2);
frase1HexToString += new Character((char)(Integer.valueOf(frase1Temp,16).intValue())).toString();
frame_=frase1HexToString;
}
String frase_completa = cabecalhoHexToString + fraseHexToString + frase1HexToString;
System.out.println(frase_completa);
Toolkit tk = f.getToolkit();
PrintJob pj = tk.getPrintJob(f, "print1", null);
if (pj!=null) {
Graphics g = pj.getGraphics();
g.drawString(frase_completa,0,25);
g.dispose();
pj.end();
f.dispose();
}
}
}
A String que tento enviar para a impressora é a seguinte:
130000001100000BAR CODE O :<CR>
130000000900000CODE 93<CR>
1O0000000800120CODE 93 OK<CR>
No programa estou enviando os caracteres hexa para que o programa os transforme em caracter e os envie para a impressora. Além de não estar imprimindo o que deveria, está imprimindo do meio para a esquerda do papel. Agradeço se alguém tiver uma dica.
[color=“darkblue”]Olá!
Estou vendo q vc está com um problemão!
Infelizmente eu não conheço nada que possa te ajudar, mas… qnd vc está enviando caracteres hexa será que vc está fazendo a conversão certa??
Acho que nesse caso vc tem que fazer um método que converta a string em hexa para depois apenas mandar a conversão.
Vou tentar fazer algo do tipo por aqui e se conseguir eu te mando!
[]'s[/color]
Já tentou usar a API de comunicação com a porta paralela (java communication) vc pode achar exemplos no site da sun www.sun.com
Valeu pela ajuda pessoal (riqueneil e kestering). Kestering, eu já tentei utilizar os exemplos da API de comunicação da SUN, inclusive eu tenho um exemplo de comunicação via porta serial, ocorre que a minha dificuldade está sendo com a porta paralela, tentei converter o programa que tenho mas estou tendo muita dificuldade, não encontro exemplos da utilização da comunicação via porta paralela que mostrem como aplicar o que preciso desenvolver. Agradeço se alguem tiver um exemplo de utilização da comunicação via porta paralela.
Pessoal eu já consegui fazer a comunicação com a impressora e estou conseguindo imprimir dados na mesma. Ocorre que para isto estou tendo de enviar dados com valores em hexadecimal para a mesma e para digitar uma String eu primeiro preciso procurar os valores em uma tabela de conversão e digitá-los em hexa no programa. Gostaria de ver se alguém teria uma função que converte de string para hexadecimal. Consegui um programinha que faz justamente o contrário, ou seja converte de hexa para string, tentei adaptá-lo mas não obtive sucesso. Segue o programinha:
public class HexToString{
public static void main(String[] args){
StringBuffer s = new StringBuffer("6F");
String sHexToString = new String("");
for(int i = 0; i < s.length(); i += 2){
String sTemp = s.substring(i, i + 2);
sHexToString += new Character((char)(Integer.valueOf(sTemp,16).intValue())).toString();
}
System.out.println(sHexToString);
}
}
Agradeço se alguém puder me ajudar.