DFRobot Arduino → 树莓派 Python 库移植
将仅有 Arduino 实现的 DFRobot 库生成 python/raspberrypi/。命名、类结构、示例模板见 conventions.md。不同步 Arduino 注释/排版格式。
前置
- 有
.h/.cpp与examples/*.ino - 禁止 git 恢复已有
python/raspberrypi/;已存在则 diff 补缺 - 确认串口(默认
/dev/ttyAMA0)或 I2C 参数
工作流
- 从
.h盘点 public API、通信模式、类结构(看总线类,不看readReg函数名)。仅当#include "DFRobot_RTU.h"或继承DFRobot_RTU时,加载 references/modbus-rtu/conventions.md 并按该文件执行;否则 不要 打开references/modbus-rtu/ - 列出本库实际存在的 protected/private 底层方法
- 建
python/raspberrypi/(DFRobot_XXX.py、README 中英、examples/<snake_case>/) - 常量/枚举 → 类属性;
struct→ctypes.Structure - 按 conventions.md 移植类:库内建总线;多接口派生覆写
_read_reg/_write_reg(若第 1 步已加载 Modbus 参考,则按该参考,勿自写 RTU) - 每个
.ino→ 一个.py(setup/loop;用__file__三级dirname把python/raspberrypi/加入sys.path,禁止仅用 CWD 相对'../../') - 写 README;对照 checklist.md;删除
__pycache__
类:跟随 Arduino .h。多接口基类按 I2C_MODE/UART_MODE 创建 SMBus 或 Serial("/dev/ttyAMA0");I2C 派生 (bus, addr),UART 派生 (baud, addr)。UART 读写跟当前 .cpp,勿一律套 Modbus。
示例:不移植 COMM_* / SoftSerial / micro:bit #error / ASCII 接线表。多接口用 ctype(0 = I2C,其它 = UART),只传总线号 / 波特率 / 地址。
注意
- 协议以当前
.cpp为准;不发明源库没有的底层函数;不改src/ - 禁止:单类扩成多接口、GPIO 当主接口、示例注入
Serial/SMBus、按接口复制示例、把 Arduino 格式套到 Python
交付前删除 python/raspberrypi/ 下 __pycache__/、*.pyc。汇报:文件列表、API 对照、通信模式、示例对应、实机验证建议。