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

USB 如何知道緩衝中有資料?

答題得分者是:taishyang
tunkai
一般會員


發表:3
回覆:6
積分:6
註冊:2008-11-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-15 22:46:39 IP:140.115.xxx.xxx 訂閱
小弟使用一張ST的STM32F103ZC(Cortex M3)的實驗板,透過USB送出資料到PC端,使用64K緩衝的Bulk EndPoint送出,
驅動用DDK裡面的BulkUSB的範例改的,
測試可以打開PIPE的入口,

但是如果當實驗板送出資料後,PC端的程式該如何判斷緩衝區有資料?
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-16 09:41:20 IP:118.169.xxx.xxx 訂閱
如果你最底層是用ReadFile方式的話,看回傳值是不是TRUE就知道了
tunkai
一般會員


發表:3
回覆:6
積分:6
註冊:2008-11-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-01-16 15:15:59 IP:140.115.xxx.xxx 訂閱
但是使用ReadFile(hRead, pinBuf, ReadLen, &nBytesRead, NULL ),前不需要知道ReadLen的長度嗎?
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-01-16 22:29:00 IP:218.169.xxx.xxx 訂閱
需要知道啊,在USB device描述裡面就可以知道該Endpoint的長度

===================引 用 tunkai 文 章===================
但是使用ReadFile(hRead, pinBuf, ReadLen, &nBytesRead, NULL ),前不需要知道ReadLen的長度嗎?
tunkai
一般會員


發表:3
回覆:6
積分:6
註冊:2008-11-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-01-18 11:03:48 IP:140.115.xxx.xxx 訂閱
所以ReadLen就是設備端那邊所設定的長度,而nByteLen是實際被傳送的長度嗎?

小弟剛接觸USB,很多規格書上的東西都有看沒懂,很抱歉都問一些沒做功課的問題。
因為讀取UART的時候都會先用ReadLen = CS.cbInQue 取到長度,在call ReadFile(),
所以有點搞混,
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-01-19 01:07:00 IP:218.168.xxx.xxx 訂閱
yes,nByteLen是成功讀取的資料長度

===================引 用 tunkai 文 章===================
所以ReadLen就是設備端那邊所設定的長度,而nByteLen是實際被傳送的長度嗎?

hansdisc
一般會員


發表:0
回覆:1
積分:0
註冊:2008-06-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-09-30 18:26:46 IP:211.75.xxx.xxx 訂閱
看了這篇文章的討論
我還是有些問題
1. ClearCommError 我試用在USB , 但cbinque always 0 , 然而實際去ReadFile又讀的到東西
請問USB是不是不能使用ClearCommError 來判斷長度

2. 為什麼要看Buffer長度, 是因為我又遇到另一個問題在ReadFile的時候 , 由於USB未讀到裝置傳送的資料 , 導致會跳進ReadFile函式後就出不來(程式會handle著) , 但是有資料的時候他就會跳出來
請問有辦法避開這個問題嗎?

PS.我的程式最後是跑到ntdll.KiFastSystemCall: 跑過sysenter後 程式斷點就不知道跑去哪了 @@

系統時間:2024-04-20 11:20:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!