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

Вниз

Печать на термопринтере через RS232   Найти похожие ветки 

 
MixAnOL ©   (2006-09-22 13:17) [0]

Здорово всем!

Потребовалось разобраться с печатью на термопринтере. Суть вот в чем:
он подключается к СОМ-порту, 9600,8бит,1стоп,чет.
Ему должны посылаться управляющие команды, типа 1Bh F0h (2 байта), а он должен ответить , например 00h - т.е. все нормально выполнил.

Так вот в чем проблема: при использовании программы настройки для этого принтера все работает, т.е. принтер все выполняет. Смотрел по монитору порта команды уходят, ответы приходят. Когда же я пытаюсь послать эти команды, то ни ответа ни привета - полный молчок...
Использую компонент CPort, раньше с ним проблем не замечалось...

Никогда не делал таких вещей, может есть какие-то подводные камни при передаче команд?


 
Сергей М. ©   (2006-09-22 13:24) [1]


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


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


 
MBo ©   (2006-09-22 13:25) [2]

возможно, еще какие-то параметры должны устанавливаться, например, FlowControl и т.д.
Сравни, что выдает PortMon при подклчении к порту твоей программы и штатной.


 
orinoko   (2006-09-22 13:34) [3]

Возможны разные варианты:
1. Неправильные параметры порта. Попробовать поиграться ими.
2. Некоторые принтеры кроме Rx Tx используют управляющие сигналы, которыми Вы не управляете должным образом.

CPort - Компонент нормальный. Единственный замеченный недостаток - он тихо умирает при длительной (более 20 часов) интенсивной работе. Для таких ответственных случаев я использую cpDrv


 
medved_68 ©   (2006-09-22 13:39) [4]


> Никогда не делал таких вещей, может есть какие-то подводные
> камни при передаче команд?

Скорее всего принтер "на хвосте не чует" работу твоей программы. Как показала практика, что бы устройство начинало что то пытаться считать с порта и принять к сведению, должен быть выставлен аппаратно высокий уровень DTR, который выставляется только при готовности программы к общению по "коммуникациям". И большинство устройств ориентируются на проверку этого уровня при приеме байтов.Типа "есть уровень - байт к рассмотрению, нет - пошел на....". :))))


 
atruhin ©   (2006-09-22 13:49) [5]

Я когда разбирался с принтерами, делал печать в файл, получал двоичный файл вывода на принтер. После этого пытался копировать этот файл, при необходимости устонавливая управляющие биты. Прокатывало.


 
MixAnOL ©   (2006-09-22 14:03) [6]


> возможно, еще какие-то параметры должны устанавливаться,
>  например, FlowControl и т.д.
> Сравни, что выдает PortMon при подклчении к порту твоей
> программы и штатной.
>

сейчас нет под рукой, вечером проверю, но там вроде все было одинаково...

PortMon, собака, еще как-то глючит, не все логирует (фильтр - естественно отключен)..
> должен быть выставлен аппаратно высокий уровень DTR

кстати да, нужно посмотреть...


 
Германн ©   (2006-09-22 14:05) [7]


> Никогда не делал таких вещей, может есть какие-то подводные
> камни при передаче команд?

А порт то открыть при этом можешь? Не установлен ли этот принтер в системе?


 
Сергей М. ©   (2006-09-22 14:11) [8]

Подозреваю, что принтер при инициализации настраивает некие параметры порта со своей стороны ... например, 9600,8бит,1стоп,чет ...

Программа настройки вольна изменить эти параметры, если принтер это предусматривает в соответствии со своим ПИО

После изменения параметров прикл.программа вправе обмениваться с принтером инф-цией уже с новыми установками порта


 
MixAnOL ©   (2006-09-22 14:21) [9]


> А порт то открыть при этом можешь? Не установлен ли этот
> принтер в системе?

могу, при включении принтера приходят данные, типа я тут...
принтер не устанавливается как принтер, просто подключается к СОМ-порту и все...


> После изменения параметров прикл.программа вправе обмениваться
> с принтером инф-цией уже с новыми установками порта

т.е. возможно программа настройки устанавливает другие параметры для порта?


 
tesseract ©   (2006-09-22 14:30) [10]


> т.е. возможно программа настройки устанавливает другие параметры
> для порта?


Не возможно а точно, глянь портмоном, или просто поищи описание протокола обмена на сайте производителя, 98% он там есть.


 
Сергей М. ©   (2006-09-22 14:31) [11]


> возможно программа настройки устанавливает другие параметры
> для порта?


Да запросто !


 
MixAnOL ©   (2006-09-22 14:52) [12]


> Не возможно а точно, глянь портмоном, или просто поищи описание
> протокола обмена на сайте производителя, 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, может подскажете?


 
tesseract ©   (2006-09-22 15:11) [13]


> MixAnOL ©   (22.09.06 14:52) [12]


portmon покажет реальные настройки.


 
MBo ©   (2006-09-22 15:15) [14]

У меня от некоего девайса данные приходили, а ему команды не поступали.
При сравнении выдачи 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


 
Сергей М. ©   (2006-09-22 15:16) [15]


> MixAnOL ©   (22.09.06 14:52) [12]
>
>


Если дивайс при  установленных тобой настройках порта связи с ним не отвечает, то это скорей всего означает несоответствие заданных тобой комм.параметров порта с твоей стороны тем что ожидаются со стороны порта дивайса.


 
MixAnOL ©   (2006-09-22 15:18) [16]

ладно, буду смотреть вечером...


 
orinoko   (2006-09-22 17:33) [17]

cpDrv - компонент довольно старый. Но устанавливается на любую delphi (с 5 до 2006). Его единственный недостаток - он медленный по сравнению с тем же CPort. Могу скинуть на мыло, если надо. Но в данном случае надо искать проблему игнорирования принтером твоих команд (проделать всё вышеназванное)


 
MixAnOL ©   (2006-09-23 14:09) [18]

все, проблема решилась!

блин, оказалось что на другой скорости работает :))
как-то сразу не заметил... (грёбаная документация..)

спасибо всем за советы!



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

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

Наверх




Память: 0.51 MB
Время: 0.065 c
15-1160559240
ANB
2006-10-11 13:34
2006.11.05
Меня тошнит от НТВ


1-1159007734
Дмитрий В
2006-09-23 14:35
2006.11.05
Как записать байт в lpt порт


15-1160720254
Dmitry_177
2006-10-13 10:17
2006.11.05
GUID Генерация уникального идентификатора


4-1150704727
Kirill.info
2006-06-19 12:12
2006.11.05
как получить картинку развернувшегося меню?


15-1160773435
Иксик
2006-10-14 01:03
2006.11.05
Зотов