Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Печать на термопринтере через 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]


> Когда же я пытаюсь послать эти команды, то ни ответа ни
> привета - полный молчок


Значит твоей программе не хватает той обязательной логики, которая присутствует в упомянутой тобой "программы настройки для этого принтера"


Наверх

Титульная страница Поиск, карта сайта Написать письмо