前言
前面拙作centos7 编译epics和areadetector中相机介绍了在centos下面编译EPICS base包、利用assemble_synsApps.sh文件获取synsApps_6_1、以及下载并编译aravisGigE包的过程。
本文接着说如何用编译好的aravisGigE运行IOC,控制MV-CA004-10Gm相机。
1. 利用arv-tool-0.6发现相机
前面如果已经编译好了aravisGigE包,那么在任何目录下都可以直接运行arv-tool-0.6命令。这个命令可以发现处于同一子网内的GigE vision相机。
输入命令`arv-tool-0.6`,找到了hikvision-MV-CA004-10GM相机,如下图所示,其IP地址是192.168.1.34。 ![在这里插入图片描述]()
如果找不到相机,可能是防火墙阻挡。使用命令service firewalld stop
关闭防火墙。
上图找到了相机,ip地址是192.168.1.34.
2. 生成template模板文件和medm opi文件
接下来做以下几件事:
arv-tool-0.6 -a "192.168.1.34" genicam >"hikvision-MV-CA004-10GM.xml" #下载该相机的xml文件,并存放在当前目录下。-a后面跟相机的ip地址,如果是-n,后面跟相机的名称。
./aravisGigEApp/src/makeDbAndEdl.py hikvision-MV-CA004-10GM.xml hik-MV-CA-004 #利用下载好的xml文件创建.template文件。areaDetector是通过该模板创建属性的PV变量的。
cp aravisGigEApp/Db/hik-MV-CA-004.template db/hik-MV-CA-004.template
./aravisGigEApp/src/makeAdl.py hikvision-MV-CA004-10Gm.xml hik-MV-CA-004 #会在aravisGigEApp/op/adl目录下产生5个hik-MV-CA004-10GM-features_*.adl文件。这些文件是medm的opi界面。
3. 创建mv-cCA004-10Gm的IOC
以上,已经产生了template文件和medm opi界面。接下来可以创建相机的IOC了。
先来修改 /aravisGigE/iocs/aravisGigEIOC/iocBoot/iocAravisGigE/st.cmd文件。
epicsEnvSet("XSIZE", "720")#xsize修改为相机的水平像素个数
epicsEnvSet("YSIZE", "540")#ysize修改为相机的水平像素个数
aravisCameraConfig("$(PORT)", "Hikvision-00E43642247") #末尾序号是arv-tool-0.6运行后发现所发现相机的序列号。注意,是hikvison+序列号,不要中间的MV-CA004-10GM。相机名称也可以直接用相机的ip地址。
dbLoadRecords("$(ARAVISGIGE)/db/hik-MV-CA-004.template","P=$(PREFIX),R=cam1:,PORT=$(PORT),ADDR=0,TIMEOUT=1") #这就是上文生成的template文件,已经拷贝到db目录下了。
dbLoadRecords("$(ARAVISGIGE)/db/aravisCamera.template", "P=$(PREFIX),R=cam1:,PORT=$(PORT),ADDR=0,TIMEOUT=1")
dbLoadRecords("$(ADCORE)/db/NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int8,FTVL=SHORT,NELEMENTS=388800"#TYPE修改为Int8.NELEMENTS设置为水平像素个数乘以垂直像素个数之积。
最后,打开start_epics文件,添加一行#bin\bash
,然后./start_epics
.
如下图所示,最后出现了epics>
则表示创建ioc成功了,失败了请仔细看报错的内容。
4. 利用medm打开MV-CA-004-10GM的控制界面
medm是一款EPICS OPI软件,具有历史悠久,稳定可靠、占用内存小的优点。
参照《linux下安装epics base包及MEDM》一文,可以完成medm的编译。
安装medm需要下载epics 3.14版本的extensions包。虽然官网说用于3.14版本,我试过了3.15版本的base包也可以使用3.14的extensions。
1. clone extensions包和medm包并编译
我们的base安装在/opt/epics/egun/epics-base目录下,所以把extensions包git clone到/opt/epics/extensions。
cd /opt/epics/egun
git clone https://github.com/epics-extensions/extensions.git #clone extensions包到当前目录
cd extensions
vim configure/RELEASE #修改EPICS_BASE为/opt/epics/egun/epics-base
cd extensions/src
git clone https://github.com/epics-extensions/medm.git #clone medm放到extensions/src下
cd medm
make
2. medm配置
至此,medm编译好了。不过在用之前,还要对medm进行配置。
首先把extensions/bin目录添加到/home/ioc/.bash_profile的PATH变量中去。这样的话,在任何目录下都可以运行medm命令啦。
其次,medm打开adl文件的时候,会在当前目录找,找不到会到。为了方便,EPICS_DISPLAY_PATH下面去找。为了方便,可以新建一个adls文件夹,并把它赋值给环境变量,然后把所有adl文件都拷贝里面。
cd /opt/epics/egun
mkdir op #创建一个op文件夹,将来存放所有的opi文件,例如medm、
edm、css-boy等
cd op
mkdir adls #创建adls文件夹,存放medm的adl文件
vim /home/ioc/.bash_profile #export EPICS_DISPLAY_PATH=/opt/epics/egun/op/adls
至此,medm的配置工作完成了。
接下来将所有的adl文件拷贝到adls文件夹下面。
find /opt/epics/support -name '*.adl' | xargs -i cp {} /opt/epics/egun/op/adls/ #找到support目录下所有*.adl文件,拷贝到adls文件夹下面。
3.打开MV-CA004-10GM的OPI界面
上文已经运行了MV-CA004-10GM的IOC,也编译了medm软件,并将产生的*.adl文件都拷贝到/adls文件夹下。运行下面的命令就可以打开该相机的OPI界面了。
medm -x -macro "P=13ARV1:, R=cam1:" aravisCamera.adl &
会产生如下图的界面,此时就可以享用areaDetector强大的功能了。