Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1161155855
Alex_C
2006-10-18 11:17
2006.11.05
Как правильно написать свой компонент?


2-1161081499
Kolan
2006-10-17 14:38
2006.11.05
Как пользоватся Move?


15-1160453087
IMHO
2006-10-10 08:04
2006.11.05
Евро-2008: 11 октября


15-1160722370
IMHO
2006-10-13 10:52
2006.11.05
Охотники за мифами Windows Vista


15-1160918158
PHPDeveloper
2006-10-15 17:15
2006.11.05
издатели дисков на территории СНГ





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский