areadetector ADURL模块应用在面探测控制的初步应用

news2025/4/17 17:03:11

本章中讨论了使用ADURL控制面探测器Lambda的过程:

ADURL的使用请见:

EPICS -- areaDetector URL驱动程序-CSDN博客

需要启动一个ADURL的IOC程序,并且设置相关的插件中参数的值:

# st.cm
< envPaths
< st_base.cmd

dbpf 13URL1:cam1:URL1 "/home/xspadmin/data/data_00000_raw/data_00000_raw_000000.tif"
dbpf 13URL1:image1:EnableCallbacks "1"
dbpf 13URL1:Pva1:EnableCallbacks "1"
dbpf 13URL1:image1:BlockingCallbacks "1"
dbpf 13URL1:Pva1:BlockingCallbacks "1"
dbpf 13URL1:TIFF1:EnableCallbacks "1"
dbpf 13URL1:TIFF1:BlockingCallbacks "1"
dbpf 13URL1:cam1:ImageMode "Single"

以下是这款面探测器的介绍:

技术信息:Lambda是一个55um像素大小并且具有高帧率功能的单光子计数X射线探测器。一个Si 250K系统的技术规格如下表所示:

模块数目1个模块带有1个连接了4个读出芯片的传感器
传感器Si二极管阵列
量子效率95%@8KeV, 70%@12KeV,10%@25KeV
读出芯片Medipix3RXv2
像素尺寸55 X 55 um^2
传感器尺寸28.4 X 28.4 mm^2
格式512 X 512 pixels(262144)
动态范围最大24位(取决于读出模式)
每个像素计数率限制

200000个/像素/s(不带计数率校准)

800000个/像素/s(如果计数率校准测量和使用)

能量范围6keV ~ 20kev
能量分辨率2keV
最大帧率

2000Hz@12-bit模式

4000Hz@6-bit模式

24000Hz@1-bit模式

读出时间

12-bit, 6-bit, 1-bit模式,无读出时间

24-bit模式,1ms

点扩散函数1像素FWHM
数据格式Hdf5(Nexus标准)
外部触发/门控3.3V
软件接口基于C++的硬件库,python包
冷却气冷,水冷
尺寸150.5mm长,85mm宽和40mm长
重量1.2kg
过压类别0
污染等级II

对厂家提供探测器操作的Python代码进行封装,编写一个采集保存的py文件:

import xspcontrol as xc
import pyxsp as px

s = xc.System('/opt/xsp/config/system.yml')
d = s.open_detector('lambda')
r = s.open_receiver('lambda/1')
d.number_of_frames = 1
d.shutter_time = 1000.0
d.bit_depth = px.BitDepth.DEPTH_12
w = xc.Writer()
w.save_to_file = True
w.save_mode =  xc.SaveMode.OVERWRITE
w.save_directory = '/home/xspadmin/data'
w.save_file_prefix = 'data'
s.set_writer('lambda/1', w)


while not r.ready:
    time.sleep(1)

s.start_acquisition()


del r
del d
del w
del s

由于探测器的数据文件格式为nexus,而ADURL模块不能读取这个格式的文件,需要进行格式类型的转换,厂家也提供了将nexus格式转为tif格式的python程序ConvertNxsToTIFF.py,转换后的文件格式是ADURL模块可以读取的;编写一个bash脚本execute.sh,将采集和转换放在一个脚本中,并且触发ADURL模块程序进行数据读取:

#!/bin/bash

# 删除指定路径下所有文件,此路径提供给探测器保存数据使用
rm -rf /home/xspadmin/data/*
# 触发探测器采集,并且保存数据到指定路径
python /home/xspadmin/command/collect.py
# 把nxs文件转成tif文件,ADURL模块才能读取
python /home/xspadmin/NxsToTiff_Scripts/ConvertNxsToTIFF.py --r /home/xspadmin/data/data_00000.nxs
# 触发ADURL模块读取数据
caput 13URL1:cam1:Acquire 1

编写一个IOC程序来执行以上的bash脚本,在这个IOC程序中使用了一个sub记录,此记录执行时可以调用系统命令来执行这个程序脚本。

以下是这个C程序:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <dbDefs.h>
#include <registryFunction.h>
#include <subRecord.h>
#include <epicsExport.h>

int mySubDebug = 0;
static char cmdstr[100];

static long mySubInit(struct subRecord *precord)
{
        if (mySubDebug)
        {
                printf("Record %s called mySubInit(%p)\n", precord->name, (void *)precord);
        }
        printf("subInit was called\n");
        return 0;
}

static long mySubProcess(struct subRecord * precord)
{
        if(mySubDebug)
        {
                printf("Record %s called mySubProcess(%p)\n", precord->name,(void *)precord);
        }
        precord->val++;

        sprintf(cmdstr, "%s", precord->desc);
        printf("execute command: %s\n", cmdstr);
        system(cmdstr);

        return 0;
}


epicsExportAddress(int, mySubDebug);
epicsRegisterFunction(mySubInit);
epicsRegisterFunction(mySubProcess);

对应的db文件如下:

record(sub, "$(P)$(R)ExecuteLambda")
{
    field(SNAM,"mySubProcess")
    field(DESC, "execute.sh")
}

对应的启动文件为:

#!../../bin/linux-x86_64/lambda

#- You may have to change lambda to something else
#- everywhere it appears in this file

< envPaths

cd "${TOP}"

## Register all support components
dbLoadDatabase "dbd/lambda.dbd"
lambda_registerRecordDeviceDriver pdbbase

## Load record instances
dbLoadRecords("db/lambda.db","P=13URL1:,R=cam1:")

cd "${TOP}/iocBoot/${IOC}"
iocInit

编译以上程序,并且启动以上IOC:

epics> dbl
13URL1:cam1:ExecuteLambda

执行通道访问命令运行一次sub记录:

 xspadmin@xspserver:/usr/local/EPICS/lambda/iocBoot/ioclambda$ caput 13URL1:cam1:ExecuteLambda.PROC 1

如果设置了ImageJ插件中数据的访问通道:

在ADURL读取了数据后,将实时显示这个数据:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1215184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WorkPlus即时通讯app支持多种信创环境组合运行

在信息技术领域&#xff0c;国产信创技术的快速发展为企业带来了更多的选择和机会。在此背景下&#xff0c;WorkPlus作为一款全方位的移动数字化平台&#xff0c;全面支持国产信创操作系统、芯片和数据库&#xff0c;并且全面兼容鸿蒙操作系统。这一优势使得WorkPlus成为了企业…

企业数据备份应该怎么操作?应该知道的四种备份方法

​企业数据备份对于保护最重要的资产至关重要。在面对不断增加的安全威胁时&#xff0c;很多企业都感到无从下手&#xff0c;不知如何保护关键业务数据。通过采用正确的数据备份方法&#xff0c;可以成为确保企业数据安全的最有效手段。因此&#xff0c;不论您是个人还是在职人…

第二证券:今日投资前瞻:小米汽车引关注 全球风光有望持续高速发展

昨日&#xff0c;两市股指盘中轰动上扬&#xff0c;深成指、创业板指一度涨超1%。到收盘&#xff0c;沪指涨0.55%报3072.83点&#xff0c;深成指涨0.72%报10077.96点&#xff0c;创业板指涨0.53%报2015.36点&#xff0c;北证50指数涨2.64%&#xff1b;两市算计成交9900亿元&…

亚马逊云科技云存储服务指南

文章作者&#xff1a;Libai 高效的云存储服务对于现代软件开发中的数据管理至关重要。亚马逊云科技云存储服务提供了强大的工具&#xff0c;可以简化工作流程并增强数据管理能力。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏…

Ubuntu 22.04 LTS ffmpeg mp4 gif 添加图片水印

ffmpeg编译安装6.0.1&#xff0c;参考 Ubuntu 20.04 LTS ffmpeg gif mp4 互转 许编译安装ffmpeg &#xff1b;解决gif转mp4转换后无法播放问题-CSDN博客 准备一个logo MP4添加水印 ffmpeg -i 2.mp4 -vf "movielogo.png[watermark];[in][watermark]overlayx10:y10[out]&…

torch_cluster、torch_scatter、torch_sparse三个包的安装

涉及到下面几个包安装的时候经常会出现问题&#xff0c;这里我使用先下载然后再安装的办法&#xff1a; pip install torch_cluster pip install torch_scatter pip install torch_sparse 1、选择你对应的torch版本&#xff1a;https://data.pyg.org/whl/ 2、点进去然后&…

PowerConsume功耗计算器

嵌入式低功耗产品开发&#xff0c;功耗计算器资源-CSDN文库 PowerConsume使用说明 安装说明 需要安装在无空格等特殊字符的路径&#xff0c;不推荐安装在C盘。 功能说明 已知条件 电池容量 各状态的电流和运行时间 自动计算出设备运行时间 启动界面如下 添加状态 在空白处…

【Python基础篇】运算符

博主&#xff1a;&#x1f44d;不许代码码上红 欢迎&#xff1a;&#x1f40b;点赞、收藏、关注、评论。 格言&#xff1a; 大鹏一日同风起&#xff0c;扶摇直上九万里。 文章目录 一 Python中的运算符二 算术运算符1 Python所有算术运算符的说明2 Python算术运算符的所有操作…

12.Oracle的索引

Oracle11g的索引 一、什么是索引二、索引的分类三、索引的语法四、分析索引四、索引的作用及使用场景 一、什么是索引 在Oracle数据库中&#xff0c;索引是一种特殊的数据结构&#xff0c;用于提高查询性能和加速数据检索。索引存储了表中某列的值和对应的行指针&#xff0c;这…

开源微信小程序源码/校园综合服务平台小程序源码+数据库/包括校园跑腿 快递代取 打印服务等功能

源码简介&#xff1a; 校园综合服务小程序源码&#xff0c;它是基于微信小程序开发&#xff0c;包括快递代取 打印服务 校园跑腿 代替服务 上门维修和其他帮助等功能。它是开源微信小程序源码。 校园综合服务小程序开源源码是一款功能强大的小程序&#xff0c;可用于搭建校园…

【uniapp/uview1.x】u-upload 在 v-for 中的使用时, before-upload 如何传参

引入&#xff1a; 是这样一种情况&#xff0c;在接口获取数据之后&#xff0c;是一个数组列表&#xff0c;循环展示后&#xff0c;需要在每条数据中都要有图片上传&#xff0c;互不干扰。 分析&#xff1a; uview 官网中有说明&#xff0c;before-upload 是不加括号的&#xff…

@Version乐观锁配置mybatis-plus使用(version)

1&#xff1a;首先在实体类的属性注解上使用Version import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.Versio…

番外 2 : LoadRunner 的安装以及配置

LoadRunner 的安装以及配置教程 一 . 配置 IE 浏览器二 . 安装 LoadRunner 工具三 . 修改默认浏览器的配置四 . 设置 LoadRunner 能够获取本地资源 Hello , 大家好 , 又给大家带来新的专栏喽 ~ 这个专栏是专门为零基础小白从 0 到 1 了解软件测试基础理论设计的 , 虽然还不足以…

《如何控制 LLM 的输出格式和解析其输出结果?》

内容来源&#xff1a;dotey 《如何控制 LLM 的输出格式和解析其输出结果&#xff1f;》 https://baoyu.io/blog/prompt-engineering/how-to-parse-the-output-from-llm 现在很多人对于如何使用像 ChatGPT 这样的 LLM 已经比较有经验了&#xff0c;可以使用各种不同的 Prompt …

RTLS 颠覆制造业的 方式之——跟踪

进行中工作跟踪 在制品 (WIP) 跟踪主要关注生产中的项目如何从一个步骤移动到另一步骤。因此&#xff0c;运动是此类流程管理的共同点&#xff0c;使得实时位置的洞察力几乎在每个时刻都很有用。 1. 传递时间和运动数据 制造几乎总是涉及许多同时移动的事物。无论是在同一条…

智慧城市怎么实时监测内涝积水的发生及解决办法?

随着城市化进程步伐不断加快&#xff0c;城市内涝问题越来越受到人们的关注。内涝不仅不便于人们的生活&#xff0c;还可能危害城市之中的基础设施比如路面等。因此实时监测内涝积水的发生并采取有效的解决办法是市政府的紧急任务&#xff0c;同时解决城市内涝也利于城市生命线…

数字孪生技术能够为旅游业带来什么新变化?

随着科技的不断发展&#xff0c;数字孪生技术逐渐融入各个行业&#xff0c;为旅游业的高质量发展提供了新的动力和可能性。数字孪生&#xff0c;即对现实世界的精确数字建模&#xff0c;通过实时数据同步、模拟分析&#xff0c;为旅游业带来了诸多创新和改变。 在数字孪生的理…

msvcr120.dll文件的作用、丢失的原因及解决办法分享

msvcr120.dll是一款由微软公司开发的动态链接库&#xff08;DLL&#xff09;文件&#xff0c;它是Windows操作系统中的一部分&#xff0c;主要用于支持Visual C Redistributable库。msvcr120.dll文件包含了大量的函数和代码&#xff0c;用于执行各种操作系统任务和应用程序功能…

oracle初步学习

先了解几个登录的方式 1.直接在cmd输入 sqlplus scott/tiger //登陆普通用户scott 2.输入sqlplus sys as sysdba 之后 紧接着让你输入口令&#xff0c;直接输入sys就行了 3.先输入sqlplus/nolog 在输入conn system/managerorcl 先在cmd窗口输入sqlplus/nolog &#x…

到手价的低价监测怎么做到

品牌在做数据监测时&#xff0c;要考虑是否是到手价的监测&#xff0c;如果只是监测页面价的低价&#xff0c;真实情况是会漏掉很多的低价数据&#xff0c;如果是做经销商的低价监测工作&#xff0c;这样的监测方式下的数据会降低品牌对渠道的掌控力&#xff0c;因为监测的不是…