To me, this is an excellent solution provided that the external “calc” module is successfully built.
https://github.com/epics-modules/calc
I frequently use “acalcout” for array operation (without writing any codes). It is really a useful and powerful record type. Could it be nice to include acalcout / scalcout in future EPICS Base release so that we can use them right out
of box? It seems core developers are reluctant to include new record types to the Base: only a handful of new record types (int64in, int64out, lsi, lso) have been added to the Base in the past few decades.
Cheers,
Yong
It's clunky and inefficient, but problem (1) can be solved with an acalcout record. If AA=[0,1,2,3,4,5], and A=20, then the _expression_ "cat(cat(aa[0,2],a),aa[3,5])" yields AVAL=[0,1,2,20,4,5]
Even more horrifying, problem (2) can also be solved with an acalcout record. If A==1, B==2, etc., up to H==8, then the _expression_ "aa:=a;k:=0;j:=until(aa:=cat(aa[0,k],@(k+1));k:=k+1;k==9);aa"
yields AVAL=[1,2,3,4,5,6,7,8,0,...].
I'm sure there are better solutions, but sometimes it's ok to do something clunky for the moment, so you can move on to the next part of the problem.
Tim Mooney ([email protected]) (630)252-5417
Beamline Controls Group (www.aps.anl.gov)
Advanced Photon Source, Argonne National Lab
I have two questions pertaining to the array records in EPICS 3.15.
-
Suppose I have an analog input array or waveform record of size 5 that contains the values 1, 2, 3, 4, 5. Suppose I want to replace with the fourth element. Based upon what I've read, it doesn't seem like subArray is a viable
choice. I've also tried to use caput but to no avail. Any recommendations other than using aSub?
-
Suppose I have eight individual analog input records and I want to "concatenate their values" and store the result into an analog input array record. I'm thinking about using either aCalcout or an aub routine. Are those valid
options and if not, what are alternative options I should explore?
|