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

        ?

        專(zhuān)用型低速USB設(shè)備通訊模塊的研究

        2016-10-22 00:43:39崔陽(yáng)
        現(xiàn)代計(jì)算機(jī) 2016年25期
        關(guān)鍵詞:設(shè)備

        崔陽(yáng)

        (中國(guó)勞動(dòng)關(guān)系學(xué)院數(shù)學(xué)與計(jì)算機(jī)部,北京100048)

        專(zhuān)用型低速USB設(shè)備通訊模塊的研究

        崔陽(yáng)

        (中國(guó)勞動(dòng)關(guān)系學(xué)院數(shù)學(xué)與計(jì)算機(jī)部,北京100048)

        目前大量專(zhuān)用型低速USB設(shè)備僅能在特定操作系統(tǒng)或軟件環(huán)境中識(shí)別和使用,給實(shí)際工作帶來(lái)很大限制。首先簡(jiǎn)單分析低速USB設(shè)備的性能特點(diǎn)及通訊原理,在此基礎(chǔ)上設(shè)計(jì)出一個(gè)低速USB設(shè)備通訊模塊,并在Tangent Devices的Wave控制臺(tái)上進(jìn)行編程實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果證明模塊能夠較好地實(shí)現(xiàn)專(zhuān)用型低速USB設(shè)備在不同操作系統(tǒng)和軟件環(huán)境下的雙向通訊。

        低速USB設(shè)備;輸入輸出報(bào)表;中斷;Windows API

        0 引言

        低速USB設(shè)備近年來(lái)得到了廣泛應(yīng)用,這類(lèi)設(shè)備主要指游戲手柄、USB鍵盤(pán)、鼠標(biāo)等單次數(shù)據(jù)傳輸量在8~1024字節(jié)之間的USB設(shè)備,又稱(chēng)HID(人機(jī)接口設(shè)備)[1]。

        專(zhuān)用化是低速USB設(shè)備的發(fā)展趨勢(shì)之一。當(dāng)前很多應(yīng)用軟件系統(tǒng)為增強(qiáng)用戶(hù)體驗(yàn)、提高操作速度都配備有專(zhuān)用低速USB設(shè)備。然而多數(shù)專(zhuān)用型USB設(shè)備因設(shè)計(jì)等原因,通常只針對(duì)并僅能局限在某一特定軟件環(huán)境下使用,更無(wú)法實(shí)現(xiàn)跨操作系統(tǒng)平臺(tái)移植,這就給實(shí)際工作造成了許多不便。因此,通過(guò)對(duì)專(zhuān)用型低速USB設(shè)備的通訊特點(diǎn)和機(jī)制進(jìn)行研究,并設(shè)計(jì)出一個(gè)功能完備、通用性強(qiáng)、效率較高的通訊模塊就非常有必要。

        1 低速USB設(shè)備的主要特點(diǎn)

        低速USB設(shè)備的特點(diǎn)主要有以下幾方面:

        (1)傳輸?shù)臄?shù)據(jù)多為狀態(tài)或控制信息,這些信息都保存在輸入輸出報(bào)表(I/O Report)結(jié)構(gòu)體內(nèi)。低速USB設(shè)備通過(guò)報(bào)表與主機(jī)軟件系統(tǒng)進(jìn)行數(shù)據(jù)交互[2]。

        (2)以輪詢(xún)形式檢測(cè)設(shè)備狀態(tài)變化情況。低速USB設(shè)備會(huì)在一個(gè)固定的時(shí)間間隔內(nèi)輪詢(xún)各控制口一次,檢測(cè)用戶(hù)通過(guò)設(shè)備向主機(jī)發(fā)送的數(shù)據(jù),并以報(bào)表形式發(fā)送。

        (3)通訊方式通常為控制和中斷兩種。區(qū)別在于前者對(duì)延遲性沒(méi)有特別要求,而后者對(duì)延遲容忍度低,且數(shù)據(jù)多具有周期性特征[3]。

        2 USB設(shè)備的通信機(jī)制

        2.1設(shè)備識(shí)別和打開(kāi)

        VID、PID和PVN三個(gè)屬性值是低速USB設(shè)備在計(jì)算機(jī)內(nèi)的唯一標(biāo)識(shí)[4],在設(shè)備說(shuō)明書(shū)中可查。軟件系統(tǒng)在通訊前的第一步工作就是識(shí)別出特定的USB設(shè)備。方法是首先獲取并逐一枚舉當(dāng)前主機(jī)中連接的各USB設(shè)備信息,并提取三個(gè)屬性值與特定的USB設(shè)備進(jìn)行比較,當(dāng)符合時(shí)表示設(shè)備找到。這時(shí)再將設(shè)備打開(kāi),并向軟件系統(tǒng)傳回設(shè)備的句柄。

        2.2數(shù)據(jù)輸入和輸出

        低速USB設(shè)備和主機(jī)軟件系統(tǒng)間數(shù)據(jù)交互通過(guò)輸入輸出報(bào)表實(shí)現(xiàn)。每當(dāng)設(shè)備上任意控制器狀態(tài)發(fā)生變化,都將在下一次輪詢(xún)時(shí)根據(jù)這些變化的數(shù)據(jù)值生成一個(gè)輸入報(bào)表發(fā)送給主機(jī)。軟件系統(tǒng)接收輸入報(bào)表后首先檢查報(bào)表ID值,然后按照?qǐng)?bào)表結(jié)構(gòu)體的定義格式對(duì)數(shù)據(jù)進(jìn)行解析并做相應(yīng)處理。有些專(zhuān)用型低速USB設(shè)備的輸入報(bào)表沒(méi)有定義報(bào)表ID值,這種情況下應(yīng)將接收到的輸入報(bào)表的ID值直接設(shè)置為0x00,否則輸入報(bào)表線(xiàn)程無(wú)法解析數(shù)據(jù)。

        數(shù)據(jù)輸入過(guò)程中一個(gè)要特別注意的問(wèn)題是:由于低速USB設(shè)備與主機(jī)的通訊時(shí)間不固定,在軟件系統(tǒng)運(yùn)行期間負(fù)責(zé)讀取輸入報(bào)表的線(xiàn)程必須要以異步方式調(diào)用。這樣該線(xiàn)程在設(shè)備沒(méi)有向主機(jī)輸入數(shù)據(jù)時(shí)將阻塞;當(dāng)有輸入報(bào)表到來(lái)時(shí)線(xiàn)程再恢復(fù)運(yùn)行,將輸入報(bào)表中的數(shù)據(jù)保存在緩沖區(qū)中。之后線(xiàn)程將再次被阻塞,直到有新的輸入報(bào)表到來(lái),從而有效減輕主機(jī)負(fù)載。設(shè)備成功打開(kāi)后該線(xiàn)程就被創(chuàng)建,并隨軟件系統(tǒng)運(yùn)行結(jié)束而銷(xiāo)毀。流程如圖2所示。

        數(shù)據(jù)輸出是通過(guò)輸出報(bào)表實(shí)現(xiàn)的,但并非所有的USB設(shè)備都必備這一功能。主機(jī)軟件系統(tǒng)可能會(huì)向?qū)S眯偷退賃SB設(shè)備輸出一些控制或狀態(tài)數(shù)據(jù)用來(lái)對(duì)設(shè)備進(jìn)行監(jiān)控[5],例如設(shè)備液晶屏上的顯示信息等。這些數(shù)據(jù)必須同步顯示,因此要求低延遲[6]。讀取輸出報(bào)表的線(xiàn)程首先將要輸出的數(shù)據(jù)按設(shè)備規(guī)定的報(bào)表結(jié)構(gòu)格式進(jìn)行封裝并復(fù)制到一個(gè)緩沖區(qū)內(nèi),再將緩沖區(qū)數(shù)據(jù)輸出到設(shè)備。這一過(guò)程同樣需要考慮主機(jī)的負(fù)載情況。

        2.3設(shè)備關(guān)閉

        當(dāng)軟件系統(tǒng)與低速USB設(shè)備的通訊結(jié)束時(shí),將設(shè)備直接關(guān)閉即可。如果軟件系統(tǒng)沒(méi)有及時(shí)關(guān)閉設(shè)備,可能會(huì)在下次打開(kāi)設(shè)備時(shí)遇到報(bào)錯(cuò)。

        3 通訊模塊設(shè)計(jì)

        以上述通訊原理為基礎(chǔ),設(shè)計(jì)一個(gè)名為CUSBComModule的通訊模塊,其總體結(jié)構(gòu)為:

        其中,成員函數(shù)OpenUSBDevice()和CloseUSBDevice()分別用于識(shí)別、打開(kāi)和關(guān)閉設(shè)備。ReadReport-TableThread()用于創(chuàng)建輸入報(bào)表線(xiàn)程。該線(xiàn)程中含有一個(gè)I/O完成后觸發(fā)事件的句柄。當(dāng)設(shè)備沒(méi)有向主機(jī)輸入數(shù)據(jù)時(shí),事件處于無(wú)信號(hào)狀態(tài),線(xiàn)程被阻塞;當(dāng)有數(shù)據(jù)輸入時(shí)事件被觸發(fā)線(xiàn)程恢復(fù)運(yùn)行,將數(shù)據(jù)保存在輸入報(bào)表緩沖區(qū)。WriteReportTableThread()與Read-ReportTableThread()類(lèi)似,用于創(chuàng)建輸出報(bào)表線(xiàn)程。

        成員變量VID、PID和PVN用于保存三項(xiàng)屬性值,由用戶(hù)輸入。ReadBuffer和WriteBuffer分別是輸入報(bào)表緩沖區(qū)和輸出報(bào)表緩沖區(qū)。緩沖區(qū)大小由設(shè)備的輸入報(bào)表和輸出報(bào)表長(zhǎng)度決定。該模塊的特點(diǎn)在于:實(shí)際應(yīng)用中可以根據(jù)不同的低速USB設(shè)備,設(shè)置其對(duì)應(yīng)的VID、PID和PVN值以及ReadReportBuffer和WriteReportBuffer緩沖區(qū)的大小;而設(shè)備的識(shí)別、打開(kāi)、輸入/輸出數(shù)據(jù)等功能都無(wú)需修改。這樣就保證了模塊具有較強(qiáng)的通用性。

        4 實(shí)驗(yàn)

        實(shí)驗(yàn)環(huán)境為Windows 8操作系統(tǒng),開(kāi)發(fā)平臺(tái)為Visual Studio 2012,選用的低速USB設(shè)備為T(mén)angent Devices的Wave Console。Tangent Wave Console是一類(lèi)較復(fù)雜的專(zhuān)用型USB設(shè)備,設(shè)有41個(gè)按鍵、13個(gè)旋鈕和3個(gè)二維滾動(dòng)跟蹤球三類(lèi)控制器,另有3個(gè)微型液晶屏。Tangent Wave Console輸入報(bào)表長(zhǎng)度是27字節(jié),各字節(jié)的分配是0字節(jié)記錄報(bào)表ID,1-6字節(jié)前41比特記錄各按鍵的狀態(tài),另有7比特未用,7-19字節(jié)記錄各旋鈕的狀態(tài);20-25字節(jié)分別記錄三個(gè)二維滾動(dòng)跟蹤球X軸和Y軸的狀態(tài);26字節(jié)留作固件升級(jí)。輸出報(bào)表長(zhǎng)度是41字節(jié),各字節(jié)的分配是0-5字節(jié)為輸出控制信息,6-40字節(jié)為液晶屏顯示信息。Tangent Wave Console的數(shù)據(jù)傳輸方式為中斷方式,輪詢(xún)間隔時(shí)間為40ms。

        在Windows環(huán)境下,通訊模塊的OpenUSBDevice()和CloseUSBDevice()功能可以通過(guò)調(diào)用相關(guān)API函數(shù)實(shí)現(xiàn)。為保證模塊在不同操作系統(tǒng)和軟件系統(tǒng)下的通用性,將模塊以COM接口形式實(shí)現(xiàn)。這樣當(dāng)某一軟件系統(tǒng)需要接入某一專(zhuān)用型低速USB設(shè)備時(shí),只須在系統(tǒng)中調(diào)用這一接口即可。

        圖1 Tangent Wave Console與主機(jī)的通訊

        圖1給出的是模擬主機(jī)軟件系統(tǒng)調(diào)用CUSBCom-Module實(shí)現(xiàn)與Tangent Wave Console雙向通訊的運(yùn)行界面。從圖中可以看到,當(dāng)用戶(hù)在界面中輸入設(shè)備三項(xiàng)屬性值并點(diǎn)擊“打開(kāi)設(shè)備”后,軟件系統(tǒng)將根據(jù)屬性值完成對(duì)Tangent Wave Console的識(shí)別和打開(kāi)工作。之后就可以對(duì)輸入、輸出報(bào)表的值進(jìn)行讀取和解析,并可以在液晶屏上將本次輪詢(xún)內(nèi)狀態(tài)發(fā)生變動(dòng)的控制器信息同步顯示出來(lái)。當(dāng)軟件系統(tǒng)對(duì)各個(gè)控制器定義對(duì)應(yīng)的消息響應(yīng)函數(shù)后,即可操縱Tangent Wave Console完成實(shí)際工作。

        5 結(jié)語(yǔ)

        提高專(zhuān)用型低速USB設(shè)備的通用性對(duì)科研和實(shí)際工作具有較大應(yīng)用價(jià)值。通過(guò)Tangent Wave Console控制臺(tái)上進(jìn)行的編程實(shí)驗(yàn)表明CUSBComModule模塊具有較強(qiáng)的通用性,且基本不對(duì)軟件系統(tǒng)的運(yùn)行效率造成影響。今后的工作主要是進(jìn)一步擴(kuò)展該接口的各項(xiàng)功能。

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

        [2]楊晶菁,張浩.基于USB3.0的圖像采集系統(tǒng)硬件設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2014,33(17):40-43.

        [3]湯重陽(yáng),趙志文,韓欽亭等.Windows環(huán)境下USB設(shè)備監(jiān)控技術(shù)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2014,34(S1):60-63.

        [4]索曉杰,翟正軍,姜紅梅.USB3.0協(xié)議分析與框架設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2012,20(8):2233-2235.

        [5]王繼剛,鄭維民,滕志猛,鐘衛(wèi)東.虛擬化環(huán)境下的USB設(shè)備訪(fǎng)問(wèn)方法[J].計(jì)算機(jī)應(yīng)用,2011,31(5):1439-1442.

        [6]楊強(qiáng),王志斌,李曉,張敏娟.Linux中USB設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)及其應(yīng)用[J].濟(jì)南大學(xué)學(xué)報(bào)(自然科學(xué)版),2014.28(3):224-229.

        Low-Speed USB Device;I/O Reports;Interrupt;Windows API

        Research on Communication Module of Special Low-Speed USB Devices

        CUI Yang

        (Department of Mathematics and Computer,China Institute of Industrial Relations,Beijing 100048)

        Many special low-speed USB devices can only be identified and used in a specific operating system or software environment,which may cause some difficulties for practical work.Introduces the characteristics and communication mechanism of low-speed USB devices,based on it,designs a module for low-speed USB devices,and programs on Tangent Wave Console.Results show that the module can better achieve the two-way communication function of special low-speed USB devices in different operating systems and software environments. Keywords:

        中央高?;究蒲袠I(yè)務(wù)費(fèi)專(zhuān)項(xiàng)資金資助項(xiàng)目(No.12zy019)

        1007-1423(2016)25-0063-03DOI:10.3969/j.issn.1007-1423.2016.25.014

        崔陽(yáng)(1979-),男,內(nèi)蒙古呼和浩特市人,博士研究生,講師,研究方向?yàn)橹R(shí)工程與知識(shí)發(fā)現(xiàn)

        2016-05-10

        2016-08-25

        猜你喜歡
        設(shè)備
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        調(diào)試新設(shè)備
        基于VB6.0+Access2010開(kāi)發(fā)的設(shè)備管理信息系統(tǒng)
        基于MPU6050簡(jiǎn)單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        廣播發(fā)射設(shè)備中平衡輸入與不平衡輸入的轉(zhuǎn)換
        電子制作(2018年10期)2018-08-04 03:24:48
        食之無(wú)味,棄之可惜 那些槽點(diǎn)滿(mǎn)滿(mǎn)的可穿戴智能設(shè)備
        500kV輸變電設(shè)備運(yùn)行維護(hù)探討
        HTC斥資千萬(wàn)美元入股虛擬現(xiàn)實(shí)設(shè)備商WEVR
        Automechanika Shanghai 2014 之“看” 汽保設(shè)備篇
        如何在設(shè)備采購(gòu)中節(jié)省成本
        97国产精品麻豆性色| 吃奶摸下的激烈视频| 久久精品国产亚洲av影院毛片| 少妇被黑人整得嗷嗷叫视频| 伊人激情av一区二区三区| 久久国产精品不只是精品| 国产人妖赵恩静在线视频| 日韩av一区二区不卡| 日韩一区国产二区欧美三区 | 国产午夜精品理论片| 国产一区不卡视频在线| 后入丝袜美腿在线观看| 被黑人猛躁10次高潮视频| 情人伊人久久综合亚洲| 久久精品国产亚洲av忘忧草18| 国产成人综合久久精品推荐免费 | 久久伊人这里都是精品| 天码人妻一区二区三区| 在线观看av手机网址| av大片网站在线观看| 亚洲成a∨人片在线观看无码| 色狠狠av老熟女| 国内精品久久久久国产盗摄| 免费人成黄页网站在线一区二区| 人妻少妇精品无码专区| 国产精品 高清 尿 小便 嘘嘘| 午夜无码国产18禁| h视频在线播放观看视频| 亚洲色爱免费观看视频| 曰韩精品无码一区二区三区| 69精品人妻一区二区| 好吊妞视频这里有精品| 中文字幕乱码人妻一区二区三区| 久久久国产精品ⅤA麻豆百度| 亚洲精品岛国av一区二区| 毛片无码国产| 亚洲AⅤ精品一区二区三区| 亚洲大胆美女人体一二三区| 97人伦影院a级毛片| 国产精品丝袜黑色高跟鞋| 一区二区视频网站在线观看|