Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
6-91789
sapsi
2003-05-22 09:02
2003.07.28
Передача файлов через сокеты


1-91741
Igit
2003-07-13 12:34
2003.07.28
Извлечение ресурсов.


14-91850
SK
2003-07-07 13:34
2003.07.28
самый лучший способ привязать программу к железке


1-91730
Leviathan
2003-07-15 10:56
2003.07.28
Length для двумерного массива


3-91678
Salvator
2003-06-26 12:18
2003.07.28
Какой тип базы данных лучше использовать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский