当前位置:编程学习 > wap >>

QT采样程序怎么1ms采集一次?

最近用QT编写了一个AD采样程序,运行在ARM上,要求1ms采样一次,并且把采集到的数据绘制成波形显示在界面上,同时每隔一段时间把波形数据保存进数据库,现在调试的时候发现了一个问题,就是在频繁的操作界面或是在保存数据的时候采样周期超过了1ms,造成了一些点采集不到,软件里采样和界面操作以及保存数据都是不同的线程,这个问题应该怎么解决? --------------------编程问答-------------------- 现在是采用同步线程采集数据 还是异步线程呀 --------------------编程问答-------------------- 再补充一下,现在的采集线程是异步的,系统是Linux2.6,ARM主频200MHz,现在的主要问题是采集线程达不到1ms的精确定时,只要其他操作一占用CPU就会影响采样频率 --------------------编程问答-------------------- 装实时内核,再加数据缓冲方式。采样用内核采,应用读缓冲。 --------------------编程问答-------------------- 1ms需要其他方法。Qt timer可能达不到你要的精度要求。虽然帮助上说在Linux下精度貌似可以到1ms. --------------------编程问答-------------------- QTimer精度不够,用QThread启循环,执行读取数据的操作,计算读取操作花费的时间,然后调用linux的sleep函数,休眠(1ms - 读取时间) --------------------编程问答-------------------- 对的,QTimer是不精确的。之前项目有用过定时,不准确。 --------------------编程问答-------------------- 看来在Linux下是达不到小于1ms的精确定时了,那是不是只能换实时内核了?
我在想能不能用RTC时钟中断来解决:在RTC驱动的中断函数里进行AD采样和数据处理,在应用程序里进行数据的显示和发送
如果这样的可以的话具体应该怎么实现?有知道的大神能说一下实现的流程吗 --------------------编程问答-------------------- 写个linux驱动,调用timer中断,每1ms中断一次采样把数据写入循环缓存,应用程序根据指针读取数据即可 --------------------编程问答-------------------- QTimer精度不够,用QThread启循环,执行读取数据的操作,计算读取操作花费的时间,然后调用linux的sleep函数,休眠(1ms - 读取时间)

貌似sleep的精度也不够

用sellect吧 --------------------编程问答-------------------- 这种问题,需要分析下,你的需求是否必须1ms采集一次了! --------------------编程问答-------------------- 大神,你这个问题最后怎么解决的啊? --------------------编程问答-------------------- 生产值/消费者 模式 --------------------编程问答-------------------- ARM开发板不是有几个定时器吗? --------------------编程问答-------------------- 其实Qt有自带的类可以实现该功能,比如如果是音频采样的话,可以使用QAudioFormate这个类加上QAudioDevice来完成采样频率的设置。同样的也有视频的采样类。希望对你有帮助。
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,