Imprimir pela porta paralela

8 respostas
D

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.

8 Respostas

R

[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]

D

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”.

R

[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]

D

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.

R

[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]

K

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

D

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.

D

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&#123;

    public static void main&#40;String&#91;&#93; args&#41;&#123;

        StringBuffer s = new StringBuffer&#40;"6F"&#41;;

        String sHexToString = new String&#40;""&#41;;

        for&#40;int i = 0; i &lt; s.length&#40;&#41;; i += 2&#41;&#123;
           String sTemp = s.substring&#40;i, i + 2&#41;;
          
           sHexToString += new Character&#40;&#40;char&#41;&#40;Integer.valueOf&#40;sTemp,16&#41;.intValue&#40;&#41;&#41;&#41;.toString&#40;&#41;;
           
        &#125;

        System.out.println&#40;sHexToString&#41;;
    &#125;
&#125;

Agradeço se alguém puder me ajudar.

Criado 31 de agosto de 2004
Ultima resposta 2 de set. de 2004
Respostas 8
Participantes 3