跳转到主要内容

xia-pfcu 库

项目描述

XIA PFCU 库

XIA PF4

此库用于控制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设备,强烈建议您使用ser2netser2socksocat创建串行到TCP网桥

假设您的设备连接到/dev/ttyS0且波特率为9600,以下是使用socat将您的设备暴露在机器端口5000上的方法

socat -v TCP-LISTEN:5000,reuseaddr,fork file:/dev/ttyS0,rawer,b9600,cs8,eol=10,icanon=1

可能值得考虑使用supervisorcircus将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 (12.5 kB 查看哈希值)

上传时间

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面