日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
用人機接口類型開發(fā)USB設備
用人機接口類型開發(fā)USB設備
 更新時間:2008-8-4 5:03:33  點擊數(shù):3
【字體: 字體顏色


    

1  引言

USB是目前發(fā)展應用非常廣泛的一項技術。它是一種計算機系統(tǒng)連接外圍設備的標準輸入/輸出接口。根據(jù)外圍設備的不同的類型USB協(xié)議將其分類,每個設備類型都定義了類似功能設備的共同行為和協(xié)議。相同類型的設備都由一組標準定義的功能模塊組成。這樣主機與USB設備之間的通信就可以通過一些標準格式的數(shù)據(jù)包來完成。USB開發(fā)者論壇發(fā)布了一系列USB設備的類型定義,并配以相應的使用說明。下面表格顯示出 USB的設備類型(DEVEICE CLASS):

 

雖然Windows已經(jīng)提供了底層總線操作的驅(qū)動程序,但與此類底層驅(qū)動程序接口的是i/o請求包的IRPs的結(jié)構,而Windows為應用程序提供的接口是API函數(shù)。因此必須在其間建立一個驅(qū)動程序,在USB底層驅(qū)動與Windows應用程序之間傳遞消息。VB、 C/C++、Delphi等通用編程語言編寫的應用程序都可以在設備驅(qū)動程序的支持下,調(diào)用Readfile、WriteFile、DeviceIoControl等API函數(shù)。而編寫底層總線的驅(qū)動程序是非常復雜的一項工程。為了消除編寫設備驅(qū)動程序的問題,可對于一些具有相似功能的設備可以組成一類,分享共有的特性,便于使用Windows提供共同的類驅(qū)動程序。

2  HID類型概述

    第一個被windows支持的usb外圍設備類是人機接口設備。hid是human interface device人機接口設備的英文縮寫。是指直接和人進行互動的設備。如鼠標、鍵盤等。運行在WINDOWS98或其他更高的版本的操作系統(tǒng)的PC機,系統(tǒng)除了提供通用的USB設備的底層驅(qū)動以外,還單獨提供了一些HID設備的完整驅(qū)動,應用程序可以很容易的與操作系統(tǒng)內(nèi)部的hid通訊。這樣使得符合hid類的USB設備很容易開發(fā)與運行。也就是說,我們?nèi)绻雽崿F(xiàn)一個USB的HID類設備,是不需要在Windows下開發(fā)自己的驅(qū)動程序。HID不一定要是標準的外設類型,唯一的要求是交換的數(shù)據(jù)存儲在報文的結(jié)構內(nèi),設備固件必須支持報文的格式。任何工作在該限制之內(nèi)的設備都可以成為一個hid,例如溫度計,電壓計,讀卡機等。

hid類設備只能使用控制傳輸與中斷傳輸兩種方式。HID的交換的數(shù)據(jù)格式稱為報文。報文形式靈活,能處理任何類型的數(shù)據(jù)。HID特有的請求,Set_Report和Get_Report為主機和設備之間的任何類型數(shù)據(jù)塊傳輸提供了一種方法。主機發(fā)出Get_Report請求,設備響應向主機傳送數(shù)據(jù)塊;主機發(fā)出Set_Report請求,設備響應準備接收主機發(fā)出的數(shù)據(jù)塊。對于一個全速設備,中斷傳輸方式下每筆事務能夠傳送的最大數(shù)據(jù)量是64字節(jié),全速設備每毫秒不能有超過一筆事務,所以每秒最多傳送64000字節(jié)。高速設備,每筆事務能夠傳送的最大數(shù)據(jù)量是1024字節(jié)。對于不能一次傳輸完畢的數(shù)據(jù),接收和發(fā)送報文可以采用多筆事務。

    表2列舉出了與HID類設備通信過程中使用到的大量函數(shù),這些函數(shù)的用法在DDK的幫助文檔中均有詳細地解釋。這些函數(shù)包含在Hid.dll、Setupapi.dll、Kernel32.dll三個動態(tài)鏈接庫中,分別起到與HID設備通訊,尋找與識別設備,交換數(shù)據(jù)的作用。

 

Visual Basic編程語言,語法簡單用法靈活易于掌握。用它來開發(fā)通信程序是一種非?旖莸耐緩。但是需要指出的是,API函數(shù)的聲明格式在DDK的文檔內(nèi)全部是采用C語言的格式聲明,而VB與C語言的在變量的聲明、存儲格式上都有很大的區(qū)別。所以首先需要進行類型轉(zhuǎn)換,例如CHAR轉(zhuǎn)換為Byte類型,USHORT、ULONG、BOOLEAN、LP_(長指針前綴)、P_(指針前綴)轉(zhuǎn)換為Long 類型,PCTSTR轉(zhuǎn)換為String類型。其次,C語言的結(jié)構體可以轉(zhuǎn)換為VB中的自定義數(shù)據(jù)類型,并且特別值得注意,在涉及到自定義數(shù)據(jù)類型中子類存儲位置必須注意到VB與C語言對應轉(zhuǎn)換類型所占內(nèi)存空間不同的問題。最后C語言中有指針的概念,而VB中沒有,所以需用Byref按地址傳遞,VarPtr取變量地址等方法進行相應的操作。

 

3  VB中調(diào)用API函數(shù)詳述  

第一步需要獲得GUID(global unique identifier),需要調(diào)用函數(shù) HidD_GetHidGuid ,他在可以如下定義:

Public Declare Function HidD_GetHidGuid Lib_

 "hid.dll" _

(ByRef HidGuid As GUID)

 As Long       

通過調(diào)用它可以得到HID 類設備的 GUID,應用程序在與HID設備通訊之前,必須獲取HID類的獨特標志符GUID,它是一個128位值,每一位唯一表示了一個對象。通過這個API函數(shù)就可以從系統(tǒng)中讀取該值,得到 HID 設備句柄。接下來應檢測符合設定參數(shù)的HID,應使用函數(shù) SetupDiGetClassDevs,轉(zhuǎn)換為VB中的定義是:

Public Declare Function SetupDiGetClassDevs_

Lib "setupapi.dll" _

Alias "SetupDiGetClassDevsA" _

(ByRef ClassGuid As GUID, _

 ByVal Enumerator As String, _

 ByVal hwndParent As Long, _

 ByVal Flags As Long) _

As Long         

當調(diào)用該函數(shù)成功是,他返回一個包含所有的與設定參數(shù)匹配如:已連接和列舉,的設備信息的結(jié)構體數(shù)組地址,該值在下一個將要調(diào)用的函數(shù)SetupDiEnumDeviceInterfaces中將

[1] [2] [3]  下一頁
  • 上一篇: CMOS集成模擬開關的變通應用——脈寬編碼器
  • 下一篇: 超高速模數(shù)轉(zhuǎn)換器AD9224及其應用
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網(wǎng)友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1