USB的Intput及Output |
答題得分者是:foreman
|
Sendre
一般會員 ![]() ![]() 發表:8 回覆:21 積分:5 註冊:2007-03-17 發送簡訊給我 |
市面上有很多書籍有提供運用USB介面的API
(包括本網站上也有許多厲害的前輩們提供~) 以下有兩個API函式 InputReportByteLength與OutputReportByteLength 電腦端的程式已有相關方案可以解決 可是 我的問題是 電腦是從USB送來的哪個描述元得知 InputReportByteLength = 8 OutputReportByteLength = 8 的呢?? 裝置描述元?配置描述元?端點描述元?介面描述元?字串描述元? 請各位厲害的前輩指點~ 我已經為這個問題煩惱了兩星期了@@ 書也翻了好多次,就是想不出答案... 麻煩各位前輩指導~謝謝~ |
foreman
高階會員 ![]() ![]() ![]() ![]() 發表:3 回覆:124 積分:190 註冊:2004-09-10 發送簡訊給我 |
大大:
struct usb_st_endpoint_descriptor { Byte bLength; /* Size of this descriptor in bytes */ Byte bDescriptorType; /* ENDPOINT descriptor type */ Byte bEndpointAddress; /* Address of the endpoint */ Byte bmAttributes; /* Endpoint's attributes */ Uint16 wMaxPacketSize; /* Maximum packet size for this EP */<==這個就是 Byte bInterval; /* Interval for polling EP in ms */ }; 如 code struct { struct usb_st_configuration_descriptor cfg; struct usb_st_interface_descriptor ifc; struct usb_st_endpoint_descriptor ep1; struct usb_st_endpoint_descriptor ep2; } usb_configuration = { { 9, CONFIGURATION, sizeof(usb_configuration) << 8, 1, 1, 0, USB_CONFIG_BUSPOWERED, 0x32}, { 9, INTERFACE, 0, 0, 2, 0x08, 0x06, 0x50, 0 }, { 7, ENDPOINT, 0x81, 0x02, EP_IN_LENGTH << 8, 0 }, { 7, ENDPOINT, 0x02, 0x02, EP_OUT_LENGTH << 8, 0 } }; |
Sendre
一般會員 ![]() ![]() 發表:8 回覆:21 積分:5 註冊:2007-03-17 發送簡訊給我 |
foreman大大:
依大大的回覆來看 USB的Input與Output是在端點描述元決定的囉? (不知道小的這樣推論對不對) 但是小的還有些問題不是很清楚@@ 下面這段程式是在定義是什麼呀?? code struct { struct usb_st_configuration_deforbiddenor cfg; struct usb_st_interface_deforbiddenor ifc; struct usb_st_endpoint_deforbiddenor ep1; struct usb_st_endpoint_deforbiddenor ep2; } usb_configuration = { { 9, CONFIGURATION, sizeof(usb_configuration) << 8, 1, 1, 0, USB_CONFIG_BUSPOWERED, 0x32}, { 9, INTERFACE, 0, 0, 2, 0x08, 0x06, 0x50, 0 }, { 7, ENDPOINT, 0x81, 0x02, EP_IN_LENGTH << 8, 0 }, { 7, ENDPOINT, 0x02, 0x02, EP_OUT_LENGTH << 8, 0 } }; 若是要單晶片(8051)定義Input與Output然後傳描述元給pc 讓pc曉得 Input = 8 Output = 8 的話 又是該如何定義呢? 因為我還是新手 最近把剛買到手的書本連啃了三次 還是不太懂得其中的重點...以致於抓不到切入點... 所以請大大們指點了 |
foreman
高階會員 ![]() ![]() ![]() ![]() 發表:3 回覆:124 積分:190 註冊:2004-09-10 發送簡訊給我 |
大大:
建議您看廖濟林著〞USB2.0系統開發實例精解〞本書介紹AT89C5131晶片非常詳細或上 http://www.atmel.com/dyn/products/product_card.asp?part_id=3480 下載範例,AT89C51 HID Keyboard demonstration software 這例真好如果您評估板實際操做感覺真好 我建議使用HID(人機介面)PC部份不用寫Driver, 只須寫應用程式即可. |
HUNK999
初階會員 ![]() ![]() 發表:9 回覆:35 積分:28 註冊:2009-07-23 發送簡訊給我 |
也可簡化這部份HID的程式 , 使用RTHID.dll
http://sites.google.com/site/hidlibrary/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |