線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4240
推到 Plurk!
推到 Facebook!

如何知道該插入USB的PORT是哪一個?

尚未結案
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-26 13:40:39 IP:61.66.xxx.xxx 未訂閱
請問各位前輩 假設我的電腦上有3個USB PORT 我要如何做到插入第一個USB PORT 就顯示USB PORT 1 (我想知道的是,我如何知道該插入USB的PORT是哪一個) 那如果我另外又外接一塊USB CARD時,那我又該如何做呢?
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-28 11:18:39 IP:61.30.xxx.xxx 未訂閱
利用 MSIC 元件 裡面的 TUSB class 裡面剛好有USB Enum範例 執行畫面如下 這是個freeware 如果需要source code 可以付費註冊 MSIC http://www.mitec.cz/ Download MSIC http://www.mitec.cz/Downloads/MSIC.zip
pkdemon
初階會員


發表:2
回覆:51
積分:25
註冊:2004-09-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-28 17:44:33 IP:211.22.xxx.xxx 未訂閱
blk5743 你好,    請參考http://delphi.ktop.com.tw/topic.php?TOPIC_ID=58642 m8815010 大大用的方法擷取WM_DEVICECHANGE的訊息    當收到的Message時將lParam轉成DEV_BROADCAST_DEVICEINTERFACE,裡面有個參數dbcc_name可以利用他來判斷是哪一個USB PORT收到新的裝置(或是移除)    以下是利用VC++所寫的測試程式(關於MESSAGE的部分)
LRESULT CTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
        if(WM_DEVICECHANGE == message)
        {
                DEV_BROADCAST_DEVICEINTERFACE *pDev = (DEV_BROADCAST_DEVICEINTERFACE *)lParam;                    switch(wParam)
                {
                        case DBT_DEVICEARRIVAL :
                                TRACE("DEVICE ARRIVAL\n");
                                break;
                        case DBT_DEVICEREMOVECOMPLETE :
                                TRACE("DEVICE REMOVE COMPLETE\n");
                                break;
                }
        }
        return CDialog::WindowProc(message, wParam, lParam);
}
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-28 18:05:44 IP:61.66.xxx.xxx 未訂閱
感謝Chris_Shieh 我就是想要這樣的東西 不過沒有CODE,還是沒辦法做
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-28 18:58:04 IP:61.66.xxx.xxx 未訂閱
謝謝pkdemon的回應 CODE的部分我試過了,可以偵測到裝置插入及移除 不過參數dbcc_name我看到的不管哪一個PORT都是一樣的亂數 不知道你那邊看到的是怎樣的東西
pkdemon
初階會員


發表:2
回覆:51
積分:25
註冊:2004-09-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-29 00:07:05 IP:220.137.xxx.xxx 未訂閱
blk5743 你好,    我在測試的時候是利用中斷點 把它設在收到 >,明早在 >
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-29 08:20:33 IP:61.66.xxx.xxx 未訂閱
我也有用中斷點去看,就是看到一些亂碼 不管插入或拔出哪一個PORT,得到的都是一樣 就只有MESSAGE有改變(插入0x8000,拔出0x8004)
801184
一般會員


發表:1
回覆:2
積分:0
註冊:2003-06-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-03 14:31:29 IP:61.222.xxx.xxx 未訂閱
可以參考 WINDOWS DDK USBVIEW sample code 看起來大同小異 應該可以在 MSDN 找到
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-05 08:58:26 IP:61.66.xxx.xxx 未訂閱
這個問題我已經解決了,雖然我不是上MSDN找的,不過和我找的的CODE應該是同一位作者做的。 • Issue A - USB 2.0 host controllers are not enumerated on Microsoft Windows 2000-based computers. • Issue B - Attached USB devices are not displayed. The version of the USBView.exe program that is built by using the Windows XP Service Pack 1 Windows Driver Development Kit (DDK) does not show any USB devices when you run the sample on the following operating systems: • The release version of Microsoft Windows XP. • Any version of Microsoft Windows 2000, Microsoft Windows Millennium Edition, or Microsoft Windows 98. 可是我在XP SP1,SP2都可以使用 http://www.intel.com/intelpress/usb/examples/download.htm 書名 USB Design by Example, 2nd Edition A Practical Guide to Building I/O Devicesby John Hyde 裡面有很多範例可以參考 使用Display USB就可以做到chris_shieh範例
系統時間:2024-04-19 21:26:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!