2个不稳定版本
0.2.0 | 2024年1月17日 |
---|---|
0.1.0 | 2024年1月17日 |
#4 in #conn
52KB
1.5K SLoC
canopeners
不完整的但易于使用的Rust中CANOpen标准的实现。
示例
所有示例都是阻塞的。使用conn.set_{read_write}_timeout
设置超时。
发送单个消息
Conn::new("vcan0").map(|conn| {
let nmt = Nmt::new(canopeners::NmtFunction::StartRemoteNode, 10);
conn.send(&Message::Nmt(nmt)).unwrap();
})
向远程节点上的对象字典写入字节
Conn::new("vcan0").map(|mut conn| {
conn.sdo_write(
/* remote node id */ 0x10,
/* index */ 0x1000,
/* sub index */ 1,
/* data, can be any length */ &[1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
.unwrap();
})
从远程节点上的对象字典中读取字节
Conn::new("vcan0").map(|mut conn| {
let res = conn.sdo_read(
/* remote node id */ 0x10,
/* index */ 0x1000,
/* sub index */ 1)
.unwrap();
dbg!(res);
})
构建
nix develop
cargo build
如果您想使用系统cargo,只需执行cargo build
即可
测试
setup_vcan.sh
设置虚拟CAN总线。 tests/
依赖于此
待办事项
- 所有消息类型的枚举(不能将impl trait用作函数返回类型)
- 发送/接收SDO
- 通过vcan的状态无关示例
- 分段SDO
- 易于发送/接收SDO的陶瓷包装器
- 完成用binrw替换手动位操作
- package.nix
- 将simple.rs示例转换为测试
- 修复cargo警告
- 修复clippy lint
- 为所有消息类型添加
send_acked
- 节点根据同步消息发送TPDOs
- 扩展ID支持
依赖项
~3.5MB
~73K SLoC