Skip to content
Snippets Groups Projects
Commit a4462e08 authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

Merge branch 'master' of eicweb.phy.anl.gov:controls/epics/epics_bootstrap

parents 9b00ab88 d14693c9
Branches
No related tags found
No related merge requests found
= epics software =
EPICS software
==============
This repo is used for bootstrapping an epics installation. All scripts are in the bin directory.
The `setup.sh` should be sourced in a users `.bashrc` or equivalent.
== Usage ==
## Usage
To install epics-base, synApps, and a few other things within the directory `/opt/epics`, do the following.
......@@ -15,15 +16,21 @@ cd epics
./bin/bootstrap_epics
```
## Dependencies
== dependencies ==
Should be installed by `bootstrap_epics`
```
sudo apt-get install re2c libreadline-dev
```
## IOCs
### Python IOC
## Notes
== download ==
### Downloads
```
git clone --recursive -b 7.0 https://git.launchpad.net/epics-base base-7.0
......
......@@ -79,57 +79,63 @@ set -- "${POSITIONAL[@]}" # restore positional parameters
#cd "${NAME}"
source setup.sh
lsb_release -d | grep -i "ubuntu"
if [[ "$?" == "0" ]] ; then
sudo apt-get install -y re2c libreadline-dev libusb-dev libusb-java libusb-1.0-0-dev libnet1-dev libpcap-dev libx11-dev libxext-dev python-numpy
if [[ "$(uname -m)" == "aarch64" ]] ; then
sudo apt-get install -y python-rpi.gpio python3-rpi.gpio
fi
sudo pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org spidev
fi
git clone --recursive -b 7.0 https://git.launchpad.net/epics-base base-7.0
ln -s base-7.0 base
pushd base
make
popd
wget -qO- https://epics.anl.gov/bcda/synApps/tar/synApps_6_0.tar.gz | tar -zxf -
pushd synApps/support
ln -s calc-R3-7-1 calc
ln -s asyn-R4-33 asyn
ln -s stream-R2-7-7c stream
sed -i '1d' configure/RELEASE
sed -i '1iSUPPORT = /opt/epics/synApps/support' configure/RELEASE
sed -i '3d' configure/RELEASE
sed -i '3iEPICS_BASE=/opt/epics/base' configure/RELEASE
sed -i '17d' configure/RELEASE
sed -i '17i#DXP=$(SUPPORT)/dxp-R5-0' configure/RELEASE
sed -i '34d' configure/RELEASE
sed -i '34i#SSCAN=$(SUPPORT)/sscan-R2-11-1' configure/RELEASE
sed -i '46d' configure/RELEASE
sed -i '45d' configure/RELEASE
sed -i '44d' configure/RELEASE
sed -i '43d' configure/RELEASE
sed -i '42d' configure/RELEASE
sed -i '41d' configure/RELEASE
echo '#AREA_DETECTOR=$(SUPPORT)/areaDetector-R3-3-1' >> configure/RELEASE
echo '#ADCORE=$(AREA_DETECTOR)/ADCore' >> configure/RELEASE
echo '#ADSUPPORT=$(AREA_DETECTOR)/ADSupport' >> configure/RELEASE
echo '#ADSIMDETECTOR=$(AREA_DETECTOR)/ADSimDetector' >> configure/RELEASE
echo '#SNCSEQ=$(SUPPORT)/seq-2-2-5' >> configure/RELEASE
echo '#ALLEN_BRADLEY=$(SUPPORT)/allenBradley-2-3' >> configure/RELEASE
make release
make
popd
#lsb_release -d | grep -i "ubuntu"
#
#if [[ "$?" == "0" ]] ; then
# sudo apt-get install -y \
# re2c libreadline-dev libusb-dev \
# libusb-java libusb-1.0-0-dev libnet1-dev \
# libpcap-dev libx11-dev libxext-dev python-numpy
# if [[ "$(uname -m)" == "aarch64" ]] ; then
# sudo apt-get install -y python-rpi.gpio python3-rpi.gpio
# fi
# sudo pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org spidev
#fi
#
#git clone --recursive -b 7.0 https://git.launchpad.net/epics-base base-7.0
#ln -s base-7.0 base
#
#pushd base
#make
#popd
#
#wget -qO- https://epics.anl.gov/bcda/synApps/tar/synApps_6_0.tar.gz | tar -zxf -
#pushd synApps/support
#ln -s calc-R3-7-1 calc
#ln -s asyn-R4-33 asyn
#ln -s stream-R2-7-7c stream
#sed -i '1d' configure/RELEASE
#sed -i '1iSUPPORT = /opt/epics/synApps/support' configure/RELEASE
#sed -i '3d' configure/RELEASE
#sed -i '3iEPICS_BASE=/opt/epics/base' configure/RELEASE
#sed -i '17d' configure/RELEASE
#sed -i '17i#DXP=$(SUPPORT)/dxp-R5-0' configure/RELEASE
#
#sed -i '34d' configure/RELEASE
#sed -i '34i#SSCAN=$(SUPPORT)/sscan-R2-11-1' configure/RELEASE
#
#
#sed -i '46d' configure/RELEASE
#sed -i '45d' configure/RELEASE
#sed -i '44d' configure/RELEASE
#sed -i '43d' configure/RELEASE
#sed -i '42d' configure/RELEASE
#sed -i '41d' configure/RELEASE
#echo '#AREA_DETECTOR=$(SUPPORT)/areaDetector-R3-3-1' >> configure/RELEASE
#echo '#ADCORE=$(AREA_DETECTOR)/ADCore' >> configure/RELEASE
#echo '#ADSUPPORT=$(AREA_DETECTOR)/ADSupport' >> configure/RELEASE
#echo '#ADSIMDETECTOR=$(AREA_DETECTOR)/ADSimDetector' >> configure/RELEASE
#echo '#SNCSEQ=$(SUPPORT)/seq-2-2-5' >> configure/RELEASE
#echo '#ALLEN_BRADLEY=$(SUPPORT)/allenBradley-2-3' >> configure/RELEASE
#
#make release
#make
#
#popd
######################
# Extensions
git clone https://github.com/epics-extensions/extensions
......@@ -151,7 +157,6 @@ sed -i '127iDIRS += $(PYDEVSUP)' src/Makefile
sed -i '26d' src/pyDevSup/configure/CONFIG_SITE
sed -i '26iINSTALL_LOCATION=/opt/epics/extensions' src/pyDevSup/configure/CONFIG_SITE
make
popd
......
#!/bin/bash
mkdir -p /opt/epics/css
cd /opt/epics/css
#wget https://controlssoftware.sns.ornl.gov/css_phoebus/nightly/phoebus-linux.zip
#wget https://controlssoftware.sns.ornl.gov/css_phoebus/nightly/alarm-server-4.6.0.zip
unzip phoebus-linux.zip
#!/bin/bash
set -o nounset
set -o errexit
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
echo $DIR
function print_the_help {
echo "USAGE: make_scpi_ioc -n NAME "
echo " OPTIONS: "
echo " -n,--name NAME IOC name (must begin with letter)"
exit
}
function yes_or_no {
while true; do
read -p "$* [y/n]: " yn
case $yn in
[Yy]*) return 0 ;;
[Nn]*) echo "No entered" ; return 1 ;;
esac
done
}
NAME=
#if [[ $# -eq 0 ]] ; then
# print_the_help
# exit
#fi
POSITIONAL=()
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-h|--help)
shift # past argument
print_the_help
;;
-n|--name)
NAME="$2"
shift # past argument
shift # past value
;;
#-a|--all)
# LOG_ALL_PLOTS=1
# shift # past argument
# #shift # past value
# ;;
#-o|--online-only)
# ONLINE_ONLY=1
# shift # past argument
# #shift # past value
# ;;
*) # unknown option
#POSITIONAL+=("$1") # save it in an array for later
echo "unknown option $1"
print_the_help
shift # past argument
;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters
if [[ -z "${NAME}" ]] ; then
echo "Error: ioc NAME must be supplied"
print_the_help
exit
fi
if [ -d "${NAME}" ]
then
echo "Directory ${NAME} exists."
echo "Error: cannot overrite ${NAME}"
else
echo "Making directory ${NAME}"
mkdir "${NAME}"
fi
cd "${NAME}"
#makeSupport.pl -t streamSCPI ${NAME}
#rm -r configure
makeBaseApp.pl -t ioc ${NAME}
makeBaseApp.pl -i -t ioc ${NAME}
sed -i '29iPYDEVSUP = /opt/epics/extensions' configure/RELEASE
sed -i '43iPY_VER ?= 2.7' configure/CONFIG_SITE
sed -i '7iinclude $(PYDEVSUP)/configure/CONFIG_PY' ${NAME}App/src/Makefile
sed -i '18iPY += counter3.py' ${NAME}App/src/Makefile
sed -i '18iPY += counter2.py' ${NAME}App/src/Makefile
sed -i '18iPY += counter1.py' ${NAME}App/src/Makefile
sed -i "24i${NAME}_DBD += pyDevSup.dbd" ${NAME}App/src/Makefile
sed -i "28i${NAME}_LIBS += pyDevSup\$(PY_LD_VER)" ${NAME}App/src/Makefile
sed -i '48iinclude $(PYDEVSUP)/configure/RULES_PY' ${NAME}App/src/Makefile
sed -i '24iPYTHON ?= python' configure/CONFIG_SITE
sed -i '11iDB += user.substitutions' ${NAME}App/Db/Makefile
sed -i '11iDB += counters.db' ${NAME}App/Db/Makefile
sed -i '16idbLoadTemplate "db/user.substitutions"' iocBoot/ioc${NAME}/st.cmd
chmod +x iocBoot/ioc${NAME}/st.cmd
#sed -i '29iSTREAM = /opt/epics/synApps/support/stream' configure/RELEASE
#sed -i '29iASYN = /opt/epics/synApps/support/asyn' configure/RELEASE
#
## fix the install ...
#sed -i '6d' ${NAME}Sup/Makefile
#sed -i "6iDB_INSTALLS += \$\(TOP\)/${NAME}Sup/dev${NAME}.db" ${NAME}Sup/Makefile
#
#sed -i "17i${NAME}test_DBD += drvVxi11.dbd" ${NAME}testApp/src/Makefile
#sed -i "17i${NAME}test_DBD += calc.dbd" ${NAME}testApp/src/Makefile
#sed -i "17i${NAME}test_DBD += stream.dbd" ${NAME}testApp/src/Makefile
##sed -i "17i${NAME}test_DBD += stream.dbd" ${NAME}testApp/src/Makefile
#
#sed -i "39i${NAME}test_LIBS += stream asyn calc" ${NAME}testApp/src/Makefile
#
cat > ${NAME}App/src/counter1.py << EOF
import time
#import piplates.DAQCplate as DAQC
#import RPi.GPIO as GPIO
from threading import Thread
from time import sleep
stop_threads = False
total_count = 0
#https://pi-plates.com/daqc-users-guide/
def buttonINT(channel):
global total_count
#time.sleep(.01) #debounce button before clearing interrupt
#DAQC.getINTflags(0) #clear the interrupt
total_count = total_count +1
def do_counting(stop):
#GPIO.setup(27, GPIO.IN)
#GPIO.add_event_detect(27, GPIO.RISING, callback=buttonINT)
#GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)
#GPIO.add_event_detect(22, GPIO.FALLING, callback=buttonINT)
#DAQC.enableSWint(0) # switch interrupt DAQC.intEnable(0)
#DAQC.intEnable(0)
try:
while(1): #Cycle the LEDs on in the foreground
for i in range(0,7):
#DAQC.setDOUTbit(0,i) #turn on a single LED
time.sleep(.1) #wait for 100msec
#DAQC.clrDOUTbit(0,i) #turn off the LED and go to the next one
#wait for it...
if stop():
break
except KeyboardInterrupt:
#GPIO.cleanup() # clean up GPIO on CTRL+C exit
print('cleanup')
class MySupport:
def __init__(self, rec, link):
self.count = 0
self.count_thread = Thread(target = do_counting, args =(lambda : stop_threads, ))
self.count_thread.start()
def do_count(self,channel):
#DAQC.getINTflags(0) #clear the interrupt
self.count = self.count + 1
def detach(self, rec):
global stop_threads
stop_threads=True
self.count_thread.join()
print("thread finished...exiting")
def process(self, rec, reason):
global total_count
#buttonINT(0)
#self.count = self.count + 1
rec.VAL = int(total_count)
total_count = 0
build = MySupport
EOF
cp ${NAME}App/src/counter1.py ${NAME}App/src/counter2.py
cp ${NAME}App/src/counter1.py ${NAME}App/src/counter3.py
cp ${DIR}/templates/counters.db ${NAME}App/Db/.
cp ${DIR}/templates/user.substitutions ${NAME}App/Db/.
#cat > iocBoot/ioc${NAME}/st.cmd << EOF
##!../../bin/linux-x86_64/${NAME}test
#
##- You may have to change ${NAME}test to something else
##- everywhere it appears in this file
#
#< envPaths
#epicsEnvSet ("STREAM_PROTOCOL_PATH", ".:\$(TOP)/db:../protocols")
#
## Allow PV name prefixes and serial port name to be set from the environment
#epicsEnvSet "P" "\$(P=${NAME})"
#epicsEnvSet "R" "\$(R=test)"
##epicsEnvSet "TTY" "\$(TTY=/dev/tty.PL2303-000013FA)"
#
#cd "\${TOP}"
#
### Register all support components
#dbLoadDatabase "dbd/${NAME}test.dbd"
#${NAME}test_registerRecordDeviceDriver pdbbase
#
#vxi11Configure ("L0","10.10.241.61",1,1000,"inst0",0)
#
### Load record instances
#dbLoadRecords("db/dev${NAME}.db","P=\$(P),R=\$(R),PORT=L0,A=0")
#
#cd "\${TOP}/iocBoot/\${IOC}"
#iocInit
#
### Start any sequence programs
##seq sncxxx,"user=you"
#EOF
......@@ -80,8 +80,8 @@ cd "${NAME}"
makeSupport.pl -t streamSCPI ${NAME}
rm -r configure
makeBaseApp.pl -t ioc ${NAME}test
makeBaseApp.pl -i -t ioc ${NAME}test
makeBaseApp.pl -t ioc ${NAME}
makeBaseApp.pl -i -t ioc ${NAME}
sed -i '29iCALC = /opt/epics/synApps/support/calc' configure/RELEASE
sed -i '29iSTREAM = /opt/epics/synApps/support/stream' configure/RELEASE
sed -i '29iASYN = /opt/epics/synApps/support/asyn' configure/RELEASE
......@@ -90,17 +90,17 @@ sed -i '29iASYN = /opt/epics/synApps/support/asyn' configure/RELEASE
sed -i '6d' ${NAME}Sup/Makefile
sed -i "6iDB_INSTALLS += \$\(TOP\)/${NAME}Sup/dev${NAME}.db" ${NAME}Sup/Makefile
sed -i "17i${NAME}test_DBD += drvVxi11.dbd" ${NAME}testApp/src/Makefile
sed -i "17i${NAME}test_DBD += calc.dbd" ${NAME}testApp/src/Makefile
sed -i "17i${NAME}test_DBD += stream.dbd" ${NAME}testApp/src/Makefile
#sed -i "17i${NAME}test_DBD += stream.dbd" ${NAME}testApp/src/Makefile
sed -i "17i${NAME}_DBD += drvVxi11.dbd" ${NAME}App/src/Makefile
sed -i "17i${NAME}_DBD += calc.dbd" ${NAME}App/src/Makefile
sed -i "17i${NAME}_DBD += stream.dbd" ${NAME}App/src/Makefile
#sed -i "17i${NAME}_DBD += stream.dbd" ${NAME}App/src/Makefile
sed -i "39i${NAME}test_LIBS += stream asyn calc" ${NAME}testApp/src/Makefile
sed -i "39i${NAME}_LIBS += stream asyn calc" ${NAME}App/src/Makefile
cat << EOF > iocBoot/ioc${NAME}test/st.cmd
#!../../bin/linux-x86_64/${NAME}test
cat << EOF > iocBoot/ioc${NAME}/st.cmd
#!../../bin/linux-x86_64/${NAME}
#- You may have to change ${NAME}test to something else
#- You may have to change ${NAME} to something else
#- everywhere it appears in this file
< envPaths
......@@ -114,8 +114,8 @@ epicsEnvSet "R" "\$(R=test)"
cd "\${TOP}"
## Register all support components
dbLoadDatabase "dbd/${NAME}test.dbd"
${NAME}test_registerRecordDeviceDriver pdbbase
dbLoadDatabase "dbd/${NAME}.dbd"
${NAME}_registerRecordDeviceDriver pdbbase
vxi11Configure ("L0","10.10.241.61",1,1000,"inst0",0)
......@@ -129,6 +129,6 @@ iocInit
#seq sncxxx,"user=you"
EOF
chmod +x iocBoot/ioc${NAME}test/st.cmd
chmod +x iocBoot/ioc${NAME}/st.cmd
#!/bin/sh
#
# Phoebus launcher for Linux or Mac OS X
# When deploying, change "TOP"
# to the absolute installation path
TOP="/opt/epics/css/phoebus-4.6.0"
# Ideally, assert that Java is found
# export JAVA_HOME=/opt/jdk-9
# export PATH="$JAVA_HOME/bin:$PATH"
#if [ -d $TOP/target ]
#then
# TOP="$TOP/target"
#fi
if [ -d "${TOP}/update" ]
then
echo "Installing update..."
cd ${TOP}
rm -rf doc lib
mv update/* .
rmdir update
echo "Updated."
fi
JAR=`echo ${TOP}/product-*.jar`
# To get one instance, use server mode
OPT="-server 4918"
java -jar $JAR $OPT "$@"
record(longin, "$(dev):c$(num):Count") {
field(DTYP, "Python Device")
field(INP , "@counter$(num)")
field(SCAN, "2 second")
#field(FLNK, "$(dev):c$(num):TotalCount")
}
record(calc, "$(dev):c$(num):TotalCount") {
#field(SCAN,"Passive")
field(SCAN, "2 second")
#field(VAL, "0")
field(INPA, "$(dev):c$(num):Count PP")
field(INPB, "$(dev):c$(num):TotalCount.VAL PP")
field(CALC, "A")
field(PREC, "9")
}
record(longin, "$(dev):c$(num):IsCounting") {
field(DESC, "counter is counting")
field(DTYP, "Soft Channel")
field(SCAN, "Passive")
field(VAL, "1")
}
record(longin, "$(dev):c$(num):TimeInterval") {
field(DESC, "time interval seconds")
field(DTYP, "Soft Channel")
field(SCAN, "Passive")
field(VAL, "60")
}
record(calc, "$(dev):c$(num):TotalTime") {
field(SCAN,"2 second")
field(INPA, "$(dev):c$(num):IsCounting PP")
field(INPB, "$(dev):c$(num):TotalTime.VAL PP")
field(CALC, "(A>0) ? (2.0 + B) : B")
field(PREC, "9")
}
record(calc, "$(dev):c$(num):TotalRate") {
field(SCAN,"2 second")
field(INPA, "$(dev):c$(num):TotalTime PP")
field(INPB, "$(dev):c$(num):TotalCount PP")
field(CALC, "B/A")
field(PREC, "4")
}
record(longin, "$(dev):c$(num):Reset") {
field(DESC, "Initiate counter reset")
field(DTYP, "Soft Channel")
field(SCAN, "Passive")
field(VAL, "0")
}
record(calcout, "$(dev):c$(num):DoReset") {
field(OOPT, "On Change")
field(DOPT, "Use OCAL") # to set OUT
field(OUT, "$(dev):c$(num):Reset CA")
field(INPA, "$(dev):c$(num):Reset CP")
field(CALC, "A")
field(OCAL, "0")
field(PREC, "4")
field(FLNK, "$(dev):c$(num):ResetTotalTime")
}
record(calcout, "$(dev):c$(num):ResetTotalTime") {
field(OOPT, "Every Time")
field(OUT, "$(dev):c$(num):TotalTime CA")
field(INPA, "$(dev):c$(num):TotalTime PP")
field(CALC, "0.000001")
}
# Example substitutions file
#file "db/counters.db" {
# { user = "whit" }
#}
#
#file "db/dbExample1.db" {
# { user = "whit" }
#}
file db/counters.db {
pattern { dev, num, scan }
{ "daq", 1, "1 second" }
{ "daq", 2, "2 second" }
{ "daq", 3, "5 second" }
}
<?xml version="1.0" encoding="UTF-8"?>
<display version="2.0.0">
<name>DS345</name>
<widget type="label" version="2.0.0">
<name>Label</name>
<class>TITLE</class>
<text>DS345 (for Helmholtz Coils)</text>
<x use_class="true">0</x>
<y use_class="true">0</y>
<width>550</width>
<height>31</height>
<font use_class="true">
<font name="Header 1" family="Liberation Sans" style="BOLD" size="22.0">
</font>
</font>
<foreground_color use_class="true">
<color name="Text" red="0" green="0" blue="0">
</color>
</foreground_color>
<transparent use_class="true">true</transparent>
</widget>
<widget type="label" version="2.0.0">
<name>Label_1</name>
<text>Some Value:</text>
<y>50</y>
</widget>
<widget type="textupdate" version="2.0.0">
<name>Text Update</name>
<pv_name>sim://sine</pv_name>
<x>100</x>
<y>50</y>
</widget>
<widget type="label" version="2.0.0">
<name>Label_2</name>
<class>COMMENT</class>
<text>Some comment.</text>
<x>220</x>
<y>50</y>
<width>140</width>
<font use_class="true">
<font name="Comment" family="Liberation Sans" style="ITALIC" size="14.0">
</font>
</font>
<foreground_color use_class="true">
<color name="Text" red="0" green="0" blue="0">
</color>
</foreground_color>
<transparent use_class="true">true</transparent>
<wrap_words use_class="true">true</wrap_words>
</widget>
<widget type="combo" version="2.0.0">
<name>Combo Box</name>
<x>80</x>
<y>180</y>
<width>140</width>
</widget>
<widget type="action_button" version="3.0.0">
<name>Action Button</name>
<actions>
<action type="write_pv">
<pv_name>SRSDS345test:Trigger</pv_name>
<value>1</value>
<description>Write PV</description>
</action>
</actions>
<text>reset</text>
<x>520</x>
<y>230</y>
<height>70</height>
</widget>
</display>
<?xml version="1.0" encoding="UTF-8"?>
<databrowser>
<title></title>
<show_toolbar>true</show_toolbar>
<update_period>3.0</update_period>
<scroll_step>5</scroll_step>
<scroll>true</scroll>
<start>-2 minutes</start>
<end>now</end>
<archive_rescale>STAGGER</archive_rescale>
<foreground>
<red>0</red>
<green>0</green>
<blue>0</blue>
</foreground>
<background>
<red>255</red>
<green>255</green>
<blue>255</blue>
</background>
<title_font>
</title_font>
<label_font>
</label_font>
<scale_font>
</scale_font>
<legend_font>
</legend_font>
<axes>
<axis>
<visible>true</visible>
<name>Value 1</name>
<use_axis_name>false</use_axis_name>
<use_trace_names>true</use_trace_names>
<right>false</right>
<color>
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
<min>-19.1</min>
<max>8.5</max>
<grid>false</grid>
<autoscale>false</autoscale>
<log_scale>false</log_scale>
</axis>
<axis>
<visible>true</visible>
<name>Value 2</name>
<use_axis_name>false</use_axis_name>
<use_trace_names>true</use_trace_names>
<right>false</right>
<color>
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
<min>-13.700000000000001</min>
<max>24.3</max>
<grid>false</grid>
<autoscale>false</autoscale>
<log_scale>false</log_scale>
</axis>
<axis>
<visible>true</visible>
<name>Value 3</name>
<use_axis_name>false</use_axis_name>
<use_trace_names>true</use_trace_names>
<right>false</right>
<color>
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
<min>-9.0</min>
<max>282.0</max>
<grid>false</grid>
<autoscale>false</autoscale>
<log_scale>false</log_scale>
</axis>
</axes>
<annotations>
</annotations>
<pvlist>
<pv>
<display_name>ksN5700A:Meas:Current</display_name>
<visible>true</visible>
<name>ksN5700A:Meas:Current</name>
<axis>0</axis>
<color>
<red>255</red>
<green>0</green>
<blue>0</blue>
</color>
<trace_type>AREA</trace_type>
<linewidth>2</linewidth>
<line_style>SOLID</line_style>
<point_type>NONE</point_type>
<point_size>2</point_size>
<waveform_index>0</waveform_index>
<period>0.0</period>
<ring_size>5000</ring_size>
<request>OPTIMIZED</request>
</pv>
<pv>
<display_name>ksN5700A:Meas:Voltage</display_name>
<visible>true</visible>
<name>ksN5700A:Meas:Voltage</name>
<axis>1</axis>
<color>
<red>0</red>
<green>255</green>
<blue>0</blue>
</color>
<trace_type>AREA</trace_type>
<linewidth>2</linewidth>
<line_style>SOLID</line_style>
<point_type>NONE</point_type>
<point_size>2</point_size>
<waveform_index>0</waveform_index>
<period>0.0</period>
<ring_size>5000</ring_size>
<request>OPTIMIZED</request>
</pv>
<pv>
<display_name>ksN5700A:Meas:Power</display_name>
<visible>true</visible>
<name>ksN5700A:Meas:Power</name>
<axis>2</axis>
<color>
<red>0</red>
<green>0</green>
<blue>255</blue>
</color>
<trace_type>AREA</trace_type>
<linewidth>2</linewidth>
<line_style>SOLID</line_style>
<point_type>NONE</point_type>
<point_size>2</point_size>
<waveform_index>0</waveform_index>
<period>0.0</period>
<ring_size>5000</ring_size>
<request>OPTIMIZED</request>
</pv>
</pvlist>
</databrowser>
<?xml version="1.0" encoding="UTF-8"?>
<display version="2.0.0">
<name>Helmholtz Coils</name>
<widget type="label" version="2.0.0">
<name>Label</name>
<class>TITLE</class>
<text>Helmholtz Coils</text>
<x use_class="true">0</x>
<y use_class="true">0</y>
<width>550</width>
<height>31</height>
<font use_class="true">
<font name="Header 1" family="Liberation Sans" style="BOLD" size="22.0">
</font>
</font>
<foreground_color use_class="true">
<color name="Text" red="0" green="0" blue="0">
</color>
</foreground_color>
<transparent use_class="true">true</transparent>
</widget>
<widget type="label" version="2.0.0">
<name>Label_1</name>
<text>Magnetic Field</text>
<y>50</y>
</widget>
<widget type="textupdate" version="2.0.0">
<name>Field in Gauss</name>
<pv_name>F71hallprobe:p1:Gauss</pv_name>
<x>30</x>
<y>70</y>
<width>160</width>
<precision>5</precision>
</widget>
<widget type="label" version="2.0.0">
<name>Label_2</name>
<class>COMMENT</class>
<text>Some comment.</text>
<x>270</x>
<y>80</y>
<width>140</width>
<font use_class="true">
<font name="Comment" family="Liberation Sans" style="ITALIC" size="14.0">
</font>
</font>
<foreground_color use_class="true">
<color name="Text" red="0" green="0" blue="0">
</color>
</foreground_color>
<transparent use_class="true">true</transparent>
<wrap_words use_class="true">true</wrap_words>
</widget>
<widget type="tank" version="2.0.0">
<name>Tank</name>
<pv_name>ksN5700A:Meas:Power</pv_name>
<x>650</x>
<y>100</y>
<width>100</width>
<height>190</height>
<empty_color>
<color red="192" green="192" blue="192" alpha="143">
</color>
</empty_color>
<limits_from_pv>false</limits_from_pv>
</widget>
<widget type="databrowser" version="2.0.0">
<name>Data Browser</name>
<file>helmholtz_stripchart.plt</file>
<y>460</y>
<width>780</width>
<height>120</height>
</widget>
<widget type="action_button" version="3.0.0">
<name>Action Button</name>
<actions>
<action type="write_pv">
<pv_name>SRSDS345test:Trigger</pv_name>
<value>1</value>
<description>do ramp</description>
</action>
</actions>
<x>320</x>
<y>190</y>
<width>80</width>
<height>60</height>
</widget>
</display>
......@@ -4,7 +4,15 @@
# EPICS BASE
export EPICS_ROOT=/opt/epics
export EPICS_BASE=/opt/epics/base
if [[ "aarch64" == "$(uname -m)" ]] ; then
export EPICS_HOST_ARCH=linux-arm
else
export EPICS_HOST_ARCH=linux-x86_64
fi
export PATH=$EPICS_ROOT/bin:$PATH
export LD_LIBRARY_PATH=$EPICS_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$EPICS_BASE/bin/$EPICS_HOST_ARCH:$PATH
export LD_LIBRARY_PATH=$EPICS_BASE/lib/$EPICS_HOST_ARCH:$LD_LIBRARY_PATH
......@@ -27,7 +35,6 @@ export LD_LIBRARY_PATH=$EPICSEXTENSIONS/lib/$EPICS_HOST_ARCH:$LD_LIBRARY_PATH
# Epics Display Manager stuff
#export QT_PLUGIN_PATH=/mnt/old_home/whit/projects/epics/extensions/lib/linux-x86_64
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment