![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Bogus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 10.4.2005 Где: Москва Репутация: нет Всего: нет |
Нужен пример работы с LPT портом. Планируется получать информацию (сигнализайию) от внешего самодельного устройства
в виде двоичного (8- разрядного) кода с дальнейшей обработкой. Можно ли это сделать и если можно, то как? Ссылки на котовый проект (пример) особо приетствуются. В качестве одного из примеров, могу привести ключи-заглушки на порты (в качестве лицензионного ключа) для программ карта москвы и др. |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
|
|||
|
||||
Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Примерно должно получиться что-то в таком роде:
|
||||
|
|||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Также для информации почитай DRKB раздел "Порты".
В принципе работа с COM и LPT похожа. Ну, кроме установки параметров порта. Хотя установка порта требуется далеко не всегда. Я например использую стандартные параметры, выставленные в системе. Это избавляет меня от необходимости делать лишнюю работу. Не нужно писать лишний код для настройки порта и интерфейс для пользователя. Пользователь может использовать настройки в системе. Не гарантирую, что вышеприведенный код 100% рабочий, т.к. писал его для COM порта. Я его лишь немного модифицировал под LPT. Но по идее проблем возникнуть не должно. Должен заработать без вопросов. |
|||
|
||||
Bogus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 10.4.2005 Где: Москва Репутация: нет Всего: нет |
По сути мне нужно анализировать различные варианты коммутации контактов LPT порта. Сечас пойду разбираться в том, что написали. Всем спаисибо. Если у кого есть еще советы или (и) готовые примеры, буду благодарен.
![]() Добавлено @ 14:29 Ни черта не понял. Аткрыть, закрыть порт я смогу, но как проанализировать коммутацию контактов?!!! |
|||
|
||||
Bogus |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 10.4.2005 Где: Москва Репутация: нет Всего: нет |
||||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Для этого ты должен передать сигнал в порт. Программа получает сигнал в виде одного байта. По приведенному выше коду, ты получаешь char от функции GetChar. Переводишь его в число при помощи ord(ch). А число уже представляй в бинарном виде. Как перевести число в бинарный вид, на форуме уже не раз обсуждалось в "Общих вопросах", так же есть в FAQ и DRKB. Смотришь бинарное представление. Где еденички - там есть сигнал, где нолики - нет сигнала. |
|||
|
||||
asp708 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 10.12.2006 Репутация: нет Всего: нет |
можно ли где нибудь откльчить напряжение на LPT при загрузке
т.е. при включении PC он не скакало и оставалось на 0 пока сами его программно не изменим |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
Нет.
При загрузке винда производит тестирование устройств. И этого ей никак не запретишь. |
|||
|
||||
Mr.Floppy |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 3.7.2006 Где: Москва Репутация: нет Всего: 1 |
Snowy, у меня не работает Ваш код
![]() Открывать/закрывать порт получается (открывает корректно, хендл>0), но читать и записывать не получается: При чтении: GetChar возвращает false, ord(ch)=0 При записи программа просто зависает (может ждет ответа устройства?) В примере несколько опечаток: unit lptport; 20: function GetChar(var ch: char):boolean; но 76: function TLptPort.GetChar(ch: char): boolean; program Test; 10: lpt: TComPort; 13: lpt:=TComPort.Create; а надо TLptPort А через драйвер lptwdmio все работает. Turbo Delphi, WinXP Pro, запускаю от администратора Это сообщение отредактировал(а) Mr.Floppy - 13.3.2007, 02:15 |
|||
|
||||
Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 3 Всего: 108 |
-------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
Mr.Floppy |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 3.7.2006 Где: Москва Репутация: нет Всего: 1 |
Albinos_x, через lptwdmio у меня работает, не получается через CreateFile
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |