2011年9月16日 星期五

V-USB hid-custom-rq

hid-custom-rq 是 V-USB 所附的一個範例,它示範如何定義 HID class device。hid-custom-rq 功能跟 custom-class 範例一樣,不過它宣告成 HID device,由於 Windows 內建 HID driver,因此 Windows 不會要求安裝驅動程式。

hid-custom-rq 一樣可以用 custom-data 所附的 commandline 工具,透過 libusb-win32 來控制裝置。libusb-win32 dll 必須跟 commandline 工具放在同一個資料夾。

下載

hid-custom-rq 包在 V-USB 套件裏:

http://www.obdev.at/products/vusb/download.html

韌體調整

hid-custom-rq 需要調整的地方跟 custom-data 一樣:

● usbconfig.h:


定義所用的 D+ 和 D- data lines 腳位。必須根據你的硬體調整 USB_CFG_IOPORTNAME, USB_CFG_DMINUS_BIT 和 USB_CFG_DPLUS_BIT。

● Makefile:


定義所用的 MCU 跟時脈頻率,必須根據你的硬體調整 DEVICE 和 F_CPU。

  • main.c

定義所用的 LED 接腳,必須根據你的硬體調整 LED_PORT_DDR, LED_PORT_OUTPUT 和 LED_BIT。

編譯韌體

下指令編譯韌體,你會需要 WinAVR:

cd hid-custom-rq/firmware 
make hex

接著把韌體燒錄到板子上,讓裝置重新上電,然後,「裝置管理員」視窗裏就會出現剛剛安裝的裝置,不用安裝驅動程式:

image
▲ Windows 會將新裝置當成「HID-compliant device」

編譯 PC 端指令列工具 (commandline)

下指令編譯 PC 端指令列工具,你會需要 MingGW, MSYS 和 libusb-win32 函式庫:

cd hid-custom-rq/commandline 
make -f Makefile.windows

這會產生 set-led.exe。

註:libusb-win32 函式庫的安裝方法為,把 include\usb.h 複製到 C:\MingW\include\,而把 lib\gcc\libusb.a 複製到 C:\MingW\lib。

使用 hid-custom-rq

hid-custom-rq 的用法跟 custom-class 一樣:

打開 LED:

set-led on

關閉 LED:

set-led off

查詢 LED 狀態

set-led status

假如 LED 是開的,set-led status 會顯示 "LED is on",否則的話會顯示 "LED is off"。

註:雖然指令列工具是同一支,但因為 hid-custom-rq 用的 VID/PID 跟 custom-data 不一樣,custom-data 用的是 0x16c0/0x05dc,而 hid-custom-rq 的是 0x16c0/0x05df,所以 set-led 指令列工具必須重新編譯才行,不然執行時會找不到 device。

延伸閱讀

0 意見: