2012-11-04 4 views
2

Visual Basic에서 ISA 카드에 뭔가를 쓸 수있는 가능성이 있습니까? Windows XP 이상용? (I 승 XP 알고 U 직접 포트에 데이터를 기록하지 못할 수 있도록 더 높은 제한이)Visual Basic과 ISA 포트 통신

내가 또한 몇 가지 연구를하고 난 상황을 이해한다면 난 단지 2 가지 옵션이 있습니다 :

  1. 쓰기 드라이버를 (매우 문제가있는 옵션 :)) 또는

  2. kernel32에서 기존 드라이버를 사용하여 직렬/병렬 버스 포트로 드라이버를 사용해 봅니다. 다른 옵션이이 arent 경우

, 어떻게 ISA 포트를 위해 그것을 사용하는 "시리얼 /, 병렬 포트의 사용"수정해야?

+0

일반적으로 ISA 버스에 쓰려고합니까? 아니면 특정 ISA 카드와 통신하려고합니까? 그렇다면 어떤 카드입니까? –

+0

Im (특정 종류의 LED 패널 제어) 특정 ISA 카드에 쓰려고하는데 어떤 종류인지 모르지만 예전의 HW는 내 도메인이 아닙니다 :) – astromedia

+0

그래서 ... 돈이 없다면 어떻게해야합니까? 그게 뭔지 알아? 통신 프로토콜이 있습니까? 그 기능에 관한 문서? –

답변

1

최신 버전의 Windows에서는 사용자 응용 프로그램에서 직접 포트 I/O를 허용하지 않습니다. 프로그램은 링 0이 아닌 링 3에서 실행됩니다. 응용 프로그램을 대신하여 포트 I/O를 수행하려면 드라이버가 필요합니다.

먼저 카드 제조업체에 연락하여 보드 용 Windows 드라이버를 만들었는지 확인하십시오.

Windows 드라이버를 사용할 수없고 기본적인 라이브러리 읽기 및 쓰기 (인터럽트 또는 DMA 없음) 만 수행하려는 경우 포트 I/O를 다운로드하기 위해 다운로드 할 수있는 라이브러리가 무료로 제공됩니다. 기본적으로 라이브러리에는 링 0에 앉아 있고 I/O를 수행하는 더미 "드라이버"가 포함되어 있습니다. 나는 대부분의 경험이 WinIO입니다.

WinIO에는 .Net/CLR이없는 C/C++ API가 있습니다. P/Invoke를 사용하여 관리 코드에서 WinIO 함수를 호출해야합니다.

주위를 검색하는 경우 관리 코드에 API를 제공하는 WinIO와 유사한 도구 키트를 찾을 수 있습니다. (편집 : 여기에 DirectIO이라는 책갈피가 있습니다.)

WinIO의 가장 큰 문제점은 기본 레지스터 읽기/쓰기로 제한된다는 것입니다. 인터럽트 또는 DMA가 필요한 경우 운이 없게됩니다. 이 시점에서 "실제"드라이버를 작성해야합니다.

드라이버를 작성하는 것은 초보자에게는 꽤 중요한 작업이 될 수 있습니다 (많은 실수가 있습니다). 먼저 Windows Driver Kit 사본을 받고 Microsoft의 Kernel Mode Driver Framework을 학습해야합니다. Jungo WinDriver 사본을 구매할 수도 있습니다. WinDriver는 드라이버 개발을 상당히 단순화 해주는 타사 도구이지만 일회용 프로젝트에는 상당히 비쌉니다.

+1

대답을위한 Thx, 당신이 최악의 옵션에 대해 말한 것처럼 WDK와 샘플 드라이버에 대한 연구를 해봤지만, 꽤 중요한 작업은 아니지만, 많은 스크류가 있습니다. . 만약 WinIO가 ISA 카드에서 쓰고 읽을 수 있다면, 나는 더 이상 아무것도 필요 없다고 생각하기 때문에 내 문제를 해결할 것입니다. 내가 할 수있는 한 빨리 시험해 보겠다. (나는 오래된 슬롯과 함께 오래된 컴퓨터를 가져와야한다. 그리고 somethink가 잘못 되었다면 파괴 할 수있는 카드도있다.) 나는 나의 프로젝트를 위해 목표 장치를 파괴하고 싶다. :) 그리고 나는보고 할 것이다. 여기 어떻게 가는지. (나는 그것이 바르게 번역되기를 바란다 :)) – astromedia