有關 release usb port 的問題 |
尚未結案
|
brian_chen
一般會員 發表:14 回覆:20 積分:6 註冊:2007-06-26 發送簡訊給我 |
目前我偵測usb裝置連結的 function 有兩個
一個是在站上找到的程式 detectUSB 可以利用 pid / vid 來偵測 usb device 是否有連接上 另一個是 silicon lab 所提供的 function 叫 SI_GetNumDevices 現在的問題就是 當我程式在燒錄過程中,拔除usb device 此時會跳出 usb 拔除的錯誤訊息,然後我再將 usb device 插上 (程式還沒關閉) 重新燒錄還是可以 但如果我把軟體關閉之後再開啟 detectUSB 可以順利的找到 pid及vid 在裝置管理員中,也可以順利的找到已插入的 usb device 可是在用 silicon 所提供的 SI_GetNumDevices function 中 所回傳的 usb 裝置數是 0 (也就是沒找到) 而此時如果再重新插拔 usb device 就會順利的連接上 所以之前的想法是會不會在燒錄過程中的拔插動作導致 usb port hold 住 因此我想如果在程式中利用先將 usb 移除 再 連接 的功能是否可以解決掉此問題 在站上找了一些相關文章 (如安全的移除 usb 裝置等等...) 裡面提到的一些 function 如 SetupDiCallClassInstaller 及 CM_Get_DevNode_Status 我都有試過 CM_Get_DevNode_Status 感覺像是偵測 device node 的狀態 不過實際使用後,發現他的回傳值依然是 CR_SUCCESS 而 SetupDiCallClassInstaller 我使用 DIF_REMOVE sleep(500) 之後 再下 DIF_UNREMOVE 確實是有移除掉,但沒有再連接上 而且變成我拔插後,電腦要重新再抓一次 driver 所以想請教一下不知道有沒有方式可以解決 usb port hold 住的問題 |
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
您提到的"我程式在燒錄過程中", 是燒錄什麼東西? 透過USB 的FIFO 將資料送入另一個裝置? 應該是open USB port handle 開啟後未釋放的結果. 在open 和close的function, 印出訊息檢查吧. ===================引 用 brian_chen 文 章=================== 現在的問題就是 當我程式在燒錄過程中,拔除usb device 此時會跳出 usb 拔除的錯誤訊息,然後我再將 usb device 插上 (程式還沒關閉) 重新燒錄還是可以
------
FPGA驗證, FPGA開發平台, http://smims.com |
brian_chen
一般會員 發表:14 回覆:20 積分:6 註冊:2007-06-26 發送簡訊給我 |
是燒錄一個二進位檔到 ic 裡 不過我想在站上提供的 detectusb 小程式 在偵測的過程中是否就已經open USB port handle 還是在後來 我在燒錄前檔案前,利用 silicon 的 function -- SI_Open 下了這個指令才去 open USB port handle 另外在try catch中有設定 如果燒錄中被拔除,會下一個 SI_Close 的 function 來關閉 不知道這個是不是就算是釋放呢? 還是說 連在 detectusb 這個小程式中 也要順便釋放才行 謝謝。 ===================引 用 ikk 文 章=================== 您提到的"我程式在燒錄過程中", 是燒錄什麼東西? 透過USB 的FIFO 將資料送入另一個裝置? 應該是open USB port handle 開啟後未釋放的結果. 在open 和close的function, 印出訊息檢查吧. |
pcboy
版主 發表:177 回覆:1838 積分:1463 註冊:2004-01-13 發送簡訊給我 |
看看是否有幫助
[所有][發表] 偵測USB儲存裝置的插拔和磁碟代號(含SourceCode) http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=91493
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案! 子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問! |
brian_chen
一般會員 發表:14 回覆:20 積分:6 註冊:2007-06-26 發送簡訊給我 |
謝謝版主提供的連結
不過他主要的功能是 "用 WM_DEVICECHANGE 和 DBT_DEVICEARRIVAL 偵測 USB 儲存裝置的插拔" 這個我目前有加在onDeviceChange裡面做usb插拔的動作 只是重點是 在我上面敘述的問題中 "當我程式在燒錄過程中,拔除usb deviceWM_DEVICECHANGE 和 DBT_DEVICEARRIVAL 從頭到尾都可以偵測到 usb 裝置的插拔動作 只是我在想,如果都知道 usb 裝置有插入 為什麼在 silicon 那邊會無法得知裝置已經插入 而導致無法將檔案燒錄到 ic 裡 ===================引 用 pcboy 文 章=================== 看看是否有幫助 [所有][發表] 偵測USB儲存裝置的插拔和磁碟代號(含SourceCode) http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=91493 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |