Các bước làm việc với HID
Thực chất việc này không hề đơn giản nhưng ta có thể thực hiện theo một mẫu chuẩn như sẽ đề cập sau đây :
MọI thiết bị USB thực hiện những yêu cầu (request) gồm những thao tác như nhận tập descriptor chuẩn từ thiết bị và thiết lập những thông số thiết bị chuẩn . Việc đầu tiên là xác định lớp HID trong trường bInterfaceClass của USB interface descriptor . Giá trị phù hợp là 0x03 , giá trị này cho trình điều khiển USB biết trình điều khiển lớp nào ứng dụng cần phải phù hợp sau khi quá trình liệt kê hoàn thành .
Trong quá trình liêt kê , thiết bị cũng cung cấp một HID class descriptor chứa thông tin phiên bản HID-specification và chiều dài của HID-report descriptor . HID descriptor bao gồm các HID usage , mỗI cái mô tả một trường trong một báo cáo vào hay ra (Tham khảo thêm HID usage table)
Nếu êm dẹp sau đó ứng dụng phải mở thiết bị cho truyền thông , một quá trình khá phức tạp . Ở đây chỉ tóm gọn thành một hàm bOpenHidDevice() , cho một handle thiết bị ,một VID thiết bị , một PID thiết bị như là đối số của hàm . Nếu máy chủ tìm thấy thiết bị hàm trả về TRUE và Windows HID API gán một giá trị hợp lệ cho handle thiết bị . Nếu không hàm trả về FALSE .
Quá trình “mở” thiết bị gồm 7 bước :
*******HidD_GetHidGuid()
SetupDiGetClassDevs()
SetupDiGetClassDevs() --> FALSE (HID device not found)
TRUE
SetupDiGetDeviceInterfaceDetail()
CreateFile()
Desired VID and PID -->TRUE (HID device found)
FALSE(tăng chỉ số và quay lại SetupDiGetClassDevs() thử tiếp)
Thực chất việc này không hề đơn giản nhưng ta có thể thực hiện theo một mẫu chuẩn như sẽ đề cập sau đây :
MọI thiết bị USB thực hiện những yêu cầu (request) gồm những thao tác như nhận tập descriptor chuẩn từ thiết bị và thiết lập những thông số thiết bị chuẩn . Việc đầu tiên là xác định lớp HID trong trường bInterfaceClass của USB interface descriptor . Giá trị phù hợp là 0x03 , giá trị này cho trình điều khiển USB biết trình điều khiển lớp nào ứng dụng cần phải phù hợp sau khi quá trình liệt kê hoàn thành .
Trong quá trình liêt kê , thiết bị cũng cung cấp một HID class descriptor chứa thông tin phiên bản HID-specification và chiều dài của HID-report descriptor . HID descriptor bao gồm các HID usage , mỗI cái mô tả một trường trong một báo cáo vào hay ra (Tham khảo thêm HID usage table)
Nếu êm dẹp sau đó ứng dụng phải mở thiết bị cho truyền thông , một quá trình khá phức tạp . Ở đây chỉ tóm gọn thành một hàm bOpenHidDevice() , cho một handle thiết bị ,một VID thiết bị , một PID thiết bị như là đối số của hàm . Nếu máy chủ tìm thấy thiết bị hàm trả về TRUE và Windows HID API gán một giá trị hợp lệ cho handle thiết bị . Nếu không hàm trả về FALSE .
Quá trình “mở” thiết bị gồm 7 bước :
*******HidD_GetHidGuid()
SetupDiGetClassDevs()
SetupDiGetClassDevs() --> FALSE (HID device not found)
TRUE
SetupDiGetDeviceInterfaceDetail()
CreateFile()
Desired VID and PID -->TRUE (HID device found)
FALSE(tăng chỉ số và quay lại SetupDiGetClassDevs() thử tiếp)
Comment