xia-pfcu 库
项目描述
XIA PFCU 库
此库用于控制XIA PFCU设备的常用功能。它由一个核心库、一个可选的模拟器和一个可选的tango设备服务器组成。
它已与PF4型号进行了测试,但也应适用于其他型号。
它可以与直接串行线(请参阅以下推荐的串行线连接设置方法)或通过TCP套接字(原始套接字或rfc2217)远程使用。在后一种情况下,连接到Julabo串行线的主设备必须提供原始套接字或rfc2217接口。
安装
在您喜欢的Python环境中输入
$ pip install xia-pfcu
库
库的核心是PFCU对象。要创建一个PFCU对象,您需要传递一个连接对象。可以使用配套的connio库创建兼容的连接对象,该库应已作为依赖项安装。
以下是通过本地串行线连接到PFCU的方法
from connio import connection_for_url
from xia_pfcu import PFCU
async def main():
conn = connection_for_url("serial://dev/ttyS0")
dev = PFCU(conn)
raw_status = await dev.raw_status()
print(raw_status)
status = await dev.status()
if status['shutter_enabled']:
shutter_status = (await dev.shutter_status()).name
else:
shutter_status = "Disabled"
print(f"Shutter status: {shutter_status}")
# open shutter
await dev.open_shutter()
asyncio.run(main())
串行线
要访问基于串行的PFCU设备,强烈建议您使用ser2net、ser2sock或socat创建串行到TCP网桥
假设您的设备连接到/dev/ttyS0
且波特率为9600,以下是使用socat将您的设备暴露在机器端口5000上的方法
socat -v TCP-LISTEN:5000,reuseaddr,fork file:/dev/ttyS0,rawer,b9600,cs8,eol=10,icanon=1
可能值得考虑使用supervisor或circus将socat、ser2net或ser2sock作为服务启动。
模拟器
提供了一个PFCU模拟器。
在使用之前,请确保使用以下命令安装了所有内容:
$ pip install xia-pfcu[simulator]
使用sinstruments引擎。
要启动模拟器,您需要编写一个YAML配置文件,其中定义您想要模拟的设备数量以及它们持有的属性。
以下示例使用默认值导出具有最小配置的1个硬件设备
# config.yml
devices:
- class: PFCU
package: xia_pfcu.simulator
transports:
- type: serial
url: /tmp/pfcu-1
要启动模拟器,请输入:
$ sinstruments-server -c ./config.yml --log-level=DEBUG
2020-09-14 10:42:27,592 INFO simulator: Bootstraping server
2020-09-14 10:42:27,592 INFO simulator: no backdoor declared
2020-09-14 10:42:27,592 INFO simulator: Creating device PFCU ('PFCU')
2020-09-14 10:42:27,609 INFO simulator: Created symbolic link "/tmp/pfcu-1" to simulator pseudo terminal '/dev/pts/3'
2020-09-14 10:42:27,609 INFO simulator.PFCU[/tmp/pfcu-1]: listening on /tmp/pfcu-1 (baud=None)
(要查看完整选项列表,请输入sinstruments-server --help
)
您可以像访问真实硬件一样访问它。以下是在与模拟器相同的机器上使用python串行库的示例
$ python
>>> from connio import connection_for_url
>>> from xia_pfcu import PFCU
>>> conn = connection_for_url("serial:///tmp/pfcu-cf31", concurrency="syncio")
>>> dev = PFCU(conn)
>>> conn.open()
>>> print(dev.status())
%PFCU15 OK PFCU v1.0 (c) XIA 1999 All Rights Reserved
CHANNEL IN/OUT (FPanel TTL RS232) Shorted? Open?
1 OUT OUT OUT OUT NO NO
2 OUT OUT OUT OUT NO NO
3 IN OUT OUT IN NO NO
4 OUT OUT OUT OUT NO NO
RS232 Control Enabled: YES
RS232 Control Only: NO
Shutter Mode Enabled: NO
Exposure Decimation: 1
Tango服务器
还提供了一个tango设备服务器。
请确保使用以下命令安装了所有内容:
$ pip install xia-pfcu[tango]
在tango数据库中注册PFCU tango服务器
$ tangoctl server add -s PFCU/test -d PFCU test/pfcu/1
$ tangoctl device property write -d test/pfcu/1 -p address -v "tcp://controls.lab.org:17890"
(上述示例使用tangoctl。在使用之前,您需要使用pip install tangoctl
安装它。您可以使用任何其他tango工具,如fandango或Jive)
使用以下命令启动服务器:
$ PFCU test
项目详情
xia-pfcu-1.6.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0f1942198a601cbe45a5e92c4456c736cdad7f347ff288d5210d07736f776a57 |
|
MD5 | 3a61d8d180a1415676b8995a115f8464 |
|
BLAKE2b-256 | b5a5b0a28d695f092e0fbb973992faa5bf89b662813c81b4097a99df7d82e9cf |