![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Печать на термопринтере через RS232 [D6, WinXP]
MixAnOL © (2006-09-22 13:17:00)Здорово всем!
Потребовалось разобраться с печатью на термопринтере. Суть вот в чем:
он подключается к СОМ-порту, 9600,8бит,1стоп,чет.
Ему должны посылаться управляющие команды, типа 1Bh F0h (2 байта), а он должен ответить , например 00h - т.е. все нормально выполнил.
Так вот в чем проблема: при использовании программы настройки для этого принтера все работает, т.е. принтер все выполняет. Смотрел по монитору порта команды уходят, ответы приходят. Когда же я пытаюсь послать эти команды, то ни ответа ни привета - полный молчок...
Использую компонент CPort, раньше с ним проблем не замечалось...
Никогда не делал таких вещей, может есть какие-то подводные камни при передаче команд?
MixAnOL (2006-09-23 14:09:00) [1]все, проблема решилась!
блин, оказалось что на другой скорости работает :))
как-то сразу не заметил... (грёбаная документация..)
спасибо всем за советы!
orinoko (2006-09-22 17:33:00) [2]cpDrv - компонент довольно старый. Но устанавливается на любую delphi (с 5 до 2006). Его единственный недостаток - он медленный по сравнению с тем же CPort. Могу скинуть на мыло, если надо. Но в данном случае надо искать проблему игнорирования принтером твоих команд (проделать всё вышеназванное)
MixAnOL (2006-09-22 15:18:00) [3]ладно, буду смотреть вечером...
Сергей М. (2006-09-22 15:16:00) [4]
> MixAnOL © (22.09.06 14:52) [12]
>
>
Если дивайс при установленных тобой настройках порта связи с ним не отвечает, то это скорей всего означает несоответствие заданных тобой комм.параметров порта с твоей стороны тем что ожидаются со стороны порта дивайса.
MBo (2006-09-22 15:15:00) [5]У меня от некоего девайса данные приходили, а ему команды не поступали.
При сравнении выдачи PortMon обнаружились различия со штатной программой, после изменений во FlowControl заработало
CP.FlowControl.OutCTSFlow := False;
CP.FlowControl.OutDSRFlow := False;
CP.FlowControl.ControlDTR := dtrEnable;
CP.FlowControl.ControlRTS := rtsEnable;
CP.FlowControl.XonXoffOut := False;
CP.FlowControl.XonXoffIn := False;
было:
0.00000754 Project2.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:0 Replace:0 XonLimit:256 XoffLimit:256
стало:
0.00000726 Project2.exe IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:1 Replace:40 XonLimit:256 XoffLimit:256
tesseract (2006-09-22 15:11:00) [6]
> MixAnOL © (22.09.06 14:52) [12]
portmon покажет реальные настройки.
MixAnOL (2006-09-22 14:52:00) [7]
> Не возможно а точно, глянь портмоном, или просто поищи описание
> протокола обмена на сайте производителя, 98% он там есть
вот как раз его там нету.... он у меня есть и там написано:
Connection Setting:
RS-232 connection.
1. Please connect to a com port of your personal computer (PC).
2. Set your PC com port to :
- Baud-rate :9600
- Parity : Even
- Data bits :8
- Stop bit :1
и все...
и кстати, порыскал и не нашел где взять cpDrv, может подскажете?
Сергей М. (2006-09-22 14:31:00) [8]
> возможно программа настройки устанавливает другие параметры
> для порта?
Да запросто !
tesseract (2006-09-22 14:30:00) [9]
> т.е. возможно программа настройки устанавливает другие параметры
> для порта?
Не возможно а точно, глянь портмоном, или просто поищи описание протокола обмена на сайте производителя, 98% он там есть.
MixAnOL (2006-09-22 14:21:00) [10]
> А порт то открыть при этом можешь? Не установлен ли этот
> принтер в системе?
могу, при включении принтера приходят данные, типа я тут...
принтер не устанавливается как принтер, просто подключается к СОМ-порту и все...
> После изменения параметров прикл.программа вправе обмениваться
> с принтером инф-цией уже с новыми установками порта
т.е. возможно программа настройки устанавливает другие параметры для порта?
Сергей М. (2006-09-22 14:11:00) [11]Подозреваю, что принтер при инициализации настраивает некие параметры порта со своей стороны ... например, 9600,8бит,1стоп,чет ...
Программа настройки вольна изменить эти параметры, если принтер это предусматривает в соответствии со своим ПИО
После изменения параметров прикл.программа вправе обмениваться с принтером инф-цией уже с новыми установками порта
Германн (2006-09-22 14:05:00) [12]
> Никогда не делал таких вещей, может есть какие-то подводные
> камни при передаче команд?
А порт то открыть при этом можешь? Не установлен ли этот принтер в системе?
MixAnOL (2006-09-22 14:03:00) [13]
> возможно, еще какие-то параметры должны устанавливаться,
> например, FlowControl и т.д.
> Сравни, что выдает PortMon при подклчении к порту твоей
> программы и штатной.
>
сейчас нет под рукой, вечером проверю, но там вроде все было одинаково...
PortMon, собака, еще как-то глючит, не все логирует (фильтр - естественно отключен)..
> должен быть выставлен аппаратно высокий уровень DTR
кстати да, нужно посмотреть...
atruhin (2006-09-22 13:49:00) [14]Я когда разбирался с принтерами, делал печать в файл, получал двоичный файл вывода на принтер. После этого пытался копировать этот файл, при необходимости устонавливая управляющие биты. Прокатывало.
medved_68 (2006-09-22 13:39:00) [15]
> Никогда не делал таких вещей, может есть какие-то подводные
> камни при передаче команд?
Скорее всего принтер "на хвосте не чует" работу твоей программы. Как показала практика, что бы устройство начинало что то пытаться считать с порта и принять к сведению, должен быть выставлен аппаратно высокий уровень DTR, который выставляется только при готовности программы к общению по "коммуникациям". И большинство устройств ориентируются на проверку этого уровня при приеме байтов.Типа "есть уровень - байт к рассмотрению, нет - пошел на....". :))))
orinoko (2006-09-22 13:34:00) [16]Возможны разные варианты:
1. Неправильные параметры порта. Попробовать поиграться ими.
2. Некоторые принтеры кроме Rx Tx используют управляющие сигналы, которыми Вы не управляете должным образом.
CPort - Компонент нормальный. Единственный замеченный недостаток - он тихо умирает при длительной (более 20 часов) интенсивной работе. Для таких ответственных случаев я использую cpDrv
MBo (2006-09-22 13:25:00) [17]возможно, еще какие-то параметры должны устанавливаться, например, FlowControl и т.д.
Сравни, что выдает PortMon при подклчении к порту твоей программы и штатной.
Сергей М. (2006-09-22 13:24:00) [18]
> Когда же я пытаюсь послать эти команды, то ни ответа ни
> привета - полный молчок
Значит твоей программе не хватает той обязательной логики, которая присутствует в упомянутой тобой "программы настройки для этого принтера"