PDA

View Full Version : Usb hid control volume


tungbachnam
28-11-2010, 08:34 AM
Chào mọi người!
Hiện tại mình đang tìm hiếu về ubs dùng hid ,mình định dùng hid dể diều khiển windows media player nhưng vẫn chưa chạy được . Trong phần report HID descriptor khai báo như thế nay:

ROM struct{BYTE report[HID_RPT01_SIZE];}hid_rpt01={
//
// Report descriptor for media remote controller
//
// This descriptor defines ONE byte report, of this bitmap
// bit
// 0 : Next
// 1 : Previous
// 2 : Stop
// 3 : Play/Pause
// 4 : Mute
// 5 : Volume Up
// 6 : Volume Down
// 7 : --- (padding)
//


0x05, 0x0c, // USAGE_PAGE (Consumer Devices)
0x09, 0x01, // USAGE (Consumer Control)
0xa1, 0x01, // COLLECTION (Application)
// -------------------- common global items
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x25, 0x01, // LOGICAL_MAXIMUM (1)
0x75, 0x01, // REPORT_SIZE (1) - each field occupies 1 bit
// -------------------- misc bits
0x95, 0x05, // REPORT_COUNT (5)
0x09, 0xb5, // USAGE (Scan Next Track)
0x09, 0xb6, // USAGE (Scan Previous Track)
0x09, 0xb7, // USAGE (Stop)
0x09, 0xcd, // USAGE (Play/Pause)
0x09, 0xe2, // USAGE (Mute)
0x81, 0x06, // INPUT (Data,Var,Rel) - relative inputs
// -------------------- volume up/down bits
0x95, 0x02, // REPORT_COUNT (2)
0x09, 0xe9, // USAGE (Volume Up)
0x09, 0xea, // USAGE (Volume Down)
0x81, 0x02, // INPUT (Data,Var,Abs) - absolute inputs
// -------------------- padding bit
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x01, // INPUT (Cnst,Ary,Abs)
0xc0 // END_COLLECTION
}
}

sau đó mình gởi 1 byte lên máy tính :
hid_report_in[0] = 0xea; -->volume donw nhưng không có kết quả
hoặc
hid_report_in[0] = 0xc0;--> volume dơn nhung không có kết quả
Mọi người giúp mình giải quyết vấn đề này với ,dịch không có lỗi nhưng chạy không có kết quả.

tungbachnam
29-11-2010, 08:27 AM
Mọi người giúp mình với

tungbachnam
29-11-2010, 06:27 PM
không ai giúp mình thiệt sao ,cái này hay mà

bien_van_khat
29-11-2010, 09:46 PM
theo report của bạn thì Volume up là 0x20, volume down là 0x40 chứ nhỉ???

tungbachnam
29-11-2010, 10:51 PM
Mình cũng đã thử với keyboard ,gởi lên mày tính 1 byte ,trong đó có 6 bit định nghĩa 6 phím ,cho bit lên 1 đồng nghĩa nhấn nút đó , chạy ok.Nhưng với phần điều khiển volume này thì sủa hoài vẫn không chạy ,mình đã thử lại với 0x04(mute),0x20,0x40 ,đều không chạy tất ,không điều khiển được wmp.Vậy là sao nhỉ