Как написать программу для управления LPT портом?

Тема в разделе "WASM.BEGINNERS", создана пользователем X66, 20 дек 2008.

  1. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    Сделал устройство синхронизации пк с датчиком. Нужно написать что то типа дров для управления устройством и получения данных
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну что значит как написать? Взять описание портов ввода-вывода для LPT и управлять ими (в зависимости от ОС по-разному)
     
  3. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    Через что управлять??? мне еще данные считывать с датчика надо и отображать на экране результаты
     
  4. researcher

    researcher New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2005
    Сообщения:
    45
    Адрес:
    Russia
    Если предполагается работа под Windows у тебя есть минимум два пути:
    1. Прямое взаимодействие с устройством через LPT.
    Контроллер параллельного порта может работать в трех режимах SPP, EPP и ECP. Самый простой SPP. В зависимости от режима есть набор регистров, через которые осуществляется взаимодействие с устройством, подключенным к LPT. Ввод вывод в эти регистры осуществляется командами in/out. Подробнее смотри книгу "Программирование на аппаратном уровне: специальный справочник" Владимира Кулакова. Глава 7.
    2. Работа через абстракции Windows.
    Архитектура Windows абстрагирует оборудование от программ, поэтому для работы с LPT понадобится создавать различные объекты, заполнять структуры и взаимодействовать с LPT по определенным правилам. Подробнее смотри DDK, раздел "Parallel Ports and Devices".
    Помимо этого тебе необходимо следующее:
    1. Драйвер для работы с LPT (одним из способов выше) и передачи результатов приложению.
    2. Пользовательское приложение для взаимодействия с драйвером и ввода вывода на экран (самое простое, через функции GDI Win32 API).
    По этим частям смотри цикл статей на wasm: "Драйверы режима ядра" от Four-F, "Туториалы Iczelion'а о Win32 API", а также документацию DDK (WDK), MSDN.
     
  5. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    Как само прерывание сделать, через что?
     
  6. researcher

    researcher New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2005
    Сообщения:
    45
    Адрес:
    Russia
    Смотри источники предыдущего ответа, там все есть и о прерываниях.
    Как вариант можно не заморачиваться с ними (прерываниями) и делать периодический опрос устройства (при прямом взаимодействие с устройством через LPT.)
     
  7. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    По пытаюсь через BPascal написать.
     
  8. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    все равно ниче не догоняю
     
  9. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    Может кто знает как написать в каком нить языке программирования?
     
  10. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    X66
    Можно попробовать впринципе, хотя заморочки с прерываниями - хз какой вектор для пар. портов, ядро перенаправляет их, куда хз. Однозначно могу скозать что:
    Код (Text):
    1. 001F  0008:8070310C APIC Local Interrupts LINT0
    2. 00D1  0008:80701E54 RTC (System time)
    3. 00E1  0008:80703048 IPI (Interprocessor Interrupt)
    4. 00E3  0008:80702DAC APIC Error
    5. 00FD  0008:807035A8 APIC Timer Interrupt(Profiling)
    6. 00FE  0008:80703748 APIC Performance Monitor Counter Interrupts
    В хале ковырялся, толком ничего пока не вижу..
     
  11. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    Clerk
    я использую АЦП AD7819. Для запуска АЦП нужно подать сигнал через 1 вывод LPT порта. Для получения сигнала с АЦП я использовал 11 контакт LPT. Больше в принципе ничего не использовал
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    X66
    А в чём проблема? Инфы полно. Схема то хоть какая?
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Booster
    Да причём тут схема, вектор какой у первого порта по дефолту ?
     
  14. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    Извиняюсь конечно, но я новичек в этом деле и не понял выражения вектор какой у первого порта по дефолту ?
     
  15. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    X66
    Вектор(номер) прерывания у первого параллельного порта по умолчанию.
     
  16. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    вектор 0fh в аттаче ооочень древние тестовые поделки для lpt под дос - под ХР заработает только если открыть порты.
     
  17. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    Прикреплённые файлы:
    lpt_dos_tests.7z, Размер: 7,001 b, Скачано: 1




    и что это за файл?
     
  18. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    X66
    архив 7z (можно открыть rar-ом) с исходниками на асме (под TASM) - если не открывается - перескачай используя DM есть тут на форуме проблема с аттачами.
     
  19. X66

    X66 New Member

    Публикаций:
    0
    Регистрация:
    20 дек 2008
    Сообщения:
    26
    скачал используя DM, теперь пытаюсь открыть раром, но он зависает
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Clerk
    Я никогда для этого не юзал ни каких векторов, юзал порты.