当前位置:网站首页>pyepics --Auto-saving: simple save/restore PVs
pyepics --Auto-saving: simple save/restore PVs
2022-06-09 16:30:00 【yuyuyuliang00】
autosave模块为PVs提供了简单的save/restore功能,有函数save_pvs()和restore_pvs()以及一个AutoSaver类。这些类似于来自用于IOCs的synApps的autosave模块,在那个模块中,它们使用一个描述要保存的PVs兼容的request file,以及一个持有被保存值的兼容的save file。当前这里通过通道访问进行读和写,并且不需要与单个IOC相关联。
这个模块的使用需要安装pyparsing包。这是一个相当常见的第三方Python包,被包含在很多包管理器中,或者用诸如easy_install或pip安装,或者从PyPI下载。
Request和Save文件被设计成兼容synApps autosave。注意:支持用宏替换的file命令,所以你可以有一个像这样的Request:
# My.req
file "SimpleMotor.req", P=IOC:, Q=m1这个SimpleMotor.req文件为:
# SimpleMotor.req
$(P)$(Q).VAL
$(P)$(Q).DIR
$(P)$(Q).FOFF其能够用于一个SimpleMotor的很多实例。但没有用于查找request文件的自动化机制。你将需要在工作目录中包含这些或者指定绝对路径。
有这样一个文件,只要使用:
import epics.autosave
epics.autosave.save_pvs("My.req", "my_values.sav")将保存对应的PVs的当前值到文件my_values.sav。之后一段时间,可以用以下恢复这些值:
import epics.autosave
epics.autosave.restore_pvs("my_values.sav")保存的文件将与autosave机制保存的文件几乎相同格式,并且restore_pvs()函数可以使用来自autosave的save文件读取和恢复值。注意:这里的目的与标准autosave模块的目的(autosave模块被设计成保存值,使得在IOC启动时初始化PVs)非常不同。使用这里的函数将对保存的值进行一次caput()。
autosave.save_pvs(request_file, save_file)
保存在request_file中列出的当前值到save_file。
参数:
- request_file:读取要保存的PVs的Request文件的名称
- save_file:写入要保存的值的到这个文件。
如上所述,request_file按照来自synApps的autosave模块的规则。
autosave.restore_pvs(save_file)
从save_file读取值并且为相应的PVs恢复它们。
参数:
save_file:从这个名称的文件读取保存值
注意:restore_pvs()将恢复它能够的所有值,跳过它不能恢复的任何值。
Autosaver class
Autosaver类一种便捷方式:重复保存在一个request文件中列出的PVs,而不必重新连接所有PVs。Autosaver保留PV连接,并且提供一个保存当前PV值到一个文件的简单save()。默认,从这个请求文件和当前时间命名那个文件。这使得你做这样的事情:
#!/usr/bin/env python
# save PVs from a request file once per minute
import time
from epics.autosave import AutoSaver
my_saver = AutoSaver("My.req")
# save all PVs every minute for a day
t0 = time.time()
while True:
if time.localtime().tm_sec < 5:
my_saver.save()
time.sleep(30 - time.localtime().tm_sec)
if time.time() - t0 > 86400.0:
break
time.sleep(0.5)这将用像My_2017Oct02_141800.sav名称的文件保存PVs。
class autosave.AutoSaver(request_file)
创建基于一个请求文件的自动化Saver。
参数:
request_file:请求文件的名称。
AutoSaver有两个方法:read_request_file()读取一个请求文件,而save()保存结果。
autosave.read_request_file(request_file)
读取和解析请求文件,开始进行PV连接。
参数:
request_file:请求文件的名称。
autosave.save(save_file=None, verbose=False)
读取当前PV值,写保存文件。
参数:
- save_file:保存文件的名称或者None。如果None,将使用请求文件的文件以及时间戳(转成秒)来构建一个文件名。注意:不需要检查重写文件。
- verbose:是否打印结果到屏幕[默认False]
可支持的文件类型
可以用autosave例程保存和恢复所有标量PV值。有一些对waveform(数组)数据的支持。例如,包含长字符串的waveform可以被保存和恢复。此外,可以保存和恢复在waveform中的数值数组。对于数组数据,结果可能不完全兼容autosave模块。
示例
一个使用autosave模块的简单示例:
import epics.autosave
# save values
epics.autosave.save_pvs("my_request_file.req",
"/tmp/my_recent_save.sav")
# wait 30 seconds
time.sleep(30)
# restore those values back
epics.autosave.restore_pvs("/tmp/my_recent_save.sav")边栏推荐
- God, jialichuang's single and double-sided boards have been reduced again. How can peers play?
- Usage of dac8560
- 顶级模板大全(包含工作各方面的合同、标书、毕业答辩等等模板)
- 小程序修改上一页面的数据
- Chapter I Introduction to esql
- 记一次找因redis使用不当导致应用卡死bug的过程
- After reading it, I will analyze the whole process from packet capturing to interface testing
- 关于在C#中因没有添加:mysql.data.dll 而报错这件事
- [ctfshow singles cup]web writeup & learn the basic usage of SED awk
- Easyexcel merge cells
猜你喜欢

管理学博士申请考核经验分享——信息收集篇

QueryList异步抓取网页数据

Easywechat realizes wechat real payment operation

Top level templates (including contract, tender, graduation defense and other templates in all aspects of work)

SBIO | 浙大陈云组综述农业中细菌与真菌的互作机制

ELK 不香了!我用 Graylog,轻量多了....

顶级模板大全(包含工作各方面的合同、标书、毕业答辩等等模板)

Error occurred when pychart installs the scratch Library‘

使用ffmpeg合并mp4文件

vulnstack系列靶场一
随机推荐
Close the privacy collection window of stackexchange and other platforms
检测ip地址库内是否存在指定的ip
How can we sustain a valuation of 60billion yuan for tea lovers who like the new and hate the old?
浏览器指纹解读
Windows下安装Redis及php的redis扩展
pycharm安装scrapy库时出现报错Error occurred when installing package ‘Scrapy‘
【经验分享】Django开发中常用到的数据库操作总结
第一章 ESQL介绍
看完就会,从抓包到接口测试的全过程解析
阿里云618有奖体验:搭建基于OSS的图片分享网站
Cesium draw fence
渗透测试-后渗透+lcx+frp
windows 下安装 MySQL5.7服务端(满满都是坑)
苹果赢了 美法官驳回iPhone和iPad安全缺陷集体诉讼
【華東師範大學】初試複試考研資料分享
How to find and delete duplicate documents in endnote
Chapter I Introduction to esql
Error occurred when pychart installs the scratch Library‘
Solution de téléchargement d'images ueditor entre domaines
【无标题】