Files
2022-12-13 12:44:04 +01:00
..
2022-12-13 12:44:04 +01:00
2022-12-13 12:44:04 +01:00
2022-12-13 12:44:04 +01:00
2022-12-13 12:44:04 +01:00
2022-12-13 12:44:04 +01:00
2022-12-13 12:44:04 +01:00
2022-12-13 12:44:04 +01:00
2022-12-13 12:44:04 +01:00
2022-12-13 12:44:04 +01:00

// *****************************************************************************
// * 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