Управление LPT в Windows - PullRequest
1 голос
/ 27 мая 2010

Я в новом проекте, который должен использовать микроконтроллер. Самый простой способ запрограммировать это - использовать параллельный порт. Но есть несколько вещей, с которыми я надеюсь, вы сможете мне помочь. Да, и предпочтительным языком является C и платформа Windows.

Итак, я немного изучил LPT-порты и Windows, и из того, что я узнал, наиболее важно то, что: поскольку в системах на базе Windows NT вы не можете использовать инструкции для прямого манипулирования портами. Это должно быть потому, что теперь программы запускаются в другом режиме привилегий, который не поддерживает инструкции, используемые функцией outport().

Но на данный момент я не понимаю нескольких вещей. Во-первых, я думал, что Windows фактически использовала уровни привилегий с первой версии защищенного режима, но это неверное предположение.

Но что еще более важно, я подумал, что Windows включает функции практически для любой аппаратной связи. Я имею в виду, что все, что вы делаете в Windows в эти дни, вы просто вызываете функции Windows, которые дополнительно вызывают службы ядра. Я предположил, что outport() не использует функцию Windows, а просто устанавливает связь, что сейчас запрещено. Но я буквально шокирован тем, что в современных системах Windows нет системной функции для управления параллельными портами. По крайней мере, это то, что я прочитал.

Но даже если бы я мог получить контроль над параллельным портом, наступает моя вторая проблема. Для программирования контроллера мне нужно следовать специальному протоколу, особенно времени. Но поскольку в Windows многозадачность, я беспокоюсь о том, что если планировщик переключится на другое приложение, и, следовательно, когда наступит подходящее время для переключения сигналов на LPT, моя программа просто не сможет работать.

Да, кстати, я знаю, что могу использовать любые сторонние приложения, но я просто хотел бы иметь возможность сделать это сам, или, по крайней мере, прежде чем использовать какое-либо стороннее приложение, я хочу знать, как оно работает. И да, вы можете программировать некоторые микроконтроллеры только через параллельный порт с некоторыми резисторами, я знаю это точно.

Спасибо.

1 Ответ

3 голосов
/ 27 мая 2010

Для окон вам необходимо установить DLL, которая содержит драйвер для запуска с повышенными привилегиями для получения доступа к портам HW.

Вы можете найти такую ​​библиотеку по адресу:

http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html

Есть также несколько ссылок на пример кода.

Я не знаю, какой uController вы используете, но в прошлом я программировал множество из них, и у меня никогда не было проблем с таймингами, по крайней мере для программирования. Протоколы программирования обычно достаточно устойчивы, чтобы справиться с дрожанием, вызванным многозадачностью. Просто держите края часов и синга хорошо разделенными, и все должно получиться хорошо.

...