刘易斯-让我们写复杂的模拟器!

lewis的Python项目详细描述


VersionLayersBuild StatusCodacyCoverage StatusDocumentation

Lewis

刘易斯-让我们来编写复杂的模拟器。

lewis是一个用于模拟硬件设备的python框架。它是 与Python2和3都兼容。

lewis可以直接使用python 2.7或>;=3.4运行,也可以使用 包含所有依赖项的预打包Docker映像。见相关 使用部分了解详细信息。

资源: GitHub- DockerHub- Dockerfile- ReadTheDocs- PyPI

刘易斯以前被命名为“浮游生物”,但由于 在pypi上使用相同名称的包,我们决定重命名该项目。

Lewis是GPLv3或更高版本的授权用户。

目的和用例

刘易斯是在 ESS,但它足够普遍 在许多其他需要详细的、有状态的上下文中使用 硬件设备的软件模拟。

我们认为一个详细的设备模拟可以进行通信 使用与实际设备相同的协议 通过实际观察到的实际设备行为 协议。这包括渐进过程、副作用和错误 条件。

刘易斯的目的是提供一个共同的框架来促进 这种模拟器的发展。框架提供了一个公共集 有助于最小化代码的工具,包括通信协议服务 复制并允许模拟设备的开发人员专注于 捕获设备行为。

详细设备模拟器的潜在用例包括:

  • 在开发和测试软件时更换物理设备 与设备连接的
  • 在不损害物理性能的情况下测试故障条件 设备
  • 与之通信的软件的自动化系统和单元测试 设备
  • 对要在 实际设备

对上面的内容使用模拟有额外的好处,不像大多数 真正的设备,一个模拟可以加速/快速地通过任何 设备中出现的长时间延迟或进程。

功能

简要术语

Devices和Interfaces是 刘易斯。Device是设备行为和内部 记忆。可以使用StateMachine来表示Device,但是 不一定是。Device不包含任何特定于 与Device的通信协议。一个Interface 提供从协议AdapterDevice的绑定。 提供常见的Adapters,如tcp流、modbus和epics 刘易斯。DeviceInterface作为 Simulation提供一个循环“心跳”并管理其他 环境方面和服务。

https://github.com/DMSC-Instrument-Data/lewis/raw/master/docs/resources/diagrams/SimulationCycles.png

你能拿刘易斯怎么办?
  • 创建新的Devices以紧密模拟内部行为 以及对某事的记忆
  • (可选)使Device作为StateMachine通过 StateMachineDevice提供丰富的行为
  • Device上创建一个或多个Interfaces以公开它 作为epics ioc、tcp侦听器或任何其他定制协议 喜欢
  • 通过控制服务器运行时访问和控制Device
  • 通过控制服务器运行时访问和控制Simulation
  • 可以通过命令行实用程序、python绑定或 json-rpc。

其他文档

文档可以在ReadTheDocs找到。 它也可以从以下来源生成:

$ git clone https://github.com/DMSC-Instrument-Data/lewis
$ cd lewis
$ pip install -r requirements-dev.txt
$ sphinx-build -b html docs/ docs/_build/html

然后,docs/_build/html目录将包含html格式的完整文档。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javajexcel包装文本问题   EclipseJavaEnum缩进超过左括号。如何让它看起来更正常?   java有办法包含Tomcat 6 catalina。out和localhost。在网络应用的日志文件中记录内容?   java如何永久性地阻止JavaFX代码在eclipse中被突出显示为错误?   如何在java中优化两个for循环(for循环中的for循环)   java如何在我的windows机器上从jar文件创建mac osx的可执行文件   使用记忆化/动态规划的Java组合学   Java中的游荡对象垃圾收集   java为什么我在JSP和JDBC和MySQL中遇到连接失败错误   java轮询Pod的就绪状态   如何创建电子邮件并将其发送到Java中的特定地址?   java如何修复Dagger 2错误“。。。无法提供[…]”?   java Android单选按钮看起来太轻   Android Studio:开发在应用程序之间共享的通用java库