Форум: "Потрепаться";
Текущий архив: 2003.07.28;
Скачать: [xml.tar.bz2];
ВнизОн даже не дергается ... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c