Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.28;
Скачать: CL | DM;

Вниз

Он даже не дергается ...   Найти похожие ветки 

 
AndrewVolkov ©   (2003-07-11 02:18) [0]

Термо Принтер на ком порту...

Я уже че токо не посылал в этот порт - все уходит, а в ответ тишина...

procedure WriteComm(A:String);
var
Transmit:array [0..255] of Char;
i:integer;
begin
KolByte:=1; //Dword;
Transmit[0]:= Chr($27);
Transmit[1]:= Chr($1b);
Transmit[2]:= Chr($40);
for i:=0 to 2 do begin
WriteFile(CommHandle,Transmit[i],KolByte,KolByte,@Ovr);
end;
end;


В описании к устройству написано

ESC+ @ - Device Reset
(1BH)+(40H), (27)+(64) decimal
Terminates processing and initializes the
default values, same as at power on.

Я правильно посылаю или нет??? Подскажите , плиз, я уже кучу примеров перепробовал - а он даже не дергается. Хотя с его тестовой программы тест печатает.


 
DC-AC   (2003-07-11 08:15) [1]

ESC@ - это $1B и $40. Следовательно нужно передать всего лишь два байта. А $27, пардон, зачем ?


 
Nucl ©   (2003-07-11 10:02) [2]

Работающий пример для принтера на LPT порту:
var
PrnF : TextFile;
P : PChar;
begin
Try
AssignFile(PrnF, "LPT1");
Rewrite(PrnF);
Except
on E:Exception do
begin
ShowIntError("Инициализация принтера",E.Message,1);
exit;
end;
End;
// выделение памяти
P:= StrAlloc(100);
Try
// это переключение на красную ленту
Write(PrnF, chr(27));
Write(PrnF, chr(114));
Write(PrnF, chr(1));
WriteLn(PrnF,"");
CharToOem("Текст, который будет красным"",P);
WriteLn(PrnF,P);
// это переключение на черную ленту
Write(PrnF, chr(27));
Write(PrnF, chr(114));
Write(PrnF, chr(0));
S := "Черный текст ";
CharToOem("Текст, который будет черным"",P);
Except
on E:Exception do
begin
ShowIntError("Печать чека",E.Message,1);
exit;
end;
End;
StrDispose(P);
Try
CloseFile(PrnF);
Except
on E:Exception do
begin
ShowIntError("Отключение принтера",E.Message,1);
exit;
end;
end;


 
AndrewVolkov ©   (2003-07-11 10:02) [3]

Да посоветовали -типа ескейп команда...

procedure WriteComm(A:String);
var
Transmit:array [0..255] of Char;
i:integer;
begin
KolByte:=1; //Dword;
Transmit[0]:=Chr($1b);
Transmit[1]:=Chr($40);
for i:=0 to 1 do begin
WriteFile(CommHandle,Transmit[i],KolByte,KolByte,@Ovr);
end;
end;


эТО таким образом должно работать, или это неправильно?


 
AndrewVolkov ©   (2003-07-11 10:06) [4]

то Nucl - у меня на com port (какая-то разница есть по сравнению с LPT) - И везде написано использовать WriteFile
а тут просто Write


 
nick   (2003-07-11 10:18) [5]

Вы конечно все молодцы, но побайтно запихивать в ком порт необязательно можно сразу
WriteFile(CommHandle,Transmit,strlen(Transmit),KolByte,nil);

AndrewVolkov -- в твоем случае возможно ты просто порт неправильно настроил попробуй сначала через Window-ый терминал
это стандартная утилитка.


 
AndrewVolkov ©   (2003-07-11 10:27) [6]

Настройка, как везде в примерах написано. Инициализация во всяком случае проходит...
а Transmit можно как стринг бубенить. Я правильно понял...

ESC+ @ - Device Reset
(1BH)+(40H), (27)+(64) decimal
Terminates processing and initializes the
default values, same as at power on.


Видите в доке написано вот так вот и все. Мне не до конца ясно (представление символьное - хекс и децимал). Я уже и хексы посылал и символы. То что написано ESC+ @ это имеется в виду Transmit:="ESC@" or "ESC+@" или че то еще???


 
Nucl ©   (2003-07-11 10:35) [7]

после того как ты открыл порт как файл, можно работать с ним как с файлом а COM это или LPT значения не имеет помоему.


 
Петров Денис ©   (2003-07-11 11:21) [8]

А что за принтер? Какую систему команд использует?
Команда esc@ есть, например, в ESC POS фирмы EPSON. Вот ее описание:

ESC@
[Name] Initialize printer
[Format] ASCII ESC @
Hex 1B 40
Decimal 27 64
[Range] None
[Default] None
[Printers not featuring this command] None

[Description] The data in the print buffer is cleared and the printer mode(s) is reset to the mode that was in effect when the
power was turned on.

[Notes] n The DIP switch settings are not checked again.
n The data in the receive buffer is not cleared.
n Any macro definitions are not cleared.

Так принтер и не бдет дергаться, если слать ему эту команду... Это просто перезагрузка устройства.


 
N169   (2003-07-11 11:38) [9]

>Я уже че токо не посылал в этот порт - все уходит, а в ответ тишина...

1. Проверьте шнур и конфигурацию принтера (переключатели, etc). Шнур может не подходить, да и конфигурация принтера может быть неподходящей.

2. Попробуйте печатать из консоли с перенаправлением на COM порт.

3. Установите принтер Epson Compatible и попробуйте попечатать из блокнота.



 
blackman ©   (2003-07-11 12:28) [10]

И мы посылаем сигналы туда, а нас посылают обратно!
Поставь его на LPT и не выдумывай.


 
BigDAN ©   (2003-07-11 12:36) [11]

А как насчет проверить скорость подключения правильность заполнения DCB и т.д.? (если вы перебробовали все и у вас ничего не получилось прочтите наконец инструкцию :)


 
AndrewVolkov ©   (2003-07-11 13:07) [12]

Ок. А если я хочу просто распечатать текст, то я просто туда гоню любую строку?


Никто так и не ответил,

если [Format] ASCII ESC @
я его посылаю как строку в каком формате?

"ESC@" or "ESC @"???



 
Петров Денис ©   (2003-07-11 14:18) [13]

StringToPrint := #27 + "@";
Аналогично со всеми esc-последовательностями.


 
Петров Денис ©   (2003-07-11 14:28) [14]

У тебя же в доке написано - ASCII.
А если ты просто хочешь распечатать текст, то посылаешь нужную строку, с тем лишь ограничением, что в строке не должно присутствовать символов с ASCII-кодами: 27, 29, 24, 28, 16, 10, 13 и 12 - они будут восприниматься принтером как начало команды.
Ограничение для ESC POS.


 
AndrewVolkov ©   (2003-07-11 18:17) [15]

У тебя же в доке написано - ASCII.

Тогда почему + "@";
а не + #64

Или, насколько я понимаю - это однотипно?



Страницы: 1 вся ветка

Текущий архив: 2003.07.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
3-91634
Bless
2003-07-02 12:49
2003.07.28
Набор данных как результат хранимой процедуры


1-91720
Endi
2003-07-14 17:44
2003.07.28
Прозрачный TEdit


1-91753
Yurko
2003-07-15 16:19
2003.07.28
Формат даты


6-91789
sapsi
2003-05-22 09:02
2003.07.28
Передача файлов через сокеты


1-91713
VID
2003-07-14 23:39
2003.07.28
Дельфи 5 или код ?