Thermal printer: problems when printing 180 degrees

Hi community,

I want to print from a QR203 printer with EM205 board. The normal printing works quite well, but printing upside down produces not the correct result. It looks more like the text is mirrored instead of turned, please see picture.

I am using the simple code below to check the behaviour, and have tried it with the Adafruit_Thermal library as well, with the same result. Here's my code, any idea what to change? FYI, the printer has TTL, RS232, and USB input pins. I am using TTL.

Thanks a lot!

#include <SoftwareSerial.h>
SoftwareSerial Thermal(99, 16);
int heatTime = 150;
int heatInterval = 255;
char printDensity = 15;
char printBreakTime = 15;

void setup(){
  Serial.begin(115200); // for debug info to serial monitor
  Thermal.begin(9600); // to write to our new printer
  Serial.println("Printer started");
  delay(2000);
  initPrinter();
  Thermal.println();
  Thermal.println("This is normal text");
  Thermal.write(27);
  Thermal.write(123);
  Thermal.write(1);
  Thermal.println("This is text upside down");
  Thermal.println();
  Thermal.println();
  Thermal.println();
}

void initPrinter(){
  //Modify the print speed and heat
  Thermal.write(27);
  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);
  int printSetting = (printDensity<<4) | printBreakTime;
  Thermal.write(printSetting); //Combination of printDensity and printBreakTime
  Serial.println();
  Serial.println("Printer ready");
}

void loop(){
}

IMG_8380.jpg

I had a quick look and it seems that QR203 and EM205 are both thermal printers, or an I missing something?

Did the examples in the adafruit library work correctly with your printer?

Hi, maybe my bad, I thought the printer is called QR203, on the PCB it says EM 205.
Yes, the Adafruit examples work well, except „upsidedown“, where I get the same result like in the picture.

I did a bit of digging around and it might be that the printer you have is possibly a clone of one made by Advanced Printing Systems - their EPM203 model. They have a technical manual for the printer but you have to register to get it.

However, if you go to this link then you can get the manual yourself.

It looks like you are sending the right escape sequence to the printer. The manual says that this command "Set/reset Rotated character " and the command specifics say "This command rotates text by 180°".

I can't see a command that looks like it will mirror the text like it appears to have done in your photo.

However, it looks like the printer didn't do a good job of what ever it was trying to do. It looks like part of the row of text got printed before it should have.

Using the manual in the link, I would have a guess that it may be worth sending a "Reset printer" command or maybe a "Default setup parameters" command to see if you can get some factory default values loaded.