#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@文件    :delay.py
@时间    :2022/02/17 15:37:43
@作者    :None
@版本    :1.0
@说明    :精确到ms延迟函数
'''


import sys
import ctypes
from time import sleep


def m_delay(ms):
    if sys.platform == "darwin" or sys.platform == "linux":
        sleep(ms / 1000)
    elif sys.platform == "win32" or sys.platform == "win64":
        stop_value = ctypes.c_longlong(0)
        start_value = ctypes.c_longlong(0)
        freq = ctypes.c_longlong(0)
        n = 0
        ctypes.windll.kernel32.QueryPerformanceFrequency(ctypes.byref(freq))
        count = ms * freq.value / 1000
        ctypes.windll.kernel32.QueryPerformanceCounter(ctypes.byref(start_value))
        while n < count:
            ctypes.windll.kernel32.QueryPerformanceCounter(ctypes.byref(stop_value))
            n = stop_value.value - start_value.value
    else:
        sleep(ms / 1000)
