Подтвердить что ты не робот

Получение принт-принтера Epson для печати от Arduino

Я пытаюсь создать микропринтер, используя принтер Arduino и Epson TM-T88II/POS. Принтер использует Epson Esc/POS, но я не могу заставить его вообще что-либо делать с Arduino. Я делаю такие вещи, как:

#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
}

Я просто не могу заставить принтер отвечать на все. Принтер включится и распечатает свой тест самостоятельно. Это серийный (RS-232) принтер, и я подключаю его к Arduino через MAX233. Я проверил и перепроверял мои подключения через чип, который, я думаю, прав, основанный на другом, у которого работает аналогичная настройка. Я где-то читал, что принтерам TM-T88 нужны нуль-модемные последовательные кабели, поэтому я купил адаптер, и это, похоже, не имеет никакого значения.

Я новичок в электронике, поэтому я полностью в тупике. Я просто хочу, чтобы он печатал что-то, поэтому я могу найти интересную часть - программирование:). Любые мысли о вещах, которые нужно проверить/попробовать? Я могу дать более подробную информацию о проводке или что-то еще, просто не хочу, чтобы это длилось долго.

4b9b3361

Ответ 1

Используете ли вы приемопередатчик RS-232? Arduino выводит 0 и 5 V для последовательного, в то время как принтер использует -12 и 12 V для последовательной передачи. Вы должны использовать MAX232 или подобное устройство для получения правильного физического интерфейса. (Возможно, вы сможете обмануть, если вы инвертируете последовательный порт на Arduino, но это может не сработать, и это больше проблем при начале работы.)

Как только это позаботится, RTS и DTR могут стать вашей проблемой. Вы должны иметь возможность изменить настройки DIP-переключателя на принтере и полностью отключить управление потоком или переключить его на управление потоком программного обеспечения.

Кроме того, вам может потребоваться отправить оба канала и возврат каретки.

Однако, как только все это сделало, оно должно печатать только отлично, даже без каких-либо команд reset. Отправьте кучу символов ASCII, а также возврату строки/каретки, и она полностью выплюнет.

Вы можете проигнорировать линию RX (со стороны Arduino, TX со стороны принтера) на данный момент - просто отправьте данные, пока не выясните проводку, преобразование уровня, управление потоком и т.д.

Ответ 2

Вы можете проверить, можете ли вы общаться с ПК, как с Arduino, так и с принтером.

Я бы использовал осциллограф, чтобы увидеть, если последовательные сигналы поступают из Arduino и MAX, как они должны, но тогда у вас, вероятно, нет этого.

Вы уверены, что настройки связи верны? Вы устанавливаете скорость передачи до 9600, но как насчет бит данных, четности, стоповых бит? Как насчет линий управления?

Ответ 3

Я подключил другой компьютер вместо принтера к другому концу последовательного кабеля и запустил telnet или PuTTY на этом чтобы убедиться, что вы общаетесь и фактически разговариваете через последовательный порт. Если это так, вы можете использовать одно и то же решение для отправки данных на принтер, чтобы подтвердить все настройки, такие как количество бит данных, четность и т.д.

Ответ 4

Я сделал аналогичный проект и имел ту же проблему. Вам нужен нуль-модем/кроссовер для перехода от max232 к принтеру, так как оба устройства находятся в подчиненной конфигурации