Ajuda para comunicar Arduino com Impressora Termica ZEBRA

Olá, bom dia a todos.

Estou precisando desenvolver um projeto, onde pego a entrada de um sinal e com isso devo imprimir de maneira automática direto do Arduino em uma impressora termica Zebra, através da porta Serial da impressora.

Sei que a Zebra possui uma linguagem de programação própria, mas não consigo nem abrir a comunicação com ela.

Alguém já desenvolveu algo parecido?

Agradeço desde já.

Em uma rápida googlada, descobri que ela trabalha com três linguagens:
ZPL programming: ^SC command
EPL programming: Y command
Set Get Do (SGD) programming: comm.type

Lago:
Em uma rápida googlada, descobri que ela trabalha com três linguagens:
ZPL programming: ^SC command
EPL programming: Y command
Set Get Do (SGD) programming: comm.type

http://en.wikipedia.org/wiki/Zebra_(programming_language)

Olá Lasgo, blz?

Então, isso eu vi também, o que eu gostaria de entender é como devo passar o comando para impressora, estou tentando usar a biblioteca SoftwareSerial e ligando os pinos TX e RX da impressora no Arduino, só estou fazendo isso, não sei se preciso ligar mais alguma coisa e também não tenho idéia como envio isso para impressora, exemplo:

^XA^LH30,30
^FO20,10^ADN,90,50^AD^FDWikipedia^FS
^XZ

Abraço.

Viu esse?
http://tronixstuff.com/2011/07/08/tutorial-arduino-and-a-thermal-printer/

Vi sim Lago, mas acredito que esse impressora foi desenvolvida especialmente para funcionar com o Arduino, os exemplos passam direitinho para o Arduino, porem a ZEBRA nem se mexe, talvez seja a questão da conexão dela direto com o Arduino...

Abraço.

Tem esse projeto:

Sugiro criar um arquivo .zpl bem simples, ver byte a byte o que ele envia pra impressora, comparado com a documentação da linguagem.

Lago, qual o programa que vc usou atrás para ver parte por parte o que é enviado?

Obrigado.

http://frhed.sourceforge.net/en/

Usando o exemplo da impressora da outra impressora, insira os caracteres corretos na sequencia:

/*
 Example 38.1 - Sparkfun Thermal Printer Test (COM-10438)
 http://tronixstuff.com/tutorials > chapter 38
 Based on code by Nathan Seidle of Spark Fun Electronics 2011
*/
#include <SoftwareSerial.h>
SoftwareSerial Thermal(2, 3);
int heatTime = 80;
int heatInterval = 255;
char printDensity = 15; 
char printBreakTime = 15;
void setup() 
{
 Serial.begin(57600); // for debug info to serial monitor
 Thermal.begin(19200); // to write to our new printer
 initPrinter();
}
void initPrinter()
{
 //Modify the print speed and heat
 Thermal.write(27); ---------------------------------------> daqui
 Thermal.write(55);
 Thermal.write(7); //Default 64 dots = 8*('7'+1)
 Thermal.write(heatTime); //Default 80 or 800us
 Thermal.write(heatInterval); //Default 2 or 20us
 //Modify the print density and timeout
 Thermal.write(18);
 Thermal.write(35); ---------------------------------------> até aqui
 int printSetting = (printDensity<<4) | printBreakTime;
 Thermal.write(printSetting); //Combination of printDensity and printBreakTime
 Serial.println();
 Serial.println("Printer ready"); 
}
void loop()
{
 Thermal.println(" Visit http://tronixstuff.com ");
 Thermal.write(10); //Sends the LF to the printer, advances the paper
 Thermal.print(" Millis = ");
 Thermal.println(millis()); 
 Thermal.write(10);
 Thermal.write(10); 
 do { } while (1>0);
}

Olá, vc conseguiu se comunicar com a zebra?

Boa tarde a todos, não sei se posso fazer esta pergunta aqui, mas alguem conseguiu comunicar com a impressora zebra? Estou tentando enviar a string para a impressora mas sem sucesso.

Tens de começar por algum lado. Googlando obtive:
Zebra linguagem de programação

Prezado, alkuentrus bom dia

Eu já trabalho com a zebra mas com uso de CLP e não tenho problemas quando utilizo um CLP, mas não consigo nada utilizando o arduino, acredito que deva ser algo com a serial e por este motivo peço auxilio a vcs caso tiveram alguma experiência com comunicação arduino x zebra.

Segue meu código para analise.

#include <SPI.h>

void setup()
{
Serial.begin(9600);
}

void loop()
{
if (Serial.available() > 0)
{
char c = Serial.read();
if (c == ‘a’) {
Serial.print("^XA");
Serial.print("^MMT");
Serial.print("^PW280");
Serial.print("^LL0120");
Serial.print("^LS0");
Serial.print("^FT189,45^A0I,28,28^FH^FDTESTE^FS");
Serial.print("^PQ1,0,1,Y^XZ");
delay(1000);
}
}
}