2009-03-02 2 views
12

Я пытаюсь создать микропринтер, используя принтер Arduino и Epson TM-T88II/POS. Принтер использует систему Epson Esc/POS, но я не могу заставить ее вообще что-либо делать с Arduino. Я делаю такие вещи, как:Получение принт-принтера Epson для печати от 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 нужны нуль-модемные последовательные кабели, поэтому я купил адаптер, и это, похоже, не имеет никакого значения.

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

ответ

1

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

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

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

+0

Для настроек связи я совсем не уверен. Думаю, мне может понадобиться какое-то рукопожатие, но я не знаю, как это сделать.Информация из самотестирования принтера: Скорость передачи: 9600 (это то, что я использую) Биты данных: 8 бит Соотношение сторон: нет Стоповый бит: 1 бит или более Квитирование: DTR/DSR –

1

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

3

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

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

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

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

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

1

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

Смежные вопросы