我想在 Qt 中创建一个准确的信号发生器。
例如,10us(微秒)生成 255 和 10ms(毫秒)生成 0 的方波信号。 我在我的线程中使用了 usleep() 但它睡了大约 1 毫秒!当搜索它时,我发现它是用于 CPU 上下文切换的。//fp:frequency of signal //t:time of generate high (amp) // n:generate n time
void Thread::rectGenerator(double fp, double t, double amp, double n)
{
double result;
double T=1000000/fp; //(us)
for (double i=0,ii=0; i<n*T; i+=_Interval,ii+=_Interval)
{
if (ii>=T)
ii=0;
if (ii<=t)
result=amp;
else
result=0;
th.usleep(1);
qDebug() << i << "\t" <<result;
}
}
结果:rectGenerator(200, 20, 255, 12) 在 12 秒内执行,但它应该在 60(ms) 内执行!!!
那么产生准确信号的最佳方法是什么?