Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с LPT
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Farfush
У меня возникла следующая проблема:
К компу подключен девайс, который получает данные и пишет их в порт в режиме EPP (причем, данные пишутся в двухбайтном виде и данных в каждый момент времени 7 штук, то есть устройство принимает данные от 7 датчиков и пишет все данные в порт). Я программно (Delphi) хочу их читать из порта и обрабатывать. Проблема возникает, куда эти данные записывает девайс.
DSIoffe
Параллельный порт в режиме EPP - пассивное устройство, сам никуда не пишет, из него читает компьютер.
В двухбайтовом виде - не бывает, только по одному, там 8-разрядная шина данных.
Читаете Вашей программой байт данных по адресу <базовый адрес LPT>+4, и всё.
Лучше почитайте что-нибудь про параллельный порт, куча вопросов сразу отпадёт. Например, у меня, любимого:
http://www.dsioffe.narod.ru/stuff/stuff.htm#parport
И поищите по форуму, уже не раз обсуждался программный доступ к параллельному порту.
Farfush
Спасибо!
В том то и дело, что я уже много чего прочитал и с регистрами разобрался. Моя программа читает данные из <Базовый адрес LPT1>+4, но там данные не меняются.
PSP
Обычно нужно включить в BIOS setup режим EPP, для чтения данных из порта в программе разрешить "двунаправленность" в регистре управления, 5-й бит.
Естественно, необходимо, чтобы ваше внешнее железо правильно реализовывало протокол обмена EPP. Он сильно отличается от SPP, а Ваши слова, что внешнее устройство что-то пишет в порт вызывают сомнения в понимании, как это работает.
Из тонкостей можно упомянуть, что EPP режим хотя и работает по сигналу готовности от внешнего устройства, но имеет таймаут около 10-15 мкс, и, если готовности нет, то чтение все равно завершается с некорректными данными. Еще упомяну, что имеет значение качество кабеля, но это чаще приводит к искажениям данных, а не к полной неработоспособности.
rezident
Цитата(PSP @ Oct 30 2007, 01:42) *
Из тонкостей можно упомянуть, что EPP режим хотя и работает по сигналу готовности от внешнего устройства, но имеет таймаут около 10-15 мкс, и, если готовности нет, то чтение все равно завершается с некорректными данными.

А еще до кучи, есть две реализации EPP: EPP1.7 и EPP1.9. В чем их отличие за давностью лет уже не помню. Помню лишь, что было много "секса" при попытке работать на разных материнках через LPT в режиме EPP с PCF8584.
Farfush
Цитата
Естественно, необходимо, чтобы ваше внешнее железо правильно реализовывало протокол обмена EPP. Он сильно отличается от SPP, а Ваши слова, что внешнее устройство что-то пишет в порт вызывают сомнения в понимании, как это работает.

Устройство делал не я. У меня есть паспорт к нему, но там не сказано, каким образом устройство общается с компом, кроме режима EPP.

Цитата
Из тонкостей можно упомянуть, что EPP режим хотя и работает по сигналу готовности от внешнего устройства, но имеет таймаут около 10-15 мкс, и, если готовности нет, то чтение все равно завершается с некорректными данными. Еще упомяну, что имеет значение качество кабеля, но это чаще приводит к искажениям данных, а не к полной неработоспособности.

Есть программа, написанная на Pascal и работающая только в ДОСе (в эмуляции не канает). Я её хочу переделать под виндовоз, но кода исходной проги у меня нет. Поэтому я и пытаюсь сам разобраться.
PSP
Цитата
Есть программа, написанная на Pascal и работающая только в ДОСе (в эмуляции не канает). Я её хочу переделать под виндовоз, но кода исходной проги у меня нет. Поэтому я и пытаюсь сам разобраться.

А может быть Вы пытаетесь напрямую обращаться к портам вводы/вывода в Win2000/XP? Без специальных средств открывающих прямой доступ это невозможно.
Farfush
Цитата(PSP @ Oct 30 2007, 03:05) *
А может быть Вы пытаетесь напрямую обращаться к портам вводы/вывода в Win2000/XP? Без специальных средств открывающих прямой доступ это невозможно.

В том то и дело, что я работаю через драйвер LPTWDMIO.
DSIoffe
Для начала я бы глянул осциллографом на линию nDataStrobe при непрерывном чтении из Вашего EPP. Если там период намного больше 1 мкс, то протокол EPP просто не работает, и прочитанные данные ничего не значат. А потом уже можно идти дальше.
Farfush
Цитата(DSIoffe @ Oct 30 2007, 14:59) *
Для начала я бы глянул осциллографом на линию nDataStrobe при непрерывном чтении из Вашего EPP. Если там период намного больше 1 мкс, то протокол EPP просто не работает, и прочитанные данные ничего не значат. А потом уже можно идти дальше.

а где мона найти осциллограф???
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.