[pytango] 412/483: Remove old file
Sandor Bodo-Merle
sbodomerle-guest at moszumanska.debian.org
Thu Sep 28 19:15:07 UTC 2017
This is an automated email from the git hooks/post-receive script.
sbodomerle-guest pushed a commit to annotated tag bliss_8.10
in repository pytango.
commit 48fc6357e9ae106a1acf7daf9417f47865030d22
Author: tiagocoutinho <tiagocoutinho at 4e9c00fd-8f2e-0410-aa12-93ce3db5e235>
Date: Tue Sep 30 12:23:20 2014 +0000
Remove old file
git-svn-id: http://svn.code.sf.net/p/tango-cs/code/bindings/PyTango/trunk@26596 4e9c00fd-8f2e-0410-aa12-93ce3db5e235
---
doc/quicktour_old.rst | 439 --------------------------------------------------
1 file changed, 439 deletions(-)
diff --git a/doc/quicktour_old.rst b/doc/quicktour_old.rst
deleted file mode 100644
index 5efcceb..0000000
--- a/doc/quicktour_old.rst
+++ /dev/null
@@ -1,439 +0,0 @@
-.. _quick-tour-old:
-
-A quick tour (original)
------------------------
-
-This quick tour will guide you through the first steps on using PyTango.
-This is the original quick tour guide that uses a simple Python console.
-There is a new version of this document which uses :ref:`itango` console in its
-examples. You can find this new version :ref:`here <quick-tour>`.
-
-Check PyTango version
-~~~~~~~~~~~~~~~~~~~~~
-
-Start a python console and type:
-
- >>> import PyTango
- >>> PyTango.__version__
- '7.1.2'
- >>> PyTango.__version_long__
- '7.1.2dev0'
- >>> PyTango.__version_number__
- 712
- >>> PyTango.__version_description__
- 'This version implements the C++ Tango 7.1 API.'
-
-or alternatively:
-
- >>> import PyTango
- >>> PyTango.Release.version
- '7.1.2'
- >>> PyTango.Release.version_long
- '7.1.2dev0'
- >>> PyTango.Release.version_number
- 712
- >>> PyTango.Release.version_description
- 'This version implements the C++ Tango 7.1 API.'
-
-Check Tango C++ version
-~~~~~~~~~~~~~~~~~~~~~~~
-
-From a client (This is only possible since PyTango 7.0.0)
-
- >>> import PyTango.constants
- >>> PyTango.constants.TgLibVers
- '7.1.1'
-
-From a server you can alternatively do::
-
- u = PyTango.Util.instance()
- tg_cpp_lib_ver = u.get_tango_lib_release()
-
-
-Test the connection to the Device and get it's current state
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-One of the most basic examples is to get a reference to a device and
-determine if it is running or not::
-
- from PyTango import *
- import sys, os, time
-
- # Protect the script from Exceptions
- try:
- # Get proxy on the tangotest1 device
- print "Getting DeviceProxy "
- tangotest = DeviceProxy("tango/tangotest/1")
-
- # ping it
- print tangotest.ping()
-
- # get the state
- print tangotest.state()
-
- # First use the classical command_inout way to execute the DevString command
- # (DevString in this case is a command of the TangoTest device)
-
- result= tangotest.command_inout("DevString", "First hello to device")
- print "Result of execution of DevString command=", result
-
- # the same with a Device specific command
- result= tangotest.DevString("Second Hello to device")
- print "Result of execution of DevString command=", result
-
- # Please note that argin argument type is automagically managed by python
- result= tangotest.DevULong(12456)
- print "Result of execution of DevULong command=", result
-
- # Catch Tango and Systems Exceptions
- except:
- print "Failed with exception !"
- print sys.exc_info()[0]
-
-Execute commands with scalar arguments on a Device
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-As you can see in the following example, when scalar types are used, the Tango
-binding automagically manages the data types, and writing scripts is quite easy::
-
- from PyTango import *
- import sys, os, time
-
- tangotest = DeviceProxy("tango/tangotest/1")
-
- # First use the classical command_inout way to execute the DevString command
- # (DevString in this case is a command of the TangoTest device)
-
- result= tangotest.command_inout("DevString", "First hello to device")
- print "Result of execution of DevString command=", result
-
- # the same with a Device specific command
- result= tangotest.DevString("Second Hello to device")
- print "Result of execution of DevString command=", result
-
- # Please note that argin argument type is automagically managed by python
- result= tangotest.DevULong(12456)
- print "Result of execution of DevULong command=", result
-
-Execute commands with more complex types
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In this case you have to use put your arguments data in the correct python
-structures::
-
- from PyTango import *
- import sys, os, time
-
- print "Getting DeviceProxy "
- tango_test = DeviceProxy("tango/tangotest/1")
- # The input argument is a DevVarLongStringArray
- # so create the argin variable containing
- # an array of longs and an array of strings
- argin = ([1,2,3], ["Hello", "TangoTest device"])
-
- result= tango_test.DevVarLongArray(argin)
- print "Result of execution of DevVarLongArray command=", result
-
-Reading and writing attributes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Basic read/write attribute operations::
-
- #Read a scalar attribute
- scalar=tangotest.read_attribute("long_scalar")
-
- #Read a spectrum attribute
- spectrum=tangotest.read_attribute("double_spectrum")
-
- # Write a scalar attribute
- scalar_value = 18
- tangotest.write_attribute("long_scalar", scalar_value)
-
- # Write a spectrum attribute
- spectrum_value = [1.2, 3.2, 12.3]
- tangotest.write_attribute("double_spectrum", spectrum_value)
-
- # Write an image attribute
- image_value = [ [1, 2], [3, 4] ]
- tangotest.write_attribute("long_image", image_value)
-
-
-Note that if PyTango is compiled with numpy support the values got when reading
-a spectrum or an image will be numpy arrays. This results in a faster and
-more memory efficient PyTango. You can also use numpy to specify the values when
-writing attributes, especially if you know the exact attribute type.::
-
- import PyTango, numpy
-
- # Creating an unitialized double spectrum of 1000 elements
- spectrum_value = PyTango.numpy_spectrum(PyTango.DevDouble, 1000)
-
- # Creating an spectrum with a range
- # Note that I do NOT use PyTango.DevLong here, BUT PyTango.NumpyType.DevLong
- # numpy functions do not understand normal python types, so there's a
- # translation available in PyTango.NumpyType
- spectrum_value = numpy.arange(5, 1000, 2, PyTango.NumpyType.DevLong)
-
- # Creating a 2x2 long image from an existing one
- image_value = PyTango.numpy_image(PyTango.DevLong, [[1,2],[3,4]])
-
-
-Registering devices
-~~~~~~~~~~~~~~~~~~~
-
-Defining devices in the Tango DataBase::
-
- from PyTango import *
- import sys, os, time
-
- # A reference on the DataBase
- db = Database()
-
- # The 3 devices name we want to create
- # Note: these 3 devices will be served by the same DServer
- new_device_name1="px1/tdl/mouse1"
- new_device_name2="px1/tdl/mouse2"
- new_device_name3="px1/tdl/mouse3"
-
- # Define the Tango Class served by this DServer
- new_device_info_mouse = DbDevInfo()
- new_device_info_mouse._class = "Mouse"
- new_device_info_mouse.server = "ds_Mouse/server_mouse"
-
- # add the first device
- print "Creation Device:" , new_device_name1
- new_device_info_mouse.name = new_device_name1
- db.add_device(new_device_info_mouse)
-
- # add the next device
- print "Creation Device:" , new_device_name2
- new_device_info_mouse.name = new_device_name2
- db.add_device(new_device_info_mouse)
- # add the third device
- print "Creation Device:" , new_device_name3
- new_device_info_mouse.name = new_device_name3
- db.add_device(new_device_info_mouse)
-
-
-Setting up Device properties
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-A more complex example using python subtilities.
-The following python script example (containing some functions and instructions
-manipulating a Galil motor axis device server) gives an idea of how the Tango
-API should be accessed from Python::
-
- from PyTango import *
- import sys, os, time
-
- # connecting to the motor axis device
- axis1 = DeviceProxy ("microxas/motorisation/galilbox")
-
- # Getting Device Properties
- property_names = ["AxisBoxAttachement",
- "AxisEncoderType",
- "AxisNumber",
- "CurrentAcceleration",
- "CurrentAccuracy",
- "CurrentBacklash",
- "CurrentDeceleration",
- "CurrentDirection",
- "CurrentMotionAccuracy",
- "CurrentOvershoot",
- "CurrentRetry",
- "CurrentScale",
- "CurrentSpeed",
- "CurrentVelocity",
- "EncoderMotorRatio",
- "logging_level",
- "logging_target",
- "UserEncoderRatio",
- "UserOffset"]
- axis_properties = axis1.get_property(property_names)
- for prop in axis_properties.keys():
- print "%s: %s" % (prop, axis_properties[prop][0])
-
- # Changing Properties
- axis_properties["AxisBoxAttachement"] = ["microxas/motorisation/galilbox"]
- axis_properties["AxisEncoderType"] = ["1"]
- axis_properties["AxisNumber"] = ["6"]
- axis1.put_property(axis_properties)
-
- # Reading attributes
- att_list = axis.get_attribute_list()
- for att in att_list:
- att_val = axis.read_attribute(att)
- print "%s: %s" % (att, att_val.value)
-
- # Changing some attribute values
- axis1.write_attribute("AxisBackslash", 0.5)
- axis1.write_attribute("AxisDirection", 1.0)
- axis1.write_attribute("AxisVelocity", 1000.0)
- axis1.write_attribute("AxisOvershoot", 500.0)
-
- # Testing some device commands
- pos1=axis1.read_attribute("AxisCurrentPosition")
- axis1.command_inout("AxisBackward")
- while pos1.value > 1000.0:
- pos1=axis1.read_attribute("AxisCurrentPosition")
- print "position axis 1 = ",pos1.value
- axis1.command_inout("AxisStop")
-
-A quick tour of Tango device server binding through an example
---------------------------------------------------------------
-
-To write a tango device server in python, you need to import two modules in your script which are:
-
-1. The PyTango module
-
-2. The python sys module provided in the classical python distribution
-
-The following in the python script for a Tango device server with two commands and two attributes. The commands are:
-
-1. IOLOng which receives a Tango Long and return it multiply by 2. This command is allowed only if the device is in the ON state.
-
-2. IOStringArray which receives an array of Tango strings and which returns it but in the reverse order. This command is only allowed if the device is in the ON state.
-
-The attributes are:
-
-1. Long_attr wich is a Tango long attribute, Scalar and Read only with a minimum alarm set to 1000 and a maximum alarm set to 1500
-
-2. Short_attr_rw which is a Tango short attribute, Scalar and Read/Write
-
-The following code is the complete device server code::
-
- import PyTango
- import sys
-
- class PyDsExp(PyTango.Device_3Impl):
-
- def __init__(self,cl,name):
- PyTango.Device_3Impl.__init__(self,cl,name)
- self.debug_stream('In PyDsExp __init__')
- PyDsExp.init_device(self)
-
- def init_device(self):
- self.debug_stream('In Python init_device method')
- self.set_state(PyTango.DevState.ON)
- self.attr_short_rw = 66
- self.attr_long = 1246
-
- #------------------------------------------------------------------
-
- def delete_device(self):
- self.debug_stream('[delete_device] for device %s ' % self.get_name())
-
- #------------------------------------------------------------------
- # COMMANDS
- #------------------------------------------------------------------
-
- def is_IOLong_allowed(self):
- return self.get_state() == PyTango.DevState.ON
-
- def IOLong(self, in_data):
- self.debug_stream('[IOLong::execute] received number %s' % str(in_data))
- in_data = in_data * 2;
- self.debug_stream('[IOLong::execute] return number %s' % str(in_data))
- return in_data;
-
- #------------------------------------------------------------------
-
- def is_IOStringArray_allowed(self):
- return self.get_state() == PyTango.DevState.ON
-
- def IOStringArray(self, in_data):
- l = range(len(in_data)-1, -1, -1);
- out_index=0
- out_data=[]
- for i in l:
- self.debug_stream('[IOStringArray::execute] received String' % in_data[out_index])
- out_data.append(in_data[i])
- self.debug_stream('[IOStringArray::execute] return String %s' %out_data[out_index])
- out_index += 1
- self.y = out_data
- return out_data
-
- #------------------------------------------------------------------
- # ATTRIBUTES
- #------------------------------------------------------------------
-
- def read_attr_hardware(self, data):
- self.debug_stream('In read_attr_hardware')
-
- #------------------------------------------------------------------
-
- def read_Long_attr(self, the_att):
- self.debug_stream('[PyDsExp::read_attr] attribute name Long_attr')
-
- # Before PyTango 7.0.0
- #PyTango.set_attribute_value(the_att, self.attr_long)
-
- # Now:
- the_att.set_value(self.attr_long)
-
- #------------------------------------------------------------------
-
- def read_Short_attr_rw(self, the_att):
- self.debug_stream('[PyDsExp::read_attr] attribute name Short_attr_rw')
-
- # Before PyTango 7.0.0
- #PyTango.set_attribute_value(the_att, self.attr_short_rw)
-
- # Now:
- the_att.set_value(self.attr_short_rw)
-
- #------------------------------------------------------------------
-
- def write_Short_attr_rw(self, the_att):
- self.debug_stream('In write_Short_attr_rw for attribute %s' % the_att.get_name())
-
- # Before PyTango 7.0.0
- #data = []
- #PyTango.get_write_value(the_att, data)
-
- # Now:
- data = the_att.get_write_value()
- self.attr_short_rw = data[0]
-
- #------------------------------------------------------------------
- # CLASS
- #------------------------------------------------------------------
-
- class PyDsExpClass(PyTango.DeviceClass):
-
- def __init__(self, name):
- PyTango.DeviceClass.__init__(self, name)
- self.set_type("TestDevice")
- print 'In PyDsExpClass __init__'
-
- cmd_list = { 'IOLong' : [ [ PyTango.ArgType.DevLong, "Number" ],
- [ PyTango.ArgType.DevLong, "Number * 2" ] ],
- 'IOStringArray' : [ [ PyTango.ArgType.DevVarStringArray, "Array of string" ],
- [ PyTango.ArgType.DevVarStringArray, "This reversed array"] ],
- }
-
- attr_list = { 'Long_attr' : [ [ PyTango.ArgType.DevLong ,
- PyTango.AttrDataFormat.SCALAR ,
- PyTango.AttrWriteType.READ],
- { 'min alarm' : 1000, 'max alarm' : 1500 } ],
-
- 'Short_attr_rw' : [ [ PyTango.ArgType.DevShort,
- PyTango.AttrDataFormat.SCALAR,
- PyTango.AttrWriteType.READ_WRITE ] ]
- }
-
- if __name__ == '__main__':
- try:
- util = PyTango.Util(sys.argv)
-
- #
- # Deprecated: util.add_TgClass(PyDsExpClass, PyDsExp, 'PyDsExp')
- util.add_class(PyDsExpClass, PyDsExp, 'PyDsExp')
-
- U = PyTango.Util.instance()
- U.server_init()
- U.server_run()
- except PyTango.DevFailed,e:
- print '-------> Received a DevFailed exception:',e
- except Exception,e:
- print '-------> An unforeseen exception occured....',e
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/pytango.git
More information about the debian-science-commits
mailing list