https://ps5.mediatagtw.com/article/nhạc5大著數
左上圖的單位0x14值,代表這個單位是「角度」;右上圖的0x1001則代表這個單位是「秒」。 由於國標和英制的時間單位都是「秒」,所以這個單位設定值的第0個「半位元組」可以是1~4任意數字。 https://ps5.mediatagtw.com/article/nhạc 上面的「實體最大值」設成315,16進制為0x013B,但HID報告描述器的資料排列順序採用小頭派(Little-Endian,也譯做小端序),也就是低位元組在前、高位元組在後,因此0x013B要寫成0x3B, 0x01。 底下是十字鍵的報告描述內容,其中的PHYSICAL_MINIMUM和PHYSICAL_MAXIMUM用於定義實際的數值範圍,而UNIT則用於定義數值的單位,此處為「角度」。 電玩控制器的十字鍵,通常定義了8個狀態,每個方向用一個數字代表,例如:0代表「上」、2代表「右」、5代表「左下(同時按「左」和「下」)…等等。 因此,定義「奈米」單位的HID報告描述寫法如下,「單位」指定為公分(0x11)、「單位指數」設成0x09,代表「指數」為-7,而「底數」則固定為10。
- 筆者把上面的報告改成底下的敘述,明確指出這個裝置有14個按鍵,另外補上2個沒有作用的位元、刪除單位以及單位指數描述。
- 電玩控制器的十字鍵,通常定義了8個狀態,每個方向用一個數字代表,例如:0代表「上」、2代表「右」、5代表「左下(同時按「左」和「下」)…等等。
- 報告內容是一連串2進位資料,以Switch Pro控制器為例,報告的第3個位元代表A鍵的狀態,若該位元值為1,代表A鍵被按下了。
- 其中的Pointer(指標)代表:能產生多軸(如:X, Y, Z和反向Z)方向值來驅動應用程式物件的東東,而這個指標的所有控制軸都歸納在COLLECTION 類型的集合裡面。
筆者把上面的報告改成底下的敘述,明確指出這個裝置有14個按鍵,另外補上2個沒有作用的位元、刪除單位以及單位指數描述。 對照上文的Switch https://ps5.mediatagtw.com/article/nhạc Pro外觀圖片,這個遊戲控制器實際只有14個按鍵,但因為報告資料的基本單位是位元組(8位元),所以這裡額外定義了兩個按鍵來補成16位元。 搖桿(Joystick)和遊戲手把(Gamepad)是電玩遊戲常見的兩種人機介面裝置(HID),底下是一款飛行搖桿,飛行桿可控制飛行器的X, https://ps5.mediatagtw.com/article/nhạc Y, https://ps5.mediatagtw.com/article/nhạc Z軸姿態,飛行桿上面的幾個按鍵可控制武器系統,其中的HAT(帽子開關,也稱「苦力帽」)是個小搖桿或方向鍵。
https://ps5.mediatagtw.com/article/nhạc: 文章導覽
本單元採用的Joystick程式庫(參閱第一篇文章,這個程式庫應該命名成Gamepad比較貼切)可讓採用ATmega32U4微控器的開發板被主機識別為Switch Pro控制器。 HID報告描述器寫在Joystick.cpp原始檔,定義成名叫_hidReportDescriptor的字元常數陣列。 USB人機介面裝置和主機之間傳送的訊息,稱作「報告(report)」,每當使用者操作控制器,例如,按下A鍵,控制器就會發送所有按鍵和搖桿的狀態報告給主機。 上面的報告描述器定義了按鍵值的單位(UNIT)和單位指數(UNIT_EXPONENT),這兩個參數留待下文說明。 初次連接主機時,人機介面裝置會傳送一個HID報告描述器(Report Descriptor)給主機,報告描述器相當於「資料對照表」,讓主機知道HID報告資料的格式,例如,第1個位元是Y鍵、第2個位元是B鍵…等。 報告內容是一連串2進位資料,以Switch Pro控制器為例,報告的第3個位元代表A鍵的狀態,若該位元值為1,代表A鍵被按下了。
不同USB人機介面裝置的元件數量和組成結構不盡相同,像鍵盤、滑鼠和搖桿的組成方式差別很大,不同廠牌型號也不一樣,所以每個HID裝置都要準備一個報告描述器。 底下是任天堂Switch Pro遊戲手把的外觀和按鍵編號,它具有14個按鍵、2個類比搖桿(搖桿本體可下壓)以及稱為D-Pad或HAT的十字鍵。 其中的Pointer(指標)代表:能產生多軸(如:X, Y, Z和反向Z)方向值來驅動應用程式物件的東東,而這個指標的所有控制軸都歸納在COLLECTION 類型的集合裡面。 https://ps5.mediatagtw.com/article/nhạc 上一節的14個按鍵只有定義邏輯值,省略定義實體值,代表實體值等同邏輯值,而按鍵開關實際上也只有「開」和「關」兩個狀態。 這些代表「哪些鍵被按下的狀態值」稱作邏輯(Logical)值,各個按鍵對應的實際角度,叫做實體(Physical)值。
https://ps5.mediatagtw.com/article/nhạc: 文章分類
有些單位定義需要用到「指數」,像「奈米」單位,因為奈米是10-9公尺,USB官方定義的長度單位是公分,所以我們要先把奈米換算成10-7公分。 USB組織定義了如下的代碼來表示指數數字-8~1(正整數的0次方值都是1,所以忽略不計)。 單位值的定義,以半位元組(4個位元,稱為“nibble”)來劃分,第0個「半位元組」定義單位的制式(system)。 HID報告描述器本身也要按照USB組織協會制定的格式編寫,請參閱《超圖解ESP32深度實作》第16章的「人機介面裝置(HID)程式庫的原理說明」。
由香港SEO公司 Featured 提供SEO服務