From 63e6ed4ffd77390ba0406910e7e1286afe9133f7 Mon Sep 17 00:00:00 2001 From: controllerzz <79202101363@mail.ru> Date: Wed, 24 Dec 2025 20:01:47 +0300 Subject: [PATCH] v0.1.7 add remote server, agent, client --- README.md | 32 ++++++++++++++++- example/can_periodic_message.py | 4 +-- example/remote_can_periodic_message.py | 48 ++++++++++++++++++++++++++ example/remote_relay.py | 4 +-- pyproject.toml | 6 +++- 5 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 example/remote_can_periodic_message.py diff --git a/README.md b/README.md index 4e7b3e0..38830ef 100644 --- a/README.md +++ b/README.md @@ -243,8 +243,38 @@ vin = await uds.read_data_by_identifier(0xF190) print("VIN:", vin.decode(errors="ignore")) ```` +## Удалённая работа через внешний сервер +### 1. Сервер/Relay +На сервере устанавливаем библиотеку carbus-lib, далее запускаем сервер -## Удалённая работа через TCP (tcp_bridge) + carbus-relay-server --host 0.0.0.0 --port 9000 +или + + python -m carbus_async.remote.server --host 0.0.0.0 --port 9000 + +### 2. Агент +На машине куда подключен девайс запускаем агента + + carbus-relay-agent --port COM6 --baudrate 115200 --server :9000 --serial 5957 --password 1234 +или + + python -m carbus_async.remote.agent --port COM6 --baudrate 115200 --server :9000 --serial 5957 --password 1234 + +где + + --server :9000 - адрес и порт сервера + --serial 5957 - серийный номер девайса + --password 1234 - пароль, требуется для получения уделнного доступа + +### 3. Клиент (удалённая машина) +Для получения удаленного доступа используем функцию ***open_remote_device*** + +````python +from carbus_async import open_remote_device +dev = await open_remote_device(, 9000, serial=5957, password="1234") +```` + +## Удалённая работа в локальной сети через TCP (tcp_bridge) ### 1. Сервер (рядом с адаптером) diff --git a/example/can_periodic_message.py b/example/can_periodic_message.py index 3b0aa6b..309699b 100644 --- a/example/can_periodic_message.py +++ b/example/can_periodic_message.py @@ -11,7 +11,7 @@ async def main(is_debug=False): nominal_bitrate=500_000, ) - await dev.set_terminator(channel=1, enabled=True) + await dev.ensure_terminator(channel=1, enabled=True) sender = PeriodicCanSender(dev) @@ -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.1, + period_s=0.05, ) try: diff --git a/example/remote_can_periodic_message.py b/example/remote_can_periodic_message.py new file mode 100644 index 0000000..d3f86e8 --- /dev/null +++ b/example/remote_can_periodic_message.py @@ -0,0 +1,48 @@ +import asyncio + +from carbus_async import CarBusDevice, PeriodicCanSender, open_remote_device + + +async def main(is_debug=False): + dev = await open_remote_device("84.54.37.149", 9000, serial=5957, password="1234") + + await dev.open_can_channel( + channel=1, + nominal_bitrate=500_000, + ) + + await dev.ensure_terminator(channel=1, enabled=True) + + sender = PeriodicCanSender(dev) + + def mod(tick, data): + b = bytearray(data) + b[0] = tick & 0xFF + return bytes(b) + + sender.add( + "cnt", + channel=1, + can_id=0x100, + data=b"\x00" * 8, + period_s=0.5, + modify=mod) + + sender.add( + "heartbeat", + channel=1, + can_id=0x123, + data=b"\x01\x02\x03\x04\x05\x06\x07\x08", + period_s=0.05, + ) + + try: + await asyncio.Event().wait() + finally: + await sender.stop_all() + await dev.close() + + return + + +asyncio.run(main()) diff --git a/example/remote_relay.py b/example/remote_relay.py index bf5c462..b4d47ef 100644 --- a/example/remote_relay.py +++ b/example/remote_relay.py @@ -16,7 +16,7 @@ async def main(is_debug=False): ) logging.getLogger("carbus_async.wire").setLevel(logging.DEBUG) - dev = await open_remote_device("127.0.0.1", 9000, serial=5957, password="1234") + dev = await open_remote_device("84.54.37.149", 9000, serial=5957, password="1234") print(f"Devise SN: {await dev.get_serial()}") @@ -36,4 +36,4 @@ async def main(is_debug=False): await dev.close() -asyncio.run(main(is_debug=True)) +asyncio.run(main()) diff --git a/pyproject.toml b/pyproject.toml index 3005c2c..d7890da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "carbus-lib" -version = "0.1.6" +version = "0.1.7" description = "Async CAN / ISO-TP / UDS library for Car Bus Analyzer" readme = "README.md" requires-python = ">=3.10" @@ -25,3 +25,7 @@ package-dir = {"" = "."} [tool.setuptools.packages.find] 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