12

I'm trying to build a microprinter using an Arduino and an Epson TM-T88II receipt/POS printer. The printer uses the Epson Esc/POS system, but I can't get it to do anything at all from the Arduino. I'm doing things like:

#include <SoftwareSerial.h>

#define out_pin 3
#define in_pin 2
SoftwareSerial printer = SoftwareSerial(in_pin, out_pin);

void setup()
{
    pinMode(in_pin, INPUT);
    pinMode(out_pin, OUTPUT);
    printer.begin(9600);

    delay(1000);

    printer.print(0x1B, BYTE);
    printer.print('@'); // ESC(HEX 1B) @ is supposed to initialize the printer
    printer.print("hello world");
    printer.print(0xA, BYTE); // print buffer and line feed
}

I just can't get the printer to respond at all. The printer powers up and prints its self test just fine. It's a serial (RS-232) printer, and I'm connecting it to the Arduino through a MAX233 chip. I've checked and rechecked my connections through the chip, which I think are right based on a friend who has a similar setup working. I read somewhere that the TM-T88 printers need null-modem serial cables, so I bought an adapter, and that didn't seem to make any difference.

I'm new to electronics, so I'm completely stumped. I just want to get it to print something, so I can get to the fun part - the programming :). Any thoughts on things to test/try? I can give more detail on wiring or anything else, just didn't want this to get TOO long.

4

4 回答 4

3

您使用的是 RS-232 收发器吗?Arduino 输出 0 和 5 V 用于串行,而打印机使用 -12 和 12 V 用于串行。您应该使用MAX232或类似设备来获得正确的物理接口。(如果你把Arduino上的串口倒过来,你可能会作弊,但这可能行不通,而且刚开始的时候更麻烦。)

一旦解决了这些问题,RTS 和 DTR 可能就是您的问题了。您应该能够更改打印机上的 DIP 开关设置并完全关闭流控制,或将其切换到软件流控制。

此外,您可能需要同时发送换行符和回车符。

但是,一旦完成所有操作,即使没有任何重置命令,它也应该可以正常打印。发送一堆 ASCII 字符和换行/回车,它会全部吐出。

您现在可以忽略 RX 线(在 Arduino 端,TX 在打印机端) - 只需发送数据,直到您弄清楚接线、电平转换、流量控制等。

于 2009-03-03T04:18:01.700 回答
1

我会将另一台 PC 而不是打印机连接到串行电缆的另一端,并在该系统上运行 telnet 或PuTTY,以确保您正在通过串行端口进行通信并实际进行通信。如果是这样,您可以使用相同的解决方案将数据发送到打印机以确认所有设置,例如数据位数、奇偶校验等。

于 2009-03-03T03:55:28.527 回答
1

您可以检查是否可以从 Arduino 和打印机与 PC 通信。

我会使用示波器来查看串行信号是否按应有的方式从 Arduino 和 MAX 输出,但您可能没有。

您确定通讯设置正确吗?您将波特率设置为 9600,但是数据位、奇偶校验位、停止位呢?控制线呢?

于 2009-03-02T19:58:18.033 回答
1

我做了一个类似的项目并且遇到了同样的问题。您需要一根零调制解调器/交叉电缆从 max232 连接到打印机,因为两个设备都处于从属配置

于 2016-08-29T11:25:15.617 回答