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.
tem uma API da Sun para trabalhar com porta paralela, chamada JCOMM
procura lah no site… :roll:
microfilo, 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.
Olá
Douglas, dê uma olhada na minha resposta sobre identação de código em http://www.guj.com.br/forum/viewtopic.php?t=15406
[]s
Luca
Desculpem, mas acontece que quando percebi meu erro, eu já havia enviado para o fórum e aí não tem jeito, não tem como arumar. :oops:
Olá
Há um botão Edit acima à direita.
[]s
Luca
[quote=“DouglasCar”]…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. …
Agradeço se alguém puder me ajudar…[/quote]
A função Integer.toHexString converte um inteiro para uma string em hexadecimal MINÚSCULO. Se o inteiro estiver entre 0 e 0xF, ela volta só um caracter.
A dica é:
- Pegar cada caracter
- Converter para byte (no seu caso em particular acho melhor que usar o String.getBytes())
- O byte (que é um inteiro de -128 a +127) deve ser convertido para um inteiro de 0 a 255 (dica: fazer um “&” com o valor 0xFF)
- Somar 0x100 a esse byte, para que tenhamos valores de 0x100 a 0x1FF (para que toHexString volte uma string de “100” a “1ff”, preservando os zeros à direita)
- Pegar o retorno e converter para maiúscula, e tirar o “1” que ficou à esquerda, como resultado teremos uma string de “00” a “FF”.
Exemplo (você tem de modificar isto…):
String s = "ABC";
int i = 0;
char c = s.charAt(i);
String hex = Integer.toHexString((c & 0xFF) | 0x100).substring(1,3).toUpperCase();
hex contém o valor hexa do caracter A (que é “41”.
Valeu pessoal, mas para funcionar eu utilizei o código:
primeira_string = JOptionPane.showInputDialog( "Digite o Codigo de Barras" );
StringBuffer meio_string = new StringBuffer(primeira_string);
for (int i = 0; i < primeira_string.length(); i++) {
char ch = primeira_string.charAt(i);
if (ch < 0x10)
meio_string.append(Integer.toHexString(ch & 0xFF));
}
Abraço!