#hardware #scada #secop #sample-environment

secop-derive

用于硬件服务器与SECoP协议通信的Rust框架(衍生包)

1个不稳定版本

0.1.3 2022年6月20日

#39#scada


3 个crate中使用(直接使用2个)

GPL-2.0+

38KB
544

secop-rs

用于硬件服务器与SECoP协议通信的Rust框架和演示设备。

构建/运行

安装Rust工具链,当前需要使用nightly频道。

调试模式(编译更快):cargo run -- test.cfg

发布模式(优化速度):cargo run --release -- test.cfg

组织结构

代码目前分为四个crate

  • secop-core 提供框架的主体和服务器实现
  • secop-derive(因为需要作为独立的proc-macro crate)通过自动生成接口模板来帮助框架
  • secop-modules 包含具体模块
  • secop 只包含主可执行文件

lib.rs:

为secop模块提供衍生支持

这里实现了两个自动衍生的特质

  • ModuleBase 是模块核心功能的完整实现。它提供了一个简单的DSL来添加参数和命令,并将其转换为实现基本SECoP动作(如changedo)的方法中的相应处理。

    它还提供了参数和参数类型之间的JSON有效负载和Rust数据之间的自动转换和验证。

  • TypeDesc 可以用于枚举和结构体,并提供了一种类型安全的方式来声明具有枚举和结构体数据类型的参数和命令。

依赖关系

~2MB
~45K SLoC