Impressora de cheque Chronos - Solucionado

7 respostas
H

Pessoal,

estou implementando um programa para, através de meu sistema web
imprimir cheques utilizando uma impressora própria (CHECK-PRONT) da Chronos.
Meu programa está pronto, mas a impressora não reconhece os dados.
A impressora está configurada como GENERIC TEXT. Abaixo está meu código.
Gostaria de saber se alguém pode me ajudar, pois o suporte da fábrica
é nota zero.

String portaImpressora = "COM1";
			
			// Abre a impressora
			try {
				File f = new File(portaImpressora);
				PrintWriter ps = new PrintWriter(f);
				// --
				char cAux = 27;
				String chr27 = Character.toString(cAux);
				chr27 = "\u001B";
				cAux = 10;
				String chr10 = Character.toString(cAux);
				cAux = 64;
				String chr64 = Character.toString(cAux);
				cAux = 161;
				String chr161 = Character.toString(cAux);
				cAux = 162;
				String chr162 = Character.toString(cAux);
				cAux = 163;
				String chr163 = Character.toString(cAux);
				cAux = 164;
				String chr164 = Character.toString(cAux);
				cAux = 176;
				String chr176 = Character.toString(cAux);
				cAux = 160;
				String chr160 = Character.toString(cAux);
				
				StringBuffer sb = new StringBuffer();
				// --
				sb.append("\n\r\f"); // ???       tá no programa em perl
				sb.append(chr27+chr160);
				sb.append("MARIA BRAGANCA");
				sb.append(chr10);
				sb.append(chr27+chr161);
				sb.append("CONTAGEM");
				sb.append(chr10);
				sb.append(chr27+chr162);
				sb.append("001");
				sb.append(chr10);
				sb.append(chr27+chr163);
				sb.append("125.25");
				sb.append(chr10);
				sb.append(chr27+chr164);
				sb.append("02/05/2011");
				sb.append(chr10);
				sb.append(chr27+chr176);
				// --
				ps.print(sb);
				ps.flush();
				// --
					
				// Fecha a impressora
				try {
					ps.close();
					//f.close();
					
				} catch (Exception e) {
					System.out.println(e.getMessage());
				}
				
				JOptionPane.showMessageDialog(null, "Cheque impresso!"+sb);
			
			} catch (Exception ex) {
				System.out.println(ex.getMessage());
			}

7 Respostas

L

O que você quer dizer com “a impressora não reconhece os dados”?
Dá algum erro? Não imprime nada? Imprime errado?

H

a cabeça de impressao funciona, parece que está imprimindo o
cheque mas não imprime nada.
não dá mensagem de erro.

K

Jovem,

Dispositivo de atomação comercial realmente é um pesadelo, já me deparei com um problema semelhante e para resolução do problema desenvolvi um software utilizando linguagem C.

Abs,

L

Desculpe mas também não consigo ajudá-lo.

Mas não custa nada falar do óbvio:

  • Tinta da impressora
  • Testar em outra impressora
  • Tentar imprimir algo extremamente básico como “teste”

Boa sorte!

H

Imprime qualquer coisa no modo texto, mas quando
eu mando os dados com os caracteres obrigatórios,
a impressora parece que entende os dados mas
não os imprime.

Obrigado de qualquer forma.
Valeu.

L

Talvez não esteja suportando o encoding que você está usando.
O construtor PrintWriter(File file) usa o encoding padrão do sistema.

Tente com outro, e procure isolar o caracter que você não está conseguindo imprimir para auxiliar na solução do problema.

Veja mais em: http://download.oracle.com/javase/1.5.0/docs/api/java/io/PrintWriter.html#PrintWriter(java.io.File,%20java.lang.String)
E http://download.oracle.com/javase/1.5.0/docs/api/java/nio/charset/Charset.html

H

Pessoal,

solucionado o topico.

Nem todos os caracteres necessários estavam sendo enviados à impressora.
Muito obrigado pela colaboração.

Abaixo, listo o codigo correto.
Valeu.

String portaImpressora = "com1";
			
			// Abre a impressora
			try {
				File f = new File(portaImpressora);
				PrintWriter ps = new PrintWriter(f);
				// --
				
				char cAux = 27;
				String chr27 = Character.toString(cAux);
				cAux = 10;
				String chr10 = Character.toString(cAux);
				cAux = 13;
				String chr13 = Character.toString(cAux);
				cAux = 64;
				String chr64 = Character.toString(cAux);
				cAux = 161;
				String chr161 = Character.toString(cAux);
				cAux = 162;
				String chr162 = Character.toString(cAux);
				cAux = 163;
				String chr163 = Character.toString(cAux);
				cAux = 164;
				String chr164 = Character.toString(cAux);
				cAux = 176;
				String chr176 = Character.toString(cAux);
				cAux = 160;
				String chr160 = Character.toString(cAux);
				cAux = 12;
				String chr12 = Character.toString(cAux);
				
				StringBuffer sb = new StringBuffer();
				// --
				favorecido = "MARIA BRAGANCA";
				cidade = "CONTAGEM";
				banco = "001";
				valor = "125.25";
				data = "12/05/11";
				
				ps.write(chr27);
				ps.write(chr160);
				ps.write(favorecido);
			    ps.write(chr13);
				ps.write(chr10);
				ps.write(chr27);
				ps.write(chr161);
				ps.write(cidade);
				ps.write(chr13);
				ps.write(chr10);
				ps.write(chr27);
				ps.write(chr162);
				ps.write(banco);
				ps.write(chr13);
				ps.write(chr10);
				ps.write(chr27);
				ps.write(chr163);
				ps.write(valor);
				ps.write(chr13);
				ps.write(chr10);
				ps.write(chr27);
				ps.write(chr164);
				ps.write(data);
				ps.write(chr13);
				ps.write(chr10);
				ps.write(chr27);
				ps.write(chr176);
				ps.write(chr13);
				ps.write(chr10);
				//ps.flush();
				
				// --
				//String texto = sb.toString();
				//ps.write(texto);
				// --
					
				// Fecha a impressora
				try {
					ps.close();
					
				} catch (Exception e) {
					System.out.println(e.getMessage());
				}
				
				//JOptionPane.showMessageDialog(null, "Cheque impresso!"+sb);
			
			} catch (Exception ex) {
				System.out.println(ex.getMessage());
			}
Criado 3 de maio de 2011
Ultima resposta 4 de mai. de 2011
Respostas 7
Participantes 3