2010-05-26 2 views
1

나는 마이크로 컨트롤러를 사용해야하는 새로운 프로젝트에 들어갔다. 이를 프로그램하는 가장 쉬운 방법은 병렬 포트를 사용하는 것입니다. 그러나, 당신이 저를 도울 수 있기를 바랍니다. 아, 선호하는 언어는 C와 플랫폼 Windows입니다.Windows에서 LPT 제어

그래서 LPT 포트와 Windows를 조금 연구했으며, 가장 중요한 점은 Windows NT 기반 시스템이므로 직접 포트 조작에 대한 지침을 사용할 수 없다는 것입니다. 이제는 프로그램이 outport() 함수에서 사용되는 종류의 명령을 지원하지 않는 다른 권한 모드로 실행되기 때문에 이렇게해야합니다.

그러나이 시점에서 나는 몇 가지를 이해하지 못합니다. 첫째, Windows가 실제로 첫 번째 보호 모드 버전부터 권한 수준을 사용했다고 생각했지만 잘못된 가정입니다.

그러나 더 중요한 것은 Windows가 모든 하드웨어 통신과 관련된 기능을 포함하고 있다고 생각했습니다. 내 말은, 요즘 Windows에서 당신이하는 일은 윈도우 서비스를 호출하여 커널 서비스를 호출하는 것입니다. 나는 outport()이 어떤 Windows 기능을 사용하지 않으며, 지금은 금지되어있는 통신 자체를 작성한다고 가정했습니다. 그러나 나는 현대 Windows 시스템에서 병렬 포트를 제어하는 ​​시스템 기능이 없다는 사실에 현혹되어 있습니다. 적어도 그것은 내가 읽은 것입니다.

하지만 병렬 포트를 제어 할 수 있다고해도 두 번째 문제가 발생합니다. 컨트롤러를 프로그래밍하려면 특별한 프로토콜, 특히 타이밍을 따라야합니다. 그러나 Windows가 멀티 태스킹되기 때문에 Scheduler가 다른 응용 프로그램으로 전환하면 LPT에서 신호를 전환 할 적절한시기가 언제인지, 내 프로그램이 실행되지 않을지 걱정됩니다.

오, 그건 그렇고, 제 3 자 앱을 사용할 수는 있지만, 제 3 자 앱을 사용하기 전에 적어도 어떻게 할 수 있는지 알고 싶습니다. 그것은 작동합니다. 그리고 네, 일부 레지스터와 병렬 포트로 일부 마이크로 컨트롤러를 프로그래밍 할 수 있습니다. 확실히 알고 있습니다.

감사합니다.

답변

3

Windows의 경우 HW 포트에 액세스하기 위해 상승 된 권한으로 실행되는 드라이버가 포함 된 DLL을 설치해야합니다.

당신은 그러한 라이브러리를 찾을 수 있습니다

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

코드 샘플 몇 가지 링크도 있습니다.

어떤 uController를 사용하고 있는지 알 수는 없지만 과거에는 다양한 프로그래밍을했고 타이밍 프로그래밍에 문제가 없었습니다. 프로그래밍 프로토콜은 일반적으로 멀티 태스킹으로 인해 발생하는 지터를 처리 할 수있을 정도로 견고합니다. 시계 가장자리와 신호 가장자리를 잘 분리하면 잘 처리됩니다.