看板 C_Sharp 關於我們 聯絡資訊
小弟寫了一個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
rainbow001:請問硬體是一直送資料過來嗎?還是你要丟command去收? 01/16 17:28
我是一直接收硬體傳送過來的資料 然後在接收資料的時候同時將數值跟timer計算的時間值存入ArrayList 關閉通訊後再將arrayList的值取出存入XLS檔 結果發現每秒最多只有65筆 如果將這個方法套用在當初參考的USB程式的話 結果更慢 不知道程式架構大小是否會影響接收速率 想說電腦跑得夠快應該不會影響才對>"< ※ 編輯: chris70211 來自: 114.140.147.25 (01/17 09:21)
windsheep:你的問題應該是windows timer本身的限制, 試著google看 01/17 09:41
windsheep:看windows timer resolution 01/17 09:42
http://clyu1981.blog.163.com/blog/static/20837252011813101659989/ 這邊有提到 應該是本身設定問題了!! 再看看要怎麼改 ※ 編輯: chris70211 來自: 114.140.147.25 (01/17 11:35)
rainbow001:建議用可capture I/O bus的軟體去debug.去看你的USB裝 01/17 13:28
rainbow001:裝情形. 01/17 13:28
rainbow001:^置 01/17 13:29
有人有試著用c#改WINDOWS的計時精度嗎? 網路上的好像只是用在控制休眠時間的感覺>"< 還是悟性太差 看不懂QQ ※ 編輯: chris70211 來自: 27.241.89.225 (01/18 17:07)
windsheep:你需要的計時精度已經接近Realtime等級了, 在windows裏 01/21 09:28
windsheep:是作不到的, 你應該思考一下, 是不是真的需要這樣的取樣 01/21 09:29
windsheep:精度, 或是改用別的方式, 提供你幾個方向: 1.google一下 01/21 09:30
windsheep:windows realtime, 會有一些要錢的軟體, 可以作到把 01/21 09:30
windsheep:windows改成有realtime功能. 2.取樣不要給windows來作, 01/21 09:31
windsheep:試看看改用別的realtime OS, 或是你接收的硬體找找看有 01/21 09:33
windsheep:沒有直接就有包含時間資料的.. 01/21 09:33