From 5f40847b8145d3ea17ebc7831d99dcb143a7324a Mon Sep 17 00:00:00 2001 From: controllerzz <79202101363@mail.ru> Date: Wed, 24 Dec 2025 20:32:26 +0300 Subject: [PATCH] v0.1.8 fix cli --- README.md | 2 +- carbus_async/remote/agent.py | 44 +++++++++++++++++++------- carbus_async/remote/server.py | 17 ++++++++-- example/remote_can_periodic_message.py | 4 +-- pyproject.toml | 6 ++-- 5 files changed, 53 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 38830ef..b62327f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ - 📡 **`carbus_async`** – низкоуровневая работа с железкой (CAN/LIN, фильтры, терминаторы и т.д.) - 📦 **`isotp_async`** – ISO-TP (ISO 15765-2) поверх CAN (single + multi-frame) - 🩺 **`uds_async`** – UDS (ISO 14229) клиент и сервер (диагностика, чтение VIN и т.п.) -- 🌐 **`TCP-bridge`** – удалённое подключение к адаптеру через сеть (как будто он воткнут локально) +- 🌐 **`Remote/TCP-bridge`** – удалённое подключение к адаптеру через сеть (как будто он воткнут локально) > Python 3.10 и выше > Никаких «магических» зависимостей — всё на `asyncio`. diff --git a/carbus_async/remote/agent.py b/carbus_async/remote/agent.py index fe6ca26..573ebb2 100644 --- a/carbus_async/remote/agent.py +++ b/carbus_async/remote/agent.py @@ -181,7 +181,23 @@ async def agent_run( log.info("Agent stopped.") -async def main() -> None: +async def main_async( + port: str, + baudrate: int, + server: str, + serial: str, + password: str, +) -> None: + await agent_run( + port=port, + baudrate=baudrate, + server=server, + serial=serial, + password=password, + ) + + +def cli() -> None: ap = argparse.ArgumentParser() ap.add_argument("--port", required=True, help="COM port, e.g. COM6") ap.add_argument("--baudrate", type=int, default=115200) @@ -190,18 +206,22 @@ async def main() -> None: ap.add_argument("--password", required=True, help="shared password for this serial") args = ap.parse_args() - await agent_run( - port=args.port, - baudrate=args.baudrate, - server=args.server, - serial=str(args.serial), - password=str(args.password), - ) - - -if __name__ == "__main__": logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", ) - asyncio.run(main()) + + asyncio.run( + main_async( + port=args.port, + baudrate=args.baudrate, + server=args.server, + serial=str(args.serial), + password=str(args.password), + ) + ) + + +if __name__ == "__main__": + cli() + diff --git a/carbus_async/remote/server.py b/carbus_async/remote/server.py index e145359..cdac098 100644 --- a/carbus_async/remote/server.py +++ b/carbus_async/remote/server.py @@ -1,5 +1,6 @@ from __future__ import annotations +import argparse import asyncio import json import logging @@ -232,6 +233,18 @@ async def main(host: str = "0.0.0.0", port: int = 9000) -> None: await srv.serve_forever() +def cli() -> None: + ap = argparse.ArgumentParser() + ap.add_argument("--host", default="0.0.0.0") + ap.add_argument("--port", type=int, default=9000) + args = ap.parse_args() + + logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(name)s: %(message)s", + ) + asyncio.run(main(host=args.host, port=args.port)) + + if __name__ == "__main__": - logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(name)s: %(message)s") - asyncio.run(main()) + cli() diff --git a/example/remote_can_periodic_message.py b/example/remote_can_periodic_message.py index d3f86e8..4aa0d53 100644 --- a/example/remote_can_periodic_message.py +++ b/example/remote_can_periodic_message.py @@ -25,7 +25,7 @@ async def main(is_debug=False): channel=1, can_id=0x100, data=b"\x00" * 8, - period_s=0.5, + period_s=0.2, modify=mod) sender.add( @@ -33,7 +33,7 @@ async def main(is_debug=False): channel=1, can_id=0x123, data=b"\x01\x02\x03\x04\x05\x06\x07\x08", - period_s=0.05, + period_s=0.03, ) try: diff --git a/pyproject.toml b/pyproject.toml index d7890da..a0c709d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "carbus-lib" -version = "0.1.7" +version = "0.1.8" description = "Async CAN / ISO-TP / UDS library for Car Bus Analyzer" readme = "README.md" requires-python = ">=3.10" @@ -27,5 +27,5 @@ where = ["."] include = ["carbus_async*", "isotp_async*", "uds_async*"] [project.scripts] -carbus-relay-server = "carbus_async.remote.server:main" -carbus-relay-agent = "carbus_async.remote.agent:main" \ No newline at end of file +carbus-relay-server = "carbus_async.remote.server:cli" +carbus-relay-agent = "carbus_async.remote.agent:cli" \ No newline at end of file