9 个不稳定版本 (3 个重大更改)
0.3.0 | 2024年6月5日 |
---|---|
0.2.0 | 2023年10月25日 |
0.1.3 | 2022年7月25日 |
0.1.2 | 2021年11月1日 |
0.0.1 | 2020年9月2日 |
#170 in 嵌入式开发
每月下载量 1,055
用于 2 软件包
23KB
412 代码行
std-embedded-nal
此软件包实现了为支持标准库网络功能的操作系统实现的 embedded-nal 网络特性。
其中,它对于 embedded-nal 的作用就像 linux-embedded-hal 对于 embedded-hal 一样:一种在 Linux 上使用为裸机嵌入式世界编写的库的方法。 (只是网络接口比硬件访问标准化得更好,因此它应该可以在任何系统上运行)。
使用方法
由于操作系统的网络堆栈始终可用,因此可以在任何时间实例化和使用,无需同步,大致如下
use embedded_nal::nb::block;
use std_embedded_nal::Stack;
use embedded_nal::UdpClient;
let message = [0x50, 0x01, 0x00, 0x00];
let mut stack = Stack::default();
let mut socket = stack.socket()?;
block!(stack.connect(&mut socket, "127.0.0.1:5683".parse()?)?);
block!(stack.send(&mut socket, &message)?);
请参阅 CoAP 和 HTTP 的示例,以获取完整和有效的版本。
性能、非阻塞和异步
当使用常规的 embedded-nal
API 时,客户端主示例使用 nb::block!
,这意味着会忙等待直到有事件到达(对于客户端来说很糟糕,对于服务器来说更糟糕)。
基于 nb
的这些 API 的普遍预期是用户知道何时再次尝试; coapclient
示例的 UNIX 版本说明了这可能如何完成。(围绕 mio
和此库的设置相对复杂;嵌入式实现可能需要更少的代码。)
在 nightly 版本中,并且通过 async
功能控制,embedded-nal-async 软件包的异步实现可用。
成熟度
此软件包包含当前在 embedded-nal 中存在的特性的最小工作实现。
最低支持的 Rust 版本
此软件包在稳定的 Rust 1.60.0 上进行构建测试。这基本上遵循 embedded-nal 的 MSRV。它可能 可能 可以使用较旧的版本进行编译,但这可能在任何时候发生变化。
依赖关系
~0.2–13MB
~108K SLoC