亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        64位Windows環(huán)境下HID設(shè)備通訊問題的研究

        2015-05-30 12:21:58崔陽
        軟件工程 2015年8期
        關(guān)鍵詞:線程調(diào)用報(bào)表

        崔陽

        摘 要:針對(duì)64位Windows操作系統(tǒng)對(duì)HID設(shè)備與主機(jī)應(yīng)用程序的通訊造成的新問題,首先簡要介紹了Windows環(huán)境下HID設(shè)備的性能特點(diǎn)和通訊機(jī)制,以此為基礎(chǔ)提出一個(gè)面向64位Windows的HID設(shè)備通訊接口,并在Wave Panel上進(jìn)行了編程實(shí)驗(yàn)。結(jié)果證明該接口的通用性較強(qiáng),能夠較好地實(shí)現(xiàn)64位Windows下HID設(shè)備與主機(jī)應(yīng)用程序的通訊功能。

        關(guān)鍵詞:HID;通訊接口;中斷傳輸;64位Windows

        中圖分類號(hào):TP319 文獻(xiàn)標(biāo)識(shí)碼: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,人機(jī)接口設(shè)備)是一類低速USB設(shè)備,具有使用方便、響應(yīng)迅速、成本低廉等優(yōu)點(diǎn)。典型的有鍵盤、鼠標(biāo)、游戲桿等。

        HID設(shè)備研發(fā)和使用中面臨的重要問題之一是設(shè)備與主機(jī)應(yīng)用程序的通訊。Windows 7的發(fā)布標(biāo)志著Windows操作系統(tǒng)開始從32位向64位過渡,因此有必要對(duì)64位Windows環(huán)境下HID設(shè)備通訊程序的一些新問題進(jìn)行研究。

        2 HID設(shè)備的性能特點(diǎn)(Performance characteristics of HID)

        HID設(shè)備雖然也屬于USB設(shè)備,但還具備一些自身特點(diǎn),主要有:

        (1)單次傳輸?shù)臄?shù)據(jù)量小,且以設(shè)備狀態(tài)信息和控制信息為主。單次傳輸數(shù)據(jù)通常在8字節(jié)到1024字節(jié)。數(shù)據(jù)存儲(chǔ)在報(bào)表(Report)結(jié)構(gòu)內(nèi)[1]。

        (2)使用輪詢方式。HID設(shè)備會(huì)在一個(gè)設(shè)定的時(shí)間間隔內(nèi)檢測(cè)一次設(shè)備,若發(fā)現(xiàn)設(shè)備狀態(tài)有變化則會(huì)生成輸入報(bào)表,并發(fā)送到主機(jī)[2]。

        (3)多數(shù)采用中斷方式通訊。這種方式適用于周期性、延遲低的數(shù)據(jù)[3],符合HID設(shè)備的應(yīng)用特點(diǎn)。

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

        Windows 98及之后的各版本W(wǎng)indows已包含HID驅(qū)動(dòng)程序[4,5],應(yīng)用程序可直接調(diào)用相關(guān)API函數(shù)實(shí)現(xiàn)HID設(shè)備的通訊。該過程可分為以下四個(gè)模塊:

        (1)設(shè)備識(shí)別和打開。一臺(tái)主機(jī)有可能同時(shí)連接多臺(tái)HID設(shè)備,因此在通訊前必須確定要進(jìn)行通訊的設(shè)備并打開。HID設(shè)備以廠商ID(VID)、產(chǎn)品ID(PID)和產(chǎn)品版本號(hào)(PVN)三項(xiàng)屬性值作為其唯一標(biāo)識(shí)[6]。

        (2)讀報(bào)表。讀報(bào)表是指HID設(shè)備向主機(jī)輸入數(shù)據(jù)。對(duì)以中斷方式發(fā)送數(shù)據(jù)的HID設(shè)備而言,應(yīng)用程序需要?jiǎng)?chuàng)建一個(gè)異步調(diào)用的讀報(bào)表線程。同時(shí)為減輕系統(tǒng)負(fù)載,該線程在HID設(shè)備沒有向主機(jī)輸入數(shù)據(jù)時(shí)應(yīng)阻塞。當(dāng)有數(shù)據(jù)輸入時(shí)恢復(fù)運(yùn)行,將輸入數(shù)據(jù)保存在緩沖區(qū)中,并進(jìn)行解析。之后線程將再次阻塞。讀報(bào)表線程在應(yīng)用程序運(yùn)行結(jié)束前將一直存在。

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

        (4)設(shè)備關(guān)閉。當(dāng)主機(jī)與HID設(shè)備的通訊結(jié)束后必須將HID設(shè)備關(guān)閉。

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

        通過上述討論,Windows環(huán)境下HID設(shè)備的識(shí)別和打開主要是通過調(diào)用API函數(shù)實(shí)現(xiàn)的。但64位Windows操作系統(tǒng)不支持這些API函數(shù),也沒有提供相應(yīng)的API函數(shù)。因此必須對(duì)設(shè)備識(shí)別與打開模塊的功能進(jìn)行分解。思路是將涉及API函數(shù)的設(shè)備識(shí)別功能與設(shè)備打開功能相分離,并在32位環(huán)境下將前者編譯為可執(zhí)行程序,供后者在64位環(huán)境下調(diào)用。因此,應(yīng)將設(shè)備識(shí)別與打開模塊再細(xì)分為設(shè)備識(shí)別和設(shè)備打開兩個(gè)獨(dú)立的功能模塊。

        4.1 設(shè)備識(shí)別

        HID設(shè)備識(shí)別模塊主要是通過調(diào)用相關(guān)的API函數(shù)對(duì)主機(jī)各USB接口上連接的設(shè)備進(jìn)行三項(xiàng)屬性值對(duì)比,完全符合的即為當(dāng)前要打開的HID設(shè)備。用到的API函數(shù)主要有HidD_GetHidGuid()、SetupDiGetClassDevs()、SetupDiEnumDeviceInterfaces()、SetupDiGetDeviceInterfaceDetail()、HidD_GetAttributes()、SetupDiDestroyDeviceInfoList()等。

        4.2 設(shè)備打開

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

        4.3 通訊接口的設(shè)計(jì)和實(shí)驗(yàn)

        以上述討論為基礎(chǔ),設(shè)計(jì)一個(gè)實(shí)用的HID設(shè)備通訊接口,起名為CHidComm64。該接口包括:

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

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

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

        (4)ReadReportThread()和WriteReportThread():用于創(chuàng)建讀報(bào)表線程和寫報(bào)表線程,當(dāng)HID設(shè)備沒有向主機(jī)輸入數(shù)據(jù)時(shí),線程被阻塞;當(dāng)有數(shù)據(jù)輸入時(shí),線程恢復(fù)運(yùn)行,這樣就可以降低系統(tǒng)負(fù)載、提高運(yùn)行效率。

        (5)成員函數(shù)SearchDevice()、OpenDevice()、CloseDevice()函數(shù):分別實(shí)現(xiàn)HID設(shè)備識(shí)別、打開和關(guān)閉。

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

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

        圖1是主機(jī)應(yīng)用程序調(diào)用CHidComm64接口實(shí)現(xiàn)與Wave Panel通訊的界面。應(yīng)用程序以十六進(jìn)制形式將Wave Panel發(fā)送的數(shù)據(jù)顯示在界面上,同時(shí)顯示控制器狀態(tài)變化的情況。

        5 結(jié)論(Conclusion)

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

        參考文獻(xiàn)(References)

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

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

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

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

        [5] 時(shí)向衛(wèi),李崢,張少武.Win2000/XP下USB設(shè)備驅(qū)動(dòng)程序研究與設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(21):5562-5565.

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

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

        [8] 王繼剛,等.虛擬化環(huán)境下的USB設(shè)備訪問方法[J].計(jì)算機(jī)應(yīng)用,2011,31(5):1439-1442.

        作者簡介:

        崔 陽(1979-),男,博士,講師.研究領(lǐng)域:知識(shí)工程與知識(shí)發(fā)現(xiàn).

        猜你喜歡
        線程調(diào)用報(bào)表
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        LabWindows/CVI中Excel報(bào)表技術(shù)研究
        從三大報(bào)表讀懂養(yǎng)豬人的成績單
        淺談linux多線程協(xié)作
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
        Linux線程實(shí)現(xiàn)技術(shù)研究
        么移動(dòng)中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
        月度報(bào)表
        中國紡織(2009年7期)2009-08-07 06:56:16
        喷潮出白浆视频在线观看| 精品无人码麻豆乱码1区2区| 亚洲精品国产一区二区| 中文字幕免费不卡二区| 人妻少妇精品视中文字幕国语| 国产免费无码一区二区三区| 久久精品国产亚洲av瑜伽| 国产精品国产三级国产专播| 日韩成人精品一区二区三区| 国产一区二区美女主播| 中文字幕人妻在线少妇| 午夜成人理论福利片| 久久久av精品波多野结衣| 日韩精品一区二区三区视频| 老汉tv永久视频福利在线观看| 高清国产亚洲va精品| 亚洲日本国产一区二区三区| 亚洲熟女一区二区三区250p| 伊人大杳焦在线| 人人妻人人爽人人做夜欢视频九色| 中文字幕在线亚洲日韩6页手机版| 中文字幕不卡在线播放| 国产精品女同学| 精品国产一区二区三区性色| 亚洲av无码一区二区一二区| 97人妻碰碰视频免费上线| 美女黄18以下禁止观看| 一本加勒比hezyo无码视频| 加勒比一区二区三区av| 所有视频在线观看免费| 国产精品美女久久久久av福利| 三年在线观看免费大全下载| 香蕉久久夜色精品国产2020| 亚洲AV无码日韩综合欧亚| 青青草视频在线播放观看| 久久免费看黄a级毛片| 欧美人妻少妇精品久久黑人| 国产精品免费久久久久影院| 无码一区二区三区在线在看| 熟妇人妻丰满少妇一区| 大量漂亮人妻被中出中文字幕|