From 227ba79a792cce886132074aa845b40327898406 Mon Sep 17 00:00:00 2001 From: fanshuhua Date: Fri, 14 Nov 2025 13:59:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E4=B8=BA=20Windows=20=E4=B8=8A?= =?UTF-8?q?=E5=91=A8=E6=9C=9F=E5=8F=91=E9=80=81CAN=E6=8A=A5=E6=96=87?= =?UTF-8?q?=E6=8F=90=E4=BE=9B=E6=9B=B4=E9=AB=98=E7=B2=BE=E5=BA=A6=E5=AE=9A?= =?UTF-8?q?=E6=97=B6=E5=99=A8=E6=94=AF=E6=8C=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 描述: 为PrecisionSleep.dll生成Python绑定,利用dll中的高精度定时器ScheduledExecutor实现了ScheduledExecutorCyclicSendTask类,用于Windows平台下的高精度周期性CAN消息发送。 --- can/broadcastmanager.py | 107 +++++++++ can/bus.py | 26 ++- can/precision_tools/PrecisionSleep.dll | Bin 0 -> 38912 bytes can/precision_tools/precision_tools.py | 307 +++++++++++++++++++++++++ 4 files changed, 434 insertions(+), 6 deletions(-) create mode 100644 can/precision_tools/PrecisionSleep.dll create mode 100644 can/precision_tools/precision_tools.py diff --git a/can/broadcastmanager.py b/can/broadcastmanager.py index 1fea9ac50..e03ffe629 100644 --- a/can/broadcastmanager.py +++ b/can/broadcastmanager.py @@ -22,6 +22,14 @@ from can import typechecking from can.message import Message +try: + from .precision_tools.precision_tools import ScheduledExecutor + + _has_precision_tools = True +except (ImportError, FileNotFoundError): + _has_precision_tools = False + + if TYPE_CHECKING: from can.bus import BusABC @@ -386,3 +394,102 @@ def _run(self) -> None: delay_ns = msg_due_time_ns - time.perf_counter_ns() if delay_ns > 0: time.sleep(delay_ns / NANOSECONDS_IN_SECOND) + + +class ScheduledExecutorCyclicSendTask( + LimitedDurationCyclicSendTaskABC, ModifiableCyclicTaskABC, RestartableCyclicTaskABC +): + """ + 使用PrecisionSleep.dll(通过 ScheduledExecutor)的循环发送任务。 + """ + + _executor: ScheduledExecutor | None = None + _executor_lock = threading.Lock() + + def __init__( + self, + bus: "BusABC", + lock: threading.Lock, + messages: Sequence[Message] | Message, + period: float, + duration: float | None = None, + on_error: Callable[[Exception], bool] | None = None, + autostart: bool = True, + modifier_callback: Callable[[Message], None] | None = None, + ) -> None: + super().__init__(messages, period, duration) + self.bus = bus + self.send_lock = lock + self.stopped = True + self.on_error = on_error + self.modifier_callback = modifier_callback + self._task_id: int | None = None + self._msg_index = 0 + + with ScheduledExecutorCyclicSendTask._executor_lock: + if ScheduledExecutorCyclicSendTask._executor is None: + # 为所有任务使用一个共享的执行器 + ScheduledExecutorCyclicSendTask._executor = ScheduledExecutor() + + if autostart: + self.start() + + def _task_callback(self, task_id: int, user_data: object) -> None: + """由 ScheduledExecutor 执行的回调函数。""" + if self.stopped: + return + + if self.end_time is not None and time.perf_counter() >= self.end_time: + self.stop() + return + + try: + message = self.messages[self._msg_index] + if self.modifier_callback is not None: + self.modifier_callback(message) + with self.send_lock: + self.bus.send(message) + except Exception as exc: # pylint: disable=broad-except + log.exception(exc) + if self.on_error is None or not self.on_error(exc): + self.stop() + # 重新抛出异常以便可能被执行器的错误处理捕获 + raise + + self._msg_index = (self._msg_index + 1) % len(self.messages) + + def start(self) -> None: + if not self.stopped: + return # 已经在运行 + + self.stopped = False + self.end_time = ( + time.perf_counter() + self.duration if self.duration else None + ) + self._msg_index = 0 + + executor = ScheduledExecutorCyclicSendTask._executor + if executor is None or executor.is_shutdown(): + # 如果初始化正确,这种情况不应该发生 + raise RuntimeError("ScheduledExecutor 不可用。") + + period_ms = self.period * 1000 + if period_ms <= 0: + raise ValueError("周期必须为正数。") + + self._task_id = executor.schedule_at_fixed_rate( + self._task_callback, initial_delay_ms=0, period_ms=period_ms + ) + + def stop(self) -> None: + if self.stopped: + return + + self.stopped = True + executor = ScheduledExecutorCyclicSendTask._executor + if self._task_id is not None and executor and not executor.is_shutdown(): + executor.cancel_task(self._task_id) + self._task_id = None + + # 注意:我们不需要在这里关闭共享的执行器。 + # 它可以在更高的层级进行管理,例如,当总线关闭时。 diff --git a/can/bus.py b/can/bus.py index 03425caaa..719ddbae1 100644 --- a/can/bus.py +++ b/can/bus.py @@ -4,6 +4,7 @@ import contextlib import logging +import sys import threading from abc import ABC, abstractmethod from collections.abc import Callable, Iterator, Sequence @@ -17,9 +18,16 @@ from typing_extensions import Self import can.typechecking -from can.broadcastmanager import CyclicSendTaskABC, ThreadBasedCyclicSendTask +from can.broadcastmanager import ( + CyclicSendTaskABC, + ThreadBasedCyclicSendTask, + _has_precision_tools, +) from can.message import Message +if _has_precision_tools: + from can.broadcastmanager import ScheduledExecutorCyclicSendTask + LOG = logging.getLogger(__name__) @@ -319,11 +327,17 @@ def _send_periodic_internal( :meth:`~can.broadcastmanager.CyclicTask.stop` method. """ if not hasattr(self, "_lock_send_periodic"): - # Create a send lock for this bus, but not for buses which override this method - self._lock_send_periodic = ( # pylint: disable=attribute-defined-outside-init - threading.Lock() - ) - task = ThreadBasedCyclicSendTask( + # Create a lock for each bus instance to prevent issues with sharing the bus + # via multiple threads. + self._lock_send_periodic = threading.Lock() + + task_class: type[ThreadBasedCyclicSendTask] + if sys.platform == "win32" and _has_precision_tools: + task_class = ScheduledExecutorCyclicSendTask + else: + task_class = ThreadBasedCyclicSendTask + + task = task_class( bus=self, lock=self._lock_send_periodic, messages=msgs, diff --git a/can/precision_tools/PrecisionSleep.dll b/can/precision_tools/PrecisionSleep.dll new file mode 100644 index 0000000000000000000000000000000000000000..572d2b277bbe5f6e936101d58118ecd387d6d12c GIT binary patch literal 38912 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 literal 0 HcmV?d00001 diff --git a/can/precision_tools/precision_tools.py b/can/precision_tools/precision_tools.py new file mode 100644 index 000000000..f8cbf2db2 --- /dev/null +++ b/can/precision_tools/precision_tools.py @@ -0,0 +1,307 @@ +# -*- coding: utf-8 -*- +""" +用于本地 ScheduledExecutor 和 PrecisionSleep DLL 的 Python 封装。 + +该模块提供两个主要类: +1. ScheduledExecutor: C++ 调度执行器的 Pythonic 封装, + 模仿了 Java 的 ScheduledThreadPoolExecutor 接口。 +2. PrecisionSleep: 高精度睡眠函数的封装。 + +注意:此模块依赖于名为 PrecisionSleep.dll 的本地 DLL。 +PrecisionSleep.dll仓库开源地址:https://github.com/fshoocn/precision_tools +""" + +import ctypes +import os +import sys +import threading +import time +from pathlib import Path +from typing import Callable, Dict, Optional + +""" +""" + +# 为任务回调定义函数指针类型 +# 第一个参数是任务ID (unsigned long long),第二个参数是用户数据 (py_object) +TaskCallbackFunc = ctypes.CFUNCTYPE(None, ctypes.c_ulonglong, ctypes.py_object) + +def _find_dll(dll_name: str = "PrecisionSleep.dll") -> Optional[Path]: + """ + 在通用编译目录或系统路径中查找 DLL。 + 在相对于当前脚本的典型 CMake 构建文件夹中搜索。 + """ + # 在脚本目录和父目录中搜索 + search_paths = [Path.cwd()] + for i in range(3): + search_paths.append(search_paths[-1].parent) + + # 常见的编译目录名称 + build_dirs = [ + "build", + "cmake-build-release", + "cmake-build-debug", + "cmake-build-release-visual-studio-amd64", + "out/build/x64-release", + "out/build/x64-debug", + # 当前precision_tools.py文件所在目录 + Path(__file__).parent + ] + + for base_path in search_paths: + # 检查基本路径本身 + if (base_path / dll_name).is_file(): + return base_path / dll_name + + # 检查通用编译目录 + for build_dir in build_dirs: + dll_path = base_path / build_dir / dll_name + if dll_path.is_file(): + return dll_path + + # 回退到系统范围搜索 + if sys.platform == "win32": + try: + # 使用系统的 DLL 搜索路径 + loader = ctypes.WinDLL(dll_name) + return Path(loader._name) + except (OSError, FileNotFoundError): + pass + + return None + + +class ScheduledExecutor: + """ + 一个用于本地 C++ 调度线程池执行器的 Python 封装。 + + 该类管理本地执行器的生命周期,提供调度任务的方法, + 并确保在 Python 和 C++ 之间安全地处理回调。 + """ + _dll_path = _find_dll() + if not _dll_path: + raise FileNotFoundError( + "找不到 PrecisionSleep.dll。 " + "请确保它位于系统 PATH 或常见的生成目录中。" + ) + + _dll = ctypes.CDLL(str(_dll_path)) + + def __init__(self, thread_pool_size: int = 4): + """ + 初始化调度执行器。 + :param thread_pool_size: 线程池中的线程数。 + """ + self._setup_function_signatures() + + self._executor = self._dll.ScheduledExecutor_create(thread_pool_size) + if not self._executor: + raise RuntimeError("创建本地调度执行器失败。") + + if not self._dll.ScheduledExecutor_initialize(self._executor): + self._dll.ScheduledExecutor_destroy(self._executor) + raise RuntimeError("初始化本地调度执行器失败。") + + self._active = True + # ctypes 的返回类型不能直接在类型提示中使用,因此我们使用 'object' + self._tasks: Dict[int, tuple] = {} + self._task_lock = threading.Lock() + + def _setup_function_signatures(self): + """为所有 DLL 函数设置 ctypes 的 argtypes 和 restypes。""" + # ScheduledExecutor 函数 + self._dll.ScheduledExecutor_create.argtypes = [ctypes.c_int] + self._dll.ScheduledExecutor_create.restype = ctypes.c_void_p + + self._dll.ScheduledExecutor_initialize.argtypes = [ctypes.c_void_p] + self._dll.ScheduledExecutor_initialize.restype = ctypes.c_bool + + self._dll.ScheduledExecutor_shutdown.argtypes = [ctypes.c_void_p] + self._dll.ScheduledExecutor_shutdown.restype = None + + self._dll.ScheduledExecutor_destroy.argtypes = [ctypes.c_void_p] + self._dll.ScheduledExecutor_destroy.restype = None + + self._dll.ScheduledExecutor_isShutdown.argtypes = [ctypes.c_void_p] + self._dll.ScheduledExecutor_isShutdown.restype = ctypes.c_bool + + self._dll.ScheduledExecutor_schedule.argtypes = [ctypes.c_void_p, TaskCallbackFunc, ctypes.py_object, ctypes.c_double] + self._dll.ScheduledExecutor_schedule.restype = ctypes.c_ulonglong + + self._dll.ScheduledExecutor_scheduleAtFixedRate.argtypes = [ctypes.c_void_p, TaskCallbackFunc, ctypes.py_object, ctypes.c_double, ctypes.c_double] + self._dll.ScheduledExecutor_scheduleAtFixedRate.restype = ctypes.c_ulonglong + + self._dll.ScheduledExecutor_cancelTask.argtypes = [ctypes.c_void_p, ctypes.c_ulonglong] + self._dll.ScheduledExecutor_cancelTask.restype = ctypes.c_bool + + self._dll.ScheduledExecutor_getThreadPoolSize.argtypes = [ctypes.c_void_p] + self._dll.ScheduledExecutor_getThreadPoolSize.restype = ctypes.c_int + + self._dll.ScheduledExecutor_getPendingTaskCount.argtypes = [ctypes.c_void_p] + self._dll.ScheduledExecutor_getPendingTaskCount.restype = ctypes.c_ulonglong + + def schedule(self, task: Callable[[int, object], None], delay_ms: float, user_data=None) -> int: + """ + 调度一个一次性任务,在给定延迟后运行。 + :param task: 要执行的可调用对象。应接受两个参数: task_id (int) 和 user_data (任意对象)。 + :param delay_ms: 延迟时间(毫秒)。 + :param user_data: 可选的用户自定义数据,将传递给回调函数。 + :return: 已调度任务的 ID。 + """ + if not self._active: + raise RuntimeError("执行器已关闭。") + + # 创建包装器,将任务ID与用户数据传递给用户回调 + def wrapper(task_id, _user_data): + try: + task(task_id, _user_data) + except Exception as e: + print(f"任务 {task_id} 执行出错: {e}") + + c_callback = TaskCallbackFunc(wrapper) + task_id = self._dll.ScheduledExecutor_schedule(self._executor, c_callback, user_data, delay_ms) + + with self._task_lock: + self._tasks[task_id] = (c_callback, user_data) + + return task_id + + def schedule_at_fixed_rate(self, task: Callable[[int, object], None], initial_delay_ms: float, period_ms: float, user_data=None) -> int: + """ + 调度一个周期性任务,在初始延迟后以固定周期运行。 + :param task: 要周期性执行的可调用对象。应接受两个参数: task_id (int) 和 user_data (任意对象)。 + :param initial_delay_ms: 初始延迟(毫秒)。 + :param period_ms: 周期(毫秒)。 + :param user_data: 可选的用户自定义数据,将传递给回调函数。 + :return: 已调度任务的 ID。 + """ + if not self._active: + raise RuntimeError("执行器已关闭。") + + # 创建包装器,将任务ID与用户数据传递给用户回调 + def wrapper(task_id, _user_data): + try: + task(task_id, _user_data) + except Exception as e: + print(f"任务 {task_id} 执行出错: {e}") + + c_callback = TaskCallbackFunc(wrapper) + task_id = self._dll.ScheduledExecutor_scheduleAtFixedRate(self._executor, c_callback, user_data, initial_delay_ms, period_ms) + + with self._task_lock: + self._tasks[task_id] = (c_callback, user_data) + + return task_id + + def cancel_task(self, task_id: int) -> bool: + """ + 取消一个已调度的任务。 + :param task_id: 要取消的任务的 ID。 + :return: 如果任务成功取消,则为 True,否则为 False。 + """ + if not self._active: + return False + + result = self._dll.ScheduledExecutor_cancelTask(self._executor, task_id) + if result: + with self._task_lock: + self._tasks.pop(task_id, None) + return result + + def get_thread_pool_size(self) -> int: + """返回配置的线程池大小。""" + return self._dll.ScheduledExecutor_getThreadPoolSize(self._executor) + + def get_pending_task_count(self) -> int: + """返回待处理任务的大约数量。""" + return self._dll.ScheduledExecutor_getPendingTaskCount(self._executor) + + def is_shutdown(self) -> bool: + """检查执行器是否已关闭。""" + return self._dll.ScheduledExecutor_isShutdown(self._executor) + + def shutdown(self): + """ + 关闭执行器,允许正在运行的任务完成。 + 不会接受新任务。 + """ + if self._active: + self._dll.ScheduledExecutor_shutdown(self._executor) + self._active = False + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.shutdown() + # 本地 C++ 析构函数将被调用,它应该等待任务完成。 + # 在这里销毁句柄。 + if self._executor: + self._dll.ScheduledExecutor_destroy(self._executor) + self._executor = None + with self._task_lock: + self._tasks.clear() + + def __del__(self): + if self._active: + self.shutdown() + if self._executor: + self._dll.ScheduledExecutor_destroy(self._executor) + + +class PrecisionSleep: + """ + 本地 PrecisionSleep 函数的 Python 封装。 + """ + _dll_path = _find_dll() + if not _dll_path: + raise FileNotFoundError( + "找不到 PrecisionSleep.dll。 " + "请确保它位于系统 PATH 或常见的生成目录中。" + ) + + _dll = ctypes.CDLL(str(_dll_path)) + _initialized = False + + def __init__(self): + """初始化 PrecisionSleep 系统。""" + self._setup_function_signatures() + if not PrecisionSleep._initialized: + if not self._dll.PrecisionSleep_initialize(): + raise RuntimeError("初始化 PrecisionSleep 失败。") + PrecisionSleep._initialized = True + + def _setup_function_signatures(self): + """为所有 DLL 函数设置 ctypes 的 argtypes 和 restypes。""" + self._dll.PrecisionSleep_initialize.argtypes = [] + self._dll.PrecisionSleep_initialize.restype = ctypes.c_bool + + self._dll.PrecisionSleep_cleanup.argtypes = [] + self._dll.PrecisionSleep_cleanup.restype = None + + self._dll.PrecisionSleep_sleep.argtypes = [ctypes.c_double] + self._dll.PrecisionSleep_sleep.restype = ctypes.c_bool + + @staticmethod + def sleep(milliseconds: float) -> bool: + """ + 以高精度睡眠指定的持续时间。 + :param milliseconds: 睡眠持续时间(毫秒)。 + :return: 成功时为 True,失败时为 False。 + """ + if not PrecisionSleep._initialized: + raise RuntimeError("PrecisionSleep 未初始化。") + return PrecisionSleep._dll.PrecisionSleep_sleep(milliseconds) + + @staticmethod + def cleanup(): + """清理 PrecisionSleep 系统资源。""" + if PrecisionSleep._initialized: + PrecisionSleep._dll.PrecisionSleep_cleanup() + PrecisionSleep._initialized = False + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.cleanup() \ No newline at end of file From 1ee80946dd6c8145e39607ffc155ca4e60a3e79a Mon Sep 17 00:00:00 2001 From: fanshuhua Date: Mon, 17 Nov 2025 10:08:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E6=9B=B4=E6=96=B0=20ScheduledExecut?= =?UTF-8?q?orCyclicSendTask=20=E7=9A=84=E7=BA=BF=E7=A8=8B=E6=95=B0?= =?UTF-8?q?=E4=B8=BA1=20=E6=8F=8F=E8=BF=B0:=20=E5=AE=9E=E6=B5=8B=E5=9C=A8W?= =?UTF-8?q?indows=E7=B3=BB=E7=BB=9F=E4=B8=8B=EF=BC=8C=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=8D=95=E7=BA=BF=E7=A8=8B=E7=9A=84=20ScheduledExecutorCyclicS?= =?UTF-8?q?endTask=20=E5=8F=91=E9=80=81=E5=91=A8=E6=9C=9F=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=AF=94=E5=A4=9A=E7=BA=BF=E7=A8=8B=E6=9B=B4=E7=A8=B3?= =?UTF-8?q?=E5=AE=9A=EF=BC=8C=E5=87=8F=E5=B0=91=E4=BA=86=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=8F=91=E9=80=81=E7=9A=84=E5=BB=B6=E8=BF=9F=E7=8E=B0=E8=B1=A1?= =?UTF-8?q?=E3=80=82=E5=9B=A0=E6=AD=A4=E5=B0=86=E7=BA=BF=E7=A8=8B=E6=95=B0?= =?UTF-8?q?=E4=BB=8E=E9=BB=98=E8=AE=A44=E6=94=B9=E4=B8=BA1=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E6=8F=90=E5=8D=87=E5=91=A8=E6=9C=9F=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E5=8F=91=E9=80=81=E7=9A=84=E7=A8=B3=E5=AE=9A=E6=80=A7=E5=92=8C?= =?UTF-8?q?=E5=87=86=E7=A1=AE=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- can/broadcastmanager.py | 3 ++- can/precision_tools/PrecisionSleep.dll | Bin 38912 -> 284672 bytes doc/changelog.d/1729.added.md | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 doc/changelog.d/1729.added.md diff --git a/can/broadcastmanager.py b/can/broadcastmanager.py index e03ffe629..6f01d91d3 100644 --- a/can/broadcastmanager.py +++ b/can/broadcastmanager.py @@ -429,7 +429,8 @@ def __init__( with ScheduledExecutorCyclicSendTask._executor_lock: if ScheduledExecutorCyclicSendTask._executor is None: # 为所有任务使用一个共享的执行器 - ScheduledExecutorCyclicSendTask._executor = ScheduledExecutor() + # 实测单线程比多线程周期发送更稳定 + ScheduledExecutorCyclicSendTask._executor = ScheduledExecutor(1) if autostart: self.start() diff --git a/can/precision_tools/PrecisionSleep.dll b/can/precision_tools/PrecisionSleep.dll index 572d2b277bbe5f6e936101d58118ecd387d6d12c..1d950f05bf7503389d1ce8ef59b3dadca1ba94c8 100644 GIT binary patch literal 284672 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⪙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 PvTAkMpZ@p%?g;!()UI(y literal 38912 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 diff --git a/doc/changelog.d/1729.added.md b/doc/changelog.d/1729.added.md new file mode 100644 index 000000000..c5a1aed0c --- /dev/null +++ b/doc/changelog.d/1729.added.md @@ -0,0 +1 @@ +增加ScheduledExecutorCyclicSendTask,优化在Windows下发送周期消息的稳定性和准确性 \ No newline at end of file