56 lines
1.5 KiB
Plaintext
Executable File
56 lines
1.5 KiB
Plaintext
Executable File
// *****************************************************************************
|
|
// * Tcl/Tk Interface to cdev
|
|
// *****************************************************************************
|
|
|
|
1) All communication is through strings, the cdevdata object takes care of
|
|
all conversion.
|
|
|
|
2) Use a 'get' in your client code, 'find' will not do type conversions.
|
|
|
|
|
|
3) syntax:
|
|
|
|
cdev $service $message "$tag1 $val1" "$tag2 $val2" ...
|
|
|
|
or
|
|
|
|
cdev $service $message "$tag1 $val1" "$tag2 $val2" $cb
|
|
|
|
|
|
where:
|
|
$service is any cdev service, i.e. "model", "IPM1A01"
|
|
$message a message to that device, i.e "get elements"
|
|
|
|
the rest of the arguments are list of length 2 with the
|
|
first entry the tag name, and the second the tag value.
|
|
|
|
If the length of the last list is 1 the cdev routine
|
|
sendCallback is used instead of the synchronous send.
|
|
|
|
The result of the call will appear in the tcl array "$Control($cb)"
|
|
in due time.
|
|
|
|
On return only the 'value' tag will be converted into a tcl result,
|
|
arbitrary dimensional results are handled.
|
|
|
|
|
|
Error handling:
|
|
See code for 'status' and 'severity' tag handling, this will be
|
|
superseded by real cdev errorhandler interface
|
|
|
|
Bugs:
|
|
Cannot send space delimited string since the interface will parse
|
|
these up as char**'s
|
|
|
|
examples:
|
|
|
|
cdev IPM1S01 "get XPOS"
|
|
|
|
cdev IPM1S01 "monitorOn XPOS" IPM1S01.XPOS
|
|
results appear in $Control(IPM1S01.XPOS)
|
|
|
|
cdev model "get elements" "value quads" "section {arc1 arc2 arc3}"
|
|
value is char*
|
|
section is char** length 3
|
|
|