Files
dev/script/tutorial/53_DirectEpicsAccess.js
2018-04-17 12:05:48 +02:00

68 lines
2.1 KiB
JavaScript
Executable File

///////////////////////////////////////////////////////////////////////////////////////////////////
// EPICS direct channel access.
// EPICS devices implemented are included in PShell, package ch.psi.pshell.epics.
// However direct channel access builtin functions are available.
///////////////////////////////////////////////////////////////////////////////////////////////////
channel_name = "TESTIOC:TESTCALCOUT:Output"
//reading/writing to a channel
print (caget(channel_name))
caput(channel_name, 0.0)
//Put with no wait
caput(channel_name, 0.0)
print (caget(channel_name))
//waiting for a channel value
cawait(channel_name, 0.0, timeout = 10.0)
//If many IO it is better to keep the same CA connection
channel = create_channel(channel_name, 'd')
for (var i=0; i<10; i++){
print (channel.get()
)
}
channel.close()
//The create_channel_device method return a device implements Readable and Writable and therefore can be used in scans
channel = create_channel_device(channel_name, 'd', null, "My Channel")
lscan(channel, ai2, 0, 10, 0.1)
channel.close()
//Or else we can use a Device
ChannelDouble= Java.type('ch.psi.pshell.epics.ChannelDouble')
channel = new ChannelDouble("My Channel", channel_name)
channel.initialize()
lscan(channel, ai2, 0, 10, 0.1)
channel.close()
//Creating a table reading set of channels for each scan step.
attrs_dataset = null
attrs_names = ["TESTIOC:TESTCALCOUT:Input",
"TESTIOC:TESTCALCOUT:Output",
"TESTIOC:TESTSINUS:SinCalc",
"TESTIOC:TESTWF2:MyWF"]
attrs_types = ["d", "d", "d", "[d"]
attrs_lenghts = [0,0,0,10]
function AfterReadout(rec){
if (attrs_dataset == null){
attrs_dataset = get_exec_pars().group + "attributes"
create_table(attrs_dataset, attrs_names, attrs_types, attrs_lenghts)
}
record = []
for (var i=0; i<attrs_names.length; i++){
val = caget(attrs_names[i], attrs_types[i])
record.push(val)
}
//print record
append_table(attrs_dataset, record)
}
a = lscan(m1, [ai1, ai2], 0, 0.1, 20, 0.01, undefined, undefined, undefined, undefined, after_read=AfterReadout)