GE Pace图书馆

gepace的Python项目详细描述


GE Pace图书馆

Pace 5000

此库用于控制GE压力自动控制的基本功能 校准设备(Pace)型号1000、5000和6000。在

它由一个核心库、一个可选的模拟器和 可选的tango设备服务器。在

它已经在Pace5000型号上进行了测试,但应该可以与其他型号配合使用。在

它可以与ETH或串行线路连接(如下所示 设置串行线路连接的推荐方法)

安装

从您最喜欢的python环境类型中:

$ pip install gepace

图书馆

gepace库的核心由Pace对象组成。 要创建一个速度对象,您需要传递一个通信对象。在

通信对象可以是任何支持简单API的对象 包含两种方法(支持同步或异步版本):

  • write_readline(buff: bytes) -> bytes

    async write_readline(buff: bytes) -> bytes

  • write(buff: bytes) -> None

    async write(buff: bytes) -> None

支持此API的库是sockio (gepace是预装的,所以您不必担心安装它)。在

此库包括TCP对象的异步和同步版本。它也是 支持一组功能,如重新连接和超时处理。在

以下是如何连接到GE Pace控制器:

importasynciofromsockio.aioimportTCPfromgepaceimportPaceasyncdefmain():tcp=TCP("192.168.1.123",5000)# use host name or IPpace=Pace(tcp)idn=awaitpace.idn()name=awaitpace.name()print("Connected to {} ({})".format(idn,name))# channel access:temp_A=awaitpace['A'].temperature()unit=awaitpace['A'].unit()print("Channel A temperature: {}{}".format(temp_A,unit))# loop access:source_1=awaitpace[1].source()print("Loop 1 source: {}".format(source_1))# activate controlawaitpace.control(True)# hardware only accepts queries every 100ms. Yo can, however,# group queries in single request:asyncwithpaceasgroup:pace.idn()pace.control()pace['A'].temperature()idn,ctrl,temp_A=group.repliesasyncio.run(main())

串行线路

要访问基于串行线路的速度设备,强烈建议您生成 使用ser2netsocat

假设您的设备连接到/dev/ttyS0,波特率设置为19200, 以下是如何使用socat将设备暴露在机器端口5000上:

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

可能值得考虑将socat或ser2net作为使用 supervisor或{a6}。在

模拟器

提供了一个速度模拟器。在

在使用之前,请确保所有设备都安装有:

$ pip install pace[simulator]

使用了sinstruments引擎。在

要启动模拟器,您需要编写一个YAML配置文件,其中定义 您要模拟多少个设备以及它们拥有哪些属性。在

以下示例导出2个硬件设备。第一个是最小值 配置使用默认值,第二个定义一些初始值 明确地:

^{pr2}$

要启动模拟器,请键入:

$ sinstruments-server -c ./config.yml --log-level=DEBUG
2020-05-14 16:02:35,004 INFO  simulator: Bootstraping server
2020-05-14 16:02:35,004 INFO  simulator: no backdoor declared
2020-05-14 16:02:35,004 INFO  simulator: Creating device Pace ('Pace')
2020-05-14 16:02:35,080 INFO  simulator.Pace[('', 5000)]: listening on ('', 5000) (newline='\n') (baudrate=None)

(要查看选项的完整列表,请键入sinstruments-server --help

您可以像访问真正的硬件一样访问它:

$ nc localhost 5000
*IDN?
GE,Pace5000,204683,1.01A

或使用库:

$python>>>fromsockio.sioimportTCP# use synchronous socket in the CLI!>>>fromcryoconimportCryoCon>>>cryo=CryoCon(TCP('localhost',5000))>>>print(cryo.idn())Cryo-con,24C,204683,1.01A

探戈服务器

还提供了tango设备服务器。在

确保所有设备都安装有:

$ pip install cryocon[tango-ds]

在tango数据库中注册cryocon tango服务器:

$ tangoctl server add -s CryoConTempController/test -d CryoConTempController test/cryocon/1
$ tangoctl device property write -d test/cryocon/1 -p address -v "tcp://192.168.123:5000"

(上面的示例使用tangoctl。你需要 在使用之前用pip install tangoctl安装它。你可以自由使用任何其他的 探戈工具,如fandango或Jive)

启动服务器时使用:

$ CryoConTempController test

托多

  • 添加on_connection_made回调以初始化控制器:
    • 单位=K
    • 缓存标识号,固件版本,硬件版本
    • 我们应该藏起来吗系统:名称?以及输入:名称?理论上可以修改 直接与硬件前面板

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Spring Boot中启动应用程序上下文时发生java错误   JAVA网未知后异常Jsoup   java通过[i][2]元素对2D数组进行排序   java如何在Spring安全性中正确使用hasRole?   java getMaxInactiveInterval返回的值与应用程序中配置的值不同。属性   使用数组在java中创建表   java如何从outboundgateway向发送方抛出异常   javajavax。jms。JMSSecurityException:用户名[null]或密码无效   java为什么我们需要在tomcat日志中编写两次处理程序。财产?   java无法在Java6上使用SevenZFile解压7z文件   用Java实现排队   java检测用户是否绘制了整个屏幕   java包的最终变量可以通过反射进行更改吗?   java在JavaFX8中有没有控制菜单弹出位置的方法?   java对整数数组进行排序,而不影响由表示的特殊字符的索引$   IntelliJ IDEA与NetBeans对java性能的影响?   java如何解决登录/注册问题facebook E/BufferQueueProducer:[FacebookActivity[5278]#0]断开连接:未连接(请求=1)