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
主站蜘蛛池模板: 丁香五月激情图片| 国产又色又刺激高潮免费看| 特级做a爰片毛片免费69| 国产成人乱无码视频| 国产成人1024精品| 91美女视频在线观看| 亚洲一区二区成人| 97视频免费看| 精品国产中文一级毛片在线看| 天天综合网站| 一级毛片免费高清视频| 九九免费观看全部免费视频| 色播五月婷婷| 国产福利拍拍拍| 自慰网址在线观看| 亚洲Av激情网五月天| 成年A级毛片| 久久精品波多野结衣| 亚洲 欧美 偷自乱 图片 | 国产精品男人的天堂| 欧美日韩国产精品综合| 欧美福利在线| 99精品在线视频观看| 免费亚洲成人| 久久久久88色偷偷| 久久女人网| 亚洲综合激情另类专区| 人妻丰满熟妇啪啪| 国产三级a| 国产精品自在拍首页视频8 | 亚洲无线国产观看| 亚洲有码在线播放| 欧美区一区二区三| 免费网站成人亚洲| 99在线视频网站| 日韩无码视频播放| 91伊人国产| 激情五月婷婷综合网| 亚洲娇小与黑人巨大交| 激情在线网| 久久窝窝国产精品午夜看片| 久久国产精品77777| 国产精品人成在线播放| 亚洲av无码人妻| 高清视频一区| 8090午夜无码专区| 国产v精品成人免费视频71pao| 91青青在线视频| 色综合成人| 久久国产乱子伦视频无卡顿| 亚洲欧美综合精品久久成人网| 视频在线观看一区二区| 国产色爱av资源综合区| 亚洲美女操| 亚洲无码A视频在线| 国产靠逼视频| 久久久久无码精品国产免费| 青青国产在线| 激情無極限的亚洲一区免费| 成人午夜网址| 国产区成人精品视频| 久久伊人色| 美女黄网十八禁免费看| 免费看a级毛片| 玩两个丰满老熟女久久网| 国产成人亚洲精品色欲AV | 露脸真实国语乱在线观看| 手机在线看片不卡中文字幕| 亚洲另类国产欧美一区二区| 国产成人高清精品免费软件| 青青草a国产免费观看| 东京热av无码电影一区二区| 国产农村精品一级毛片视频| 91口爆吞精国产对白第三集| 毛片最新网址| 又爽又大又光又色的午夜视频| 久久精品aⅴ无码中文字幕| 黄色网在线免费观看| 欧美久久网| 一本大道香蕉久中文在线播放| 91丨九色丨首页在线播放| 四虎永久在线精品国产免费|