powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Hardware [игнор отключен] [закрыт для гостей] / Epson TM-U950P
4 сообщений из 4, страница 1 из 1
Epson TM-U950P
    #35157706
Чернышов Вадим Константинович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть принтер Epson TM-U950P, который печатает всевозможные чеки, клише на подкладном документе..., подключается через lpt.

Мне интересно как на него печатать программно. Я так полагаю что можно просто отправлять в порт lpt1 необходимую инфу и он будет печатать, но на сколько я понял, для того чтобы он печатал то что нужно и где нужно ему нужно отправлять определенные кодовые последовательности, но мануала нигде не могу найти! Если кто сталкивался подскажите по возможности, а если у кого мануал будет буду вообще благодарен.
...
Рейтинг: 0 / 0
Epson TM-U950P
    #35159741
Чернышов Вадим Константинович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтоб всем все стало ясно принтер TM-U950P умеет печатать на подкладном документе (половинка A4), а так же на двух лентах, журнальной и чековой. Для печати на в определенном месте принтеру нужно подать управляющую последоватедбность.

В приведенном мной примере есть две последовательности:
\033c0\004\033c1\004\033{1 - указывает что печатать нужно на подкладном документе;
\015\012\014 - прокрутить документ;

Я расковырял из файлов prn, которые случайно получил при эксперементах с принтером, еще ряд последовательностей, но в неудобоваримом виде, например:
Для подкладного документа:

sKod1 := 'c0c1{1'; //- печать на подкладном документе
sKod2 := ' '; //- прокрутка документа;


Для Чековой части:

sKod1 := '@c0{'; // - печать чека
sKod2 := 'i'; // - отрезка бумаги
sKod3 := ''; // - прокрутка


Для журнальной части:

sKod1 := ' c0c1'; // - печать в журнал
sKod3 := ''; // - прокрутка бумаги



То есть вот такая процедура:

procedure TForm1.BitBtn2Click(Sender: TObject);
var
sStr : string;
asStr : AnsiString;
pr :TextFile;
sKod1, sKod2, sKod3 : AnsiString;
begin
sKod1 := '@c0{'; // - печать чека
sKod2 := 'i'; // - отрезка бумаги
sKod3 := ''; // - прокрутка
AssignFile(pr,'PRN:');
Rewrite(pr);
Writeln(pr,sKod1);
Writeln(pr,'test test');
Writeln(pr,WinToDos('Тест Тест'));
Writeln(pr,sKod3);
Writeln(pr,sKod2);
CloseFile(pr);
end;



Распечатает чек и отрежит его.

А мне хотелось бы понять как самостоятельно формировать такие последовательности в удобочитаемом виде, как например в моем первом примере. Я знаю что возможна печать сразу и на журнальную часть и на чековую, а расковырять не могу. Коды я впринципе нашел, а вот как их преобразовывать в нужный формат я непойму.
И как расшифровать эти наборы последовательностей, которые у меня вышеуказаны в видах подобных -
@c0{
...
Рейтинг: 0 / 0
Epson TM-U950P
    #35159747
Чернышов Вадим Константинович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это пример на который я ссылался в прошлом сообщении:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString pstr="";
  FILE *pr;
  char buf1[ 256 ],buf2[ 256 ];
  strcpy(buf1,"\033c0\004\033c1\004\033{1");
  strcpy(buf2,"\015\012\014");
  pr=fopen("PRN:","wb");
  fwrite(buf1, 11 , 1 ,pr);
  fwrite("\n", 1 , 1 ,pr);
  fwrite("\n", 1 , 1 ,pr);
  fwrite("\n", 1 , 1 ,pr);
  pstr = "тест: \n";
  fwrite(WinToDos(pstr).c_str(),pstr.Length(), 1 ,pr);
  pstr = "ТЕСТ: \n";
  fwrite(WinToDos(pstr).c_str(),pstr.Length(), 1 ,pr);
  fwrite(buf2, 4 , 1 ,pr);
  fclose(pr);
}
...
Рейтинг: 0 / 0
Epson TM-U950P
    #35198851
Чернышов Вадим Константинович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Методом научного тыка я раскопал последовательности.
Может кому пригодятся. Для Delphi это выглядит вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
const
//======== Кодовые последовательности

// ==== ПД
//=== Печать
sKodPDPrint =  chr( 27 )+chr( 64 )+ chr( 27 )+chr( 99 )+chr( 48 )+chr( 4 )+chr( 27 )+chr( 99 )+chr( 49 )+chr( 4 )+chr( 13 )+chr( 10 );
//=== Печать в обратном порядке
sKodPDPrintVN = chr( 27 )+chr( 99 )+chr( 48 )+chr( 4 )+chr( 27 )+chr( 99 )+chr( 49 )+chr( 4 )+chr( 27 )+chr( 123 )+chr( 49 )+chr( 13 )+chr( 10 );
// = Прокрутка
sKodPDScroll = chr( 13 )+chr( 10 )+chr( 12 );


// === ЧЕКОВЫЙ ПРИНТЕР
// = Печать
sKodReceiptPrint = chr( 27 )+chr( 64 )+chr( 27 )+chr( 99 )+chr( 48 )+chr( 2 )+chr( 27 )+chr( 99 )+chr( 49 )+chr( 2 )+chr( 13 )+chr( 10 );
//=== Печать в обратном порядке
sKodReceiptPrintVN = chr( 27 )+chr( 99 )+chr( 48 )+chr( 2 )+chr( 27 )+chr( 99 )+chr( 49 )+chr( 2 )+chr( 27 )+chr( 123 )+chr( 49 )+chr( 13 )+chr( 10 );
// = Прокрутка
sKodReceiptScroll = chr( 27 )+chr( 13 )+chr( 10 );
// = Отрезка
sKodReceiptCut = chr( 27 )+chr( 105 )+chr( 13 )+chr( 10 );


// === ЖУРНАЛЬНЫЙ ПРИНТЕР
// = Печать
sKodJournalPrint = chr( 27 )+chr( 64 )+chr( 27 )+chr( 99 )+chr( 48 )+chr( 1 )+chr( 27 )+chr( 99 )+chr( 49 )+chr( 1 )+chr( 13 )+chr( 10 );
//=== Печать в обратном порядке
sKodJournalPrintVN = chr( 27 )+chr( 99 )+chr( 48 )+chr( 1 )+chr( 27 )+chr( 99 )+chr( 49 )+chr( 1 )+chr( 27 )+chr( 123 )+chr( 49 )+chr( 13 )+chr( 10 );
// = Прокрутка
sKodJournalScroll = chr( 27 )+chr( 13 )+chr( 10 );
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Hardware [игнор отключен] [закрыт для гостей] / Epson TM-U950P
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]