import sys
import os

# 添加父目录到路径，以便能够导入 timer 模块
sys.path.insert(0, os.path.abspath('..'))
sys.path.insert(0, os.path.abspath('.'))

import timer
from timer import measure_time, sleep_ms, MICROPYTHON, IMPLEMENTATION

print(f"当前运行环境: {IMPLEMENTATION}")
print(f"是否为MicroPython: {'是' if MICROPYTHON else '否'}")
print("=" * 40)

def basic_example():
    print("开始基本用法示例...")
    t = timer.Timer()
    t.start()
    print("休眠500毫秒...")
    sleep_ms(500)
    t.stop()
    print(f"基本用法 - 经过时间: {t.elapsed_ms():.3f}ms")

def context_manager_example():
    print("开始上下文管理器示例...")
    with timer.Timer() as t:
        print("休眠300毫秒...")
        sleep_ms(300)
    print(f"上下文管理器 - 经过时间: {t.elapsed_ms():.3f}ms")

@measure_time
def decorated_function():
    print("开始装饰器示例...")
    print("休眠200毫秒...")
    sleep_ms(200)
    return "完成"

def multiple_measurements():
    print("开始多次测量示例...")
    t = timer.Timer()
    
    print("第一次测量开始...")
    t.start()
    sleep_ms(100)
    t.stop()
    print(f"第一次测量: {t.elapsed_ms():.3f}ms")
    
    print("重置计时器...")
    t.reset()
    
    print("第二次测量开始...")
    t.start()
    sleep_ms(150)
    t.stop()
    print(f"第二次测量: {t.elapsed_ms():.3f}ms")

def run_examples():
    print("===== 运行时间测量示例 =====")
    
    print("\n1. 基本用法")
    basic_example()
    
    print("\n2. 上下文管理器")
    context_manager_example()
    
    print("\n3. 装饰器")
    result = decorated_function()
    
    print("\n4. 多次测量")
    multiple_measurements()
    
    print("\n===== 示例结束 =====")

if __name__ == "__main__":
    try:
        run_examples()
    except Exception as e:
        print(f"发生错误: {type(e).__name__} - {str(e)}")