999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

64位Windows環境下HID設備通訊問題的研究

2015-05-30 12:21:58崔陽
軟件工程 2015年8期
關鍵詞:功能設備

崔陽

摘 要:針對64位Windows操作系統對HID設備與主機應用程序的通訊造成的新問題,首先簡要介紹了Windows環境下HID設備的性能特點和通訊機制,以此為基礎提出一個面向64位Windows的HID設備通訊接口,并在Wave Panel上進行了編程實驗。結果證明該接口的通用性較強,能夠較好地實現64位Windows下HID設備與主機應用程序的通訊功能。

關鍵詞:HID;通訊接口;中斷傳輸;64位Windows

中圖分類號:TP319 文獻標識碼:A

Abstract:To solve the new problems of communication between human interface devices (HID) and the computer applications caused by 64-bit Windows,characteristics and the communication mechanism of HID in Windows environment are introduced first,based on which a communication interface for 64-bit Windows is designed and programmed on Wave Panel.Results show that communication function in 64-bit Windows environment can be better achieved through the interface.

Keywords:HID;communication interface;interrupt transmission;64-bit Windows

1 引言(Introduction)

HID(Human Interface Device,人機接口設備)是一類低速USB設備,具有使用方便、響應迅速、成本低廉等優點。典型的有鍵盤、鼠標、游戲桿等。

HID設備研發和使用中面臨的重要問題之一是設備與主機應用程序的通訊。Windows 7的發布標志著Windows操作系統開始從32位向64位過渡,因此有必要對64位Windows環境下HID設備通訊程序的一些新問題進行研究。

2 HID設備的性能特點(Performance characteristics of HID)

HID設備雖然也屬于USB設備,但還具備一些自身特點,主要有:

(1)單次傳輸的數據量小,且以設備狀態信息和控制信息為主。單次傳輸數據通常在8字節到1024字節。數據存儲在報表(Report)結構內[1]。

(2)使用輪詢方式。HID設備會在一個設定的時間間隔內檢測一次設備,若發現設備狀態有變化則會生成輸入報表,并發送到主機[2]。

(3)多數采用中斷方式通訊。這種方式適用于周期性、延遲低的數據[3],符合HID設備的應用特點。

3 HID設備的通訊過程(Communication process of HID)

Windows 98及之后的各版本Windows已包含HID驅動程序[4,5],應用程序可直接調用相關API函數實現HID設備的通訊。該過程可分為以下四個模塊:

(1)設備識別和打開。一臺主機有可能同時連接多臺HID設備,因此在通訊前必須確定要進行通訊的設備并打開。HID設備以廠商ID(VID)、產品ID(PID)和產品版本號(PVN)三項屬性值作為其唯一標識[6]。

(2)讀報表。讀報表是指HID設備向主機輸入數據。對以中斷方式發送數據的HID設備而言,應用程序需要創建一個異步調用的讀報表線程。同時為減輕系統負載,該線程在HID設備沒有向主機輸入數據時應阻塞。當有數據輸入時恢復運行,將輸入數據保存在緩沖區中,并進行解析。之后線程將再次阻塞。讀報表線程在應用程序運行結束前將一直存在。

(3)寫報表。寫報表是指主機向HID設備輸出數據。但該功能不是必需的,視HID設備而定[7]。寫報表線程比較簡單,只須將要輸出的數據先復制到一個緩沖區內,然后輸出到HID設備即可。數據通常是一些控制信息和狀態信息[8]。

(4)設備關閉。當主機與HID設備的通訊結束后必須將HID設備關閉。

4 64位Windows環境中HID設備通訊模式 (Communication mode of HID in 64-bit Windows environment)

通過上述討論,Windows環境下HID設備的識別和打開主要是通過調用API函數實現的。但64位Windows操作系統不支持這些API函數,也沒有提供相應的API函數。因此必須對設備識別與打開模塊的功能進行分解。思路是將涉及API函數的設備識別功能與設備打開功能相分離,并在32位環境下將前者編譯為可執行程序,供后者在64位環境下調用。因此,應將設備識別與打開模塊再細分為設備識別和設備打開兩個獨立的功能模塊。

4.1 設備識別

HID設備識別模塊主要是通過調用相關的API函數對主機各USB接口上連接的設備進行三項屬性值對比,完全符合的即為當前要打開的HID設備。用到的API函數主要有HidD_GetHidGuid()、SetupDiGetClassDevs()、SetupDiEnumDeviceInterfaces()、SetupDiGetDeviceInterfaceDetail()、HidD_GetAttributes()、SetupDiDestroyDeviceInfoList()等。

4.2 設備打開

設備打開模塊的功能相對簡單,只需首先從外部文件中獲取設備識別模塊中保存的HID設備路徑,再調用ReadFile()以帶讀寫訪問設置的異步方式將設備打開,并返回設備句柄即可。

4.3 通訊接口的設計和實驗

以上述討論為基礎,設計一個實用的HID設備通訊接口,起名為CHidComm64。該接口包括:

(1)DWORD變量VID、PID和PVN:保存HID設備的三項屬性值。

(2)UCHAR類型數組ReadBuffer和WriteBuffer:分別表示HID設備的輸入報表和輸出報表。

(3)UCHAR類型數組DevicePath,表示HID設備路徑。

(4)ReadReportThread()和WriteReportThread():用于創建讀報表線程和寫報表線程,當HID設備沒有向主機輸入數據時,線程被阻塞;當有數據輸入時,線程恢復運行,這樣就可以降低系統負載、提高運行效率。

(5)成員函數SearchDevice()、OpenDevice()、CloseDevice()函數:分別實現HID設備識別、打開和關閉。

在連接不同的HID設備時,只需要重新設置VID、PID和PVN值以及ReadBuffer、WriteBuffer的長度,不用對HID設備識別、打開、讀寫報表等功能進行修改,從而提高接口的通用性。

實驗以視頻色彩編輯軟件專用HID設備Wave Panel為平臺,編程語言為C++,編譯環境為64位Windows 7操作系統下的Visual Studio 2010。Wave Panel有按鍵、解碼器和二維跟蹤球三種控制器,每40ms對所有控制器輪詢一次。若任何一個控制器的狀態在期間發生變化,就會生成輸入報表發送給主機。同時Wave Panel的液晶屏也可以顯示主機的狀態信息。

圖1是主機應用程序調用CHidComm64接口實現與Wave Panel通訊的界面。應用程序以十六進制形式將Wave Panel發送的數據顯示在界面上,同時顯示控制器狀態變化的情況。

5 結論(Conclusion)

64位Windows操作系統不再支持原有的HID設備通訊API函數,因此有必要對HID設備與主機的通訊流程做出改進。所設計的CHidComm64通訊接口將HID設備識別與設備打開功能相分離,從而能夠較好地實現在64位Windows環境下的通訊功能。今后的工作將主要研究對該接口功能的完善方面。

參考文獻(References)

[1] Device Class Definition for Human Interface [EB/OL]. http://www.usb.org/developers/devclass_docs/HID1_11.pdf.

[2] 胡曉軍,張愛成.USB接口開發技術[M].陜西:西安電子科技大學出版社,2005.

[3] 蔡欣榮.基于ARM的HID類自定義功能鍵盤研究與實現[J].工業控制計算機,2011,24(5):14-18.

[4] 王恒升,匡洋,彭宏道.USBHID類設備小驅動程序開發[J].控制工程,2010,17(6):815-819.

[5] 時向衛,李崢,張少武.Win2000/XP下USB設備驅動程序研究與設計[J].計算機工程與設計,2008,29(21):5562-5565.

[6] Jan AXELSON.USB開發大全(第4版)[M].北京:人民郵電出版社,2011.

[7] 劉力,等.基于HID類的USB人機接口設計[J].計算機工程與科學,2003,25(3):82-85.

[8] 王繼剛,等.虛擬化環境下的USB設備訪問方法[J].計算機應用,2011,31(5):1439-1442.

作者簡介:

崔 陽(1979-),男,博士,講師.研究領域:知識工程與知識發現.

猜你喜歡
功能設備
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
諧響應分析在設備減振中的應用
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
關于非首都功能疏解的幾點思考
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
如何在設備采購中節省成本
原來他們都是可穿戴設備
消費者報道(2014年7期)2014-07-31 11:23:57
主站蜘蛛池模板: 欧美日韩国产在线人成app| JIZZ亚洲国产| 免费99精品国产自在现线| 国产偷倩视频| 日韩欧美中文在线| 亚洲AV无码不卡无码| 亚洲天堂在线视频| 亚洲女同欧美在线| 午夜三级在线| 婷婷伊人久久| 亚洲欧洲日韩久久狠狠爱| 免费看美女毛片| 国产91九色在线播放| 欧美日韩亚洲国产| 午夜国产理论| 国产美女免费网站| 狼友av永久网站免费观看| 天堂成人在线视频| 九九久久99精品| 五月天天天色| 国产人前露出系列视频| 中文字幕久久精品波多野结| 久久亚洲国产视频| 婷婷亚洲天堂| 日韩精品一区二区深田咏美| 色婷婷狠狠干| 无码av免费不卡在线观看| 成人国产免费| 色综合激情网| 亚洲中文无码h在线观看| 久久网欧美| 一区二区无码在线视频| 国产午夜精品一区二区三| 国产日韩精品欧美一区灰| 国产综合另类小说色区色噜噜| 欧美在线观看不卡| 这里只有精品国产| 人妻出轨无码中文一区二区| 成人免费一级片| 欧美一级夜夜爽| 2019国产在线| 99在线小视频| 国产精品免费p区| 五月丁香伊人啪啪手机免费观看| 亚洲第一黄片大全| 在线无码九区| 99久视频| 亚洲一区国色天香| 99热这里只有精品久久免费| 综合色区亚洲熟妇在线| 国产麻豆另类AV| 久久免费观看视频| 免费又黄又爽又猛大片午夜| 69av在线| 无码AV动漫| 2021国产乱人伦在线播放 | 99热免费在线| 精品精品国产高清A毛片| 久久黄色毛片| 欧美区在线播放| 1级黄色毛片| 中文字幕在线不卡视频| 欧美三级日韩三级| 精品国产自在在线在线观看| 97亚洲色综久久精品| 伦精品一区二区三区视频| 亚洲欧美另类久久久精品播放的| 国产一级精品毛片基地| 一级毛片高清| 99精品国产电影| 日本爱爱精品一区二区| 中文一级毛片| 成人精品免费视频| 久久精品国产在热久久2019| 亚洲免费三区| 91色国产在线| 澳门av无码| 久久精品视频一| 91色国产在线| 国产人成在线视频| 国产成人亚洲综合a∨婷婷| 国产精品久久国产精麻豆99网站|