USB接口的設(shè)備已經(jīng)隨處可見,但是你知道它們的奧妙嗎?讓我來給你揭秘怎么在有限的USB插口上實(shí)現(xiàn)瑞士軍刀般種類繁多,功能齊全的設(shè)備。讓每一USB口都變成三頭六臂。
3,2,1,走(薛之謙臉) 大家好 
今天我們要說一個(gè)USB接口的故事 簡(jiǎn)介 USB復(fù)合設(shè)備,顧名思義就是一個(gè)具備多種功能的設(shè)備,不再是一個(gè)設(shè)備僅能提供一種用途。我知道電腦的USB插口是非常有限的,盡管可以使用USB Hub來擴(kuò)展接口數(shù),但是也不是無限多的,對(duì)于使用者想節(jié)省購(gòu)買Hub的銀票,而對(duì)于開發(fā)者則希望可以既不占用多接口,又可以實(shí)現(xiàn)多功能,來贏得消費(fèi)者的關(guān)注。USB復(fù)合設(shè)備就是解決這個(gè)問題的良好方案。
USB的自我介紹 說到USB復(fù)合設(shè)備就不得不說說USB的枚舉過程,也就是USB插入后主機(jī)的一系列動(dòng)作。當(dāng)然我們這里是不會(huì)用很專業(yè)的術(shù)語(yǔ)來說明的,相信如果你是開發(fā)者,必然已經(jīng)了如指掌,如果你是使用者,更是不愿看到太多的專業(yè)術(shù)語(yǔ)的。
我把USB的枚舉比作一個(gè)自我介紹,在插入后主機(jī)會(huì)詢問USB設(shè)備的屬性,而設(shè)備則像自我介紹一樣告訴主機(jī)自己的“名字”,“年齡”,“證件號(hào)”,“母語(yǔ)”等等。主機(jī)也是根據(jù)這些來區(qū)分插入的設(shè)備的。
復(fù)合設(shè)備原理 因此,我們可以做個(gè)假設(shè)是不是修改相應(yīng)的身份信息(也就是描述符)就可以實(shí)現(xiàn)復(fù)合設(shè)備了呢?答案是肯定的,但是具體要修改那些描述符就需要來分析一下了。
根據(jù)各個(gè)描述符記錄的信息,可以知道,因?yàn)閺?fù)合設(shè)備是只占用一個(gè)設(shè)備號(hào)的,所以它也只會(huì)包含一個(gè)設(shè)備描述符,一個(gè)設(shè)備通常也只會(huì)有一個(gè)配置描述符,那么就可以知道真正能改變的描述就只有接口和端點(diǎn)描述符了,但是端點(diǎn)描述符是固定的,真正能改變的就只有端點(diǎn)報(bào)告數(shù)據(jù)的格式了即報(bào)告描述符。下面就介紹兩種實(shí)現(xiàn)復(fù)合設(shè)備的方法,它們也確實(shí)是與接口和端點(diǎn)相關(guān)的。
多接口復(fù)合設(shè)備實(shí)現(xiàn) 我們用一張圖片來解釋
多報(bào)告描述符復(fù)合設(shè)備 多報(bào)告復(fù)合設(shè)備,就是在上報(bào)主機(jī)功能信息的時(shí)候,添加上信息所屬設(shè)備的編號(hào)即可讓主機(jī)輕而易舉獲得區(qū)分開不通的報(bào)告功能。最后一張實(shí)驗(yàn)現(xiàn)象讓你明白復(fù)合設(shè)備。
|