Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
fit
14 / 14 / 0
Регистрация: 20.04.2010
Сообщений: 102
#1

Чтение из LPT порта - C++

29.12.2014, 01:25. Просмотров 1425. Ответов 18
Метки нет (Все метки)

LPT порт в режиме EPP. С некоторой частотой на него приходит последовательность импульсов, которые надо прочитать. Читать в бесконечном цикле (даже с задержкой) не безопасно (что-то пропускает, что-то читает 2 и более раз). Как организовать процесс, чтобы читать порт только тогда, когда на него пришли данные?
Гугл советует под линуксом юзать для этой цели select, но в винде это не работает. Больше ничего толкового пока не нашел.
Для доступа к порту использую готовый драйвер inpout32.dll, но при необходимости и через WinApi можно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2014, 01:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение из LPT порта (C++):

Чтение из COM-порта - C++
Здравствуйте! Никак не могу правильно прочитать данные из COM-порта. Мой процессор отправляет в компорт в бесконечном цикле (каждые...

Побайтовое чтение COM порта - C++
Доброго времени суток. Обычно из COM порта читают передавая в функцию чтения указатель на буфер и сколько байтов прочитать. Как...

Определение паузы при чтение с COM порта - C++
Пишу под OS Windows 7 visual studio c использованием MFC. Нужно добиться определения наличия паузы между принятием двух байт по COM...

Непрерывное чтение и обработка с com порта (последовательный порт) в Visual C++ - C++
Здравствуйте, я задумал одну идею с GPS приемником, но для того чтобы реализовать это мне необходимо читать и обработать данные с com порта...

Тестирование LPT порта - C++
Здравствуйте. нашел в интернете код программы который может включить светодиод и отключить его. вот код #include "stdafx.h" ...

Программирование LPT - C++
Всем привет. Только недавно начал заниматься программированием на С++, и получил просьбу накодить программу считывания двоичного кода на...

18
ValeryS
Модератор
6707 / 5116 / 482
Регистрация: 14.02.2011
Сообщений: 17,187
04.01.2015, 04:33 #16
Цитата Сообщение от fit Посмотреть сообщение
частота небольшая, далеко не реалтайм.
реалтайм это не обязательно быстро
Это обязательно конкретное время, хоть час, но всегда час, ни больше не меньше, т.е сигнал пришел и ровно через час получили ответ системы, ни винда ни дос ни линукс такого гарантировать не могут,
они могут отработать и 55 минут и 65, примерно час
Цитата Сообщение от fit Посмотреть сообщение
а что толкового можно почитать про написание драйверов под винду?
поиши здесь на форуме Убежденный, он пишет драйвера и может конкретно что то посоветовать
А пока с такой постановкой задачи
Цитата Сообщение от fit Посмотреть сообщение
LPT порт в режиме EPP. С некоторой частотой на него приходит последовательность импульсов, которые надо прочитать. Читать в бесконечном цикле (даже с задержкой) не безопасно
Могу предложить отдельный поток, и в нем DeviceIoControl
http://msdn.microsoft.com/ru-ru/libr...(v=vs.85).aspx
http://www.firststeps.ru/mfc/winapi/r.php?166
пускай считывает данные допустим каждую секунду, или десять раз в секунду, и складывает в буфер
а основная программа будет анализировать
насколько помню даже во времена ДОС параллельный порт не генерил прерывания по шине данных, также приходилось опрашивать, хотя столько лет прошло могу и ошибатся

Добавлено через 3 минуты
Цитата Сообщение от maxillion Посмотреть сообщение
А в обще драйвер имеет схожую с exe структуру, и его можно построить в Visual Studio.
особенно если учесть что он работает в 0 кольце, и с памятью там ой как нужно быть осторожным, а равно и с другими ресурсами
кстати функции для работы с памятью там совершенно другие
0
maxillion
273 / 183 / 38
Регистрация: 25.12.2012
Сообщений: 616
04.01.2015, 05:04 #17
Цитата Сообщение от ValeryS Посмотреть сообщение
и с памятью там ой как нужно быть осторожным
Если драйвер работает на уровне PASSIVE_LEVEL то допускается исключения ACCESS_VIOLATION и их перехват, как в обычной программе.
Цитата Сообщение от ValeryS Посмотреть сообщение
кстати функции для работы с памятью там совершенно другие
Мне удалось прикрутить программу на С++ с STL map к драйверу путём подмены значений всего двух WinApi.
0
maxillion
273 / 183 / 38
Регистрация: 25.12.2012
Сообщений: 616
04.01.2015, 05:04 #18
Удалите дубликат , толи инет заглючил толи браузер.
0
raxp
10165 / 6551 / 477
Регистрация: 28.12.2010
Сообщений: 21,166
Записей в блоге: 1
04.01.2015, 12:44 #19
частота небольшая, далеко не реалтайм
ни о чем.
0
04.01.2015, 12:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2015, 12:44
Привет! Вот еще темы с ответами:

Работа с LPT - C++
Всем привет !! У меня такая проблимка мне надо написать программу которая будет выщитывать двоичный код затем обращаться к лпт порту и ...

Управление LPT портом - C++
Нужно управлять LPT портом в BORLAND C++ 3.1 Подскажите каким образом осуществлять ввод и запись в порт информации.

LPT порт, Ubuntu, code::blocks - C++
Итак, название темы говорит само за себя. Нужно в консольном приложении code::blocks под Ubuntu читать и писать данные из/в LPT-порт. Если...

Управление LPT портом под FreeBSD - C++
Здравствуйте! Пытаюсь откомпилировать следующий код под FreeBSD: #include <stdio.h> #include <fcntl.h> #include <sys/ioctl.h> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru