<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 基于HID協(xié)議的USB人機交互設備的接口設計

基于HID協(xié)議的USB人機交互設備的接口設計

作者: 時(shí)間:2010-09-15 來(lái)源:網(wǎng)絡(luò ) 收藏

  0x09, 0x05,//用法(vendor defined)

  0x09, 0x06,//用法(vendor defined)

  0x15, 0x80,//邏輯最小值(0x80 or -128)

  0x25, 0x7F,//邏輯最大值(0x7F or 127)

  0x35, 0x00,//物理最小值(0)

  0x45,0xFF,//物理最大值(255)

  0x75,0x08,//報告長(cháng)度(8位)

  0x95, 0x40,//報告數值(64 fields)

  0x91, 0x02,//輸出(data, variable, absolute)

  0xC0,//集合結束(Physical)

  0xC0//集合結束(Application)

  };

  這樣,后面數據的輸入和輸出都必須滿(mǎn)足報告的格式才能夠進(jìn)行傳輸。


圖4 應用程序枚舉設備流程

  3 應用程序設計實(shí)現

  Windows為應用程序訪(fǎng)問(wèn)設備提供了強大的支持,有一整套對設備進(jìn)行訪(fǎng)問(wèn)的API。應用程序要訪(fǎng)問(wèn)設備就必須先枚舉到設備,圖4為應用程序枚舉HID設備流程。

  枚舉成功后根據返回的設備句柄,就可以用ReadFile和WriteFile來(lái)讀寫(xiě)設備的數據了。這里采用異步方式來(lái)讀寫(xiě)數據,這樣不會(huì )發(fā)生讀寫(xiě)時(shí)阻塞,提高了程序的效率。以下是異步方式讀寫(xiě)設備的要點(diǎn):

 ?、?為了實(shí)現異步訪(fǎng)問(wèn)設備,在CreateFile打開(kāi)設備時(shí)必須使用FILE_FLAG_OVERLAPPED標志。

 ?、?打開(kāi)設備成功后,使用CreateThread建立1個(gè)讀設備線(xiàn)程。

 ?、?在這個(gè)線(xiàn)程中首先建立1個(gè)OVERLAPPED結構,并用CreateEvent函數初始化它的hEvent成員,這樣就創(chuàng )建了1個(gè)事件對象。

 ?、?調用ReadFile函數,并傳入這個(gè)結構。

 ?、?調用ReadFile后會(huì )立即返回,必須調用GetLaSTError獲得出錯碼。 如果為ERROR_IO_PENDING, 說(shuō)明此操作是在等待完成的;否則,說(shuō)明調用出錯。

 ?、?調用WaitForSingleObject等待hEvent事件的通知,并使此線(xiàn)程進(jìn)入休眠狀態(tài)。如果有數據發(fā)送到主機,讀線(xiàn)程就會(huì )被激活。

  WriteFile的使用也同樣要求異步操作,與ReadFile的使用差不多。

  這里要注意的是,在每次讀寫(xiě)數據前都要先接收和發(fā)送1字節的PID標志,所以每次讀寫(xiě)數據的時(shí)候都要多一個(gè)字節。比如,這里每次讀寫(xiě)的是64字節數據,但是在這64字節之前必須放1字節的PID數據,所以是65字節。一般這個(gè)字節的值為0。

  4 小結

  充分利用PDID12主端口的雙緩沖特性后,測試設備與PC間傳輸速度能達到8 KB/s以上,對于一些傳輸數據量不大,速度要求不高,而又必須在短時(shí)間內做出響應的場(chǎng)合基本能夠滿(mǎn)足要求。在此基礎上只要生成不同的報告描述符,就能開(kāi)發(fā)出各種不同的嵌入式設備;而且這樣的設備無(wú)需驅動(dòng),在插入PC后就能立刻開(kāi)始工作,省去了安裝驅動(dòng)程序的過(guò)程,方便使用。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: HID USB 協(xié)議 人機交互

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>