문제

Libhid를 사용하여 PIC 마이크로 컨트롤러에서 개발중인 사용자 정의 HID 장치에 액세스하는 데 관심이 있습니다. test_libhid 코드를 실행할 수있었습니다. 이 라이브러리를 사용하여 장치를 읽고 쓰는 지침은 test_libhid 코드의 주석으로 제공됩니다.

나는 읽기와 쓰기를위한 문서화 된 기술을 따르려고 시도했지만 지금까지는 장치를 성공적으로 읽거나 쓸 수 없었습니다. 그 이유는 장치의 보고서 디스크립터가 입력 및 출력 데이터 보고서 모두에 대해 64 바이트 배열을 지정하기 때문일 수 있습니다.

usb.org의 HID 섹션에 대한 장치 클래스 정의에 포함 된 세부 사항을 읽었으며 설명자가 일반적으로 어떻게 작동하는지와 HID 경로로 변환되는 방법을 이해한다고 생각하지만 장치에 데이터를 읽고 쓰려는 시도는 실패한.

장치가 Windows에서 작동하는지 확인 했으므로 내 문제가 Linux 측에있는 것으로 보입니다. 나는 그것이 중요하다고 생각하지 않지만, 현재 Ubuntu 8.04 서버로로드 된 VMware 가상 머신에서 일하고 있다는 점에 주목해야합니다.

누구나 다음 보고서 디스크립터 (LSUSB –VVV에서 생성)에 대한 HID 경로를 지정하는 방법에 대한 지침을 제공 할 수 있습니까?

Report Descriptor: (length is 29)
    Item(Global): Usage Page, data= [ 0x00 0xff ] 65280 
                        (null)
    Item(Local ): Usage, data= [ 0x01 ] 1
                        (null)
    Item(Main  ): Collection, data= [ 0x01 ] 1
                        Application
    Item(Local ): Usage Minimum, data= [ 0x01 ] 1
                        (null)
    Item(Local ): Usage Maximum, data= [ 0x40 ] 64
                        (null)
    Item(Global): Logical Minimum, data= [ 0x00 ] 0
    Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
    Item(Global): Report Size, data= [ 0x08 ] 8
    Item(Global): Report Count, data= [ 0x40 ] 64
    Item(Main  ): Input, data= [ 0x02 ] 2
                  Data Variable Absolute No_Wrap Linear
                  Preferred_State No_Null_Position Non_Volatile Bitfield
    Item(Local ): Usage Minimum, data= [ 0x01 ] 1
                        (null)
    Item(Local ): Usage Maximum, data= [ 0x40 ] 64
                        (null)
    Item(Main  ): Output, data= [ 0x02 ] 2
                        Data Variable Absolute No_Wrap Linear
                        Preferred_State No_Null_Position Non_Volatile Bitfield
    Item(Main  ): End Collection, data=none

또한 test_libhid 프로그램을 실행하면 구문 분석 트리를 다음과 같은 64 개의 동일한 항목으로 덤프합니다.

path: 0xff000001.0x00000000; type: 0x80

이것들은 아마도 입력 일 것입니다. 이 목록에 이어 다음과 같이 보이는 또 다른 64 개의 항목이 이어집니다.

path: 0xff000001.0x00000000; type: 0x90

나는 Libhid 메일 링리스트에 게시했지만 최근에는 많은 활동이 없었기 때문에 여기에 질문을 가져올 것이라고 생각했습니다. 이 입력 및 출력 보고서의 HID 경로가 어떻게 지정되어야하는지에 대한 지침을 제공 할 수 있다면 엄청난 도움이 될 것입니다.

감사.

도움이 되었습니까?

해결책

많은 시행 착오 후, 나는 Libhid가 대상 장치의 보고서 디스크립터와 함께 일할 수 없었습니다. HIDDEV (HID Device Interface)가 매우 잘 작동했으며 실제로 이해하기 쉽다는 것을 알았습니다. 좋은 것이 있습니다 HIDDEV에 대한 PDF 참조 내가 강력히 추천합니다. 또한/usr/include/linux의 hiddev.h 포함 파일도 매우 도움이되었습니다. Ubuntu 8.04에서 Hiddev 인터페이스는 추가 구성이 필요없이 "상자 밖으로"작동했습니다.

바라건대 이것은 HID 장치를 Linux 호스트에 인터페이스하는 데 문제가있는 다음 사람에게 도움이 될 것입니다.

참고 : 위의 .pdf 파일에 제공 한 링크는 사라진 것 같습니다. 나는 a를 게시했다 .pdf 파일의 사본은 여기에 있습니다. 무료 파일 공유 서비스이므로 다운로드하려면 몇 가지 광고를 견뎌야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top