作者chris70211 (克里斯)
看板C_Sharp
标题[问题] USB的取样速率不足
时间Wed Jan 16 15:54:41 2013
小弟写了一个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
1F:→ rainbow001:请问硬体是一直送资料过来吗?还是你要丢command去收? 01/16 17:28
我是一直接收硬体传送过来的资料
然後在接收资料的时候同时将数值跟timer计算的时间值存入ArrayList
关闭通讯後再将arrayList的值取出存入XLS档
结果发现每秒最多只有65笔 如果将这个方法套用在当初参考的USB程式的话
结果更慢 不知道程式架构大小是否会影响接收速率
想说电脑跑得够快应该不会影响才对>"<
※ 编辑: chris70211 来自: 114.140.147.25 (01/17 09:21)
2F:→ windsheep:你的问题应该是windows timer本身的限制, 试着google看 01/17 09:41
3F:→ 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)
4F:→ rainbow001:建议用可capture I/O bus的软体去debug.去看你的USB装 01/17 13:28
5F:→ rainbow001:装情形. 01/17 13:28
6F:→ rainbow001:^置 01/17 13:29
有人有试着用c#改WINDOWS的计时精度吗?
网路上的好像只是用在控制休眠时间的感觉>"< 还是悟性太差 看不懂QQ
※ 编辑: chris70211 来自: 27.241.89.225 (01/18 17:07)
7F:→ windsheep:你需要的计时精度已经接近Realtime等级了, 在windows里 01/21 09:28
8F:→ windsheep:是作不到的, 你应该思考一下, 是不是真的需要这样的取样 01/21 09:29
9F:→ windsheep:精度, 或是改用别的方式, 提供你几个方向: 1.google一下 01/21 09:30
10F:→ windsheep:windows realtime, 会有一些要钱的软体, 可以作到把 01/21 09:30
11F:→ windsheep:windows改成有realtime功能. 2.取样不要给windows来作, 01/21 09:31
12F:→ windsheep:试看看改用别的realtime OS, 或是你接收的硬体找找看有 01/21 09:33
13F:→ windsheep:没有直接就有包含时间资料的.. 01/21 09:33