[問題] USB的取樣速率不足

看板C_Sharp作者 (克里斯)時間11年前 (2013/01/16 15:54), 編輯推噓0(0013)
留言13則, 2人參與, 最新討論串1/1
小弟寫了一個USB接收資料的程式 雖然有成功接收到資料 但是將資料儲存後發現 取樣的速率沒有達到硬體的規格 (120hz/80hz) 從檔案看發現我的資料接收儲存的速率只有65hz(每秒65筆資料) 想問問大家有沒有這樣的問題 該從哪邊著手修改>"< tmrContinuousDataCollect = new System.Timers.Timer(10); //接收時間頻率 tmrContinuousDataCollect.Elapsed += new ElapsedEventHandler(OnDataCollect); tmrContinuousDataCollect.Stop(); tmrContinuousDataCollect.SynchronizingObject = this; 照理說更改Timer(10)內的數字應該就可以改變取樣頻率了 想問問各位是電腦執行程式的時間拖延到接收usb資料的速率嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 39.14.98.82

01/16 17:28, , 1F
請問硬體是一直送資料過來嗎?還是你要丟command去收?
01/16 17:28, 1F
我是一直接收硬體傳送過來的資料 然後在接收資料的時候同時將數值跟timer計算的時間值存入ArrayList 關閉通訊後再將arrayList的值取出存入XLS檔 結果發現每秒最多只有65筆 如果將這個方法套用在當初參考的USB程式的話 結果更慢 不知道程式架構大小是否會影響接收速率 想說電腦跑得夠快應該不會影響才對>"< ※ 編輯: chris70211 來自: 114.140.147.25 (01/17 09:21)

01/17 09:41, , 2F
你的問題應該是windows timer本身的限制, 試著google看
01/17 09:41, 2F

01/17 09:42, , 3F
看windows timer resolution
01/17 09:42, 3F
http://clyu1981.blog.163.com/blog/static/20837252011813101659989/ 這邊有提到 應該是本身設定問題了!! 再看看要怎麼改 ※ 編輯: chris70211 來自: 114.140.147.25 (01/17 11:35)

01/17 13:28, , 4F
建議用可capture I/O bus的軟體去debug.去看你的USB裝
01/17 13:28, 4F

01/17 13:28, , 5F
裝情形.
01/17 13:28, 5F

01/17 13:29, , 6F
^置
01/17 13:29, 6F
有人有試著用c#改WINDOWS的計時精度嗎? 網路上的好像只是用在控制休眠時間的感覺>"< 還是悟性太差 看不懂QQ ※ 編輯: chris70211 來自: 27.241.89.225 (01/18 17:07)

01/21 09:28, , 7F
你需要的計時精度已經接近Realtime等級了, 在windows裏
01/21 09:28, 7F

01/21 09:29, , 8F
是作不到的, 你應該思考一下, 是不是真的需要這樣的取樣
01/21 09:29, 8F

01/21 09:30, , 9F
精度, 或是改用別的方式, 提供你幾個方向: 1.google一下
01/21 09:30, 9F

01/21 09:30, , 10F
windows realtime, 會有一些要錢的軟體, 可以作到把
01/21 09:30, 10F

01/21 09:31, , 11F
windows改成有realtime功能. 2.取樣不要給windows來作,
01/21 09:31, 11F

01/21 09:33, , 12F
試看看改用別的realtime OS, 或是你接收的硬體找找看有
01/21 09:33, 12F

01/21 09:33, , 13F
沒有直接就有包含時間資料的..
01/21 09:33, 13F
文章代碼(AID): #1Gzbp52Y (C_Sharp)