社区
Windows SDK/API
帖子详情
c++ builder如何产生频率为8000hz的定时操作
stray1718
2011-05-07 10:41:11
rt,谢谢
...全文
258
17
打赏
收藏
c++ builder如何产生频率为8000hz的定时操作
rt,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
huzhangyou
2011-08-08
打赏
举报
回复
对于精确度要求更高的定时操作,则应该使用QueryPerformanceFrequency()和 QueryPerformanceCounter()函数。这两个函数是VC提供的仅供Windows 95及其后续版本使用的精确时间函数,并要求计算机从硬件上支持精确定时器。如示例工程中的Timer7、Timer7_1、Timer7_2、Timer7_3。
QueryPerformanceFrequency()函数和QueryPerformanceCounter()函数的原型如下:
BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
BOOL QueryPerformanceCounter(LARGE_INTEGER *lpCount);
参考
http://www.cppblog.com/xpzhou/archive/2007/04/20/22426.html
cankoo
2011-08-06
打赏
举报
回复
理论上可以!
rickys2080
2011-08-04
打赏
举报
回复
Timer控件最低精度好像是50ms
痞子酷
2011-07-25
打赏
举报
回复
struct timeval timeout ;
//struct timeval {
// int tv_sec; /* seconds */
// int tv_usec; /* microseconds */
//
FD_ZERO(&fdR);
FD_SET(fd1,&fdR);
select(fd1+1, &fdR, NULL, NULL,&timeout)
痞子酷
2011-07-25
打赏
举报
回复
采用线程和函数 select也许能精确到,但取决于电脑主频
fbmsyu
2011-07-25
打赏
举报
回复
不可能的。别费劲了。windows不支持
zz997788
2011-07-23
打赏
举报
回复
我觉得不是软件能实现的事,就丢给硬件去做,如果是单片机做应该没问题。
sterrys
2011-07-19
打赏
举报
回复
硬件中断
日立奔腾浪潮微软松下联想
2011-07-19
打赏
举报
回复
PC中,不用附加的硬件,基本上只有CMOS RTC中断(IRQ 8)可以达到这种要求,保证8K肯定没问题,大部分都可以到32K,某些RTC芯片,通过设置可以工作在4MHz的中断率。无论如何,得写ring 0级的驱动才行,用户模式的驱动应该不行。
LuoGD
2011-06-02
打赏
举报
回复
WINDOWS下实现不了,只是理论上可以!
My_Love
2011-05-30
打赏
举报
回复
在Windos下,如果驱动正在进行一些费时操作,别说1ms、55ms就是1s都不一定能保证。
Bosman
2011-05-30
打赏
举报
回复
HANDLE hTimer=CreateWaitableTimer(NULL,false,NULL);
LARGE_INTEGER liDueTime;
liDueTime.QuadPart=-10000000*LoginSecond;//1秒;
SetWaitableTimer(hTimer,&liDueTime,0,NULL,NULL,false);
while(!Terminated)
{
if (WaitForSingleObject(hTimer,1500)==WAIT_OBJECT_0)
{
if (Terminated||!ptrHttpProc[WebID]||ptrHttpProc[WebID]->pAccountLogin||ptrHttpProc[WebID]->HaveLogin)
break;
ptrHttpProc[WebID]->pReLogin=NULL;//login消息判断pRelogin,必须先置Null
PostThreadMessage(ptrHttpProc[WebID]->ThreadID,WM_LG_Login,0,0);
break;
}
}
CancelWaitableTimer(hTimer);
CloseHandle(hTimer);
土著巫师
2011-05-28
打赏
举报
回复
1毫秒震荡8次?!还是找实时操作系统吧,WINDOWS平台应该不可以达到这个实时性要求,之前在WIDNOWS平台上用SDK改过一个多媒体时钟用,你可以在网上找一下,但我以为也达不到你要求的精度。
xjq2003
2011-05-07
打赏
举报
回复
C++ Builder等都有专用的定时器控件Timer,而且使用很方便,可以实现一定的定时功能,但最小计时精度仅为55ms,且定时器消息在多任务操作系统中的优先级很低,不能得到及时响应,往往不能满足实时控制环境下的应用。不过Microsoft公司
在Win32 API函数库中已经为用户提供了一组用于高精度计时的底层函数,如果用户使用得当,计时精度可到1ms。这个计时精度、对于一般的实时系统控制完全可以满足要求。现将由C++ Builder 4.0提供的重新封装后的一组与时间相关的主要接口函数(函数名、参数、功能与Win32 API基本相同)说明如下:
1.DWORD timeGetTime(void)
返回从Windows启动开始经过的毫秒数。最大值为232,约49.71
天。
2.MMRESULT timeSetEvent(
UINT uDelay,
UINT uResolution,
LPTIMECALLBACK lpTimeProc,
DWORD dwUser,
UINT fuEvent
)
该函数设置一个定时回调事件,此事件可以是一个一次性事件或周期性事件。事件一旦被激活,便调用指定的回调函数,成功后返回事件的标识符代码,否则返回NULL。参数说明如下:
uDelay:以毫秒指定事件的周期。
UResolution:以毫秒指定延时的精度,数值越小定时器事件分辨率越高。缺省值为1ms。
LpTimeProc:指向一个回调函数。
DwUser:存放用户提供的回调数据。
FuEvent:指定定时器事件类型:
TIME_ONESHOT:uDelay毫秒后只产生一次事件
TIME_PERIODIC :每隔uDelay毫秒周期性地产生事件。
3.MMRESULT timeKillEvent(UINT uTimerID)
该函数取消一个指定的定时器回调事件。uTimerID标识要取消的事件(由timeSetEvent函数返回的标识符)。如果成功则返回TIMERR_NOERROR
,如果定时器时间不存在则返回MMSYSERR_INVALPARAM。
void CALLBACK TimeProc(
UINT uID,
UINT uMsg,
DWORD dwUser,
DWORD dw1,
DWORD dw2
);
该函数是一个应用程序定义的回调函数,出现定时器事件时该函数被调用。TimeProc是应用程序定义的函数名的占位符。使用该函数时要注意
的是,它只能调用以下有限的几组API函数:PostMessage,timeGetSystemTime, timeGetTime, timeSetEvent,timeKillEvent,midiOutShortMsg, midiOutLongMsg,OutputDebugString。同时也不要使用完成时间很长的API函数,程序尽可能简短。
使用以上一组函数就可以完成毫秒级精度的计时和控制(在C++Builder中使用时要将头文件mmsystem.h加到程序中)。由于将定时控制精确到几毫秒,定时器事件将占用大量的CPU时间和系统资源,所以在满足控制要求的前提下,应尽量将参数uResolution的数值增大。而且定时器实时控制功能完成后要尽快释放
本文来自: 中科软件园(www.4oa.com) 详细出处参考:http://www.4oa.com/Article/html/6/33/487/2005/17557.html
xjq2003
2011-05-07
打赏
举报
回复
使用线程,延时
weidp2004
2011-05-07
打赏
举报
回复
创建一个线程,建立一个死循环,然后启用微秒级计时,检测到微秒到达时触发事件!详细代码以后提供
stray1718
2011-05-07
打赏
举报
回复
timesetevent只能精确到1ms,最大频率也就到1000hz,不能满足要求啊
LPC553x Cortex-M33 MCU实战:从架构解析到电机控制与低功耗设计
本文深入解析NXP LPC553x MCU的核心架构与实战应用,重点涵盖Cortex-M33内核的TrustZone安全机制、PowerQuad DSP加速器在电机FOC控制中的高效滤波应用、FlexPWM与ADC同步触发实现高精度电流采样、FlexComm接口灵活配置多协议通信,以及基于时钟门控、低功耗模式和DVFS的系统级功耗优化策略。内容聚焦嵌入式实时控制场景下的外设协同、调试要点与硬件设计规范。
科技中介服务机构在为中小企业提供转型支持时,如何利用“区域科技创新数智大脑”优化服务流程?.docx
科技中介服务机构在为中小企业提供转型支持时,如何利用“区域科技创新数智大脑”优化服务流程?
GJB 150.29A-2025 军用装备实验室环境试验方法 第29部分:弹道冲击试验.rar
GJB 150.29A-2025 军用装备实验室环境试验方法 第29部分:弹道冲击试验.rar
AI人工智能深度学习PyTorch实战项目:ResNet图像分类+模型量化部署+医疗影像分析三大完整项目源码(含训练推理脚本与详细文档)
AI实战三合一套餐,即用型。包含:ResNet图像分类完整项目(18/34/50/101,CIFAR-10训练,余弦退火调度,混淆矩阵可视化,单图/批量预测)、模型优化与部署工具集(动态/静态/QAT三种量化、知识蒸馏ResNet50→18、ONNX导出验证、TensorRT FP16/INT8加速、TFLite移动端int8部署、性能基准对比)、医疗影像分析系统(肺炎X光诊断,ResNet18/DenseNet121/EfficientNet三骨干,Grad-CAM可解释性热力图,ROC/PR/混淆矩阵临床评估,诊断报告CSV)。共27+可运行脚本+HTML交互式讲义(ECharts图表+Mermaid流程图+AI插图)+CSDN Markdown版。无需GPU,CPU即可跑通。
基于BP神经网络的语音特征信号分类研究(Matlab代码实现)
内容概要:本文围绕基于BP神经网络的语音特征信号分类展开研究,详细介绍了利用Matlab实现BP神经网络对语音信号进行分类的技术流程。研究涵盖了语音信号的预处理、关键特征提取(如MFCC梅尔倒谱系数)、BP神经网络的结构设计、训练优化过程以及分类性能分析,重点探讨了如何通过调整网络层数、学习率、迭代次数等参数提升分类准确率,并通过实验验证了该方法在语音识别任务中的有效性和实用性。; 适合人群:具备一定信号处理基础和神经网络理论知识,从事语音识别、人工智能、模式识别及相关领域的高校学生、科研人员及工程技术开发者。; 使用场景及目标:① 掌握BP神经网络在语音特征分类中的完整应用流程与关键技术环节;② 在Matlab平台上复现并优化语音分类模型,提升实际项目的识别精度与鲁棒性;③ 为进一步研究深度学习模型(如CNN、LSTM)在语音处理中的应用奠定理论与实践基础。; 阅读建议:建议读者结合所提供的Matlab代码进行动手实践,重点关注特征提取模块与网络训练过程中的参数配置,通过对比不同实验设置下的分类结果深入理解模型行为,并尝试在自定义语音数据集上迁移应用以增强实战能力。
Windows SDK/API
1,222
社区成员
8,135
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章