2011-01-16 8 views
4

나는 PNI Corp에서 개발 한 센서를 우주 공간 융합이라고 부릅니다. C++에서이 장치와 인터페이스해야하고 장치에서 계속 새 데이터를 읽어야합니다.HID에 말하기

장치를 컴퓨터에 연결하면/dev/hidraw1 및/dev/hidraw2가 표시됩니다. 또한/dev/usb/hiddev0이 나타납니다.

제 문제는 이러한 장치를 읽는 방법을 모른다는 것입니다. 온라인에서 예제 나 문서를 찾을 수 없습니다. 나는 이걸 어디에서 시작해야할지조차 몰라. 나는 가능한 해결책으로 libhid와 hiddev를보고 있었지만, 아직은이 라이브러리들을 사용하는 방법을 알 수 없다.

그래서이 휴먼 인터페이스 장치를 리눅스 컴퓨터의 C++에서 어떻게 읽습니까? 예제는 크게 감사하겠습니다. 감사합니다. . 시스템 호출을 작성 http://libusb.sourceforge.net/doc/index.html

#include <libusb.h> 

또 다른 방법은/dev에/USB/hiddev0 읽기와 같은 간단한 파일 읽기 :

답변

1

당신은 libusb를 라이브러리를 사용합니다. 다음을 참조하십시오 : man open, man 2 read, man 2 write.

#include <fcntl.h> 
    #include <unistd.h> 
1

앞서 복잡한 길을 가졌습니다. 먼저 "우주 공간 융합"에 대한 정보가 필요합니다 (문서와 함께 제공되기를 바랍니다).

같은 제품 ID/공급 업체 ID와 같은 일부 초기 값

터미널 명령을 사용하여 얻을 수있다 :

lsusb 

다음, 당신은 아마 끝점을 알아야합니다, 다시 사용하여 볼 수있는 :

lsusb -v 

여기에서 장치의 어떤 주소를 쓸 수 있는지, 그리고 어떤 주소를 읽을 수 있는지 (가능하면 읽기/쓰기 버퍼의 크기)를 확인할 수 있습니다. 그러나 이것은 적절한 문서없이 얻을 수있는 한도 내입니다. 장치에 쓸 값과 장치에서 기대할 값을 알아야합니다.

당신이 장치 시도에 /에서 읽기/쓰기이 예제를 따라 값 뭔지 알아 가정 :

http://www.lvr.com/code/generic_hid.c

또한하지 않는 장치가 호환 HID되는 가정을 만드는 중이라서 전혀 그렇지 않아야합니다. 어쨌든, 나는 당신의 USB 여행을 잘하길 기원합니다.

1

hidraw 장치에서 hexdump를 실행하고 'spacepoint-fusion'에 일부 입력을 만드십시오. 당신은 몇 가지 유용한 데이터를 얻을 경우

$ hexdump -C /dev/hidraw1 

, 다음 가장 쉬운 방법은 장치에서 입력을받을 open()read()을 사용하는 것입니다. 각 read()은 장치에서 한 패킷의 정보를 반환해야합니다. 장치에 대한 설명서가 필요하거나 패킷의 의미를 리버스 엔지니어링 할 준비가되어 있어야합니다.

관련 문제