2014-04-23 6 views
5

Windows 7에서 node-hid (https://github.com/node-hid/node-hid) 모듈이 작동하려고합니다. 장치를 열고 쓸 수 있지만 데이터가 도착하지 않습니다.Windows에서 노드 숨기기 작동

기기가 데이터를 전송하고 있음을 확인했습니다. 나는 노드 HID 코드 (HID.cc)를 통해 파고 몇 가지 시도가 작업을 진행했습니다

  • 그 반환 있는지 확인하기 위해 루프에 hid_read_timeout을 사용하는 HID :: recvAsync 기능을 수정 아무것도.
  • 차단 및 비 차단을 모두 설정하십시오.
  • 장치가 보내는 내용에 맞게 버퍼 크기가 변경되었습니다.

Windows 8에서 hid_read_timeout 호출을 변경하면이 모든 것이 정상적으로 작동합니다. 두 시스템간에 무엇이 바뀌 었는지는 잘 모르겠지만 Windows XP에서도이 점을 사용할 계획이므로 좋다고 부를 수는 없습니다.

저는이 문제를 디버깅하는 방법에 관해 더 많은 아이디어를 내놓으려고 애 쓰고 있습니다. 누구든지 성공적으로 전에 이것을 했습니까? Node.js를 HID 장치와 함께 사용하는 것이 더 좋은 선택입니까?

+0

스누피와 같은 것을 시도해 본 결과 데이터가 기기에 전송되는지 확인 했습니까? 'npm install'을했을 때 모든 것이 올바르게 빌드 되었습니까? – Brad

+0

브래드 (Brad)에 대한 답변에서 예, HIDAPI를 사용하는 다른 코드로 테스트 한 결과 두 가지 방식으로 메시지가 만들어졌습니다. 이상하게도 Windows 8 컴퓨터에서이 코드를 사용하면 코드가 hid_read_timeout 호출을 사용하게됩니다. 내 Windows 7 컴퓨터를 다시 시작하지 않는 습관이 나를 물 으려고하는지 궁금해지기 시작했습니다. 업데이트가있는 컴퓨터로 돌아 가면 게시 할 예정입니다. – Chris

+0

하드웨어로 작업하지 않는 한 절대로 다시 시작하지 않습니다. 내가 제대로 작동하지 않는 USB 칩셋에 이상한 문제가 발생했습니다. 거기에 뭔가 있을지도 몰라. – Brad

답변

2

심각한 디버깅을 한 후, 어떤 이유로 소스 파일 HID.cc를 노드 모듈 노드 -hid가 생성자 내에서 hid_init() 호출을 필요로했는지 알 수 없었습니다. hid_open 호출 전에. 나는 여하튼 hid_open이 필요하기 전에 hid_init를 호출하는 안전성을 높이기 위해 여러 스레드에서 충돌하는 것으로 가정하고 있습니다.

는 지금이 모두 Windows 7 및 Windows 8 수 있도록 내가 가진 변화의

요약 작업이 있습니다 내가 사용하고 전화 hid_open 전과 hid_init를 추가합니다. 루프에서 hid_read를 hid_read_timeout으로 변경하십시오. (그렇지 않으면 Windows XP에서는 종료 할 때 읽지 않습니다.)

일단 정리하면 작성자에게 변경 사항을 보냅니다.

+0

감사합니다. – Jay