#nom #protocols #parser

calamp-rs

Calamp LMDirect 消息协议的解析器

6 个版本

0.2.4 2021 年 7 月 10 日
0.1.4 2021 年 7 月 9 日
0.0.4 2021 年 7 月 9 日

#2671 in 解析器实现

BSD-2-Clause

48KB
913

Calamp-rs

Banner

License: MIT Crates.io Version Doc

特性

  • 快速:使用 nom 解析器组合器
  • 安全:内存安全
  • 消息:支持 EventReport
  • Serde:序列化为 json、xml

快速入门

要开始使用 calamp-rs,请将以下内容添加到您的 Cargo.toml 文件中

[dependencies]
calamp-rs= "0.2.4"

然后,解析消息

use calamp_rs::Message;

fn main() {
    let data: [u8; 117] = [
        0x83, 0x05, 0x46, 0x34, 0x66, 0x32, 0x35, 0x01, 0x01, 0x01, 0x02, 0x3a,
        0x86, 0x5f, 0xf1, 0x3a, 0x54, 0x5f, 0xf1, 0x3a, 0x57, 0xf1, 0xe2, 0x85,
        0x78, 0xe4, 0x22, 0xd6, 0x40, 0x00, 0x01, 0x36, 0xf8, 0x00, 0x00, 0x00,
        0x0b, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0xff, 0x8d, 0x02, 0x1e, 0x1e,
        0x00, 0x7b, 0x21, 0x10, 0x00, 0x00, 0x00, 0x31, 0xe0, 0x00, 0x00, 0x10,
        0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x2a, 0x32, 0x00, 0x00, 0x03,
        0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc8, 0x2d,
        0x3f, 0x01, 0xc8, 0x2d, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
        0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    ];

    let msg = Message::parse(&data);

    println!("Message Type: {}", msg.message_header.message_type);
}

最后,使用以下命令运行此基准测试 cargo run。您应该看到类似于以下输出的结果

Message Type: MessageType::EventReport

示例

要查看一些示例,只需通过以下命令运行它们 cargo run --examples

cargo run --example srv_udp

另一个终端

cargo run --example cli_udp

贡献

首先,感谢您的贡献。

使用 calamp-rs 进行自己的基准测试并报告您的经验,提交问题并进行评论等,这是为 calamp-rs 做出贡献的一种很好的方式。

欢迎以拉取请求的形式提交代码或文档改进。如果您不确定要做什么,请尝试检查“入门”标签。

如果在几天后您的 issue 或 pull request 没有得到回应,请随时 ping 我 (@muriloijanc)。

有关更多详细信息,请参阅 CONTRIBUTING.md 文件。

许可协议

Calamp-rs 在 BSD2 许可协议下分发。

LICENSE

依赖关系

~2.5MB
~53K SLoC