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

C++빌더 Q&A
C++Builder Programming Q&A
[41032] Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다.
황경록 [mpbox] 1024 읽음    2005-07-13 21:40
마그네틱 바를 읽는 기계가 컴퓨터의 시리얼(Com) 포트에 연결되어 있고
이 데이터를 읽는 거라면...

-_-;;;;;

그 단말기계의 프로토콜 문서 및 Specification 문서를 찾아 통신단만 맞춰주시면 될 것 같습니다.

인터럽트 벡터 테이블을 등록하고 제어하는 것은 결국 시리얼 포트를 로우레벨단에서 건들이려는
시도인데 -_- 결국 윈도우에서는 VXD 또는 WDM 쪽으로 가야 합니다. R0 레벨로 가도 또 윈도우에서
제공하는 저수준 R0 함수를 사용해야 하죠.

일은 쉽게 하는게 최고의 미덕이 아닌가 생각됩니다만 -.0

이윤성 님이 쓰신 글 :
: 질문이 너무 자주 올라 오는거 같아서 죄송합니다. ^^;
:  저부분을 바꿀려는데..
:  __interript 이거는.. 도스랑 윈도우에서 다 같이 쓰이는 함수인거 같습니다.
:  msdn 에도 나와 있네요.....
:  근데 저는 함수를 짜면서 저런 형식의 함수는 처음 본거 같습니다.

:
: extern void (__interrupt  *int_alt_com1)() ;
: extern void (__interrupt  *int_alt_com2)() ;
: extern void (__interrupt  *int_alt_com3)() ;
: extern void (__interrupt  *int_alt_com4)() ;
: extern void (__interrupt  *int_alt_com5)() ;
: extern void (__interrupt  *int_alt_com6)() ;
: extern void (__interrupt  *int_alt_com7)() ;
: extern void (__interrupt  *int_alt_com8)() ;
:
:  이런식으로 쭉 되어 있거등요...근데 찾아보니 저런 형식도 정의가 되어 있더군요.
: __interrupt   에대해서 찾아 보면..
:  ////////////////////////////////////////////////////////////////////////////////
: Synopsis:
:     #include <dos.h>
:     void (__interrupt __far *_dos_getvect(unsigned intnum))();
:
: Description:
:     The _dos_getvect function gets the current value of interrupt vector
:     number intnum.
:
: Returns:
:     The _dos_getvect function returns a far pointer to the current interrupt
:     handler for interrupt number intnum.
:
: Example:
:     #include <stdio.h>
:     #include <dos.h>
:
:     volatile int clock_ticks;
:     void (__interrupt __far *prev_int_1c)();
:     #define BLIP_COUNT  (5*18)  /* 5 seconds */
:
:     void __interrupt __far timer_rtn()
:       {
:         ++clock_ticks;
:         _chain_intr( prev_int_1c );
:       }
:
:     int delays = 0;
:
:     int compile_a_line()
:       {
:         if( delays > 15 ) return( 0 );
:         delay( 1000 );  /* delay for 1 second */
:         printf( "Delayed for 1 second\n" );
:         delays++;
:         return( 1 );
:       }
:
:     void main()
:       {
:         prev_int_1c = _dos_getvect( 0x1c );
:         _dos_setvect( 0x1c, timer_rtn );
:         while( compile_a_line() ) {
:             if( clock_ticks >= BLIP_COUNT ) {
:                 putchar( '.' );
:                 clock_ticks -= BLIP_COUNT;
:             }
:         }
:         _dos_setvect( 0x1c, prev_int_1c );
:       }
:
: Classification:
:     WATCOM
:
: Systems:
:     DOS, Windows, DOS/PM
:
: See Also:
:     _chain_intr, _dos_keep, _dos_setvect
:
:
: ////////////////////////////////////////////////////////////////////
:  인데 가만히 보면 윈도우에서도 쓰이는거 같거등요.__far* 야 그냥 제거 하면 되는거구..
:  msdn 에서도 찾아 봤는데..
:  문제가 생기면..
:  __fastcall 을 적어 주라고 하더군요..
:  extern void __fastcall (__interrupt  *int_alt_com1)() ; 이렇제 적어 주어도..
:  에러는 계속 나는거 같습니다.
:  지금 라이브러리 부분부터 32bi 로 바꾸고 있는데...
:  무사히 지나치는 함수가 한개도 없네요...
:  모가 저리 함수가 많은지... 프로그램 자체는 무지 간단한 기능인데..
:  그냥 마그네틱에서 식호 읽은 기계에서 comport 전송받아서 돈 계산 하는거거등요...
:
: 에공...한숨만 푹푹 나옵니다.
:  아마 저 언어들은 지금은 거의 안쓰이겠죠.유닉스 쪽에서는 쓸려나...
:  이럴줄 알았으면...c 언어 처음 배울때..기초부터 꼼꼼히 배워 두는건데....
: 툴을 잘쓰지도 못하지만..
:  가끔은 툴의 위해함을 느끼지만..가끔은 그 툴때문에..무언가가..새로운게 막힐때는 사정 없이 막힌다는 느낌이 듭니다.
:  차다리 그냥 처음부터 볼랜드 c++로 다시 짜는게 더 편할꺼 같다는 생각도 드네요.망구 제생각이지만요.
:  너무 툴에 의존한다는 생각이 드네요...^^ 그래도 좋은게 좋은거죠.
:  옛날 도스시절 윈도우 프로그램 짜신분들 정말 대단하다고 느낍니다.
:  직접 컴파일을 안해보면 어려울까요?
:  그래도 여긴 고수님들 많으시니...많은 조언 부탁드립니다.
:  혹시나 하고 던진 말씀이..사막에 오아시스 같이..저에겐..단비가 될수 있으니깐요...

+ -

관련 글 리스트
41030 extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 이윤성 1586 2005/07/13
41032     Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 황경록 1024 2005/07/13
41035         Re:Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 이윤성 806 2005/07/14
41036             Re:Re:Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 황경록 858 2005/07/14
41039                 Re:Re:Re:Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 이윤성 834 2005/07/14
41051                     Re:Re:Re:Re:Re:extern void (__interrupt *int_alt_com1)() 에 관한 질문입니다. 라스코니 942 2005/07/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.