100 likes | 230 Vues
This guide introduces you to using the Python Error System within the ACS Training framework. It covers core concepts such as accessing resources, using error codes, and implementing methods in Python, including examples for IDL and XML. The training emphasizes the simplification of using completion helper classes available in Python compared to C++. You'll find sample code illustrating the implementation process and how to handle common errors like "Target Not Found." Start your journey with practical insights to effectively utilize Python in your ACS applications.
E N D
ACS Training Using the Python Error System
Getting Started At the console, type: cvs co ACS/LGPL/CommonSoftware/acscourse This gives you the source code from the slides. ACS Training
What’s Available in Python? Everything available in C++ including Completion helper class support, but it’s much simpler to use. ACS Training
Example (XML) <?xml version="1.0" encoding="UTF-8"?> <Type xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ACSError.xsd" name="ACSErrTypeACSCourse" type="9005" _prefix="alma"> <Code name="Pointing" shortDescription="Pointing" description="Pointing in progress"/> <ErrorCode name="TargetNotFound" shortDescription="Target Not Found" description="Target Couldn't be found"/> </Type> ACS Training
Example (IDL) #ifndef _ACSCOURSE_MOUNT_IDL_ #define _ACSCOURSE_MOUNT_IDL_ #include <baci.idl> /* <acscomponent.idl> */ #include <ACSErrTypeACSCourse.idl> #pragma prefix "alma" module ACSCOURSE_MOUNT { interface Mount1 : ACS::ACSComponent { /* (Pre)sets a new non-moving position for the antenna. * @param az position azimuth (degree) * @param elev position elevation (degree) */ void objfix (in double az, in double elev) raises (ACSErrTypeACSCourse::TargetNotFoundEx); }; }; #endif IDL ACS Training
Example (Python) import ACSCOURSE_MOUNT__POA #--ACS Imports---------------------------------------------------------- from Acspy.Servants.ContainerServices import ContainerServices from Acspy.Servants.ComponentLifecycle import ComponentLifecycle from Acspy.Servants.ACSComponent import ACSComponent import ACSErrTypeACSCourseImpl class Mount1(ACSCOURSE_MOUNT__POA.Mount1, #CORBA stubs for IDL interface ACSComponent, #Base IDL interface ContainerServices, #Developer niceties ComponentLifecycle): #HLA stuff '''Simple component impl provided as a reference for developers.''' def __init__(self): ACSComponent.__init__(self) ContainerServices.__init__(self) return Corresponds to Error Type ACS Training
Example (Python) #-------------------------------------------------------------------------- def objfix(self, az, el): '''Python implementation of IDL method.''' if el>90: self.getLogger().logInfo("objfix called with az="+str(az)+ " and el="+str(el)) else: self.getLogger().logCritical("Wrong value for el "+str(el)) raise ACSErrTypeACSCourseImpl.TargetNotFoundExImpl() Corresponds to Error Type Corresponds to ErrorCode ACS Training
What methods do exception/completion helper classes generated by the ACS Error System have? As usual, look at the Pydoc! ACS Training
Questions about the Python Error System? ACS Training
Demo ACS Training