标签: timing

串行编程:测量字符之间的时间

我正在 Linux 中通过串行线路发送/接收数据,我想找到字符之间的延迟。

Modbus 使用 3.5 个字符的延迟来检测消息帧边界。如果超过 1.5 个字符的延迟,则消息帧被声明为不完整的。

我正在用 C 编写一个快速程序,它基本上是

fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);
// setup newtio
....
tcsetattr(fd, TCSANOW, &newtio);
for(;;) {
    res = read(fs, buf, 1);
    if (res > 0) {
        // store time in milliseconds?
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以测量这里的时间吗?或者我是否需要以不同的方式查看从串行线路中检索数据?

我还尝试连接到 SIGIO 以在有数据时获取信号,但我似乎一次获取 8 个字节的数据。

(是的,我知道存在一些 modbus 库,但我想在其他应用程序中使用它)

c serial-port modbus timing

3
推荐指数
2
解决办法
3599
查看次数

LibGDX - 在循环中调整火焰速率的最佳方法

我正在用LibGDX制作2D平台游戏/射击游戏.我正在进行这个循环,按住火按钮会导致子弹从主角枪中飞出整个持续时间,同时按下按钮(快速射击).该部分完美且按预期工作.但是,我希望火速稍慢. 目前,循环只是在每个游戏框架上向世界添加一颗子弹,这意味着火速高得离谱.

我一直试图找到一个很好的方法来做到这一点,但无济于事.任何建议都将受到高度赞赏.

循环:

if (keys.get(Keys.FIRE)) {
    player.setState(State.FIRING);
        world.addBullet(new Bullet(1f,1f,0));
}
Run Code Online (Sandbox Code Playgroud)

java timing rate libgdx

3
推荐指数
1
解决办法
1579
查看次数

使用Boomerang库与Resource Timing API的优势

我正在开发一个Node.js在后端使用的项目,Angular.js作为前端,我需要跨不同的浏览器捕获应用程序的不同资源的页面加载统计信息.我能够通过使用Resource Timing API并将结果JSON对象存储在服务器上来收集基本统计信息.但在阅读了这个关于SO的问题之后,我了解了Boomerang库,现在我有点困惑.对于单页面应用程序(即内置Angular),使用Boomerang而不是Resource Timing API有什么优势?

javascript timing node.js angularjs boomerang

3
推荐指数
1
解决办法
1050
查看次数

如何使用 %%timeit cell magic 并排除设置代码?

%timeit魔术支持行模式和小区模式执行。使用单元格模式,调用%%timeit(注意:两个百分比符号),可用于从测量中排除一些设置代码:

%%timeit [-n<N> -r<R> [-t|-c] -q -p<P> -o] setup_code code code...
Run Code Online (Sandbox Code Playgroud)

但是你如何使用它呢?这给出了一个错误:

>>> %%timeit sleep(0.1); sleep(0.1)
... 
UsageError: %%timeit is a cell magic, but the cell body is empty. 
Did you mean the line magic %timeit (single %)?
Run Code Online (Sandbox Code Playgroud)

这并不排除基准测试中的第一行:

>>> %%timeit
... sleep(0.1)
... sleep(0.1)
... 
200 ms ± 17.6 µs per loop (mean ± std. dev. of 7 runs, 1 loop each)
Run Code Online (Sandbox Code Playgroud)

python profiling timing ipython ipython-magic

3
推荐指数
1
解决办法
1967
查看次数

如何在Python中使用麦克风获得准确的计时

我正在尝试使用 PC 麦克风进行节拍检测,然后使用节拍时间戳计算多个连续节拍之间的距离。我选择Python是因为有大量可用的材料并且开发速度很快。通过搜索互联网,我想出了这个简单的代码(还没有高级峰值检测或任何东西,如果需要的话稍后会出现):

import pyaudio
import struct
import math
import time


SHORT_NORMALIZE = (1.0/32768.0)


def get_rms(block):
    # RMS amplitude is defined as the square root of the
    # mean over time of the square of the amplitude.
    # so we need to convert this string of bytes into
    # a string of 16-bit samples...

    # we will get one short out for each
    # two chars in the string.
    count = len(block)/2
    format = "%dh" % (count)
    shorts = struct.unpack(format, …
Run Code Online (Sandbox Code Playgroud)

python signal-processing timing detection pyaudio

3
推荐指数
1
解决办法
1493
查看次数

不同计算机上的时钟时序变化

我正在我的 github 上开发 DMG-01(又名 gameboy 1989)的实现。我已经实现了 APU 和 PPU,并且在我的电脑(以及我朋友的电脑)上实现了(几乎)完美的计时。然而,当我在我朋友的一台电脑上运行模拟器时,它的运行速度是我或我其他朋友的两倍

同步时钟(Gameboy 和运行它的电脑之间)的代码如下:

Clock.h 头文件:

class Clock
{
// ...
public:
    void SyncClock();

private:
    /* API::LR35902_HZ_CLOCK is 4'194'304 */
    using lr35902_clock_period = std::chrono::duration<int64_t, std::ratio<1, API::LR35902_HZ_CLOCK>>;
    static constexpr lr35902_clock_period one_clock_period{1};
    using clock = std::chrono::high_resolution_clock;

private:
    decltype(clock::now()) _last_tick{std::chrono::time_point_cast<clock::duration>(clock::now() + one_clock_period)};
};
Run Code Online (Sandbox Code Playgroud)

时钟.cpp文件

void Clock::SyncClock()
{
    // Sleep until one tick has passed.
    std::this_thread::sleep_until(this->_last_tick);

    // Use time_point_cast to convert (via truncation towards zero) back to
    // the "native" duration of high_resolution_clock
    this->_last_tick = std::chrono::time_point_cast<clock::duration>(this->_last_tick …
Run Code Online (Sandbox Code Playgroud)

c++ timing gameboy c++-chrono c++17

3
推荐指数
1
解决办法
189
查看次数

响应式语句的执行顺序是什么?

假设我们有以下组件脚本

let x = 0;

function increase() {
    x += 1;
}

$: console.log(x)

$: if (x == 4) {
    x = 0;
}
Run Code Online (Sandbox Code Playgroud)

https://svelte.dev/repl/2bca979673114afea9fc6b37434653a3?version=3.29.0

直觉上,我期望持续调用increase, 是将值0,1,2,3,4,1,2,3,4,...记录到控制台。但这种情况并非如此。相反,第二个反应式语句首先运行,并且4从不记录;这是0。切换反应语句的顺序没有任何效果。

如何使日志记录语句在另一个语句之前执行?它首先运行第二个的原因是什么?

timing reactive-programming svelte

3
推荐指数
1
解决办法
639
查看次数

为什么 MP4/AVC 容器文件中指定多个时间刻度?

我当前正在解析 MPEG-DASH 流初始化段(由 FFMPEG 生成),我注意到时间刻度是在我的文件中的多个不同位置指定的:

  • 在电影标题框中(mvhd):1000
  • 在我的视频轨道(mdhd)的媒体标题框中:15360
  • 在 AVC 配置框 (avcC) 中,更准确地说,在序列参数集的 VUI 部分中 NAL 单位:60

为什么在这么多不同的地方指定它?为什么他们有不同的价值观?这些价值有等级吗?例如,60 是否会覆盖 15360,15360 是否会覆盖 1000?

这是我用来生成我正在查看的文件的命令:

ffmpeg -f v4l2 -pixel_format yuyv422 -vcodec rawvideo -framerate 30 -video_size 640x360 -i /dev/video0 \
        -f dash -remove_at_exit false -use_template true -use_timeline true -streaming true -window_size 5 -extra_window_size 5 -seg_duration 5 -vcodec libx264 -b:v 1M -maxrate 1M -bufsize 2M  -pix_fmt yuv420p -r 30 -s 640x360 -aspect 16:9 /var/www/html/media/live.mpd
Run Code Online (Sandbox Code Playgroud)

mp4 ffmpeg timing video-streaming mpeg-dash

3
推荐指数
1
解决办法
1060
查看次数

精确的.NET时间

我需要在.NET应用程序中访问非常精确的计时.

我需要微秒精度.

在.NET中有一种简单的方法吗?

.net vb.net time timing

2
推荐指数
1
解决办法
7522
查看次数

Hadoop作业执行所需的时间

是否有一个API来确定Hadoop作业执行的时间(确切地说 - >没有黑客攻击.)?

java hadoop timing

2
推荐指数
1
解决办法
3042
查看次数