NT 계열에서는 당연히 in, out을 직접 쓰지 못하죠.
무조건 Device Driver가 있어야 합니다.
근데 다행이 NT나 2000에서도 Direct Port I/O를 해주는 컴퍼넌트가 있더군요.
DLPortIO - 이거는 프리웨어인데 불행히도 빌더 5.0용이 아직 나와있지 않습니다.
제가 4.0용 갖고 어떻게 해볼라그랬는데 안되더군요.
NTPort - 이거는 빌더용 컴퍼넌트는 아니지만 라이브러리 하나만 프로젝트에 추가하면
되고 사용하기도 아주 쉽습니다. (Output(), Input() 함수만 쓰면 되죠)
단, 쉐어라서 그냥 사용하면 쉐어임을 알리는 메시지 박스가 뜨더군요.
물론 환경이 NT계열이니만큼 사용 이전에 드라이버는 설치를 해야 합니다.
저는 NTPort를 조금 써봤는데, Administrator로 로긴하면 잘 동작하는데
일반 유저로 로긴하면 안되더군요. 자세히 디버깅은 못해서 원인은 못찾았구요..
Delphi Super Page에서 찾으면 있습니다.
방태윤 님이 쓰신 글 :
: 아래는 스피커에 소리내는 부분입니다.
:
: Win98까지 이상없었는데..
:
: Win2000 에서 실행시 privileged instruction 에러가 나는군요...
:
: 해결방법이나 Win2000 에서
:
: 스피커제어를 할수있는 방법 좀 부탁드립니다.
:
: void sound(short dore,short del)
: {
: asm mov al, 0xb6
: asm out 0x43, al
: asm mov ax,dore
: asm out 0x42, al
: asm mov al, ah
: asm out 0x42, al
: asm in al,0x61
: asm or al,3
: asm out 0x61, al
: Sleep(del);
: asm in al, 0x61
: asm and al,0xfc
: asm out 0x61,al
: }
: .끝.
|