2012-10-08 25 views
11
ByteBuffer byteBuffer = ByteBuffer.allocate(9);;  
UsbRequest request = new UsbRequest(); 
request.initialize(mConnection,mEndpointIntr); 
boolean b = request.queue(byteBuffer, 9); 
Log.d(TAG, "start the request wait"); 
UsbRequest ur = mConnection.requestWait(); 

Tôi muốn sử dụng ngắt USB Android. Đoạn mã trên là một luồng để nhận dữ liệu từ bảng USB của riêng tôi. Nhưng khi tôi cố gắng gọi UsbRequest ur = mConnection.requestWait(); chức năng không trả lại, nó luôn chạy vào requestWait(). Lý do tại sao điều này xảy ra?yêu cầu usb androidWait không trả lại

Trả lời

8

Các requestWait() trong mã của bạn sẽ đợi kết quả của request.queue(byteBuffer, 9)

Dưới đây là một số lý do có thể lý do tại sao nó không được trở về:

  1. hàng đợi yêu cầu của bạn đang trên một thiết bị đầu cuối khác nhau so với những gì bạn Thiết bị USB thực sự đang gửi dữ liệu. Kiểm tra kỹ xem bạn có đang nghe đúng giao diện và điểm cuối không.

  2. Trên mặt firmware của thiết bị USB, không tạo điểm cuối ngắt của bạn trên lớp giao diện chung như HID. Tạo một giao diện nhà cung cấp cụ thể mới, nếu không hạt nhân có thể giữ giao diện nếu nó là HID và hàng đợi yêu cầu có thể thất bại, đây là những gì đã xảy ra với tôi.

0

Trên thiết bị USB HID của riêng tôi có hai điểm cuối (IN và OUT) được kết nối với MK802, tôi gặp phải vấn đề tương tự (xếp hàng yêu cầu trả về sai). Tôi đã có claimInterface được gọi là false. Thiết lập những điều sau đây đã giúp, tôi nhận được dữ liệu ổn.

c.claimInterface(device.getInterface(0), true); 
Các vấn đề liên quan