Форум: "Основная";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
ВнизПечать на термопринтере через 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.047 c