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

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第三方库


热门话题
java Spring数据JPA+Hibernate在不首先找到父实体的情况下保存子实体   php Java:如何从CLI接收命令   spring为java中的导出数据创建访问文件   java在Windows 8.1上安装Play Framework   java Spring启动白标签错误页面(类型=未找到,状态=404)   java如何在单击时从数组中绘制?   java fn:substringAfter()上次出现   java在IFR语句中使用方法返回   java onPause()或onStop()的名称   对关联对象的关联对象具有条件的java HQL查询   java只打印一次总值,无需迭代   java如何使用抽象Uri buildOn()方法?   如何在Java中执行sudo命令并获得错误输出?   java反射:避免对getConstructor(类<?>…)的未经检查的警告调用作为原始类型类的成员   Java:如何从类中创建的对象调用类方法?   java如何在电子邮件中嵌入图像?   java如何在Android上启用详细GC?   java什么是串行版本id?