|
마그네틱 바를 읽는 기계가 컴퓨터의 시리얼(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++로 다시 짜는게 더 편할꺼 같다는 생각도 드네요.망구 제생각이지만요.
: 너무 툴에 의존한다는 생각이 드네요...^^ 그래도 좋은게 좋은거죠.
: 옛날 도스시절 윈도우 프로그램 짜신분들 정말 대단하다고 느낍니다.
: 직접 컴파일을 안해보면 어려울까요?
: 그래도 여긴 고수님들 많으시니...많은 조언 부탁드립니다.
: 혹시나 하고 던진 말씀이..사막에 오아시스 같이..저에겐..단비가 될수 있으니깐요...
|