2010-01-30 1 views
1

다음 카드를 가지고 있는데 인터 럽트가 작동하지 않습니다. 나는 그들이 어떻게 올바르게 작동해야 하는지를 이해하지 못할 수도 있습니다 ... 나는 자주 이런 유형의 프로그래밍을하지 않습니다.이 하드웨어 IO 카드로 인터럽트를 활성화하고 감지하려면 어떻게합니까?

뭔가가 IO 포트 중 하나에 들어 왔을 때 인터럽트를 생성 할 수 있어야합니다. 맞습니까? 우리는 기계 작동을위한 많은 스위치를 연결해야합니다.

http://accesio.com/go.cgi?p=../pci/pci_dio_24d.html

나는 최대한 빨리 내가 ​​함께 일하고 있어요 코드의 일부를 게시합니다. 내가 가진 + + 0xE하지만 뭔가 도움이되지 않는 기본 주소 (무언가를 쓰려고 노력하고있어 ... AIOWDM WaitForIRQ 메서드는 그냥 그것을 호출 할 때마다 0 반환 ... 아무 일도 발생하지 않습니다.

도움을 주시면 감사하겠습니다 ... 본인이 일반적인 질문이라고 생각합니다.

업데이트 : 제공하는 샘플 응용 프로그램도 인터럽트를 감지하지 못하고 올바르게 점퍼를 설치 했으므로 모든 항목에 대해 인터럽트를 발생시키는 것은 아닙니다. 추측합니다. 각 스위치를 특정 IO 핀까지 연결해야하고 한 핀이 인터럽트를 담당해야합니다 ...

+0

C#에서 하드웨어 인터럽트를 처리하고 싶습니까? –

+0

제공되는 AIOWDM 구성 요소에는 P/Invoke 인 WaitForIRQ 메서드가 있습니다. –

+1

이 하드웨어에 드라이버가 설치되어 있습니까?내가 묻는 이유는 인터럽트가 발생하지 않기 때문에 드라이버가 하드웨어와 통신하지 않을 가능성이 있기 때문입니다. 어떻게 생각해? – t0mm13b

답변

0

요컨대 C#은 저급이기 때문에 이러한 종류의 작업에는 적절한 언어가 아닙니다. 비 관리 코드. 이론적으로는 그렇게 할 수 있지만, 인터럽트를 처리하기 위해서는 관리되지 않는 세계로 자주 출근해야하므로 더 고통 스러울 것입니다. C/C++ 네이티브 코드 같은 것을 보면 좋을 것입니다.이 코드는 성능이 좋고 이런 종류의 저급 요소를 처리 할 수 ​​있습니다.

C#이 자체 가비지 수집을 가지고 있기 때문에 또 하나의 이유는 인터럽트 처리 메커니즘이 가비지 콜렉션에서 처리되었으므로 인터럽트 처리에 사용되는 귀중한 데이터 구조에 대한 것이므로, 이 점에서 코드에 상당한 오버 헤드가 추가됩니다.

개인적으로, 나는 이런 종류의 것을 다루는 C#을 들어 본 적이 없지만, 좀 더 숙련 된 독자 중 일부는 "C#으로 작성된 Singularity라는 새로운 fangled OS는 어떻습니까?"라고 말할 것입니다. 하루가 끝날 때 .NET 런타임을 사용하여이 하드웨어 작업을 관리하는 것은 불가능합니다.

편집 : 나는 그것이 outp를 사용하는 C 코드 샘플 중 하나에, 참조 설명서보고에서 실현 후 , 그럼 당신이 직접 포트 입력 출력을해야 할 생각에 래치, 나는 생각했다 this 도움이 될 수도 있습니다, 당신이 정확하게, 입력 출력을 할 수있게됩니다 dll입니다, 당신은 적절한 p/invoke 서명을 찾아야 할 것입니다. here 같은 것을 할 수있는 또 다른 DLL이 있습니다. 또한 thisWinRing0 코드를 확인하십시오.

은 다시 말하지만, 당신은 더 이상 게시 this..feel 무료로

... 행운을 빕니다 주위에 파고 pinvoking에 적합한 적절한 방법 서명을 찾을 필요가 내가 도와하려고합니다 ... :)

호프가 도움이 되었으면 좋겠다. 감사합니다, Tom.

+0

옵션이 없습니다. C#에서이 작업을 수행해야하며 확실한 방법으로 수행 할 수 있다고 확신합니다. –

+0

@Max : 행운을 비네 ... 드라이버를 설치 했습니까? – t0mm13b

+0

설명서에서 사용중인 AOIWDM.dll 구성 요소는 드라이버입니다 ...이 dll로 카드 정보를 쿼리 할 수는 있지만 인터럽트와 함께 작동 할 수 있도록하기 위해 필요한 것입니다 ? –