當前位置:編程學習大全網 - 源碼下載 - 旋轉訓練源代碼

旋轉訓練源代碼

用vb實現USB接口設備的數據傳輸

本文介紹了USB設備中的人機接口,以及HID設備與主機通信的要點和方式。詳細說明了在VB中調用相關APl函數的方法,並介紹了壹種基於USB總線的數據采集系統的設計方案和開發方法,該系統采用USB2.0協議。該系統主要從設備的角度描述人機界面設備的通信以及與主機進行數據交換所使用的報表格式。應用程序可以使用任何能夠訪問API函數、調用窗口函數和與USB設備通信的編程語言。掌握USB設備與計算機的通信規則,實現USB設備的自動識別。它為數據采集系統與計算機之間的通信開辟了壹條新的途徑。

近年來,隨著大量支持USB的個人電腦的普及,USB逐漸成為PC的標準接口已是大勢所趨。主機方面,幾乎100%的最新PC都支持USB在設備方面,使用USB接口的設備越來越多,如數碼相機、掃描儀、操縱桿、磁帶和軟盤驅動器、圖像設備、打印機、鍵盤、鼠標等。

二、Windows系統選擇USB驅動程序的過程

當Windows檢測到壹個新的USB外設時,必須要做的壹件事就是找出應該使用哪個設備驅動程序應用軟件來與設備通信,然後加載所選的驅動程序。這是Windows設備管理器的工作,它使用類、設備安裝程序和INF文件來找到這個匹配。

INF文件是壹個文本文件,它包含有助於Windows識別設備的信息。該文件告訴Win-dows使用什麽驅動程序,在註冊表中存儲什麽信息等等。

第三,Visual Basic與USB設備通信的設計與實現

用VB語言訪問串行通信接口的方法。Windows在底層實現了很多與串口通信相關的復雜工作,為程序員提供了壹個相對容易的編程接口。例如,Windows自動將所有接收的字符放入接收緩沖區,所有發送的字符也進入發送緩沖區。只要程序空閑,程序就可以從接收緩沖區讀取數據,或者將數據發送到發送緩沖區。

1.主機尋找USB設備的過程

Windows支持的第壹個USB外設類是人機接口設備。HID是human interface DEVICE人機接口設備的英文縮寫。指直接與人交互的設備。如鼠標、鍵盤等。壹臺運行在WINDOWS98或其他更高版本操作系統上的PC,不僅提供了通用USB設備的基本驅動程序,還提供了壹些HID設備的完整驅動程序,這樣應用程序就可以很容易地與操作系統中的HID進行通信。這使得開發和運行符合HID類的USB設備變得容易。換句話說,如果我們要實現壹個USB HID設備,不需要在Windows下開發自己的驅動。HID不壹定是標準的外設類型,唯壹的要求是交換的數據存儲在消息結構中,設備固件必須支持消息格式。任何在此範圍內工作的設備都可能成為HID,如溫度計、電壓表、讀卡器等。

2.2中調用API函數的過程。動詞

(1)語句:以下是Visual Basic使用API函數WriteFile的語句:可以使用這個涵洞將數據寫入HID(或者文件等設備)。公共聲明函數WriteFile Lib _ " kernel32 " _

(By Val hFile為長整型,_ByReflpBuffer為字節型,_By Val nNumberOfBytes為長整型,_ ByRef lpnumberofbytes為長整型,_ ByVal lpOvefiapped為長整型)_長整型

(2)將HID進程公共聲明函數hidd _ gethidguid lib _ " HID . dll " _(Byrefhidguid as guid)標識為long。

3.Visual Basic數據處理

(1)將數據讀入設備

public Declare Function WriteFile Lib " kernel 32 " _(ByVal hFile As Long,_ ByReflpBuffer As Byte _ byvalnnnumberofbytestoswrite As Long,_ byrefnnnumberofbytcs written As Long,_ ByVal lpOvefiapped As Long)_ As Long

(2)從設備聲明函數read file lib _ " kernel 32 " _(byval hfile為long,_ byref lpbuffer為byte,_ byvalnnumberofbyte store為long,_ byreflpnumberofbyte store為long,_ lpovefiapped為long)as long中讀取數據。

讀寫消息緩沖區時,第壹個字節是ReportID,後面是消息數據。默認情況下,消息緩沖區有八條消息,排列成壹個環形。由於數據讀寫是在主機輪換訓練設備時發生的,不是由設備觸發造成硬件中斷,所以如果不能及時讀寫,新數據會覆蓋舊數據,導致報文丟失。在頻繁讀寫數據的情況下應該使用特征消息,這樣可以保證在消息數據沒有變化的情況下HID不會傳輸新的數據。

當SetupDiGetClassDevs不再使用時,應用上述函數釋放返回的數組hDevInfo。還需要使用函數CloseHandle,這是壹個非常通用的API函數,可以用來關閉通信。

四。結論

實際編程表明,使用VB開發HID USB設備是壹種非常方便快捷的方式,並且不需要編寫底層驅動,所涉及的API函數大部分都是眾所周知的通用函數。同時必須註意的是,HID類只支持控制傳輸和中斷傳輸。控制傳輸通常不用於數據傳輸,而中斷傳輸的特點是保證最大延遲,即事務之間的時間。它不保證傳輸速率,但保證每個事務之間的時間不會超過最大延遲。因此,中斷傳輸適用於數據量不太大,但需要及時快速傳輸,實時性要求高的場合。中斷傳輸不適合大數據量的傳輸。所以HID設備的應用也壹定要根據這個特點靈活使用。

  • 上一篇:影子評級含義是什麽?
  • 下一篇:朝鮮隊亞洲足壇的黑馬
  • copyright 2024編程學習大全網