14 / 14 / 1
Регистрация: 20.04.2010
Сообщений: 102
|
|
Чтение из LPT порта29.12.2014, 01:25. Показов 5396. Ответов 18
Метки нет Все метки)
(
LPT порт в режиме EPP. С некоторой частотой на него приходит последовательность импульсов, которые надо прочитать. Читать в бесконечном цикле (даже с задержкой) не безопасно (что-то пропускает, что-то читает 2 и более раз). Как организовать процесс, чтобы читать порт только тогда, когда на него пришли данные?
Гугл советует под линуксом юзать для этой цели select, но в винде это не работает. Больше ничего толкового пока не нашел. Для доступа к порту использую готовый драйвер inpout32.dll, но при необходимости и через WinApi можно.
0
|
29.12.2014, 01:25 | |
Ответы с готовыми решениями:
18
Чтение из COM-порта Побайтовое чтение COM порта Определение паузы при чтение с COM порта |
14 / 14 / 1
Регистрация: 20.04.2010
Сообщений: 102
|
|
03.01.2015, 02:10 [ТС] | |
дело в том, что по умолчанию винда расценивает LPT как порт принтера. стандартный драйвер винды заточен под то, что к LPT подключено устройство "а-ля принтер", которое поддерживает соответствующий аппаратный протокол обмена (железка должна в состоянии обработать управляющие сигналы strobe/ack,и проинформировать об этом хост). для моего внешнего устройства это не реально - оно не принтер, не сканер и даже не программируемо. соответственно и работать с ним через стандартные средства WinAPI в полной мере невозможно. открыть порт (CreateFile), отправить в него что-то (WriteFile) - можно. а вот прочитать (ReadFile), да еще по прерыванию не получится.
по крайней мере у меня не выходит. да и в интернетах пишут тоже самое
0
|
![]() |
|||
03.01.2015, 14:48 | |||
Читать надо в потоке, а отслеживать длительность можно микросекундным таймером http://msdn.microsoft.com/en-u... s.85).aspx, предварительно калибруя в зависимости от процессора. P.S.: и вообще, имхо, рулить из LPT (движком, ЧПУ и прочими) некошерно на сегодняшний момент, даже если и аппелировать к старому ПК. Должен быть внешний контроллер, который всем занимается и принимает лишь управляющие общие команды, отсылая диагностическую информацию на верхний уровень.
0
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
|
03.01.2015, 18:08 | |
Чтобы не читать в бесконечном цикле, нужно найти какую то dll или sys который отлавливает прерывания порта, и может их передать в заранее установленный обработчик. Ну или установить свой обработчик на прерывания порта, правда для этого нужно писать свой драйвер.
0
|
![]() |
|
03.01.2015, 19:51 | |
1- перечитайте мой посткриптум выше в посте #6. Нельзя вообще использовать бытовой ПК, тем паче с виндами на борту для промышленных целей. Должен быть внешний железный контроллер для реалтайм и автономности и не самопальщина. Или промПК с QNX-ом или WinCE аля RTX, как вариант.
2- конфликты с чем это там они могут быть? ![]()
0
|
![]() |
|
03.01.2015, 20:01 | |
Это вы можете узнать у разработчика http://www.logix4u.net/inpout32.htm
0
|
14 / 14 / 1
Регистрация: 20.04.2010
Сообщений: 102
|
||||
04.01.2015, 04:07 [ТС] | ||||
просто хотелось бы сделать по-нормальному: пришли новые данные - прочитали порт и никаких опасений, что какие-то импульсы не прочитает/прочитает несколько раз. заодно по возникновению прерывания можно было бы и время прихода нового импульса отследить. в линуксе вот есть хотя бы select, которому можно скормить дескриптор порта. а в винде, похоже, надо писать свой драйвер с обработчиком прерываний ![]()
но стандартный виндовый драйвер для LPT в плане применимости в рамках моей задачи так же огорчает Добавлено через 5 минут
0
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
|
04.01.2015, 04:21 | |
fit, Программирование драйверов Windows, Солдатов В.П., 2004 вроде не плохая книжка, хотя сам толком не читал. Для создания драйвера воспользуйтесь DDK. А в обще драйвер имеет схожую с exe структуру, и его можно построить в Visual Studio.
0
|
Модератор
![]() 8963 / 6729 / 921
Регистрация: 14.02.2011
Сообщений: 23,762
|
|||||
04.01.2015, 04:33 | |||||
Это обязательно конкретное время, хоть час, но всегда час, ни больше не меньше, т.е сигнал пришел и ровно через час получили ответ системы, ни винда ни дос ни линукс такого гарантировать не могут, они могут отработать и 55 минут и 65, примерно час ![]() А пока с такой постановкой задачи http://msdn.microsoft.com/ru-r... s.85).aspx http://www.firststeps.ru/mfc/winapi/r.php?166 пускай считывает данные допустим каждую секунду, или десять раз в секунду, и складывает в буфер а основная программа будет анализировать насколько помню даже во времена ДОС параллельный порт не генерил прерывания по шине данных, также приходилось опрашивать, хотя столько лет прошло могу и ошибатся Добавлено через 3 минуты кстати функции для работы с памятью там совершенно другие
0
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
|||
04.01.2015, 05:04 | |||
0
|
![]() |
||
04.01.2015, 12:44 | ||
0
|
04.01.2015, 12:44 | |
Помогаю со студенческими работами здесь
19
Непрерывное чтение и обработка с com порта (последовательный порт) в Visual C++ Тестирование LPT порта Обработка LPT порта Программирования LPT-порта Программирование LPT порта Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
|
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
|
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
|
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
|
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
|
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг.
Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя.
Странные серые краски проникают и. . .
|
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
|
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
|
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
|
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
|