毫秒时间精度跑马灯代码

2023-12-21 17:55:55
import pygame
import time

# 初始化Pygame
pygame.init()

# 设置窗口大小
window_width, window_height = 550, 500
screen = pygame.display.set_mode((window_width, window_height))
pygame.display.set_caption('跑马灯')

# 设置灯光的大小和间距
light_size = 15
light_spacing = 20
lights_per_row = 25  # 每行灯光数量
total_rows = 20  # 总行数

# 设置背景颜色和灯光颜色
background_color = (255, 255, 255)  # 将背景颜色设置为黑色
light_color_on = (0, 255, 0)
light_color_off = (255, 255, 0)  # 将灭灯状态的颜色设置为深绿色
time_color = (255, 0, 0)  # 将时间信息的颜色设置为红色

# 设置帧率,参照显示屏的刷新率进行调整即可,刷新率越高,走马灯的时间精度越高
fps = 240

# 创建一个Clock对象用于控制帧率
clock = pygame.time.Clock()

while True:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

    # 获取当前时间和毫秒
    current_time = time.time()
    milliseconds = int((current_time - int(current_time)) * 1000)

    # 清空屏幕
    screen.fill(background_color)

    # 显示当前时间信息
    font = pygame.font.Font(None, 48)
    time_str = time.strftime("Time: %H:%M:%S", time.localtime(current_time))
    time_text = font.render(f'{time_str}.{milliseconds:03}', True, time_color)
    screen.blit(time_text, (50, 0))

    # 更新灯光状态
    for i in range(total_rows):
        for j in range(lights_per_row):
            light_index = i * lights_per_row + j
            if light_index < milliseconds % (total_rows * lights_per_row):  # 根据毫秒数确定灯的状态
                color = light_color_on
            else:
                color = light_color_off
            pygame.draw.rect(screen, color, ((j + 1) * light_spacing, (i + 3) * light_spacing, light_size, light_size))

    # 刷新屏幕
    pygame.display.flip()

    # 控制帧率
    clock.tick(fps)

这段代码实现了一个跑马灯效果,具体实现步骤如下:

  1. 初始化 Pygame,并设置窗口大小。
  2. 定义灯光的大小、间距以及每行灯光的数量和总行数。
  3. 设置背景颜色和灯光的亮灭状态颜色。
  4. 设置帧率,用于控制刷新频率。
  5. 创建一个 Clock 对象用于控制帧率。
  6. 进入主循环,处理事件。
  7. 获取当前时间和毫秒数。
  8. 清空屏幕并填充背景颜色。
  9. 显示当前时间信息。
  10. 更新灯光状态,根据当前毫秒数确定亮灯的数量。
  11. 绘制灯光矩形,并根据状态设置颜色。
  12. 刷新屏幕,更新显示内容。
  13. 控制帧率,使程序按照指定的帧率运行。
    ?

可以根据显示屏的刷新率进行调整,包含屏幕分辨率的调整,可以用来更加精确的测量视频的视频的端到端的时延测试,再配合高刷显示屏,以及高帧率相机即可实现更加精确的时延测试,若是追求到1毫秒精度的,还是建议购买专门的跑马灯计时设备。此方案的精度会受到显示屏的刷新率限制。

运行效果如下:

转载请备注原文地址即可,非常感谢!根据需要自行修改即可

文章来源:https://blog.csdn.net/huapeng_guo/article/details/135135498
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。