问题描述
我正在从事一个项目,该项目采用 MIDI 文件并将它们播放到步进电机上。我正在使用 mbed os6,它使用 chronos 进行所有基于时间的比较。我有一系列笔记应该在几秒钟内开始,但我不确定如何将其与
给出的当前时间进行比较std::chrono::duration<double> timerus = motor1timer.elapsed_time()
其中经过的时间以微秒为单位返回计时值
我希望音符在当前时间超过数组中预设的音符开始时间后开始播放,但我对 C++ 非常生疏,不知道如何将我的浮点值转换为我可以使用的计时持续时间逻辑比较。我该怎么办?谢谢
解决方法
将 float number_of_seconds 值转换为 chrono
持续时间如下所示:
double number_of_seconds = ...;
auto d = std::chrono::duration<double>(number_of_seconds);
如果您要从几微秒进行转换,您会想要:
double number_of_microseconds = ...;
auto d = std::chrono::duration<double,std::micro>(number_of_microseconds);