#serial #slip

simple_slip

一个用于SLIP编码的小型简单库

3个版本

0.1.2 2022年9月1日
0.1.1 2022年9月1日
0.1.0 2022年8月7日

#1158 in 编码

Download history 1/week @ 2024-05-11 3/week @ 2024-05-18 1/week @ 2024-05-25 38/week @ 2024-06-22 11/week @ 2024-07-13 8/week @ 2024-07-20 36/week @ 2024-07-27 46/week @ 2024-08-03 101/week @ 2024-08-10

每月192次下载

MIT/Apache

15KB
234

简单SLIP

对Rust的RFC 1055 SLIP编码的一个简单、轻量级的实现!

什么是SLIP编码?

SLIP(串行行互联网协议)编码是一种非常简单的方式来打包数据,以便将其传输到另一个接收器。我强烈建议您阅读有关该主题的维基百科文章以获取更多信息!

示例

SLIP用于编码要发送的数据和解码要读取的数据。

编码

注意:每个数据包将以一个开始和一个结束END(0xC0)字节。

use simple_slip::encode;

let input: Vec<u8> = vec![0x01, 0xDB, 0x49, 0xC0, 0x15];
let expected: Vec<u8> = vec![0xC0, 0x01, 0xDB, 0xDD, 0x49, 0xDB, 0xDC, 0x15, 0xC0];

let result: Vec<u8> = encode(&input).unwrap();

assert_eq!(result, expected);

解码

注意:每个数据包将从第二个出现的END(0xC0)字节开始解码。

以下数据数组只会解码0x01,因为它是第二个END(0xC0)字节之后的唯一字节

[0xA1, 0xA2, 0xA3, 0xC0, 0xC0, 0x01] --decode--> [0x01]
use simple_slip::decode;

let input: Vec<u8> = vec![0xA1, 0xA2, 0xA3, 0xC0, 0xC0, 0x01, 0xDB, 0xDD, 0x49, 0xDB, 0xDC, 0x15, 0xC0];
let expected: Vec<u8> = vec![0x01, 0xDB, 0x49, 0xC0, 0x15];

let result: Vec<u8> = decode(&input).unwrap();

assert_eq!(result, expected);

无运行时依赖