刘易斯-让我们写复杂的模拟器!
lewis的Python项目详细描述
刘易斯-让我们来编写复杂的模拟器。
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 提供从协议Adapter到Device的绑定。 提供常见的Adapters,如tcp流、modbus和epics 刘易斯。Device和Interface作为 Simulation提供一个循环“心跳”并管理其他 环境方面和服务。
- 创建新的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格式的完整文档。