2010-02-19 5 views
1

.NET을 사용하는 USB 개발자가 있습니까?.NET 클래스를 사용하여 USB HID와 통신하기

USB HID 장치와 통신하는 한 가지 방법은 CreateFile, WriteFile 및 ReadFile 같은 Windows API에 대한 래퍼를 만드는 것입니다. 하지만 같은 일을하기 위해 .NET 클래스 중 하나를 사용할 수 있는지 알고있는 사람이 있는지 궁금합니다. 나는 어떤 디바이스가 버스에 있는지 감지하고 dectriptor를 요청하는 것과 같은 연산을 위해 API의 일부를 사용해야 만한다는 것을 확신하지만 리포트를 보내거나받는 .NET 메소드를 찾고있다. 예를 들어 Stream Class 또는 StreamWriter 및 StreamReader를 사용할 수 있다고 생각하지만 잘 모르겠습니다.

+0

일부 USB는 Win32 API를 사용하고 IO는 겹쳤지 만 .NET에서는 사용하지 마십시오. 그러나 장치에 파일 핸들이 있다면 그것을 사용하여 스트림을 인스턴스화 할 수 있습니다 (SafeFileHandle 및 무엇)? –

+0

그게 내가 생각했던 것이지만 잘 모르겠다 ... 누군가가 그것을 시도하고 바란다. – PICyourBrain

답변

2

System.IO.FileStream 클래스는 매우 적합한 대체 파일입니다. 생성자는 CreateFile()을 호출하고 Read 메서드는 ReadFile()을 호출하고 Write 메서드는 WriteFile()을 호출합니다. FileAcces, FileMode 및 FileShare 열거 형을 해당 CreateFile() 인수와 비교하는 데는 거의 문제가 없어야합니다. 그러나 SetupAPI 기능을 P/호출해야합니다.

+1

SetupAPI 함수에 의해 반환 된 장치의 경로는 "\\\\? \\ hid # vid_0461 & pid_4d15 # 6 & 3535d8ec & 0 & 0000 # {4d1e55b2-f16f-11cf-88cb-001111000030} " FileStream을 시도하면 myStream = System.IO.File.OpenRead (위 경로); 경로에 불법 문자를 말하는 데 오류가 발생합니다. – PICyourBrain

+0

아참, 그래? 문자는 FileIOPermission 클래스에 의해 경로에 대한 검사를 통과하지 못합니다. 거기에 버그가 있지만 그렇지 않으면 어려울 것입니다. P/Invoking CreateFile을 많이 사용하면 FileStream (SafeFileHandle, FileAccess) 생성자를 통해 FileStream을 계속 사용할 수 있습니다. –

+0

나는 이것을 조금 해봤지만 운이별로 없었다. 어쨌든 래퍼를 만들 필요가있는 HID API가 여전히 많아서 총알을 비트하고 FileStream을 포기합니다. – PICyourBrain

1

아마도 P/Invoke 호출을 모두 감싸는 라이브러리를 사용하면 더 많은 행운을 누릴 수 있습니다. 내가 본 것은 HidLibrary입니다.

+0

HidLibrary는 나를 위해 경이로운 작업을하고 있습니다. 포인터 주셔서 감사! – abelenky

0

FileStream은 나를 위해 충분히 잘 작동하지만, 광산은 매우 간단한 USB 구현입니다.

CreateFile을 사용하여 처음에는 장치를 설정했지만 FileStream 개체를 통해 장치에 대한 모든 읽기 및 쓰기를 수행합니다.

관련 문제