vacuubrand 库
项目描述
Vacuubrand库
此库用于控制Vacuubrand控制器的基本功能。
它由核心库、可选模拟器和可选的tango设备服务器组成。
目前仅支持DCP 3000。
安装
在您喜欢的Python环境中输入
$ pip install vacuubrand
库
vacuubrand库的核心是DCP3000对象。要创建DCP3000对象,您需要传递一个通信对象。
通信对象可以是任何支持简单API的对象,该API由两个方法组成(支持同步或异步版本)
write_readline(buff: bytes) -> bytes
或write(buff: bytes) -> None
或
通常您会使用一个connio.connection_for_url()
对象。以下是如何连接到DCP 3000控制器
import asyncio
from connio import connection_for_url
from vacuubrand.dcp3000 import DCP3000
async def main():
# could also be a socket bridge: 'serial-tcp://<host>:<port>'
comm = connection_for_url('serial:///dev/ttyS0')
dcp = DCP3000(comm)
print(await dcp.pressure())
asyncio.run(main())
串行线
要访问基于串行线的DCP 3000设备,强烈建议您使用ser2net或socat启动串行到TCP桥接器。
假设您的设备连接到/dev/ttyS0
且波特率设置为19200,以下是使用socat在机器端口5000公开您的设备的示例
socat -v TCP-LISTEN:8500,reuseaddr,fork file:/dev/ttyS0,rawer,b19200,cs8,eol=10,icanon=1
在ser2net配置文件中对应的行将是
8500:raw:0:/dev/ttyR15:19200 8DATABITS NONE 1STOPBIT
可能值得考虑使用supervisor或circus将socat或ser2net作为服务启动。
模拟器
提供了一个DCP 3000模拟器。
在使用之前,请确保使用以下命令安装所有内容:
$ pip install vacuubrand[simulator]
使用sinstruments引擎。
要启动模拟器,您需要编写一个YAML配置文件,其中定义您想模拟的设备数量及其属性。
以下示例导出2个硬件设备。第一个使用默认值的最小配置,第二个明确定义了一些初始值
# config.yml
devices:
- class: DCP3000
package: vacuubrand.simulator
transports:
- type: serial
url: /tmp/dcp3000-1
要启动模拟器,请输入
$ sinstruments-server -c ./config.yml --log-level=DEBUG
2020-07-02 12:18:45,065 INFO simulator: Bootstraping server
2020-07-02 12:18:45,065 INFO simulator: no backdoor declared
2020-07-02 12:18:45,065 INFO simulator: Creating device DCP3000 ('DCP3000')
2020-07-02 12:18:45,067 INFO simulator: Created symbolic link "/tmp/dcp3000-1" to simulator pseudo terminal '/dev/pts/7'
2020-07-02 12:18:45,067 INFO simulator.DCP3000[/tmp/dcp3000-1]: listening on /tmp/dcp3000-1 (baud=None)
(要查看完整的选项列表,请输入sinstruments-server --help
)
您可以像访问真实硬件一样访问它
$ miniterm.py -e --eol CRLF /tmp/dcp3000-1
IN_PV_1
1004.1 mbar
或使用库
$ python
>>> from connio import connection_for_url
>>> from vacuubrand.dcp3000 import DCP3000
>>> conn = connection_for_url("serial:///tmp/dcp3000-1")
>>> dcp = DCP3000(conn)
>>> print(await dcp.actual_pressure())
1004.1
Tango服务器
还提供了一个tango设备服务器。
请确保使用以下命令安装所有内容:
$ pip install vacuubrand[tango]
在tango数据库中注册Vacuubrand tango服务器
$ tangoctl server add -s Vacuubrand/test -d DCP3000 test/dcp3000/1
$ tangoctl device property write -d test/dcp3000/1 -p url -v "/dev/ttyS0"
(上述示例使用tangoctl。在使用之前,您需要使用pip install tangoctl
安装它。您也可以使用任何其他tango工具,如fandango或Jive)
使用以下命令启动服务器
$ Vacuubrand test