前言

前面拙作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界面。

Java 海康热成像 海康热成像视频_bash

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成功了,失败了请仔细看报错的内容。

Java 海康热成像 海康热成像视频_Java 海康热成像_02

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命令啦。

Java 海康热成像 海康热成像视频_Java 海康热成像_03


其次,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强大的功能了。

Java 海康热成像 海康热成像视频_bash_04