自定義USB-HID裝置_筆記
參考圈圈教程:
在USB鍵盤的描述符基礎上做如下修改:
1、Device Descriptor :修改PID/VID ;
2、Configuration Descriptor :修改 Interface Descriptor中的 bInterfaceSubClass 欄位和bInterfaceProtocol欄位改為 0 ;(自定義HID不使用子類和協議)
3、HID Report Descriptor :
- 應用集合的用途改為0x00(undefined)
- 修改報告描述符格式
//USB報告描述符的定義 code uint8 ReportDescriptor[]= { //每行開始的第一位元組為該條目的字首,字首的格式為: //D7~D4:bTag。D3~D2:bType;D1~D0:bSize。以下分別對每個條目註釋。 //這是一個全域性(bType為1)條目,將用途頁選擇為普通桌面Generic Desktop Page。 //後面跟1位元組資料(bSize為1),後面的位元組數就不註釋了,自己根據bSize來判斷。 0x05, 0x01, // USAGE_PAGE (Generic Desktop) //這是一個區域性(bType為2)條目,用途選擇為0x00。在普通桌面頁中, //該用途是未定義的,如果使用該用途來開集合,那麼系統將不會把它 //當作標準系統裝置,從而就成了一個使用者自定義的HID裝置。 0x09, 0x00, // USAGE (0) //這是一個主條目(bType為0)條目,開集合,後面跟的資料0x01表示 //該集合是一個應用集合。它的性質在前面由用途頁和用途定義為 //使用者自定義。 0xa1, 0x01, // COLLECTION (Application) //這是一個全域性條目,說明邏輯值最小值為0。 0x15, 0x00, // LOGICAL_MINIMUM (0) //這是一個全域性條目,說明邏輯值最大為255。 0x25, 0xff, // LOGICAL_MAXIMUM (255) //這是一個區域性條目,說明用途的最小值為1。 0x19, 0x01, // USAGE_MINIMUM (1) //這是一個區域性條目,說明用途的最大值8。 0x29, 0x08, // USAGE_MAXIMUM (8) //這是一個全域性條目,說明資料域的數量為八個。 0x95, 0x08, // REPORT_COUNT (8) //這是一個全域性條目,說明每個資料域的長度為8bit,即1位元組。 0x75, 0x08, // REPORT_SIZE (8) //這是一個主條目,說明有8個長度為8bit的資料域做為輸入。 0x81, 0x02, // INPUT (Data,Var,Abs) //這是一個區域性條目,說明用途的最小值為1。 0x19, 0x01, // USAGE_MINIMUM (1) //這是一個區域性條目,說明用途的最大值8。 0x29, 0x08, // USAGE_MAXIMUM (8) //這是一個主條目。定義輸出資料(8位元組,注意前面的全域性條目)。 0x91, 0x02, // OUTPUT (Data,Var,Abs) //下面這個主條目用來關閉前面的集合。bSize為0,所以後面沒資料。 0xc0 // END_COLLECTION }; //通過上面的報告描述符的定義,我們知道返回的輸入報告具有8位元組。 //輸出報告也有8位元組。至於這8位元組的資料是幹什麼用的,就要由使用者 //自己來決定了。像我們這個實驗,輸入報告的第一位元組用來描述8個按鍵 //的狀態,第二到第五位元組返回返回報告的次數(增加一個長整型的變數Count, //每傳送一次報告就加1)。而輸出報告的第一位元組則用來控制板上8個LED //的狀態,第二位元組(非0時)用來清除上面的報告計數器Count。
相關推薦
自定義USB-HID裝置_筆記
參考圈圈教程: 在USB鍵盤的描述符基礎上做如下修改: 1、Device Descriptor :修改PID/VID ; 2、Configuration Descriptor :修改 Interface Descriptor中的 bInterfaceSubClass 欄位和
LINUX 自定義USB Gadget HID 裝置
最近在搞自定義的Gadget hid裝置,核心版本:LINUX3.15 使用開發板:ATMEL SAMA5D3 編譯環境:Ubuntu 12.04 首先配置核心,進入Device driver 選單 [*] USB suppo
[轉]C++ MFC介面讀寫USB HID裝置資料程式
C++ MFC介面讀寫USB HID裝置資料程式跟大家分享一個最近開發的,用來測試USB HID裝置的通用程式,程式還有很多可以繼續優化的地方,比如說interupt的週期,讀取位元組的多少等。我遇到的問題是:開發一個簡單易用的介面,用來對USB HID裝置(比如說遊戲手柄,控制面板等)讀寫資料,一
Android USB Host與USB Hid裝置的通訊(印表機和android通訊,通過USB)
記事:android和印表機通過網路通訊(網路印表機),有空也要記錄一下 堆疊關係也要記錄一下(通常我們所說的堆疊都是指棧,比如一個方法被呼叫的時候,我們就會把相關變數壓棧(巢狀才會壓棧,一個方法呼叫完是要出棧的),除非遞迴,一般情況下,棧是不會溢位的) 近期一直在做Android USB
提高USB HID裝置速率的方法——基於C8051F380
專案採用C8051F380的USB2.0介面實現HID裝置(配置為Game Controller)。利用端點1傳送資料,每包12個位元組。經測試,即使裝置什麼也不做,僅在main函式的while(1)迴圈中持續傳送資料,最快資料也僅達到5ms
dev自定義排序,CustomColumnSort--------------------學習筆記
一般的控制元件或者元件都支援按照某一列進行排序。但是,這種排序是根據資料來源裡的資料預設按照降序或升序排序的,同時這樣的排序與欄位的型別有關。 假設現在欄位的型別是字串型別 ,但是,儲存的資料時數字加一些特殊的符號例如:20/1 ,1/5,1/30,0/2等等的資料。這
USB-HID裝置協議解讀
參考文獻:Device Class Definition for Human Interface Devices(HID) 用於描述HID功能特徵的有三個值:Class SubClass Interfaces Subclass Code Descriptio
iOS網易雲信 自定義訊息的坑_未知型別訊息
OK 先閱讀官方文件。。。在gitHub裡面。。https://github.com/netease-im/NIM_iOS_UIKit/blob/master/Documents/nim_custom_message.md 文件有點坑。。很多細節沒提 直接未知型別訊息錯誤
利用Velocity自動生成自定義程式碼_java版_原始碼下載
Velocity很多企業都要求要會,其實也不難,重要的是練過啊,實踐出真知。對於有多年開發經驗的人而言其實是比較簡單的,但是卻有可能在實際開發中從來沒用過,我就是其中之一。此篇部落格借鑑程式設計師的Velocity經驗來加以學習。 專案結構: 執行效果:你可能會看到專案
USB HID裝置資料的讀取
USB裝置(HID) Android下獲取HID資料的方式: 1.通過讀取/dev/hidrawX裝置節點 看名字就知道意思了(這個需要在編譯的時候開啟) 2.如果是標準HID裝置,還可以通過/dev/input裡的裝置節點讀取 方式一.通過input/even
STM32 自定義HID USB裝置的實現
最近需要使用STM32開發一個裝置通過HID協議與主機通訊,於是開始學習USB,發現USB這個體系實在太龐大了,直接看USB的例程根本看不懂,完全找不到突破口,最後在網上找到一本不錯的書《圈圈教你玩USB》,這本書能夠很好地帶你入門。列舉過程,請求,令牌,資料包,端點,描述符,這些知識都講的很清
USB自定義HID裝置實現-STM32
該文件使用USB韌體庫,在其基礎上進行了自己的定製,完成了一個USB-HID裝置,首先是usb_desc.c檔案,裡面存放了usb各種描述符的存在 #include "usb_desc.h" //usb標準裝置描述符 const u8 DinkUsbDeviceDe
STM32配置CH375B成HID Host模式讀取自定義HID裝置的資料 ——STM32埠初始化
最近產品需要一個USB主機測試治具,所以需要做一個USB HOST去讀取HID裝置的資料,由於以前也沒做過USB方面的專案,對這一塊也不是很熟悉,因此遇到了很多困難,所幸的是經過兩天半的努力,最終完成了CH375B的除錯。不多廢話,先上一張我除錯的MCU管腳分配圖 標頭
基於stm32的自定義HID裝置開發與上位機通訊實現(附原始碼)
現在主流的安卓手機資料連線線,Mini-usb、Micro-usb,Type-c,產品追隨主流,非聯網裝置,摒棄ST-LINK、JLINK,直接用usb資料傳輸升級。主要實現與HID裝置的通訊即人機互動。本文主要介紹了HID裝置的下位機通訊連線與上位機裝置識別。 下位機:
angularJS1筆記-(10)-自定義指令(templateUrl屬性)
clas angular ima 追加 set provider black text rep index.html: <!DOCTYPE html> <html lang="en"> <head> <meta chars
python學習筆記5-自定義函數
函數調用 筆記 取值 修改 args pytho class 名稱 func 1 自定義函數 (1)函數代碼塊以def關鍵字開頭,然後函數標識符名稱和圓括號 (2)任何傳入參數和自變量必須放在圓括號中間。圓括號之間可以用於定義參數 (3)函數的第一行語句可以選擇
MySQL學習筆記-自定義函數
自定義函數 signed mysql pwm begin 多個 2個 list ive MySQL學習筆記-自定義函數 1.自定義函數簡介 自定義函數:用戶自定義函數(user-defined function,UDF)是一種對MySQL擴展的途徑,其用法與內置函數相同
微信開發筆記-調用自定義分享接口
彈出菜單 菜單 開發筆記 n-1 onf target ready 模式 時間戳 文章來自:http://www.cnblogs.com/ysyn/archive/2015/07/23/4665897.html 引言: 工作中開發微信網站,簡稱微網站。由於微
學習筆記19_自定義錯誤頁
默認 errors acc .html 調試 error redirect nbsp edi 在WebConfig中,可以配置當服務器發生哪些錯誤時,能跳轉到那個頁面: <customErrors mode ="On" defaultRedirect = " defa
轉:C#制作ORM映射學習筆記一 自定義Attribute類
技術 sage 其中 username pac ont 學習 collect reat 之前在做unity項目時發現只能用odbc連接數據庫,感覺非常的麻煩,因為之前做web開發的時候用慣了ORM映射,所以我想在unity中也用一下ORM(雖然我知道出於性能的考慮這樣做事不