Sunday, February 15, 2009
Inspired by Tom Taylor’s microprinter, I bought the first serial receipt printer on eBay I found, a BPM205 by Italian company APS (never heard of them, but it was cheap: 15,50 €). I was surprised that the printer was never used and came with all accessories: Five NiMH rechargeable AA batteries (can be used mobile, has IrDA), a 15V wall wart with 5 international adapter plugs, a CD with a manual and drivers and even a roll of thermal paper. Here is a pdf of the manual/datasheet.
I bought a MAX232 chip and 4 caps (1 µF) and soldered a serial adapter cable. I found Roo’s sketch at github and was able to get my “Hello world!” right away. Barcode printing also works (seems to be a standard). However, I get an extra “€” char before the Hello world on every reset (0xFF or 0×80 according to the charmap in the printer datasheet) and if I type something into the Arduino IDE’s serial monitor input it is only printed on the next reset, not right away.
Still have to find out what codepage the printer uses, it’s not the ISO-8859 charset. If I sent an “ü” for example, the printer outputs two characters – obviously the Arduino console sents unicode characters. (Also, my printer does not autocut the paper, so that control character is ignored.)
Update: The charset seems to be mostly Code page 850, but with some differences:
0×00 – 0×1F are not printable but control characters.
Ç (0×80) was replaced by €, as is 0xFF.
× (0×9E) is now ₧ (obviously borrowed from codepage 437).
ı (0xD5) is a smaller superscript 1, not a dotless i.
Except these anomalies, converting texts to be printed to cp850 should result in proper non-ASCII characters.