目前已經完成 OSD畫面的設計,但版子尚未開發完成。為了要提早驗證OSD畫面是否如預期所示,將會撰寫程式經由USB線送出指令至 SONY FRC450,以達到OSD顯示的功能。由於FRC450屬於 HID device,因此將會利用HID的方式來控制此OSD。
OSD控制程式對應關係
HID控制
安裝後,若直接編譯 sample code 可能會因為SDK版本不同而出現問題。
2. 安裝Windows 7 SDK,執行Windows SDK Configuration Tool,將預設的SDK版本設定為7.1就OK了(與WDK版本相同),連結時也需要設定到對應的路徑, 我的設定是 C:\WinDDK\7600.16385.1\lib\win7\i386
3. 接著選擇 C:\WinDDK\7600.16385.1\src\hid\hclient
此專案,編譯成功,就可以運行 hid client 的測試範例了。至此,可以確定開發環境已經安裝成功。
4. 接著要自行撰寫HID控制程式,可以參考另一個較簡單的例子。我是直接參考http://www.lvr.com/hidpage.htm的 visual c++ 6。
5. 程式邏輯簡述如下:
i. 透過HidD_GetHidGuid()取得Windows GUID。
ii. 使用 SetupDixxx函數取得一個HID device,並且利用CreateFile建立一個對應到此hid 的handle。
Ø SetupDiGetClassDevs()
Ø SetupDiEnumDeviceInterfaces()
Ø SetupDiGetDeviceInterfaceDetail()
iii. 呼叫 HidD_GetAttributes(),比對此HID device的 VendorID與ProductID是否如預期。
iv. 若找到想要的HID device,則再建立供write/read的handle。然後就可以直接對 HID下指令囉。
WriteHandle=CreateFile
(detailData->DevicePath,
GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
0,
NULL);
ReadHandle=CreateFile
(detailData->DevicePath,
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE,
(LPSECURITY_ATTRIBUTES)NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);
參考資料
1.
百度的HID介紹