Impressora Argox PPLA

Boa tarde senhores.

Estou tendo problemas coma impressora de etiquetas Argox, simplesmente ainda não consegui mandar nada para ela.
O modelo é Argox OS214 tt, aceita PPLA e PPLB.

Uso uma classe generica para conexao com dispositivos seriais, com ela eu usei para varias impressoras fiscais e balancas, segue em anexo. Tudo usando a biblioteca RXTX.
Essa classe tambem consegue ler a resposta do dispositivo, pois ja usei em balancas e nunca tive problemas, assim como nas impressoras fiscais.

Observei o manual da PPLA e vi mais ou menos como funciona mas nao consegui testar nada ainda.
Nao consigo fazer nada sair dela e tambem nao consigo ler sua resposta.

Segue o meu teste:

[code]import javax.swing.JOptionPane;
public class TestePPLA {
public static void main(String[] args){
String porta=“COM1”;
int velocidade=9600;
int databits=8;
int stopbits=1;
int paridade=0;
int timeout=10;
try
{
String comando = “L121100001000050THIS LABEL IS MADE BY JIMMYE”;
ComunicacaoSerial comunica = ComunicacaoSerial.getReference ();
comunica.conexao (porta,velocidade,databits,stopbits,paridade);
comunica.escritaPortaSerial (comando.getBytes());

		Thread.sleep(timeout);
		String resposta = new String (comunica.getDados());

		comunica.fechaConexao();				

		System.out.println(resposta);
	}
	catch(Exception ex)
	{
		ex.printStackTrace();
		JOptionPane.showMessageDialog(null, "Erro de comunica\u00e7\u00e3o com a impressora", "Testador", JOptionPane.ERROR_MESSAGE);
	}

}

}
[/code]

Opa cara tudo bem ?

Primeiro duvida, voce tem certeza que a impressora esta instalada corretamente? Ja fez ela imprimir pelo programa dela ?

Segunda, Qual o erro que esta dando ?

Essa impessora e chatinha.

Att,

Tudo ótimo cara,

Sim, a impressora esta corretamente conectada e nao ocorre erro nenhum.

Olhando nesse site http://www.barcodenet.com.br/download.asp#ImpressorasdeetiquetasArgox achei um manual em portugues, com isso eu pude ver que na verdade no lugar do eu devo colocar o caracter ASCII codigo 2, aquela carinha que aparece quando voce presiona alt+2 no windows. O eu ja desconfiava que era o carriage-return (nao sei exatamante se é assim que se escreve), era mesmo, o equivalente a \n. O ASCII dele é o 13. Então eu subsitui essas “tag” por um char com o codigo ASCII equivalente. Funcionou, só que funciona somente pela paralela (LPT), se for enviado pela serial (COM) a impressora nao faz nada. Agora eu tenho outra duvida, há alguma desvantagem em usar a paralela em vez da serial?

Obrigado Oliveira.

Bom dia.
Poderia me dar mais detalhes a respeito de como imprimir a etiqueta?

Na teoria eu montaria a String com o código dela o PPLB de acordo com o layout da etiqueta. A partir daí eu envio pela serial… usando a classe aí que você deixou como exemplo?

Basicamente é isso?

Poderia me dar uma força nisso, por favor?

Muito obrigado!

[quote=marcosfonceka]Bom dia.
Poderia me dar mais detalhes a respeito de como imprimir a etiqueta?

Na teoria eu montaria a String com o código dela o PPLB de acordo com o layout da etiqueta. A partir daí eu envio pela serial… usando a classe aí que você deixou como exemplo?

Basicamente é isso?

Poderia me dar uma força nisso, por favor?

Muito obrigado![/quote]

Marcos,

Não sei se é tarde para te responder, mas vou deixar registrado aqui, porque também tive dificuldade em conseguir chegar em algo concreto, a minha rotina não esta 100% ainda. Estou com problemas a acentuação, mas talvez seja um caminho pra te ajudar:

Rotina que converte meus caracteres com acento (essa é aparte que ainda não funciona direito:

[code]private static void converteCaracter(String linha, JTextArea jTextArea2) throws IOException {
jTextArea2.setText(null);

//Ç 128 × 158 + 188 + 218 ° 248
//ü 129 ? 159 ¢ 189 _ 219 ¨ 249
//é 130 á 160 ¥ 190 _ 220 · 250
//â 131 í 161 + 191 ¦ 221 ¹ 251
//ä 132 ó 162 + 192 Ì 222 ³ 252
//à 133 ú 163 - 193 _ 223 ² 253
//å 134 ñ 164 - 194 Ó 224 _ 254
//ç 135 Ñ 165 + 195 ß 225 255
//ê 136 ª 166 - 196 Ô 226
//ë 137 º 167 + 197 Ò 227
//è 138 ¿ 168 ã 198 õ 228
//ï 139 ® 169 Ã 199 Õ 229
//î 140 ¬ 170 + 200 µ 230
//ì 141 ½ 171 + 201 Þ 231
//Ä 142 ¼ 172 - 202 Þ 232
//Å 143 ¡ 173 - 203 Ú 233
//É 144 « 174 ¦ 204 Û 234
//æ 145 » 175 - 205 Ù 235
//Æ 146 _ 176 + 206 ý 236
//ô 147 _ 177 ¤ 207 Ý 237
//ö 148 _ 178 ð 208 ¯ 238
//ò 149 ¦ 179 Ð 209 ´ 239
//û 150 ¦ 180 Ê 210 ­ 240
//ù 151 Á 181 Ë 211 ± 241
//ÿ 152 Â 182 È 212 _ 242
//Ö 153 À 183 i 213 ¾ 243
//Ü 154 © 184 Í 214 ¶ 244
//ø 155 ¦ 185 Î 215 § 245
//£ 156 ¦ 186 Ï 216 ÷ 246
//Ø 157 + 187 + 217 ¸ 247}

    for (Character c : linha.toCharArray()) {
        switch (c) {
            case 'á':
                c = 160;
                break;
            case 'à':
                c = 133;
                break;
            case 'â':
                c = 131;
                break;
            case 'ã':
                c = 134;
                break;
            case 'é':
                c = 130;
                break;
            case 'è':
                c = 138;
                break;
            case 'ê':
                c = 136;
                break;
            case 'í':
                c = 161;
                break;
            case 'ì':
                c = 141;
                break;
            case 'î':
                c = 140;
                break;
            case 'ó':
                c = 162;
                break;
            case 'ò':
                c = 149;
                break;
            case 'õ':
                c = 235;
                break;
            case 'ô':
                c = 147;
                break;
            case 'ú':
                c = 163;
                break;
            case 'ù':
                c = 151;
                break;
            case 'û':
                c = 150;
                break;
            case 'Ã':
                c = 199;
                break;
            case 'À':
                c = 183;
                break;
            case 'Á':
                c = 181;
                break;
            case 'Â':
                c = 182;
                break;
            case 'É':
                c = 144;
                break;
            case 'È':
                c = 212;
                break;
            case 'Ê':
                c = 210;
                break;
            case 'Í':
                c = 214;
                break;
            case 'Ì':
                c = 222;
                break;
            case 'Î':
                c = 215;
                break;
            case 'Ó':
                c = 224;
                break;
            case 'Ò':
                c = 227;
                break;
            case 'Õ':
                c = 229;
                break;
            case 'Ô':
                c = 226;
                break;
            case 'Ú':
                c = 233;
                break;
            case 'Ù':
                c = 234;
                break;
            case 'Û':
                c = 235;
                break;
            case 'ç':
                c = 135;
                break;
            case 'Ç':
                c = 128;
                break;
            case 'º':
                c = 167;
                break;
        }
        jTextArea2.setText(jTextArea2.getText() + c);
    }
}[/code]

Rotina que procura a impressora e imprime o texto direto nela:

[code] private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {

            //l printer   
            PrintService printService = PrintServiceLookup.lookupDefaultPrintService();

            converteCaracter(jTextArea1.getText(), jTextArea2);

            //create a print job   
            DocPrintJob job = printService.createPrintJob();

            //define the format of print document   
            InputStream is = new ByteArrayInputStream(jTextArea2.getText().getBytes());
            DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

            //print the data   
            Doc doc = new SimpleDoc(is, flavor, null);
            job.print(doc, null);
            is.close();

    } catch (Exception e) {
        e.printStackTrace();

    }

} [/code]

Olá. Tenho uma dúvida com relação ao seu código:
nesse modelo de impressão direta, a Argox tem que estar instalada, certinho né?

Pessoal, alguém já usou pela USB?

Tem um exemplo de pegar pelo nome da argox?

Quando eu precisei utilizar a impressao, eu utilizei o driver instalado nela

Montei através do printJob como eu queria e em seguida solicitei a impressão…
assim não precisei me preocupar se esta em serial ou usb…

Certo! Mas ela aceita os comandos por este método?

Informar código de barras e tal…

ai no meu caso, eu precisei importar a fonte para o projeto… entao ele imprimiu exatamente da forma que eu desenhei a etiqueta

Estou testando com o PrintJob…

eu vejo que manda pra impressora pois dá uma piscada na luz ready e também no gerenciador da impressora…

Mas não imprimi… o que pode ser?

Fiz uma consulta no meu amigo google, e achei esse exemplo:

[code] import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;

public class JavaWorldPrintExample1 implements Printable {
public static void main(String[] args) {

JavaWorldPrintExample1 example1 = new JavaWorldPrintExample1();
System.exit(0);

}

//— Private instances declarations
private final double INCH = 72;

/**

  • Constructor: Example1

*/
public JavaWorldPrintExample1() {

//--- Create a printerJob object
PrinterJob printJob = PrinterJob.getPrinterJob();

//--- Set the printable class to this one since we
//--- are implementing the Printable interface
printJob.setPrintable(this);

//--- Show a print dialog to the user. If the user
//--- click the print button, then print otherwise
//--- cancel the print job
if (printJob.printDialog()) {
  try {
    printJob.print();
  } catch (Exception PrintException) {
    PrintException.printStackTrace();
  }
}

}

/**

  • Method: print
  • This class is responsible for rendering a page using the provided
  • parameters. The result will be a grid where each cell will be half an
  • inch by half an inch.
  • @param g
  •        a value of type Graphics
    
  • @param pageFormat
  •        a value of type PageFormat
    
  • @param page
  •        a value of type int
    
  • @return a value of type int
    */
    public int print(Graphics g, PageFormat pageFormat, int page) {
int i;
Graphics2D g2d;
Line2D.Double line = new Line2D.Double();

//--- Validate the page number, we only print the first page
if (page == 0) {  //--- Create a graphic2D object a set the default parameters
  g2d = (Graphics2D) g;
  g2d.setColor(Color.black);

  //--- Translate the origin to be (0,0)
  g2d.translate(pageFormat.getImageableX(), pageFormat
      .getImageableY());

  //--- Print the vertical lines
  for (i = 0; i < pageFormat.getWidth(); i += INCH / 2) {
    line.setLine(i, 0, i, pageFormat.getHeight());
    g2d.draw(line);
  }

  //--- Print the horizontal lines
  for (i = 0; i < pageFormat.getHeight(); i += INCH / 2) {
    line.setLine(0, i, pageFormat.getWidth(), i);
    g2d.draw(line);
  }

  return (PAGE_EXISTS);
} else
  return (NO_SUCH_PAGE);

}

} //Example1
[/code]

verifica se vai imprimir alguma coisa

Tenho um codigo parecido com esse e pelo menos sai algo… so nao sei como fazer pra utilizar os comandos:

c0050LD11130000000200020COUNT :130000000200100123-01^02Q0003E

altere os por “\u0002”
os por “\r”
e os E por “\u0045”

Vlw pelo retorno Dr.

Com muita pesquisa consegui achar esses códigos, mas era isso mesmo!

Abraço,