C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[500] NT에서 하드웨어 제어하기
언제나열심히 [btaylor] 8585 읽음    2003-04-08 15:40
다른일을 하다가 찾은 것입니다.

NT의 하드웨어는 직접 제어가 안되기 때문에 giveio라는 드라이버를 로드 한 다음.
제어를 수행합니다.
볼랜드에서는 없어서 어셈으로 outportb와 inportb를 함수를 만들고
직접 하드웨어의 주소로 접근합니다.

그래서 필요시 마다 찾아서 하드웨어 주소를 찾아서 쓰셔야 해요.
제거 사용한 주소는
PC내부 사운드 0x61 소스에 있음.
프린트 포트 제어는

#define LPT1 0x3bc   
#define LPT2 0x378   
#define LPT3 0x278
로 선언을 하고 다음과 같은 사용할 포트를 찾습니다. 안그러면 시스템의 하드웨어 정보에서 주소를 찾아서 쓰셔도 되구요. (제 PC는 LPT1이 0x378 더군요.  좀 허접하지요. --;)

short    cjtag::OpenLPT()
{
   outportb(LPT1,0x55) ;
   if(inportb(LPT1) == 0x55 )    return LPT1 ;
   outportb(LPT2,0x55) ;
   if(inportb(LPT2) == 0x55 )    return LPT2 ;
   outportb(LPT3,0x55) ;
   if(inportb(LPT3) == 0x55 )    return LPT3 ;
   return 0 ;
}

@!@ [btaylor]   2003-04-14 13:36 X
만약 실행시 무한 루프로 빠지면 드라이버가 잘못 로드 된것이기 때문에
@!@ [btaylor]   2003-04-14 13:37 X
레지스트리 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\giveio의 imagepath가 맞게 되어 있는지 확인하세요.
@!@ [btaylor]   2003-04-14 13:38 X
오늘 제가 시험 하다가 드라이버가 로드가 안되잖아요. 그래서 확인해보니깐. 그런 문제가 있드라구요. 왜 그런 일이 발생했는지.
@!@ [btaylor]   2003-04-14 13:39 X
레지스트리를 이것저것 건딜다 그만.. 여하간 수고하세요

+ -

관련 글 리스트
500 NT에서 하드웨어 제어하기 언제나열심히 8585 2003/04/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.