全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2994
推到 Plurk!
推到 Facebook!

USB的Intput及Output

答題得分者是:foreman
Sendre
一般會員


發表:8
回覆:21
積分:5
註冊:2007-03-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-05-07 15:49:11 IP:60.248.xxx.xxx 訂閱
市面上有很多書籍有提供運用USB介面的API
(包括本網站上也有許多厲害的前輩們提供~)
以下有兩個API函式
InputReportByteLength與OutputReportByteLength
電腦端的程式已有相關方案可以解決
可是
我的問題是
電腦是從USB送來的哪個描述元得知
InputReportByteLength = 8
OutputReportByteLength = 8
的呢??
裝置描述元?配置描述元?端點描述元?介面描述元?字串描述元?
請各位厲害的前輩指點~
我已經為這個問題煩惱了兩星期了@@
書也翻了好多次,就是想不出答案...

麻煩各位前輩指導~謝謝~
foreman
高階會員


發表:3
回覆:124
積分:190
註冊:2004-09-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-05-08 11:11:29 IP:220.129.xxx.xxx 未訂閱
大大:
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-05-09 09:58:22 IP:60.248.xxx.xxx 訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-05-09 13:57:16 IP:220.129.xxx.xxx 未訂閱
大大:
建議您看廖濟林著〞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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-08-14 14:39:38 IP:220.130.xxx.xxx 訂閱
也可簡化這部份HID的程式 , 使用RTHID.dll
http://sites.google.com/site/hidlibrary/
系統時間:2024-05-02 8:41:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!