精确定时

jinxuliang 2011-12-21 02:56:39
描述:现有一个项目,需要每隔26毫秒(必须精准)将语音数据(大约600byte),通过UDP方式发送数据到嵌入式设备。因嵌入式设备提供的缓冲区只有10K大小,故要求计算机发送速度不能太快,太快缓冲区溢出;太慢嵌入式设备无法获得语音数据用于播放,处于停顿。

目前处理方法:

1、采用的是多媒体定时器。采用的26毫秒定时触发一次,但通过网络抓包和程序日志发现定时器,其不能确保在26毫秒就触发了,可能是15.25毫秒也可能是31毫秒或26毫秒触发的,因时间的累积效应,终会导致嵌入式设备缓冲区溢出。也试图模拟缓冲区大小进行速度控制,但发现几乎无法控制正确。程序是多线程的。

问:

1、可有精准按时触发的?

(网络上提供的很多高精度,基本都是单线程和占用极高CPU来实现的,不适合本项目)

2、求其他解决方案。

(硬件缓冲区,目前无法调大)
...全文
88 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

win32 api 中有个 BOOL QueryPerformanceCounter(   LARGE_INTEGER *lpPerformanceCount // pointer to counter value   );



微软这里有个例子 http://msdn.microsoft.com/en-us/library/ms979201.aspx
杨友山 2011-12-27
  • 打赏
  • 举报
回复
gomoku 2011-12-21
  • 打赏
  • 举报
回复
那你不能用Windows操作系统了。

csdn_aspnet 2011-12-21
  • 打赏
  • 举报
回复
时间控件不可以吗 ?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧