2014-04-23 22 views
5

Tôi đang cố gắng để có được mô-đun nút-hid (https://github.com/node-hid/node-hid) hoạt động trên Windows 7. Tôi có thể mở một thiết bị và ghi vào nó, nhưng không có dữ liệu nào đến.Bắt node-hid làm việc trong Windows

Tôi đã xác minh thiết bị đang gửi dữ liệu. Tôi đã đào thông qua các mã nút-HID (HID.cc) và cố gắng một vài điều để làm cho nó làm việc:

  • Modified HID :: chức năng recvAsync sử dụng một hid_read_timeout trong một vòng lặp để xem nếu điều đó sẽ trở lại bất cứ điều gì.
  • Đặt cả chặn và không chặn.
  • Thay đổi kích thước bộ đệm để khớp chính xác với những gì thiết bị gửi.

Trên Windows 8, với thay đổi cuộc gọi hid_read_timeout, tất cả đều hoạt động tốt. Tôi không chắc chắn những gì có thể đã thay đổi giữa hai hệ thống, nhưng tôi có kế hoạch sử dụng trên Windows XP là tốt, vì vậy tôi không thể chỉ gọi nó là tốt.

Tôi đang cố gắng tìm ra thêm ý tưởng về cách gỡ lỗi vấn đề này. Có ai đã làm điều này thành công trước đây không? Có một lựa chọn tốt hơn để sử dụng Node.js với một thiết bị HID?

+0

Bạn đã thử một cái gì đó giống như Snoopy để xem liệu dữ liệu của bạn có đang chuyển sang thiết bị không? Khi bạn đã cài đặt 'npm install', mọi thứ có được xây dựng chính xác không? – Brad

+0

Trong câu trả lời cho Brad, có, các tin nhắn đang làm cho nó cả hai cách như tôi đã thử nghiệm nó với mã khác sử dụng HIDAPI. Thật kỳ lạ, hãy thử điều này trên máy tính Windows 8 Tôi đã hoạt động khi tôi đã thực hiện mã sử dụng lệnh gọi hid_read_timeout. Tôi bắt đầu tự hỏi nếu thói quen của tôi không khởi động lại máy tính Windows 7 của tôi là đến để cắn tôi. Tôi sẽ đăng khi tôi có thể quay lại máy đó bằng bản cập nhật. – Chris

+0

Tôi không bao giờ khởi động lại ... trừ khi làm việc với phần cứng. Tôi đã có vấn đề lạ với chipset USB, nơi mọi thứ không hoạt động đúng cách. Bạn có thể vào một cái gì đó ở đó. – Brad

Trả lời

2

Sau khi gỡ lỗi nghiêm trọng, tôi thấy rằng vì một lý do nào đó mà tôi chưa xác định được, tệp nguồn, HID.cc cho nút node-hid cần gọi hàm hid_init() bên trong hàm tạo trước cuộc gọi hid_open. Tôi giả định rằng bằng cách nào đó đây là nhận được nhấn với nhiều chủ đề, làm cho sự an toàn của gọi hid_init trước khi hid_open cần thiết.

bây giờ tôi có điều này làm việc trên cả Windows 7 và Windows 8.

Tóm tắt các thay đổi mà tôi đã thực hiện: Thêm hid_init trước hid_open gọi Tôi đang sử dụng. Thay đổi hid_read thành hid_read_timeout trong một vòng lặp. (Kể từ khi đọc sẽ không trở lại trên Windows XP khi tắt khác.)

Khi tôi đã làm sạch nó, tôi sẽ gửi tác giả thay đổi của tôi.

+0

cảm ơn vì điều này – Jay

Các vấn đề liên quan