Compare commits
7 Commits
mocha-1.5.
...
cafe-1.12.
| Author | SHA1 | Date | |
|---|---|---|---|
| 90d82bec7a | |||
| 0343a1e1e3 | |||
| 09085d814c | |||
| 624d52d419 | |||
| 558222585f | |||
| 2e7abe48eb | |||
| f351a0d5bb |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,5 +1,9 @@
|
||||
*~
|
||||
*.bak
|
||||
*.*-
|
||||
SL6-x86_64
|
||||
windows-x64
|
||||
felix-cache
|
||||
readme.txt
|
||||
makefile_rel*
|
||||
*.*.orig
|
||||
|
||||
2
README
2
README
@@ -1,5 +1,3 @@
|
||||
USE makefile_rel_2014_manual for release versio
|
||||
|
||||
|
||||
## --------------------------------------------------------------------------
|
||||
## makefile
|
||||
|
||||
BIN
RHEL7-x86_64/2018a/macchinettaSwitch.o
Normal file
BIN
RHEL7-x86_64/2018a/macchinettaSwitch.o
Normal file
Binary file not shown.
BIN
RHEL7-x86_64/2018a/mocha.mexa64
Executable file
BIN
RHEL7-x86_64/2018a/mocha.mexa64
Executable file
Binary file not shown.
73
exampleNew.m
73
exampleNew.m
@@ -92,10 +92,10 @@ disp('Section (1) Establishing connections to EPICS Process Variables (PVs) ');
|
||||
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
|
||||
|
||||
%returns an array of handles (object references)
|
||||
hpv=mocha('open',pv);
|
||||
%hpv=mocha('open',pv);
|
||||
|
||||
%When executing the 'open' message as above, the default behaviour
|
||||
%is for each 'open' to wait for a fixed amount of time, given by:
|
||||
%is for each 'open' to wait for a maximum amount of time, given by:
|
||||
openTime = mocha ('getOpenWaitTime'); %currently 0.4s
|
||||
%The 'open' wait time can, however, be configured by the user as follows:
|
||||
mocha ('setOpenWaitTime', 0.2); %set to 0.2s
|
||||
@@ -108,7 +108,7 @@ mocha ('setOpenWaitTime'); %reset to default (0.4s)
|
||||
mocha('openPrepare');
|
||||
hpv=mocha('open',pv);
|
||||
% and more mocha 'open' messages would follow here...
|
||||
% Finally send the messages and wait for 0.2s for connections to complete
|
||||
% Finally send the messages and wait for a maximum of 0.2s for connections to complete
|
||||
mocha('openNowAndWait', 0.2)
|
||||
|
||||
%There are a number of ways to extract information on the created handles
|
||||
@@ -245,6 +245,8 @@ pvStruct.epicsTS; %[secPastEpoch, nsec]
|
||||
%END (2) Simple single channel operations
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%(3) Understanding the Status Error Code / MATLAB Exceptions
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@@ -275,7 +277,7 @@ statusInfo = mocha ('statusInfo', status);
|
||||
%statusArray[2] returns same data as statusInfo above
|
||||
|
||||
%Status code/name pairs can be listed as follows:
|
||||
%disp('Listing all possible status code value/name pairs')
|
||||
disp('Listing all possible status code value/name pairs')
|
||||
[strVal, intVal] = mocha('statusList');
|
||||
|
||||
%Alarm conditions and alarm severities can be listed as follows:
|
||||
@@ -467,6 +469,8 @@ disp('Section (8) Multiple Struct operations on several PVS returning PVData Obj
|
||||
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
|
||||
%GET
|
||||
%returns a sequence of pvData structs
|
||||
%%
|
||||
|
||||
[pvData, isAllOK] = mocha ('getPVArray', pv)
|
||||
disp('Display all pvData.val values and statuses:');
|
||||
%pvData(i) corresponds to the data returned by pv(i)
|
||||
@@ -482,41 +486,52 @@ disp('Display all pvData.val values and statuses:');
|
||||
|
||||
|
||||
%returns a sequence of extended (x) pvData structs
|
||||
[pvStruct, isAllOK] = mocha ('getStructArray', pv)
|
||||
%%[pvStruct, isAllOK] = mocha ('getStructArray', pv)
|
||||
%pvStruct(i) corresponds to the data returned by pv(i)
|
||||
disp('Display all pvStruct as arrays:');
|
||||
[pvStruct.handle]
|
||||
{pvStruct.pv}
|
||||
{pvStruct.val}
|
||||
[pvStruct.status]
|
||||
{pvStruct.status_str}
|
||||
[pvStruct.alarmStatus]
|
||||
[pvStruct.alarmStatus_str]
|
||||
[pvStruct.alarmSeverity]
|
||||
{pvStruct.alarmSeverity_str}
|
||||
pvStruct.ts
|
||||
pvStruct.epicsTS
|
||||
[pvStruct.alarmSeverity]
|
||||
{pvStruct.alarmSeverity_str}
|
||||
%%disp('Display all pvStruct as arrays:');
|
||||
%%[pvStruct.handle]
|
||||
%%{pvStruct.pv}
|
||||
%%{pvStruct.val}
|
||||
%%[pvStruct.status]
|
||||
%%{pvStruct.status_str}
|
||||
%%[pvStruct.alarmStatus]
|
||||
%%{pvStruct.alarmStatus_str}
|
||||
%%[pvStruct.alarmSeverity]
|
||||
%%{pvStruct.alarmSeverity_str}
|
||||
%%pvStruct.ts
|
||||
%%pvStruct.epicsTS
|
||||
%%[pvStruct.alarmSeverity]
|
||||
%%{pvStruct.alarmSeverity_str}
|
||||
%pvStruct(1:6).ts %timestamps
|
||||
%[pvStruct(1:6).alarmStatus]
|
||||
|
||||
%% %%%%
|
||||
%Note: the following method is equivelent to the above
|
||||
%as it will call getStructArray internally
|
||||
[pvStruct, isAllOK] = mocha ('getStruct', pv);
|
||||
|
||||
%%%%%%%%
|
||||
|
||||
disp('Alternatively part data (values, statuses only) could also be retrieved with getCellArray:');
|
||||
%% %%%%
|
||||
[val, isAllOK, s] = mocha ('getCellArray', hpv)
|
||||
%%%%%%%%%%%%%%
|
||||
|
||||
%SET
|
||||
|
||||
|
||||
%SET -overwrite pvData
|
||||
pvData(1).val =0.2345;
|
||||
pvData(2).val =2.6789;
|
||||
pvData(3).val =(256:512);
|
||||
pvData(4).val = 'off';
|
||||
|
||||
%%%%%%
|
||||
[isAllOK, s] = mocha ('set', hpv, pvData(1:6).val);
|
||||
%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
%Check values were set
|
||||
[val, isAllOK, s] = mocha ('getCellArray', hpv)
|
||||
%%%%%%%%%
|
||||
|
||||
disp('Recall we had previously set an offset for wf of value:');
|
||||
offset=mocha('getOffset',hpv(3))
|
||||
disp('Setting new offset/nelem for wf has value:');
|
||||
@@ -543,6 +558,8 @@ pvData(3).val
|
||||
%END (8) Multiple Struct operations on several PVS returning PVData Objects plus Multiple Sets for Scalars/Vectors
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%(9) Asynchronous interactions and retrieving data from Cache
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@@ -708,7 +725,6 @@ disp('Show members of group gTest (as loaded from test.xml):');
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%(11) Monitors, either with or without user supplied callbacks (in essence, matlab scripts)
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@@ -720,6 +736,8 @@ monitorID = mocha ('monitor', pv(1));
|
||||
[monitorIDArray, isAllOK, statusArray] = mocha ('monitor', pv(1:6)); %start monitors for several pvs/handles
|
||||
%Once the monitor is started, data may be retrieved via one of the cache methods
|
||||
|
||||
pause(0.1)
|
||||
|
||||
[val,s] = mocha('getCache', pv(1)); %Scalar or vector returned in native data type
|
||||
[val,s] = mocha('getCache', pv(1), 'double'); %Scalar or vector returned as a MATLAB double
|
||||
[val,s] = mocha('getCache', pv(1), 'uint8'); %Scalar or vector returned as a MATLAB uint8
|
||||
@@ -758,14 +776,14 @@ mocha('monitorFlushEvent', pv(1)); %will execute the MATLAB script monitorAction
|
||||
mocha('monitorFlushEvent'); %will execute all 'actions' for all 'handles' that have received new data
|
||||
|
||||
%The above command is used in conjunction with MATLAB timer (as for MCA's mcamontimer.m)
|
||||
obj.t = timer('TimerFcn', 'mocha(''monitorFlushEvent'')', 'Period', 1.0, 'ExecutionMode', 'fixedSpacing');
|
||||
obj.t = timer('TimerFcn', 'mocha(''monitorFlushEvent'')', 'Period', 2.0, 'ExecutionMode', 'fixedSpacing');
|
||||
%Else if double quotes cannot be used in the above; here's a way around the problem:
|
||||
%obj.t = timer('TimerFcn', 'mocha(402)', 'Period', 2.0, 'ExecutionMode', 'fixedSpacing');
|
||||
start(obj.t);
|
||||
disp ('Callback for monitors for 5 seconds')
|
||||
for n=1:5
|
||||
mocha('set', pv(1), n); %See the script be executed
|
||||
pause(1);
|
||||
pause(0.5);
|
||||
end
|
||||
stop(obj.t);
|
||||
|
||||
@@ -1029,7 +1047,7 @@ setValue=0.4;
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% (17) Gracefully terminate CAFE
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
|
||||
@@ -1040,11 +1058,10 @@ disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%');
|
||||
%Stops all monitors (if any)
|
||||
%Closes all channels
|
||||
%Releases all CA resources
|
||||
mocha ('close');
|
||||
|
||||
mocha ('close')
|
||||
%
|
||||
%END (17) Gracefully terminate CAFE
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
|
||||
2253
macchinettaHelper.h
2253
macchinettaHelper.h
File diff suppressed because it is too large
Load Diff
2052
macchinettaHelper.h-
2052
macchinettaHelper.h-
File diff suppressed because it is too large
Load Diff
12292
macchinettaSwitch.cpp
12292
macchinettaSwitch.cpp
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
124
makefile_rel_1.3
124
makefile_rel_1.3
@@ -1,124 +0,0 @@
|
||||
#
|
||||
# Jan Chrin
|
||||
# New Version: June 2016
|
||||
#
|
||||
# makefile to build mocha mex file
|
||||
# printenv | grep MATLAB to reveal your MATLAB Directory
|
||||
#
|
||||
# e.g. on sf-lc we have
|
||||
# MATLAB=/afs/psi.ch/sys/linux/opt/matlab/2015a.x86_64
|
||||
#
|
||||
# local executables are built in ./${EPICS_HOST_ARCH}/$(MVER)
|
||||
# where the MATLAB version is grepped from $(MATLAB)
|
||||
|
||||
MATLAB_ROOT=${MATLAB}
|
||||
MATLAB_VERSION=$(notdir $(MATLAB_ROOT))
|
||||
|
||||
##### CHANGE AS APPROPRIATE #################
|
||||
#Mocha Version to install
|
||||
MOCHA_VERSION=mocha-1.3.0-final-2
|
||||
#CAFE version to link to
|
||||
CAFE_VERSION=cafe-1.3.0-final-2
|
||||
|
||||
|
||||
|
||||
EPICS_BASE=${EPICS}/base
|
||||
#CAFE project base
|
||||
CAFE_BASE=/opt/gfa/cafe
|
||||
CAFE_MOCHA_BASE=${CAFE_BASE}/mocha
|
||||
#CAFE_CPP_BASE=/afs/psi.ch/project/cafe/gitlab/CAFE/cpp
|
||||
CAFE_CPP_BASE=$(CAFE_BASE)/cpp/$(CAFE_VERSION)
|
||||
|
||||
|
||||
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
|
||||
BOOST_LIB=/afs/psi.ch/project/zeromq/devl/mate/deps/boost/lib
|
||||
|
||||
QT_LIB=/usr/lib64
|
||||
|
||||
INSTALL_MOCHA_LIBDIR= $(CAFE_MOCHA_BASE)/$(MOCHA_VERSION)/lib/$(MATLAB_VERSION)
|
||||
#############################################
|
||||
|
||||
|
||||
#First deteremine if we are on a 32/64 bit machine
|
||||
#as mex file extensions are named differently
|
||||
pattern64=x86_64
|
||||
pattern32=i386
|
||||
|
||||
PWD=$(shell pwd)
|
||||
#hardware platform
|
||||
HW=$(shell uname -i)
|
||||
ifeq ($(pattern64),$(findstring $(pattern64), $(HW)))
|
||||
MEXE=mexa64
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa64
|
||||
else
|
||||
ifeq ($(pattern32),$(findstring $(pattern32), $(HW)))
|
||||
MEXE=mexglx
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa86
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
INSTALL_PATH?=$(INSTALL_MOCHA_LIBDIR)
|
||||
OBJ_DIR= ${EPICS_HOST_ARCH}/$(MATLAB_VERSION)
|
||||
|
||||
INCLUDEPATH_MOCHA += -I$(MATLAB_ROOT)/extern/include \
|
||||
-I$(CAFE_CPP_BASE)/include -I./ \
|
||||
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux
|
||||
|
||||
|
||||
INCLUDEPATH_MACHINETTA += $(INCLUDEPATH_MOCHA) -I$(BOOST_BASE) -I$(BOOST_BASE)/boost
|
||||
|
||||
|
||||
LIB_DIR += \
|
||||
-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB) \
|
||||
-L$(CAFE_CPP_BASE) \
|
||||
-Wl,-rpath,$(CAFE_CPP_BASE) \
|
||||
-L$(QT_LIB) -Wl,-rpath,$(QT_LIB)
|
||||
|
||||
|
||||
LIBS += -ldl -lca -lCom -lmx -lmex -lmat -lQtCore -lQtXml
|
||||
|
||||
LIB_INSTALL = $(LIB_DIR) -L$(INSTALL_PATH) -Wl,-rpath,$(INSTALL_PATH)
|
||||
|
||||
LIB_LOCAL = $(LIB_DIR)
|
||||
|
||||
|
||||
CAFE_OBJS_DIR = $(CAFE_BASE)/cpp/$(CAFE_VERSION)/lib/libcafe.a
|
||||
|
||||
# MATLAB Versions 2014 onwards, use
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_LOCAL) $(LIBS)
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_INSTALL) $(LIBS)
|
||||
|
||||
|
||||
$(OBJ_DIR)/mocha.$(MEXE): mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(OBJ_DIR) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_LOCAL) $(LIBS)'
|
||||
|
||||
|
||||
$(OBJ_DIR)/macchinettaSwitch.o: macchinettaSwitch.cpp macchinettaHelper.h \
|
||||
macchinetta.h containerMochaccino.h
|
||||
mex GCC='/usr/bin/g++' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
-largeArrayDims -c macchinettaSwitch.cpp $(INCLUDEPATH_MACHINETTA) -outdir $(OBJ_DIR)
|
||||
|
||||
|
||||
install: $(OBJ_DIR)/mocha.$(MEXE)
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(INSTALL_PATH) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_INSTALL) $(LIBS)'
|
||||
cp example.m $(INSTALL_PATH)
|
||||
cp scripts/*.m $(INSTALL_PATH)
|
||||
cp scripts/test.xml $(INSTALL_PATH)
|
||||
|
||||
install_lib: $(OBJ_DIR)/libmacchinetta.so
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
cp $(OBJ_DIR)/libmacchinetta.so $(INSTALL_PATH)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/*.so $(OBJ_DIR)/*.$(MEXE)
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
MATLAB_ROOT=C:\'Program Files'\MATLAB\R2016b_x64
|
||||
MEXE=mexw64
|
||||
#c:\local\boost_1_62_0\
|
||||
|
||||
INCLUDES = -IC:\CAFE\CAFE\cpp\include -IC:\CAFE\CAFE\cpp -IC:\local\boost_1_62_0 \
|
||||
-IC:\local\boost_1_62_0\boost -IC:\epics\base-3.14.12.5\include -IC:\epics\base-3.14.12.5\include\os\WIN32 \
|
||||
-I"C:\Program Files\MATLAB\R2016b_x64\extern\include" \
|
||||
-Ic:\Qt\qt-4.8.6-x64-msvc2010\include -Ic:\Qt\qt-4.8.6-x64-msvc2010\include\QtCore -Ic:\Qt\qt-4.8.6-msvc2010\include\QtXml
|
||||
|
||||
CXX=cl
|
||||
CXXFLAGS = /W4 /EHsc
|
||||
OUTPUT_OPTION = /o $@
|
||||
LIB_LOCAL = C:\epics\base-3.14.12.5\lib\windows-x64\Com.lib C:\epics\base-3.14.12.5\lib\windows-x64\ca.lib \
|
||||
C:\CAFE\CAFE\cpp\cafe.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_thread-vc100-mt-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_system-vc100-mt-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_chrono-vc100-mt-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-1_62.lib \
|
||||
C:\Qt\Qt-4.8.6-msvc2010\lib\QtCore4.lib C:\Qt\tq-4.8.6-msvc2010\lib\QtXml4.lib
|
||||
#"C:\Program Files\MATLAB\R2016b_x64\extern\lib\win64\microsoft\libmat.lib" \
|
||||
#"C:\Program Files\MATLAB\R2016b_x64\extern\lib\win64\microsoft\libmex.lib" \
|
||||
#"C:\Program Files\MATLAB\R2016b_x64\extern\lib\win64\microsoft\libmx.lib"
|
||||
|
||||
LIB_CAFE=C:\CAFE\CAFE\cpp\cafe.lib
|
||||
LIB_BOOST =C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-1_62.lib
|
||||
|
||||
LIB_BOOST2=C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-s-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_thread-vc100-mt-s-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_system-vc100-mt-s-1_62.lib \
|
||||
C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_chrono-vc100-mt-s-1_62.lib
|
||||
|
||||
#LIB_BOOST2=C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_thread-vc100-mt-s-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_system-vc100-mt-s-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-s-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_chrono-vc100-mt-s-1_62.lib
|
||||
|
||||
#LIB_BOOST=C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_thread-vc100-mt-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_system-vc100-mt-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_date_time-vc100-mt-1_62.lib \
|
||||
#C:\local\boost_1_62_0\lib64-msvc-10.0\libboost_chrono-vc100-mt-1_62.lib
|
||||
|
||||
LIB_QT=C:\Qt\Qt-4.8.6-x64-msvc2010\lib\QtCore4.lib C:\Qt\qt-4.8.6-x64-msvc2010\lib\QtXml4.lib
|
||||
|
||||
LIB_EPICS=C:\epics\base-3.14.12.5\lib\windows-x64\Com.lib C:\epics\base-3.14.12.5\lib\windows-x64\ca.lib
|
||||
|
||||
OBJ_DIR=windows-x64
|
||||
|
||||
CAFE_OBJS = C:\CAFE\CAFE\cpp\src\cafeCache.obj C:\CAFE\CAFE\cpp\src\cafeGroup.obj C:\CAFE\CAFE\cpp\src\cafe.obj C:\CAFE\CAFE\cpp\src\cafeVectors.obj \
|
||||
C:\CAFE\CAFE\cpp\src\cafeXML.obj C:\CAFE\CAFE\cpp\src\callbackHandlerCreate.obj C:\CAFE\CAFE\cpp\src\callbackHandlerMonitor.obj \
|
||||
C:\CAFE\CAFE\cpp\src\conduitGroup.obj C:\CAFE\CAFE\cpp\src\conduit.obj \
|
||||
C:\CAFE\CAFE\cpp\src\connectCallbacks.obj C:\CAFE\CAFE\cpp\src\connectGroup.obj \
|
||||
C:\CAFE\CAFE\cpp\src\connect.obj C:\CAFE\CAFE\cpp\src\exceptionsHelper.obj C:\CAFE\CAFE\cpp\src\granules.obj C:\CAFE\CAFE\cpp\src\handleHelper.obj \
|
||||
C:\CAFE\CAFE\cpp\src\helper.obj \
|
||||
C:\CAFE\CAFE\cpp\src\loadCollectionXMLParser.obj C:\CAFE\CAFE\cpp\src\loadGroupXMLParser.obj C:\CAFE\CAFE\cpp\src\methodCallbacks.obj \
|
||||
C:\CAFE\CAFE\cpp\src\policyHelper.obj \
|
||||
C:\CAFE\CAFE\cpp\src\restorePVGroupXMLParser.obj C:\CAFE\CAFE\cpp\src\transpose.obj
|
||||
|
||||
#\NODEFAULTLIB
|
||||
$(OBJ_DIR)\mocha.$(MEXE): mocha.cpp $(OBJ_DIR)\macchinettaSwitch.obj
|
||||
"C:\Program Files\MATLAB\R2016b_x64\bin\win64\mex" -v COMPFLAGS="$(COMPFLAGS) -Wall" mocha.cpp $(OBJ_DIR)/macchinettaSwitch.obj -DDB_TEXT_GLBLSOURCE -DMSCC -DWIN32 -DWIN64 -largeArrayDims $(INCLUDES) $(LIB_EPICS) $(LIB_CAFE) $(LIB_BOOST) $(LIB_BOOST2) $(LIB_QT) \
|
||||
-outdir $(OBJ_DIR) -output mocha.$(MEXE)
|
||||
|
||||
$(OBJ_DIR)\macchinettaSwitch.obj: macchinettaSwitch.cpp macchinettaHelper.h \
|
||||
macchinetta.h containerMochaccino.h
|
||||
"C:\Program Files\MATLAB\R2016b_x64\bin\win64\mex" -largeArrayDims \
|
||||
-c macchinettaSwitch.cpp $(INCLUDES) -outdir $(OBJ_DIR)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*.obj $(OBJ_DIR)/*.$(MEXE)
|
||||
|
||||
157
makefile_rel_1.5
157
makefile_rel_1.5
@@ -1,157 +0,0 @@
|
||||
#
|
||||
# Jan Chrin
|
||||
# New Version: June 2016
|
||||
#
|
||||
# makefile to build mocha mex file
|
||||
# printenv | grep MATLAB to reveal your MATLAB Directory
|
||||
#
|
||||
# e.g. on sf-lc we have
|
||||
# MATLAB=/afs/psi.ch/sys/linux/opt/matlab/2015a.x86_64
|
||||
#
|
||||
# local executables are built in ./${EPICS_HOST_ARCH}/$(MVER)
|
||||
# where the MATLAB version is grepped from $(MATLAB)
|
||||
|
||||
MATLAB_ROOT=${MATLAB}
|
||||
MATLAB_VERSION=$(notdir $(MATLAB_ROOT))
|
||||
|
||||
##### CHANGE AS APPROPRIATE #################
|
||||
#Mocha Version to install
|
||||
MOCHA_VERSION=mocha-1.5.0-final-2
|
||||
#CAFE version to link to
|
||||
CAFE_VERSION=cafe-1.5.0-final-2
|
||||
#CAFE_VERSION_M=cafe-1.3.0-final-2m
|
||||
|
||||
#PYTHON_INCLUDE=/usr/include/python2.6
|
||||
#PYTHON_LIB=/usr/lib64
|
||||
|
||||
EPICS_BASE=${EPICS}/base
|
||||
#CAFE project base
|
||||
CAFE_BASE=/opt/gfa/cafe
|
||||
CAFE_MOCHA_BASE=${CAFE_BASE}/mocha
|
||||
#CAFE_CPP_BASE=/afs/psi.ch/project/cafe/gitworkspace/CAFE/cpp
|
||||
CAFE_CPP_BASE=$(CAFE_BASE)/cpp/$(CAFE_VERSION)
|
||||
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
|
||||
|
||||
BOOST_LIB=/afs/psi.ch/project/zeromq/devl/mate/deps/boost/lib
|
||||
|
||||
INSTALL_MOCHA_LIBDIR= $(CAFE_MOCHA_BASE)/$(MOCHA_VERSION)/lib/$(MATLAB_VERSION)
|
||||
#############################################
|
||||
|
||||
|
||||
#First deteremine if we are on a 32/64 bit machine
|
||||
#as mex file extensions are named differently
|
||||
pattern64=x86_64
|
||||
pattern32=i386
|
||||
|
||||
PWD=$(shell pwd)
|
||||
#hardware platform
|
||||
HW=$(shell uname -i)
|
||||
ifeq ($(pattern64),$(findstring $(pattern64), $(HW)))
|
||||
MEXE=mexa64
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa64
|
||||
else
|
||||
ifeq ($(pattern32),$(findstring $(pattern32), $(HW)))
|
||||
MEXE=mexglx
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa86
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
INSTALL_PATH?=$(INSTALL_MOCHA_LIBDIR)
|
||||
OBJ_DIR= ${EPICS_HOST_ARCH}/$(MATLAB_VERSION)
|
||||
|
||||
INCLUDEPATH_MOCHA += -I$(MATLAB_ROOT)/extern/include \
|
||||
-I$(CAFE_CPP_BASE)/include -I./ \
|
||||
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux
|
||||
# -I${PYTHON_INCLUDE}
|
||||
# -I$(CAFE_CPP_BASE)/$(CAFE_VERSION)/include \
|
||||
|
||||
INCLUDEPATH_MACHINETTA += $(INCLUDEPATH_MOCHA) -I$(BOOST_BASE) -I$(BOOST_BASE)/boost
|
||||
|
||||
#-L$(BOOST_LIB) -Wl,-rpath,$(BOOST_LIB)
|
||||
|
||||
LIB_DIR += \
|
||||
-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB) \
|
||||
-L/usr/lib64 -Wl,-rpath,/usr/lib64
|
||||
# -L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib \
|
||||
# -Wl,-rpath,$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib
|
||||
# -L$(PYTHON_LIB) -Wl,-rpath,$(PYTHON_LIB)
|
||||
# -L$(CAFE_CPP_BASE) \
|
||||
# -Wl,-rpath,$(CAFE_CPP_BASE) \
|
||||
|
||||
|
||||
|
||||
#LIBS += -lpython2.6
|
||||
|
||||
#LIB_DIR += -L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-L$(CAFE_CPP_BASE)/$(CAFE_VERSION)/lib/${EPICS_HOST_ARCH} \
|
||||
-L$(MATLAB_LIB)
|
||||
|
||||
#-lmacchinetta -lcafe
|
||||
#-lboost_system -lboost_thread-mt
|
||||
LIBS += -ldl -lca -lCom -lmx -lmex -lmat -lQtCore -lQtXml
|
||||
|
||||
LIB_INSTALL = $(LIB_DIR) -L$(INSTALL_PATH) -Wl,-rpath,$(INSTALL_PATH)
|
||||
|
||||
#LIB_LOCAL = $(LIB_DIR) -L$(PWD)/$(OBJ_DIR) -Wl,-rpath,$(PWD)/$(OBJ_DIR)
|
||||
LIB_LOCAL = $(LIB_DIR)
|
||||
|
||||
CPP_OBJS=../cpp/src/libs/cafe/$(CAFE_VERSION_M)
|
||||
|
||||
#CAFE_OBJS_DIR = $(CPP_OBJS)/cafe.o $(CPP_OBJS)/cafeCache.o $(CPP_OBJS)/cafeGroup.o $(CPP_OBJS)/cafeVectors.o \
|
||||
# $(CPP_OBJS)/cafeXML.o $(CPP_OBJS)/callbackHandlerCreate.o $(CPP_OBJS)/callbackHandlerMonitor.o \
|
||||
# $(CPP_OBJS)/conduitGroup.o $(CPP_OBJS)/conduit.o \
|
||||
# $(CPP_OBJS)/connectCallbacks.o $(CPP_OBJS)/connectGroup.o \
|
||||
# $(CPP_OBJS)/connect.o $(CPP_OBJS)/exceptionsHelper.o $(CPP_OBJS)/granules.o $(CPP_OBJS)/handleHelper.o \
|
||||
# $(CPP_OBJS)/helper.o \
|
||||
# $(CPP_OBJS)/loadCollectionXMLParser.o $(CPP_OBJS)/loadGroupXMLParser.o $(CPP_OBJS)/methodCallbacks.o \
|
||||
# $(CPP_OBJS)/policyHelper.o \
|
||||
# $(CPP_OBJS)/restorePVGroupXMLParser.o $(CPP_OBJS)/transpose.o
|
||||
|
||||
|
||||
CAFE_OBJS_DIR = $(CAFE_BASE)/cpp/$(CAFE_VERSION)/lib/libcafe.a
|
||||
|
||||
# MATLAB Versions 2014 onwards, use
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_LOCAL) $(LIBS)
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_INSTALL) $(LIBS)
|
||||
|
||||
|
||||
$(OBJ_DIR)/mocha.$(MEXE): mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(OBJ_DIR) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_LOCAL) $(LIBS)'
|
||||
|
||||
|
||||
|
||||
#$(OBJ_DIR)/libmacchinetta.so: $(OBJ_DIR)/macchinettaSwitch.o
|
||||
# g++ -shared -Wl,-soname,libmacchinetta.so \
|
||||
# $(OBJ_DIR)/macchinettaSwitch.o -o $(OBJ_DIR)/libmacchinetta.so
|
||||
|
||||
|
||||
$(OBJ_DIR)/macchinettaSwitch.o: macchinettaSwitch.cpp macchinettaHelper.h \
|
||||
macchinetta.h containerMochaccino.h
|
||||
mex GCC='/usr/bin/g++' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
-largeArrayDims -c macchinettaSwitch.cpp $(INCLUDEPATH_MACHINETTA) -outdir $(OBJ_DIR)
|
||||
|
||||
#install: install_lib $(OBJ_DIR)/mocha.$(MEXE) Aptil 2017
|
||||
install: $(OBJ_DIR)/mocha.$(MEXE)
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(INSTALL_PATH) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_INSTALL) $(LIBS)'
|
||||
cp example.m $(INSTALL_PATH)
|
||||
cp scripts/monitorAction.m $(INSTALL_PATH)
|
||||
cp scripts/pvtable.m $(INSTALL_PATH)
|
||||
cp scripts/test.xml $(INSTALL_PATH)
|
||||
|
||||
install_lib: $(OBJ_DIR)/libmacchinetta.so
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
cp $(OBJ_DIR)/libmacchinetta.so $(INSTALL_PATH)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/*.so $(OBJ_DIR)/*.$(MEXE)
|
||||
|
||||
@@ -1,124 +0,0 @@
|
||||
#
|
||||
# Jan Chrin
|
||||
# New Version: June 2016
|
||||
#
|
||||
# makefile to build mocha mex file
|
||||
# printenv | grep MATLAB to reveal your MATLAB Directory
|
||||
#
|
||||
# e.g. on sf-lc we have
|
||||
# MATLAB=/afs/psi.ch/sys/linux/opt/matlab/2015a.x86_64
|
||||
#
|
||||
# local executables are built in ./${EPICS_HOST_ARCH}/$(MVER)
|
||||
# where the MATLAB version is grepped from $(MATLAB)
|
||||
|
||||
MATLAB_ROOT=${MATLAB}
|
||||
MATLAB_VERSION=$(notdir $(MATLAB_ROOT))
|
||||
|
||||
##### CHANGE AS APPROPRIATE #################
|
||||
#Mocha Version to install
|
||||
MOCHA_VERSION=mocha-1.3.0-final-1
|
||||
#CAFE version to link to
|
||||
CAFE_VERSION=cafe-1.3.0-final-1
|
||||
|
||||
|
||||
|
||||
EPICS_BASE=${EPICS}/base
|
||||
#CAFE project base
|
||||
CAFE_BASE=/opt/gfa/cafe
|
||||
CAFE_MOCHA_BASE=${CAFE_BASE}/mocha
|
||||
#CAFE_CPP_BASE=/afs/psi.ch/project/cafe/gitlab/CAFE/cpp
|
||||
CAFE_CPP_BASE=$(CAFE_BASE)/cpp/$(CAFE_VERSION)
|
||||
|
||||
|
||||
BOOST_BASE=${CAFE_BASE}/boost/boost_1_61_0/include
|
||||
BOOST_LIB=/afs/psi.ch/project/zeromq/devl/mate/deps/boost/lib
|
||||
|
||||
QT_LIB=/usr/lib64
|
||||
|
||||
INSTALL_MOCHA_LIBDIR= $(CAFE_MOCHA_BASE)/$(MOCHA_VERSION)/lib/$(MATLAB_VERSION)
|
||||
#############################################
|
||||
|
||||
|
||||
#First deteremine if we are on a 32/64 bit machine
|
||||
#as mex file extensions are named differently
|
||||
pattern64=x86_64
|
||||
pattern32=i386
|
||||
|
||||
PWD=$(shell pwd)
|
||||
#hardware platform
|
||||
HW=$(shell uname -i)
|
||||
ifeq ($(pattern64),$(findstring $(pattern64), $(HW)))
|
||||
MEXE=mexa64
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa64
|
||||
else
|
||||
ifeq ($(pattern32),$(findstring $(pattern32), $(HW)))
|
||||
MEXE=mexglx
|
||||
MATLAB_LIB = $(MATLAB_ROOT)/bin/glnxa86
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
INSTALL_PATH?=$(INSTALL_MOCHA_LIBDIR)
|
||||
OBJ_DIR= ${EPICS_HOST_ARCH}/$(MATLAB_VERSION)
|
||||
|
||||
INCLUDEPATH_MOCHA += -I$(MATLAB_ROOT)/extern/include \
|
||||
-I$(CAFE_CPP_BASE)/include -I./ \
|
||||
-I$(EPICS_BASE)/include -I$(EPICS_BASE)/include/os/Linux
|
||||
|
||||
|
||||
INCLUDEPATH_MACHINETTA += $(INCLUDEPATH_MOCHA) -I$(BOOST_BASE) -I$(BOOST_BASE)/boost
|
||||
|
||||
|
||||
LIB_DIR += \
|
||||
-L$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-Wl,-rpath,$(EPICS_BASE)/lib/${EPICS_HOST_ARCH} \
|
||||
-L$(MATLAB_LIB) -Wl,-rpath,$(MATLAB_LIB) \
|
||||
-L$(CAFE_CPP_BASE) \
|
||||
-Wl,-rpath,$(CAFE_CPP_BASE) \
|
||||
-L$(QT_LIB) -Wl,-rpath,$(QT_LIB)
|
||||
|
||||
|
||||
LIBS += -ldl -lca -lCom -lmx -lmex -lmat -lQtCore -lQtXml
|
||||
|
||||
LIB_INSTALL = $(LIB_DIR) -L$(INSTALL_PATH) -Wl,-rpath,$(INSTALL_PATH)
|
||||
|
||||
LIB_LOCAL = $(LIB_DIR)
|
||||
|
||||
|
||||
CAFE_OBJS_DIR = $(CAFE_BASE)/cpp/$(CAFE_VERSION)/lib/libcafe.a
|
||||
|
||||
# MATLAB Versions 2014 onwards, use
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_LOCAL) $(LIBS)
|
||||
# LDFLAGS='$(LIB_LOCAL) $(LIBS) instead of $(LIB_INSTALL) $(LIBS)
|
||||
|
||||
|
||||
$(OBJ_DIR)/mocha.$(MEXE): mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(OBJ_DIR) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_LOCAL) $(LIBS)'
|
||||
|
||||
|
||||
$(OBJ_DIR)/macchinettaSwitch.o: macchinettaSwitch.cpp macchinettaHelper.h \
|
||||
macchinetta.h containerMochaccino.h
|
||||
mex GCC='/usr/bin/g++' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
-largeArrayDims -c macchinettaSwitch.cpp $(INCLUDEPATH_MACHINETTA) -outdir $(OBJ_DIR)
|
||||
|
||||
|
||||
install: $(OBJ_DIR)/mocha.$(MEXE)
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
mex -largeArrayDims GCC='/usr/bin/gcc' CXXFLAGS='-v -largeArrayDims -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread' \
|
||||
mocha.cpp $(OBJ_DIR)/macchinettaSwitch.o $(CAFE_OBJS_DIR) -outdir $(INSTALL_PATH) -output mocha.$(MEXE) \
|
||||
$(INCLUDEPATH_MOCHA) \
|
||||
LDFLAGS='$(LIB_INSTALL) $(LIBS)'
|
||||
cp example.m $(INSTALL_PATH)
|
||||
cp scripts/*.m $(INSTALL_PATH)
|
||||
cp scripts/test.xml $(INSTALL_PATH)
|
||||
|
||||
install_lib: $(OBJ_DIR)/libmacchinetta.so
|
||||
mkdir -p $(INSTALL_PATH)
|
||||
cp $(OBJ_DIR)/libmacchinetta.so $(INSTALL_PATH)
|
||||
|
||||
clean:
|
||||
rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/*.so $(OBJ_DIR)/*.$(MEXE)
|
||||
|
||||
109
scripts/caget.m-
109
scripts/caget.m-
@@ -1,109 +0,0 @@
|
||||
function value = caget(channel,cached)
|
||||
% caget('channel') returns current value and additional infos
|
||||
% of given EPICS channel.
|
||||
% caget('channel',1) returns last value and additional infos
|
||||
% of given EPICS channel.
|
||||
%
|
||||
% channel can be a channel name or a handle as returned from mcaopen
|
||||
%
|
||||
% return value elements:
|
||||
% val: value (scalar, vector or string)
|
||||
% sevr: severity as a number
|
||||
% sevr_str: severity as a string
|
||||
% stat: status as a number
|
||||
% stat_str: status as a string
|
||||
% time: timestamp as a date vector
|
||||
% units: units string
|
||||
|
||||
persistent severity_str
|
||||
persistent status_str
|
||||
persistent zerotime
|
||||
persistent units
|
||||
|
||||
if ischar(channel)
|
||||
pv = mocha('open',channel);
|
||||
|
||||
if mocha('isConnected', channel) == false
|
||||
mocha('openNowAndWait', 0.5)
|
||||
end
|
||||
|
||||
if mocha('isConnected', channel) == false
|
||||
error('EPICS channel %s not found', channel);
|
||||
end
|
||||
elseif isnumeric(channel)
|
||||
pv = channel;
|
||||
else
|
||||
error ('first argument must be channel name or handle');
|
||||
end
|
||||
if isvector(pv)
|
||||
pv=pv(1); % truncate
|
||||
end
|
||||
if nargin > 1 && cached
|
||||
pvStruct = mocha('getPVCache',pv);
|
||||
else
|
||||
pvStruct = mocha('getPV', pv);
|
||||
end
|
||||
|
||||
val=pvStruct.val
|
||||
|
||||
pvCtrl = mocha('getCtrlCache',pv);
|
||||
%pvCtrl
|
||||
|
||||
% initialize severity and status enums
|
||||
if isempty(severity_str)
|
||||
severity_str = {'NO_ALARM';'MINOR';'MAJOR';'INVALID'};
|
||||
status_str = {'NO_ALARM';'READ';'WRITE';'HIHI';'HIGH';'LOLO';'LOW';'STATE';'COS';'COMM';'TIMEOUT';'HWLIMIT';'CALC';'SCAN';'LINK';'SOFT';'BAD_SUB';'UDF';'DISABLE';'SIMM';'READ_ACCESS';'WRITE_ACCESS'};
|
||||
end
|
||||
|
||||
|
||||
value.val = val;
|
||||
|
||||
units = pvCtrl.units;
|
||||
string = pvCtrl.enumStrings;
|
||||
|
||||
if size(string) > 1
|
||||
disp(size(string))
|
||||
value.val_str = value.val;
|
||||
value.val = mocha('getCache',pv,'int8');
|
||||
end
|
||||
|
||||
|
||||
%if ~isempty(units{1})
|
||||
%value.units = units{1};
|
||||
%end
|
||||
value.units=units;
|
||||
value.sevr = pvStruct.alarmSeverity;
|
||||
indx=max(pvStruct.alarmSeverity, 0);
|
||||
value.sevr_str = severity_str{indx+1};
|
||||
value.stat = pvStruct.alarmStatus;
|
||||
indx=max(pvStruct.alarmStatus, 0);
|
||||
value.stat_str = status_str{ indx+1};
|
||||
|
||||
|
||||
|
||||
timestamp = mocha('getTimestamp',pv);
|
||||
if (numel(timestamp) == 2)
|
||||
% old mca version
|
||||
% do not use mcatime here because 1. it is slow, 2. is returns UTC
|
||||
% calculating zerotime only once is faster and takes localtime into account
|
||||
% When daylight saving time begins or ends, restart the program!
|
||||
if isempty(zerotime)
|
||||
[status,timezone]=system('date +%z'); % get localtime offset
|
||||
timeoffs=str2double(timezone);
|
||||
houroffs=floor(timeoffs/100);
|
||||
minoffs=(timeoffs-100*houroffs);
|
||||
zerotime = datenum('1-Jan-1990') + (minoffs/60 + houroffs)/24;
|
||||
end
|
||||
time=timestamp(1)+timestamp(2)/1000000000;
|
||||
if time
|
||||
time = zerotime+time/24/3600;
|
||||
end
|
||||
value.time = datevec(time);
|
||||
else
|
||||
% new mca version
|
||||
timestamp(6)=timestamp(6)+timestamp(7)/1000000000;
|
||||
value.time = timestamp(1:6);
|
||||
end
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user