Metadata-Version: 2.1
Name: stardust-canopen-tools
Version: 0.1.0
Summary: Stardust CANopen tools: SDO read/write & register config CLI over SocketCAN
Home-page: UNKNOWN
License: Proprietary
Platform: UNKNOWN
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# stardust-canopen-tools

Stardust CANopen 工具(Python), 通过 SocketCAN 读写驱动器(CANopen)参数。
可打包为 Debian 包: **python3-stardust-canopen-tools**(二进制包
`python3-stardust-canopen-tools`, 见 `debian/`)。

## 内容

| 模块 | 说明 |
|---|---|
| `stardust_canopen_tools.canopen_sdo` | SDO 公共库: `SdoClient`、帧封装、hex/dec/ascii 编码、abort 解释 |
| `stardust_canopen_tools.canopen_sdo_tool` | 控制台: 按 index/sub 直接 SDO 读写(console: `canopen-sdo-tool`) |
| `stardust_canopen_tools.canopen_reg_tool` | 控制台: 按设备配置/寄存器名称读写(console: `canopen-reg-tool`) |
| `stardust_canopen_tools/configs/*.yaml` | 每设备一份寄存器配置(随包安装) |

## 本地运行(不安装)

```bash
# 从 canopen_tools/ 目录以包方式运行
cd canopen_tools
python3 -m stardust_canopen_tools.canopen_sdo_tool read \
    --dev vcan0 --node 1 --index 0x100C --sub 0

python3 -m stardust_canopen_tools.canopen_reg_tool list-devices
python3 -m stardust_canopen_tools.canopen_reg_tool read \
    --dev kinco_rs --name guard_time --node 1
```

> 直接以文件方式运行亦可(模块内做了双 import 兼容):
> `python3 stardust_canopen_tools/canopen_reg_tool.py list-devices`

## 安装(开发)

```bash
cd canopen_tools
pip install .            # 安装 python 包 + console scripts
canopen-reg-tool list-devices
```

## 打 Debian 包

需 `debhelper / dh-python`。在 `canopen_tools/` 下:

```bash
dpkg-buildpackage -us -uc -b
# 产物: ../python3-stardust-canopen-tools_0.1.0-1_all.deb
```

- 二进制包名: `python3-stardust-canopen-tools`(见 `debian/control`, 采用 Debian
  `python3-*` 惯例, dh_python3 会自动填充 `${python3:Depends}`);
- 运行时依赖 `python3-yaml`(`${python3:Depends}` 自动推导)。

## 设备配置文件

`stardust_canopen_tools/configs/<device>.yaml`, 字段见仓库文档
`docs/features/register_tool.md`。可通过 `--config-dir` 或环境变量
`CANOPEN_CONFIGS` 指向其它配置目录。

## 验证

- 可用仓库内测试工具 `test_tools/sim_drive/mock_drive.py`(vcan)联调;
- 示例:
  ```
  python3 ../test_tools/sim_drive/mock_drive.py --dev vcan0 \
      --nodes 1,2,4,3 --guard-nodes 1,2,4,3
  canopen-reg-tool read --dev kinco_rs --cat guarding --node 1
  ```


